视觉slam14讲——第2讲 初识SLAM

来源:互联网 发布:h5场景节日软件 编辑:程序博客网 时间:2024/05/17 06:59

本系列文章是记录学习高翔所著《视觉slam14讲》的内容总结,文中的主要文字和代码、图片都是引用自课本和高翔博士的博客。代码运行效果是在自己电脑上实际运行得出。手动记录主要是为了深入理解

  • 关于SLAM
  • 关于相机
  • slam框架
  • slam问题数学描述

1 关于SLAM

slam问题的本质:对运动主体自身和周围环境空间不确定性的估计

尽可能使用不依赖于环境的传感器如laser、imu、camera等,而视觉SLAM主要解决问题是使用相机解决定位和建图问题

2 关于相机

  • 单目相机(Monocular)
    关键问题:无法得到深度
    单目slam估计的轨迹和地图和真实的相差一个尺度因子,也叫尺度不确定性

  • 双目相机(Stereo)
    关键问题:配置与标定比较复杂,深度量程受双目的基线和分辨率限制,视差计算量大,需要使用GPU和FPGA加速。

  • 深度相机
    关键问题:测量范围有限,容易受日光干扰,无法测量透射材质,主要用于室内。
    我们之前机器人比赛经常用到kinect和xtion,上面的几个问题都是常见的,比如测量范围,比较蛋疼的就是这个,机器人看柱子,最远的那个有7米远,kinect就不行了……

3 slam框架

  • 传感器数据
    相机图像信息的读取和预处理
  • 视觉里程计(VO)
    解决问题:估算相邻图像间的运动,以及局部地图的样子,又称为前端。
    解决方法:主要进行图像特征提取和匹配

  • 后端优化(Optimization)
    解决问题:处理slam过程中噪声的问题。从带有噪声的数据中估计整个系统的状态,以及这个状态估计的不确定性有多大——称为最大后验概率估计(MAP),状态包括机器人的轨迹和地图
    解决方法:滤波和非线性优化算法

  • 回环检测(Loop Closure Detection)
    解决问题:位置估计随时间漂移问题,让机器有识别到过场景的能力。
    解决方法:判断图像间的相似性

  • 建图(Mapping)
    解决问题:构建地图描述机器人周围的环境
    解决方法: 有多种地图

1 度量地图(Metric Map)
强调精确表示地图中物体的位置关系,有稀疏和稠密两类。
对定位来说,稀疏地图就可以了;对导航来说需要稠密地图
Location—Saprse Map
Navgation—Dense Map, 二维的用Grid表示,三维的用Voxel表示,常见导航算法A*, Dij

2 拓扑地图(Topollogical Map)
强调地图元素之间的关系。
拓扑地图是一个Graph,由节点和边组成,只考虑节点之间的连通性。

4 slam问题数学描述

两个方程,运动方程和观测方程。
xk=f(xk1,μk,ω+k)
zk,j=h(yj,xk,vk,j)

已知量:
运动测量读数
传感器读数 z

求解量:
定位问题x
建图问题y

这是一个状态估计问题——如何通过带噪声的数据估计内部的隐藏的状态变量。
按照运动和观测方程是否线性和噪声是否服从高斯分布分为四类
线性/非线性,高斯/非高斯

其中

  • 线性高斯系统(Linear Gaussian–LG)
    最简单,无偏最优估计使用KF解决
  • 非线性非高斯系统(NLNG)
    可以用滤波器(EKF、Particle Filter)和非线性优化(图优化Graph Optimization)两种方法
原创粉丝点击