SLAM总结(一)
1.概述
SLAM(机器人同时定位与建图):本质上是一个系统,主要分为四部分:传感器数据输入,i前端数据处理(关键帧匹配),后端数据优化(滤波器),和闭环检测。
SLAM理论中,主要解决三大问题:定位,建图,路径规划。
通过红外传感器配合深度传感器接收到的数据和预先的标定结果,可以得到环境的景深数据,以kinect为例,通过深度摄像机kinetic采集并经过一系列数据得到的深度数据,可以得到每一个像素点的三维坐标(x,y,z)。
2.定位
定位通过比较两帧图片中关键像素点之间的位移来实现。此处为相机相对姿态估计,解决这个问题最经典的方法是ICP(迭代最近点)方法。使用这个方法之前,需要,得到两帧图像之间的一组匹配点。即两帧图像上的同一个点。这就涉及到了特征点的提取和匹配。原则上,找到四组匹配点,就可以使用openCV的SolvePnPRANSAC函数或者PCL的ICP算法来求解。
R为相机的姿态,C为相机的标定矩阵。R是不断运动的,而C是每一个相机的固有参数。然后可以找到匹配点。
3.slam端优化理论
定位部分,基于相邻帧之间的匹配,一旦其中一个帧出现了偏移,由于后面帧的计算都依赖于前一个帧,这样就会有累积误差的存在。为了解决这个问题,可以多对比几个特征点并且对前几个特征点进行比较。
简而言之,SLAM要做的事情即根据运动方程,已知U和Z,确定所有的机器人位置XP和路标位置XL。这被建模为一个优化问题,U,Z约束下优化XP和XL,目标函数即平方误差和最小:
可以采用数值法寻找梯度,这种思路在计算机视觉里,也叫做Bundle Adjustment。
4.闭环检测
闭环检测的主要目的就是,如果对比到当前帧和之前某一帧重合度极高,或者根据机器人的位置是否与之前某一个位置相同,那么可以将之前帧的计算结果当作当前帧的计算结果,减少重复计算。