00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef COBSERVATION_H
00029 #define COBSERVATION_H
00030
00031 #include <mrpt/utils/CSerializable.h>
00032 #include <mrpt/system/os.h>
00033
00035 namespace mrpt
00036 {
00037 namespace poses
00038 {
00039 class CPosePDF;
00040 class CPose2D;
00041 class CPose3D;
00042 }
00043
00046 namespace slam
00047 {
00048 using namespace poses;
00049
00052 #define INVALID_LANDMARK_ID (-1)
00053
00056 #define INVALID_BEACON_ID (-1)
00057
00058 class CMetricMap;
00059 class CObservation;
00060
00072 class MRPTDLLIMPEXP CObservation : public mrpt::utils::CSerializable
00073 {
00074
00075 DEFINE_VIRTUAL_SERIALIZABLE( CObservation )
00076
00077 public:
00078
00081 CObservation();
00082
00093 virtual float likelihoodWith( const CObservation *anotherObs, const CPosePDF *anotherObsPose = NULL ) const = 0;
00094
00095
00108 bool insertObservationInto( CMetricMap *theMap, const CPose3D *robotPose = NULL ) const;
00109
00112 mrpt::system::TTimeStamp timestamp;
00113
00116 std::string sensorLabel;
00117
00122 virtual void getSensorPose( CPose3D &out_sensorPose ) const = 0;
00123
00128 virtual void setSensorPose( const CPose3D &newSensorPose ) = 0;
00129
00130 };
00131
00132 DEFINE_SERIALIZABLE_PRE( CObservation )
00133
00134
00135 }
00136 }
00137
00138 #endif