Go to the documentation of this file.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 HMT_SLAM_common_H
00029 #define HMT_SLAM_common_H
00030
00031 #include <mrpt/utils/CSerializable.h>
00032 #include <mrpt/utils/stl_extensions.h>
00033
00034 #include <mrpt/hmtslam/link_pragmas.h>
00035
00036
00037 #define COMMON_TOPOLOG_HYP static_cast<THypothesisID>(0)
00038
00039 #define NODE_ANNOTATION_METRIC_MAPS "metricMaps" // CMultiMetricMap
00040 #define NODE_ANNOTATION_REF_POSEID "refPoseID" // TPoseID
00041 #define NODE_ANNOTATION_POSES_GRAPH "posesGraph" // CRobotPosesGraph
00042
00043 #define NODE_ANNOTATION_PLACE_POSE "placePose" // CPoint2D
00044
00045 #define ARC_ANNOTATION_DELTA "Delta" // CPose3DPDF (for the current implementation, it's a CPose3DPDFParticles)
00046 #define ARC_ANNOTATION_DELTA_SRC_POSEID "Delta_poseID_src" // TPoseID (elemental datatype)
00047 #define ARC_ANNOTATION_DELTA_TRG_POSEID "Delta_poseID_trg" // TPoseID (elemental datatype)
00048
00049
00050 #define ARC_TYPES "Membership,Navegability,RelativePose,Location"
00051 #define DEFAULT_ARC_TYPE "Membership"
00052
00053
00054 #define NODE_TYPES "Place,Area,TopologicalMap,Object"
00055 #define DEFAULT_NODE_TYPE "Place"
00056
00057
00058 #define POSEID_INVALID static_cast<TPoseID>(-1)
00059
00060 #define AREAID_INVALID static_cast<uint64_t>(-1)
00061
00062 #define MSG_SOURCE_LSLAM 1
00063 #define MSG_SOURCE_AA 2
00064
00065 namespace mrpt
00066 {
00067 namespace hmtslam
00068 {
00069 using namespace mrpt::utils;
00070
00071 class HMTSLAM_IMPEXP CHMHMapArc;
00072 class HMTSLAM_IMPEXP CHMHMapNode;
00073
00074 DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE( CHMHMapArc,mrpt::utils::CSerializable, HMTSLAM_IMPEXP )
00075
00076
00077
00078
00079
00080
00081 typedef int64_t THypothesisID;
00082
00083
00084
00085
00086 typedef uint64_t TPoseID;
00087
00088 typedef std::pair<TPoseID,TPoseID> TPairPoseIDs;
00089
00090 typedef std::vector<TPoseID> TPoseIDList;
00091 typedef std::set<TPoseID> TPoseIDSet;
00092
00093 DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE( THypothesisIDSet,mrpt::utils::CSerializable, HMTSLAM_IMPEXP )
00094
00095
00096
00097
00098 class HMTSLAM_IMPEXP THypothesisIDSet : public mrpt::utils::CSerializable, public std::set<THypothesisID>
00099 {
00100
00101 DEFINE_SERIALIZABLE( THypothesisIDSet )
00102
00103 public:
00104
00105
00106 THypothesisIDSet()
00107 {
00108 }
00109
00110
00111
00112 THypothesisIDSet( const THypothesisID& val)
00113 {
00114 insert( val );
00115 }
00116
00117 virtual ~THypothesisIDSet()
00118 {
00119 }
00120
00121
00122
00123 bool has( const THypothesisID& val ) const
00124 {
00125 return find(val)!=end() || find(COMMON_TOPOLOG_HYP)!=end();
00126 }
00127
00128
00129
00130 void debugDump() const;
00131
00132 };
00133
00134
00135
00136
00137
00138 class HMTSLAM_IMPEXP TArcList : public list_searchable<mrpt::hmtslam::CHMHMapArcPtr>
00139 {
00140 private:
00141 typedef list_searchable<mrpt::hmtslam::CHMHMapArcPtr> BASE;
00142
00143 public:
00144 void debugDump();
00145 void read( utils::CStream &in );
00146 void write( utils::CStream &out ) const;
00147
00148 };
00149
00150
00151 }
00152 }
00153
00154
00155
00156 #endif