本系列文章由 youngpan1101 出品,转载请注明出处。
文章链接: http://blog.csdn.net/youngpan1101/article/details/71085276
作者:宋洋鹏(youngpan1101)
邮箱: yangpeng_song@163.com
该讲详细资料下载链接 【Baidu Yun】【Video】【Code】
若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】
若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】
若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】
理论部分
机器人自主运动基本问题
机器人的例子
1.1 这里以下图室内服务机器人为例来说明机器人的主要模块:
- 底盘:差速轮结构,运动避障主要依靠红外或超声波(这种方式更适合于扫地机,对于一定高度的服务机器人需要结合视觉避障)
- 语音交互:麦克风阵列,现在最为自然的人机交互方式就是语音,从今年 Amazon Echo 的销量就可以看出语音交互未来前景广阔
- 相机,即机器人的眼睛,是机器人探索周围环境的入口,也可以用于拍下美的瞬间
1.2 定位与建图的关系
机器人探索一个陌生的环境,比如说在一个布置精美的客厅里自主地运动,它至少需要知道两件事:
- 定位:自己在哪里?(侧重于对自身的了解)
- 建图:周围的环境是怎样的?(侧重于对外在的了解)
定位与建图是相互 耦合 的,即
- 准确的定位需要精确的地图
- 精确的地图来自准确的定位
——————————– 分割线<< 家有小武,如有一母 >>分割线 ——————————–
SLAM 传感器
传感器分类
安装于环境中的传感器 安装于机器人本体上的传感器 二维码(比如 AprilTags) 、GPS、导轨、磁条 IMU(惯性测量单元)、激光、相机 SLAM 的问题往往是针对未知环境的,这意味着无法在环境中去安置传感器来进行机器人的定位,只能通过间接的方法,即使用机器人自身携带的传感器来解决机器人的定位与建图的问题。(以室内家庭服务机器人为例,如果要在用户家里贴二维码或者铺磁条,肯定会影响用户体验的)
两种常用的 SLAM 传感器:激光 VS 相机
Laser Camera 精度高、响应快、研究得比较透彻、
重量偏重、价格高便宜、轻便、信息丰富、计算量大、
需要一定的工作条件(光线、无遮挡、有纹理)相机的种类
相机类别 特点 备注 单目 Monocular 1) 无深度
2) 移动相机后才能得知相机的运动和场景的结构
3) 尺度的不确定性双目 Stereo 1) 通过左右视图的视差计算深度
2) 获得深度图的计算量大HUMAN+ Depth-VPU、 ii science 双目模块、ZED、DUO 深度 RGB-D 1) 结构光、TOF(Time of Flight)
2) 主动测量,功耗偏大
3) 所测深度值较准确
4) 易受太阳光的影响Orbbec Camera、华捷艾米深度相机 其他 鱼眼、全景(Dyson 360°吸尘机器人)、Event Camera 等 共同点:
- 近处物体的像运动快,远处物体的像运动慢
- 利用图像和场景的几何关系,计算相机运动(Motion)和场景结构(Structure)
- 需要处理连续的图像帧
——————————– 分割线<< 家有小武,如有一母 >>分割线 ——————————–
视觉 SLAM 框架
视觉里程计 Visual Odometry
后端优化
- 从带有噪声的数据中优化轨迹和地图(状态估计问题)
- 最大后验概率估计(MAP)
- 前期以 EKF 为代表,现在以 图优化 为代表
回环检测
- 检测相机是否回到早先位置
- 识别曾经到过的场景
- 计算图像间的相似性
- 方法:词袋模型
建图
- 用于导航、规划、通讯、可视化、交互等
- 用于导航、规划、通讯、可视化、交互等
SLAM 问题的数学描述
两个基本方程:
运动方程 (考虑从 k−1 时刻到 k 时刻,相机的位置是如何变化的)
xk=f(xk−1,uk,wk)
式中 xk —— t=k 时刻相机所处的位置
xk−1 —— t=k−1 时刻相机所处的位置
uk —— t=k 时刻的输入量(运动传感器的读数,如码盘、IMU)
wk —— t=k 时刻输入量的噪声观测方程 ( k 时刻相机在
xk 位置上看到某个路标点 yj ,产生了一个观测数据 zk,j )
zk,j=h(xk,yj,vk,j)
式中 vk,j —— t=k 时刻观测里的噪声
也就是说,当我们知道运动测量读数 u 和传感器读数z 时,求解 定位问题(估计 x )和建图问题(估计y )。
这里将 SLAM 问题建模成一个 状态估计问题,即如何通过带有噪声的测量数据,估计内部的状态变量。