SLAM技术:机器人自主导航的关键

什么是SLAM?

SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。

问题可以描述为:将一个机器人放入未知环境中的未知位置,是否有办法让机器人一边逐步描绘出此环境完全的地图,同时一边决定机器人应该往哪个方向行进。

例如扫地机器人就是一个很典型的SLAM问题,所谓完全的地图(a consistent map)是指不受障碍行进到房间可进入的每个角落。


SLAM最早由Smith、Self和Cheeseman于1988年提出。

由于其重要的理论与应用价值,被很多学者认为是实现真正全自主移动机器人的关键。

当你来到一个陌生的环境时,为了迅速熟悉环境并完成自己的任务(比如找饭馆,找旅馆),你应当做以下事情:

  • a.用眼睛观察周围地标如建筑、大树、花坛等,并记住他们的特征(特征提取)
  • b.在自己的脑海中,根据双目获得的信息,把特征地标在三维地图中重建出来(三维重建)
  • c.当自己在行走时,不断获取新的特征地标,并且校正自己头脑中的地图模型(bundle adjustment or EKF)
  • d.根据自己前一段时间行走获得的特征地标,确定自己的位置(trajectory)
  • e.当无意中走了很长一段路的时候,和脑海中的以往地标进行匹配,看一看是否走回了原路(loop-closure detection)。实际这一步可有可无。
  • 以上五步是同时进行的,因此是simultaneous localization and mapping

真正的机器人为什么都需要SLAM?的图1

离不开这两类传感器

目前用在SLAM上的Sensor主要分两大类,激光雷达和摄像头。

真正的机器人为什么都需要SLAM?的图2

这里面列举了一些常见的雷达和各种深度摄像头。激光雷达有单线多线之分,角分辨率及精度也各有千秋。

SICK、velodyne、Hokuyo以及国内的北醒光学、Slamtech是比较有名的激光雷达厂商。他们可以作为SLAM的一种输入形式。

这里展示的就是一种简单的2D SLAM。

真正的机器人为什么都需要SLAM?的图3

这个小视频是宾大的教授kumar做的特别有名的一个demo,是在无人机上利用二维激光雷达做的SLAM。


真正的机器人为什么都需要SLAM?的图4


而VSLAM则主要用摄像头来实现,摄像头品种繁多,主要分为单目、双目、单目结构光、双目结构光、ToF几大类。

他们的核心都是获取RGB和depth map(深度信息)。

简单的单目和双目(Zed、leapmotion)我这里不多做解释,我主要解释一下结构光和ToF。

最近流行的结构光和TOF

结构光原理的深度摄像机通常具有激光投射器、光学衍射元件(DOE)、红外摄像头三大核心器件。

真正的机器人为什么都需要SLAM?的图5

这个图(下图)摘自primesense的专利。

真正的机器人为什么都需要SLAM?的图6

可以看到primesense的doe是由两部分组成的,一个是扩散片,一个是衍射片。

先通过扩散成一个区域的随机散斑,然后复制成九份,投射到了被摄物体上。根据红外摄像头捕捉到的红外散斑,PS1080这个芯片就可以快速解算出各个点的深度信息。

这儿还有两款结构光原理的摄像头。

真正的机器人为什么都需要SLAM?的图7

真正的机器人为什么都需要SLAM?的图8

第一页它是由两幅十分规律的散斑组成,最后同时被红外相机获得,精度相对较高。但据说DOE成本也比较高。

还有一种比较独特的方案(最后一幅图),它采用mems微镜的方式,类似DLP投影仪,将激光器进行调频,通过微镜反射出去,并快速改变微镜姿态,进行行列扫描,实现结构光的投射。(产自ST,ST经常做出一些比较炫的黑科技)。


ToF(time of flight)也是一种很有前景的深度获取方法。

传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息。

类似于雷达,或者想象一下蝙蝠,softkinetic的DS325采用的就是ToF方案(TI设计的)。

但是它的接收器微观结构比较特殊,有2个或者更多快门,测ps级别的时间差,但它的单位像素尺寸通常在100um的尺寸,所以目前分辨率不高。

在有了深度图之后呢,SLAM算法就开始工作了,由于Sensor和需求的不同,SLAM的呈现形式略有差异。

大致可以分为激光SLAM(也分2D和3D)和视觉SLAM(也分Sparse、semiDense、Dense)两类,但其主要思路大同小异。

真正的机器人为什么都需要SLAM?的图9


这个是Sparse(稀疏)的

真正的机器人为什么都需要SLAM?的图10


这个偏Dense(密集)的

真正的机器人为什么都需要SLAM?的图11

SLAM算法实现的4要素

SLAM算法在实现的时候主要要考虑以下4个方面吧:

  1. 地图表示问题,比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择
  2. 信息感知问题,需要考虑如何全面的感知这个环境,RGBD摄像头FOV通常比较小,但激光雷达比较大
  3. 数据关联问题,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理
  4. 定位与构图问题,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化
  5. 其他的还有回环检测问题,探索问题(exploration),以及绑架问题(kidnapping)。


640-3

  1. 这个是一个比较有名的SLAM算法,这个回环检测就很漂亮。但这个调用了cuda,gpu对运算能力要求挺高,效果看起来比较炫。
  2. 以VSLAM举个栗子

真正的机器人为什么都需要SLAM?的图12

  1. 我大概讲一种比较流行的VSLAM方法框架。
  2. 整个SLAM大概可以分为前端和后端


前端

  1. 前端相当于VO(视觉里程计),研究帧与帧之间变换关系。
  2. 首先提取每帧图像特征点,利用相邻帧图像,进行特征点匹配,然后利用RANSAC去除大噪声,然后进行匹配,得到一个pose信息(位置和姿态),同时可以利用IMU(Inertial measurement unit惯性测量单元)提供的姿态信息进行滤波融合后端则主要是对前端出结果进行优化,利用滤波理论(EKF、UKF、PF)、或者优化理论TORO、G2O进行树或者图的优化。最终得到最优的位姿估计。


后端

  1. 后端这边难点比较多,涉及到的数学知识也比较多,总的来说大家已经慢慢抛弃传统的滤波理论走向图优化去了。
  2. 因为基于滤波的理论,滤波器稳度增长太快,这对于需要频繁求逆的EKF(扩展卡尔曼滤波器),PF压力很大。
  3. 而基于图的SLAM,通常以keyframe(关键帧)为基础,建立多个节点和节点之间的相对变换关系,比如仿射变换矩阵,并不断地进行关键节点的维护,保证图的容量,在保证精度的同时,降低了计算量。


列举几个目前比较有名的SLAM算法:PTAM,MonoSLAM, ORB-SLAM,RGBD-SLAM,RTAB-SLAM,LSD-SLAM。

真正的机器人为什么都需要SLAM?的图13

  1. RGBD-SLAM

真正的机器人为什么都需要SLAM?的图14

  1. MonoSLAM

真正的机器人为什么都需要SLAM?的图15

  1. LSD-SLAM

真正的机器人为什么都需要SLAM?的图16


  1. 所以大家如果想学习SLAM的话,各个高校提高的素材是很多的,比如宾大、MIT、ETH、香港科技大学、帝国理工等等都有比较好的代表作品,还有一个比较有前景的就是三维的机器视觉,普林斯顿大学的肖剑雄教授结合SLAM和Deep Learning做一些三维物体的分类和识别,实现一个对场景深度理解的机器人感知引擎。

真正的机器人为什么都需要SLAM?的图17


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空