3. ScanMatch用ceres计算姿态 pose_estimate_2d 4. 使用重力方向校正计算的姿态 pose_estimate 5. 用ceres估算的姿态校正重力校正点云,得到range_data_in_local 6. 生成一个插入结果 insertion_result 7. 生成一个匹配结果MatchingResult } AddRangeData(){ 参数解析::: sensor_id 传感器ID unsynchronized_data ...
{} LocalTrajectoryBuilder2D::~LocalTrajectoryBuilder2D() {} // 将RangeData转化成重力校正后的数据,并经过VoxelFilter // 关于VoxelFilter和AdaptiveVoxelFilter,可参见如下两个参考链接: // 源码解读:https://blog.csdn.net/learnmoreonce/article/details/76218136 // VoxelFilter的原理:https://blog.csdn....
TRAJECTORY_BUILDER_2D.submaps.num_range_data = 35 这个参数是子图数量 少了,回环检测不好 多了就漂移 值为35(正常值) 2019-09-25 11-06-52屏幕截图.png 这个值改成1时的效果 2019-09-27 16-41-42屏幕截图.png 这个值改成350000时的效果 2019-09-27 16-39-28屏幕截图.png...
LocalTrajectoryBuilder2D::AddRangeData(conststd::string&sensor_id,constsensor::TimedPointCloudData&unsynchronized_data){//std::cout<<"LocalTrajectoryBuilder2D::AddRangeData" <<std::endl;//1.同步不同传感器的点云数据,得到 较好的点云数据 该点云数据的坐标为 trackingauto synchronized_data=range_data...
图中虚框里的模块就是Local SLAM的框图,如果没有猜错,描述的就应该是这里的LocalTrajectoryBuilder2D。它有扫描匹配器(Scan Matiching),以激光雷达的扫描数据和位姿估计为输入, 使用Ceres库完成扫描匹配,输出位姿的观测值。一方面反馈给位姿估计器用于修正估计值,另一方面提供给运动滤波器(Motion Filter)用于判定机器...
一、LocalTrajectoryBuilder2D::AddRangeData struct TimedRangefinderPoint { // 该点的3D坐标。2D点云时,z总是0,x、y满足sqrt(x*x + y*y)=R,tan(y/x)=Theta。 Eigen::Vector3f position; // 该点的时间戳,单位秒。 float time; }; RangeData是AddRangeData常用的数据类型。