SLAM 是什么?机器人一边走一边画地图、一边确定自己的位置
同步定位与地图构建(Simultaneous Localization and Mapping,SLAM)是一种让机器人或设备在一个陌生的环境中,一边移动、一边构建周围环境的地图,同时确定自己在地图中位置的技术。它是机器人实现自主导航的核心技术之一。
一个“先有鸡还是先有蛋”的问题
想象你被蒙着眼睛带到一栋陌生的大楼里,摘下眼罩后需要自己找路。你一边走,一边观察周围的走廊、门和标志,在脑子里画出一张地图;同时,你也要根据这张地图来判断自己现在在哪里。SLAM 要解决的就是这样的问题,而它的难点在于两个任务相互依赖:要准确地画出地图,需要知道自己在哪里;而要知道自己在哪里,又需要一张准确的地图。SLAM 的目标就是同时解决这两个问题。
它是怎么做的
SLAM 系统通过各种传感器来感知环境和自身的运动。激光雷达:发射激光并测量反射回来的时间,得到周围物体精确的距离信息,生成点云。这种方式精度高、受光照影响小,但设备成本较高。摄像头:通过分析图像来获取环境信息,包括普通的单目摄像头、能计算深度的双目摄像头,以及能直接测量深度的深度摄像头。基于摄像头的 SLAM 被称为视觉 SLAM,成本低、信息丰富,但受光照和环境纹理的影响较大。此外,惯性测量单元(IMU)可以测量设备的加速度和旋转,轮式里程计可以记录车轮转了多少圈,它们通常与激光雷达或摄像头结合使用,提高定位的准确性和稳定性。
一个典型的 SLAM 系统包括几个部分:前端,也叫视觉里程计,通过比较相邻时刻的传感器数据,比如前后两帧图像中匹配的特征点,估计设备在这段时间内的运动;后端优化,前端的估计会有误差,而且误差会随着时间不断累积,后端用概率估计和优化的方法,综合所有的观测数据,得到更准确的位置和地图;回环检测,当设备回到之前去过的地方时,识别出这一点,可以用来大幅修正累积的误差,让地图首尾闭合;以及根据需要构建不同形式的地图,比如稀疏的特征点地图、稠密的三维地图、用于导航的栅格地图。
发展历程
SLAM 问题的研究始于 20 世纪 80 年代,早期主要使用扩展卡尔曼滤波、粒子滤波等概率方法。后来,基于图优化的方法逐渐成为主流。在视觉 SLAM 领域,2007 年的 PTAM、2015 年的 ORB-SLAM 等是具有代表性的系统,ORB-SLAM 及其后续版本被广泛使用。近年来,深度学习也被引入 SLAM 中,用于提取更鲁棒的特征、估计深度、进行语义理解;神经辐射场和三维高斯泼溅等新的三维表示方法也被用来构建更逼真的稠密地图。
应用
扫地机器人:很多扫地机器人通过激光雷达或摄像头建立房间的地图,规划清扫路线,而不是随机地乱撞。自动驾驶:帮助车辆进行精确的定位和建立高精度地图。无人机:在没有卫星定位信号的室内或复杂环境中自主飞行。增强现实和虚拟现实:手机和头戴设备通过 SLAM 实时地理解周围的空间,把虚拟的物体稳定地“放置”在真实的环境中。此外还用于仓储物流机器人、服务机器人、地下和水下的勘探等。