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
00051 rand_state = seed;
00052 }
00053 inline int rand()
00054 {
00055
00056 int r = rand_r(&rand_state);
00057
00058 return r;
00059 }
00060
00061
00062
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
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;
00111
00112
00113 }
00114 }
00115
00116 #endif