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 ODOMETRYLOAM_H_
00029 #define ODOMETRYLOAM_H_
00030
00031 #include <rtabmap/core/Odometry.h>
00032
00033 #ifdef RTABMAP_LOAM
00034 #include <loam_velodyne/BasicScanRegistration.h>
00035 #include <loam_velodyne/BasicLaserOdometry.h>
00036 #include <loam_velodyne/BasicLaserMapping.h>
00037 #include <loam_velodyne/BasicTransformMaintenance.h>
00038 #include <loam_velodyne/MultiScanRegistration.h>
00039 #endif
00040
00041 namespace rtabmap {
00042
00043 class RTABMAP_EXP OdometryLOAM : public Odometry
00044 {
00045 public:
00046 OdometryLOAM(const rtabmap::ParametersMap & parameters = rtabmap::ParametersMap());
00047 virtual ~OdometryLOAM();
00048
00049 virtual void reset(const Transform & initialPose = Transform::getIdentity());
00050 virtual Odometry::Type getType() {return Odometry::kTypeLOAM;}
00051
00052 private:
00053 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
00054
00055 private:
00056 #ifdef RTABMAP_LOAM
00057 std::vector<pcl::PointCloud<pcl::PointXYZI> > segmentScanRings(const pcl::PointCloud<pcl::PointXYZ> & laserCloudIn);
00058
00059 loam::BasicScanRegistration scanRegistration_;
00060 loam::MultiScanMapper scanMapper_;
00061 loam::BasicLaserOdometry * laserOdometry_;
00062 loam::BasicLaserMapping * laserMapping_;
00063 loam::BasicTransformMaintenance transformMaintenance_;
00064 Transform lastPose_;
00065 float scanPeriod_;
00066 float linVar_;
00067 float angVar_;
00068 bool localMapping_;
00069 bool lost_;
00070 #endif
00071 };
00072
00073 }
00074
00075 #endif