SLAM:同时定位与地图构建
-
机器人和计算机视觉领域的基本问题
- 在未知环境中定位自身方位并同时构建环境三维地图
-
应用广泛:
- 增强现实、虚拟现实
- 机器人、无人驾驶
SLAM常用的传感器
- 红外传感器: 较近距离感应,常用与扫地机器人
- 激光雷达: 单线、多线等
- 摄像头: 单目、双目、多目等
- 惯性传感器(英文叫IMU,包括陀螺仪、加速度计等): 智能手机标配
SLAM运行结果
-
设备根据传感器信息
- 计算自身位置(在空间中的位置和朝向)
- 构建环境地图(稀疏或者稠密的三维点云)
SLAM系统常用框架
自2007年PTAM之后,现在的SLAM方法基本上都采用了并行跟踪和建图框架,一般包含以下几个部分:
* 输入: 可以是RGB图像、深度图,甚至IMU测量值
* 前台线程: 根据传感器数据进行跟踪求解,实时恢复每个时刻设备的位姿势
* 后台线程: 对三维点云和关键帧的位姿进行局部或全局优化,减少误差累积,同时对场景进行回环检测
* 输出:设备实时位姿和三维点云。
SfM & Visual SLAM
Structure from Motion和Visual SLAM的区别
SfM可以分为离线和实时的,而实时的SfM其实就是Visual SLAM。Visual SLAM**主要采用摄像头传感器**,
* 根据摄像头的数目可以分为单目摄像头、双目摄像头和多目摄像头等
* Visual SLAM也在结合其它一些传感器,比如廉价IMU、GPS和一些深度摄像头来做到更加鲁棒的SLAM-
以视觉为主的SLAM技术的优势:
- 硬件成本低廉
- 小范围内定位精确度较高
- 无需预先布置场景
Visual SLAM 主要挑战
Visual SLAM已经有几十年的历史,虽然理论上趋向成熟,但在复杂环境下的落地还面临着诸多挑战,比如:
1. 如何处理循环回路序列和多视频序列,如何闭合回路,消除误差累积
2. 如何高效高精度地处理大尺度场景
3. 如何处理动态场景
* 传统的SLAM假设场景是静止的,摄像头是运动
4. 如何处理快速运动和强旋转
* 摄像头快速运动,拍摄的照片模糊
* 摄像头快速旋转
我们课题组的工作
- ENFT-SFM:Efficient Non-Consecutive Feature Tracking for Robust SFM
- 能够高效地处理循环回路和多视频序列
- http://www.zjucvg.net/ls-acts/ls-acts.html
- 单目SLAM系统
- ENFT-SLAM:ENFT-based Large-Scale Monocular SLAM
- 能在大尺度场景下实时运行
- RDSLAM:Robust Monocular SLAM in Dynamic Environments
- 能在动态场景下稳定工作,通过替换部分关键帧
- http://www.zjucvg.net/rdslam/rdslam.html
- RKSLAM:Robust Keyframe-based Monocular SLAM for Augmented Reality
- 可以实时运行在移动设备上
- http://www.zjucvg.net/rkslam/rkslam.html
- ENFT-SLAM:ENFT-based Large-Scale Monocular SLAM
- RGB-D SLAM: RKD-SLAM: Robust Keyframe-based Dense SLAM with an RGB-D Camera
- RKSLAM与深度相机的融合方法
ENFT-SFM: Efficient Non-Consecutive Feature Tracking for Robust SFM
- 非连续特征轨迹匹配:可以大大增加关键帧间特征点的匹配数目,为后端增加足够多的约束,大大减少跟丢的情况
- 基于自适应分段的集束调整: 将长序列分成若干序列进行后端优化,大大加快优化速度
- ENFT-SLAM: ENFT-based Large-Scale Monocular SLAM 是ENFT-SFM的实时化方法
动态场景SLAM的主要问题:
-
场景逐渐在改变
- 左边的例子,人在移动书本,过了几十秒所有的书本的位置都发生了变化,这对传统的SLAM来说是非常难处理的
-
可能有大量的错误匹配
- 动态元素还会导致大量的错误匹配,这对实时稳定的SLAM求解来说也是非常困难的
视点改变造成的遮挡
-
运动物体造成的遮挡
- 会给稳定的SLAM带来挑战
基于关键帧的SLAM与基于滤波器的SLAM的区别
现在Visual SLAM技术方法主要分为两类,一个是keyframe-based SLAM,另一个是filtering-based SLAM。2012年Andrew Davison等人写了一篇文章对这两个方法进行了比较,得出这样的结论:keyframe-based SLAM比filtering-based SLAM在精度上、效率和扩展性上具有更好的性能。但是keyframe-based SLAM也有缺点,一般对强旋转比较敏感。当然,快速运动、运动模糊、特征不够丰富等情况对于这两类方法都很有挑战性
具体内容参见H. Strasdat, J. Montiel, and A. J. Davison. Visual SLAM: Why filter? Image and Vision Computing, 30:65-77, 2012
Visual-Inertial SLAM
- 使用IMU数据提高SLAM的鲁棒性
- 基于滤波的方法
- MSCKF, SLAM in Project Tango
- 基于非线性优化的方法
- OKVIS
- 基于滤波的方法
- 没有真是IMU数据的情况下,能否工作?
- Visual-Inertial SLAM方法广泛应用于机器人领域,这类方法使用IMU数据来提高鲁棒性。但是,在没有真实IMU数据的情况下,能否借鉴一些Visual-Inertial的方法来将SLAM做得更好呢?
- RKSLAM就是解决了这个问题
Visual SLAM技术的发展趋势
-
缓解特征依赖
- 基于边的跟踪
- 直接图像跟踪或半稠密跟踪
- 结合机器学习和先验/语义信息
-
稠密三维重建
- 单/多目实时三维重建
- 基于深度相机的实时三维重建
- 平面的表达和模型自适应简化
-
多传感器融合
每个传感器都有优点和局限性,IMU误差累计快,GPS精度不高,目标是将各个传感器融合在一起,结合IMU、GPS、深度相机、光流计、里程计
未来的工作展望
- 协同SLAM
- 稠密SLAM
- 场景分析和理解
- 在VR、AR、机器人和无人驾驶领域进行应用