一起做激光SLAM[四](补充说明)

本文探讨了在激光SLAM后端中,去除TransformToStart操作对于建图精度的提升。原作者在odometry.cpp中使用该操作将点云变换到上一帧坐标系,但实验表明这一操作导致了建图误差增大。通过对比,不使用TransformToStart的建图效果显著提高。此外,文章还提到了在rosbagregist.cpp中计算曲率的代码优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文章

一起做激光SLAM[四]常见SLAM技巧使用效果对比,后端

在原作者的odometry.cpp文件中,话题“velodyne_cloud_map”输出的点云信息用于后端的scan2map操作,但是作者对该点云信息进行了TransformToStart的操作(即:将当前帧点云变换到上一帧坐标系下),为觉得这个操作是多余的,并且事实证明也确实降低了建图精度,相关代码如下:

TransformToStart(&laserCloudIn_plane.points[i], &point_in_odom);

后端的坐标系有三个,里程计传递过来的相对里程计原点的坐标系q_wodom_curr,t_wodom_curr,后端坐标系q_w_curr,t_w_curr,后端相对里程计的坐标系q_wmap_wodom,t_wmap_wodom,整个系统接收里程计,使用后端相对里程计的坐标系计算后端坐标系。在map.cpp里当前帧转换到后端坐标系与后端坐标系下的全部地图匹配,以点面匹配的方式,ceres优化修改后端坐标系q_w_curr,t_w_curr

效果

原代码效果(建图误差很大):
在这里插入图片描述
去掉TransformToStart变换效果(精度明显提高):
在这里插入图片描述

补充说明:
在rosbagregist.cpp文件中,计算曲率那一块:
laserCloudall -> points.push_back(laserCloudScans[i].points[j]);也可以写成:
laserCloudall -> push_back(laserCloudScans[i].points[j]);代表的是一个意思:添加新的点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值