Jafar
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
rtSlam.hpp
Go to the documentation of this file.
00001 
00013 #ifndef RTSLAM_HPP_
00014 #define RTSLAM_HPP_
00015 
00016 #include <sys/time.h> 
00017 
00018 #include <map>
00019 #include <list>
00020 
00021 #include "boost/shared_ptr.hpp"
00022 #include "boost/weak_ptr.hpp"
00023 
00024 #include "kernel/IdFactory.hpp"
00025 #include "kernel/jafarMacro.hpp"
00026 
00027 #define STATS 1
00028 
00029 #ifdef JFR_NDEBUG
00030   #define PTR_CAST static_cast
00031   #define SPTR_CAST boost::static_pointer_cast
00032 #else
00033   #define PTR_CAST dynamic_cast
00034   #define SPTR_CAST boost::dynamic_pointer_cast
00035 #endif
00036 
00037 namespace jafar {
00038   namespace kernel {
00039     template<typename> class IdCollectorNone;
00040     template<typename> class IdCollectorList;
00041     template<typename> class IdCollectorSet;
00042     template<typename, template<typename> class> class IdFactory;
00043   }
00044 
00045   namespace rtslam {
00046 
00047     extern unsigned int rand_state;
00048     inline void srand(unsigned int seed)
00049     {
00050 //      JFR_DEBUG("!rand: seed " << seed);
00051       rand_state = seed;
00052     }
00053     inline int rand()
00054     {
00055 //      JFR_DEBUG_BEGIN(); JFR_DEBUG_SEND("!rand: state " << rand_state);
00056       int r = rand_r(&rand_state);
00057 //      JFR_DEBUG_SEND(" value " << r << " state " << rand_state); JFR_DEBUG_END();
00058       return r;
00059     }
00060     
00061 
00062     // forward declarations
00063     class WorldAbstract;
00064     class MapAbstract;
00065     class RobotAbstract;
00066     class SensorAbstract;
00067     class SensorExteroAbstract;
00068     class SensorProprioAbstract;
00069     class DataManagerAbstract;
00070     class LandmarkAbstract;
00071     class LandmarkFactoryAbstract;
00072     class ObservationModelAbstract;
00073     class ObservationAbstract;
00074     class MapManagerAbstract;
00075     class RawAbstract;
00076     class AppearanceAbstract;
00077     class FeatureAbstract;
00078     class DescriptorAbstract;
00079     class Gaussian;
00080     class ExtendedKalmanFilterIndirect;
00081     class SensorManagerAbstract;
00082     class HistoryManagerAbstract;
00083 
00084     // Pointers with boost::shared_ptr:
00085     typedef boost::shared_ptr<WorldAbstract>                          world_ptr_t;
00086     typedef boost::shared_ptr<MapAbstract>                            map_ptr_t;
00087     typedef boost::shared_ptr<RobotAbstract>                          robot_ptr_t;
00088     typedef boost::shared_ptr<SensorAbstract>                         sensor_ptr_t;
00089     typedef boost::shared_ptr<SensorExteroAbstract>                   sensorext_ptr_t;
00090     typedef boost::shared_ptr<SensorProprioAbstract>                  sensorprop_ptr_t;
00091     typedef boost::shared_ptr<DataManagerAbstract>                    data_manager_ptr_t;
00092     typedef boost::shared_ptr<LandmarkAbstract>                       landmark_ptr_t;
00093     typedef boost::shared_ptr<LandmarkFactoryAbstract>                landmark_factory_ptr_t;
00094     typedef boost::shared_ptr<ObservationModelAbstract>               observation_model_ptr_t;
00095     typedef boost::shared_ptr<ObservationAbstract>                    observation_ptr_t;
00096     typedef boost::shared_ptr<MapManagerAbstract>                     map_manager_ptr_t;
00097 
00098     typedef boost::shared_ptr<RawAbstract>                            raw_ptr_t;
00099     typedef boost::shared_ptr<AppearanceAbstract>                     appearance_ptr_t;
00100     typedef boost::shared_ptr<FeatureAbstract>                        feature_ptr_t;
00101     typedef boost::shared_ptr<DescriptorAbstract>                     descriptor_ptr_t;
00102 
00103     typedef boost::shared_ptr<Gaussian>                               gaussian_ptr_t;
00104 
00105     typedef boost::shared_ptr<ExtendedKalmanFilterIndirect>           ekfInd_ptr_t;
00106     typedef boost::shared_ptr<SensorManagerAbstract>                  sensor_manager_ptr_t;
00107 
00108     typedef boost::shared_ptr<HistoryManagerAbstract>                 history_manager_ptr_t;
00109 
00110     typedef kernel::IdFactory<unsigned int, kernel::IdCollectorNone>  IdFactory; // FIXME maybe we should change for a smarter IdFactory ? eg:
00111     //typedef kernel::IdFactory<unsigned, kernel::IdCollectorList> IdFactory;
00112     //typedef kernel::IdFactory<unsigned, kernel::IdCollectorSet> IdFactory;
00113   }
00114 }
00115 
00116 #endif /* RTSLAM_HPP_ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:27 for Jafar by doxygen 1.7.6.1
LAAS-CNRS