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 PF_aux_structs_H
00029 #define PF_aux_structs_H
00030
00031 #include <mrpt/utils/utils_defs.h>
00032 #include <vector>
00033 #include <iostream>
00034 #include <iterator>
00035
00036 #include <mrpt/slam/link_pragmas.h>
00037
00038 namespace mrpt
00039 {
00040 namespace slam
00041 {
00042 namespace detail
00043 {
00044 using namespace mrpt;
00045 using namespace mrpt::math;
00046 using namespace std;
00047
00048
00049 struct SLAM_IMPEXP TPoseBin2D
00050 {
00051 TPoseBin2D() : x(0),y(0),phi(0) { }
00052
00053 int x,y,phi;
00054
00055
00056 struct SLAM_IMPEXP lt_operator
00057 {
00058 inline bool operator()(const TPoseBin2D& s1, const TPoseBin2D& s2) const
00059 {
00060 if (s1.x < s2.x) return true;
00061 if (s1.x > s2.x) return false;
00062 if (s1.y < s2.y) return true;
00063 if (s1.y > s2.y) return false;
00064 return s1.phi<s2.phi;
00065 }
00066 };
00067 };
00068
00069
00070 struct SLAM_IMPEXP TPathBin2D
00071 {
00072 std::vector<TPoseBin2D> bins;
00073
00074
00075 struct SLAM_IMPEXP lt_operator
00076 {
00077 bool operator()(const TPathBin2D& s1, const TPathBin2D& s2) const
00078 {
00079 ASSERT_(s1.bins.size()==s2.bins.size())
00080 for (size_t i=0;i<s1.bins.size();i++)
00081 {
00082 if (s1.bins[i].x < s2.bins[i].x) return true;
00083 if (s1.bins[i].x > s2.bins[i].x) return false;
00084 if (s1.bins[i].y < s2.bins[i].y) return true;
00085 if (s1.bins[i].y > s2.bins[i].y) return false;
00086 if (s1.bins[i].phi < s2.bins[i].phi) return true;
00087 if (s1.bins[i].phi > s2.bins[i].phi) return false;
00088
00089 }
00090 return false;
00091 }
00092 };
00093 };
00094
00095
00096 struct SLAM_IMPEXP TPoseBin3D
00097 {
00098 TPoseBin3D() : x(0),y(0),z(0),yaw(0),pitch(0),roll(0) { }
00099
00100 int x,y,z,yaw,pitch,roll;
00101
00102
00103 struct SLAM_IMPEXP lt_operator
00104 {
00105 bool operator()(const TPoseBin3D& s1, const TPoseBin3D& s2) const
00106 {
00107 if (s1.x < s2.x) return true;
00108 if (s1.x > s2.x) return false;
00109 if (s1.y < s2.y) return true;
00110 if (s1.y > s2.y) return false;
00111 if (s1.z < s2.z) return true;
00112 if (s1.z > s2.z) return false;
00113 if (s1.yaw < s2.yaw) return true;
00114 if (s1.yaw > s2.yaw) return false;
00115 if (s1.pitch < s2.pitch) return true;
00116 if (s1.pitch > s2.pitch) return false;
00117 return s1.roll<s2.roll;
00118 }
00119 };
00120 };
00121
00122
00123 }
00124 }
00125 }
00126
00127 #endif