《视觉SLAM十四讲》学习笔记之第2讲——初识SLAM
本章主要分为四个部分,分别为:
- 引子:引入一个作者虚拟的机器人——小萝卜,并介绍了与SLAM相关的传感器的相关知识
- 经典视觉SLAM框架:现行通用的视觉SLAM框架
- SLAM问题的数学表述:即建立SLAM问题的抽象数据模型
- 编程基础:Linux中的相关编程基础
其中引子与编程基础没有什么好讲的,现在这里主要是总结一下“经典视觉SLAM框架部分”与“SLAM问题的数学表达”这两节的知识点。
经典视觉SLAM框架
经典的视觉SLAM框架如图1所示,框架由五部分组成,分别为:传感器数据、前端、后端、建图与回环检测。
![图1 经典视觉SLAM框架 图1 经典视觉SLAM框架](https://i-blog.csdnimg.cn/blog_migrate/23f5f424cae70cc3e33c60e55e5088f2.png)
图1 经典视觉SLAM框架
- 传感器数据:视觉SLAM中的传感器主要是相机,可以是普通的摄像头(灰度或彩色的)、三维相机(双目、rgbd相机)等等,如果是机器人的视觉SLAM,则还可以有惯导模块(IMU)与编码器,编码器主要是安装在车轮上,用于记录车轮转动的圈数,视觉SLAM中将这些传感器数据进行融合,用于对机器人的状态进行估计;
- 前端:视觉SLAM中的前端即是指视觉里程计(Visual Odometry, VO),即用于估计相邻两帧图像之间相机的运动(旋转与平移),同时估计这两帧图像所对应的局部地图,这部分内容在书中的第7、8讲重点讲到;
- 后端优化:后端优化即是根据前端的不同时刻的数据,并结合回环检测来对(相机)轨迹与地图进行非线性优化,得到全局一致的轨迹与地图,这部分内容在书中的第10、11讲中重点讲到;
- 回环检测:圆环检测是检测机器人是否回到以前曾经走过的地方,这主要是用于消除前端(视觉里程计)的累积误差,提高轨迹与地图的全局一致性,这部分内容对应书中的第12讲;
- 建图:即建立SLAM的地图,SLAM地图主要分为度量地图与拓扑地图,而度量地图又分为稀疏地图与稠密地图。度量地图是用于准确地表达场景中物体的位置关系,而拓扑地图更强调元素与元素之间的关系,至于选用何种地图,则根据实际的需求而决定。这部分内容对应书中的第13讲;
SLAM问题的数学表达
SLAM问题类似一个状态估计问题,可以用正式公式来进行数学建模:
其中为运动方程,为第k时刻机器人的位姿,为第k时刻运动传感器输入的数据,为第k时刻的传感器噪声,函数f表示机器人运动状态的转移过程,整个运动方程的意义是:根据第k-1时刻的机器人位姿、第k时刻的运动传感器的输入数据及第k时刻的噪声分布,推算出第k时刻机器人的位姿,其中传感器的输入数据的指用于测试机器人运动的传感器的数据,如相机的图像、轮子编码器的读取及IMU的数据等等。
公式为观测方程,其中为路标坐标,路标即是组成地图的元素,传感器每个时刻只能观测到一部分路标,为观测噪声,为路标的观测数据。整个观测方程的意义是:机器人在位置处,用带有噪声传感器观测路标,得到一个观测结果。
上述两个方程构成了一个SLAM模型,通过机器人的运动传感器的数据与观测路标的传感器数据,即可同时估计出机器人的位姿(定位)与路标位置(建图),这也完全符合SLAM的意思:同时定位与建图。