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

本文详细介绍了激光SLAM中利用Ceres优化进行位姿估计的过程。通过当前帧与上一帧的相对位姿变换,结合运动模型,使用ceres解决相对位姿的未知问题,构建Kdtree并寻找匹配点。同时,通过比较里程计轨迹与后端优化后的地图轨迹,展示了优化的重要性。

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

原文章

一起做激光SLAM[三]位姿估计,ceres优化,地图构图

在这里插入图片描述

此处将a点(当前帧的一个点云点),依据上一帧与当前帧的相对位姿(R、t),转换到上一帧。做相关说明(此原理在aloam的laserOdometry.cpp也有体现)

具体说明

注:
1、当前帧相对于上一帧的相对位姿用R和t表示(未知,要依据运动模型);上一帧相对于上上帧的相对位姿用R_last和t_last表示(已知)。
2、当前帧的一点设为点a,在上一帧中的对应点设为a‘(依据的是运动模型的位姿变换所得,如果是准确的R和t,那么a‘和b点应该是理论重合的)。

1、此教程中,用ceres求解的目的就是寻求当前帧与上一帧的相对位姿(即有一个变换矩阵T(由R、t组成))。
2、而用于构建Kdtree的a‘(将当前帧的点a,依据当前帧相对于上一帧的R和t,旋转到上一帧所得, 即:当前帧点a在上一帧中的对应点a‘)所用到的R和t正是我们准备用ceres求得的R和t(即:此时的R和t是未知的,那怎么用呢)。依据运动模型
3、运动模型说明:当前帧相对与上一帧的位姿变换等同于上一帧相对于上上帧的位姿变换(短时间内运动是平稳的)。
4、此时,点a经R_last和t_last变换得到a‘,在依据a’去寻找bcd点。
5、然后。经过ceres的求解(此时用到的是:当前帧点a到上一帧bcd组成的面的距离(残差函数)),得出当前帧相对于上一帧的相对准确的R和t。

此过程同样体现在scan2map,即:map.cpp文件中,相关代码如下:

在这里插入图片描述

附加:一起做激光SLAM[四]相关理解

另外,如下图可见(绿色为里程计轨迹,蓝色为map轨迹),由此可见单由里程计(sacn2scan)构成的地图和由后端优化(scan2map)构成的地图之间还是有一个比较大的相对位姿变换存在的。

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值