目录
1 主要内容
1.1 视觉SLAM初见
机器人如果想要在未知环境中具有自主运动能力,就需要知道两件事:机器人自身状态,周围环境,这就对应了定位和建图两个任务。为了完成这两个任务,机器人依赖传感器进行感知。传感器分为两类:一种是机器人自身携带的,包括轮式编码器,相机,激光雷达和IMU等;另一种安装在环境中,如导轨,二维码,GPS卫星等,这种限制了机器人的使用范围。我们主要关注基于相机的视觉SLAM。
视觉SLAM主要利用单目(monocular),双目(stereo),深度相机(RGB-D)等传感器配置。由于单张图像无法确定深度,单目SLAM存在尺度不确定性问题。双目相机有两个相机,两个相机之间的距离为基线,双目相机测量的深度范围与基线有关。基线距离越大,能够测量的距离越远。双目的主要问题是计算量太大。深度相机最大特点是利用红外结构光或ToF原理,主动发射并接受光,测出距离。相比双目,计算量小,但是测距小,噪声大,容易受日光影响,主要用于室内。
1.2 经典视觉SLAM框架
主要包括四部分:视觉里程计(visual odometry, VO),后端优化(optimization),建图(mapping),回环检测(loop closure detection)。视觉里程计通过相机和空间点的几何关系,计算相邻两张图像的相机运动。但是仅仅利用视觉里程计估计轨迹,会存在累积漂移,为此需要后端优化和回环检测。后端优化主要采用状态估计理论处理SLAM过程中的噪声问题。具体来说,是从带有噪声的数据中估计系统状态及其不确定性。回环检测主要解决位姿估计随时间漂移的问题,主要通过图像相似性计算识别以前到过的场景,从而对位姿估计添加约束,消除漂移,得到全局一致的轨迹和地图。建图是构建地图的过程,地图是对环境的描述。地图有多种描述方式,大体分为度量地图(metric map)和拓扑地图(topology map)。
1.3 SLAM的数学描述
SLAM过程可总结为运动方程和观测方程:
{ x k = f ( x k − 1 , u k , w k ) z k , j = h ( y j , x k , v k , j ) \begin{cases} \boldsymbol{x_k} = f(\boldsymbol{x_{k-1}},\boldsymbol{u_k},\boldsymbol{w_k})\\ \boldsymbol{z_{k,j}} = h(\boldsymbol{y_j},\boldsymbol{x_k},\boldsymbol{v_{k,j}}) \end{cases} {
xk=f(xk−1,u