什么是SLAM
刚开始接触SLAM时,对“同时定位与建图”的第一印象上有种似懂非懂的样子。其中《视觉惯性slam理论与源码解析》这本书讲的比较通俗易懂。
以扫地机器人为例,它在工作时:
1)在一个未知环境里(如房间),需要知道自己位于什么位置?这个是定位(Localization)
2)需要知道自己所在的这个未知环境是怎样的?这个是建图(Mapping)
那么问题来了,既然都知道自己在房间的位置,不就可以完成清扫了吗,那么为什么还要建图呢?
建图之后,机器人可以知道自己位于地图中的位置,这样就能判断是否来过该位置,可以形成一个很好的闭环效果,对与扫地机器人而言,有了定位和地图,可以进行运动规划,设计最优路线。此外,周围世界可能会随时发生变化,比如刚才走过的地方过了一会儿多了个障碍物,下次经过时会更新之前的地图,确保运动定位与地图构建尽量保持一致。
这里给出比较容易理解的定义:
SLAM是指移动智能体(机器人、手机、无人机、汽车等等)从一个未知环境里的未知地点出发,在运动过程中通过自身传感器观测周围环境,并根据环境定位自身的位置,再根据自身位置进行增量式的地图构建,从而达到同时定位和建图的目的。
其中,定位和建图是相辅相成的,地图可以提供更好的定位,定位又可以进一步扩展地图。
从定义以及实际使用可以发现,SLAM非常强调在未知环境下自身和环境的相对位置,这其实和人类到了一个陌生环境后,通过观察周围环境来判断自己的位置是同样的道理,这个过程中人脑海里也有对周遭环境进行建图,探索过程中能够知道自己是否经过同样的地点。
SLAM与地图导航软件的区别
1)精度不同
SLAM的精度可以达到厘米级别,甚至更高,而一般的民用导航,都很难做到车道级别
2)使用环境不同
手机导航采用的卫星定位仅适用于室外开阔环境,建筑物内部、洞穴、水下等,以及某些卫星信号弱的地方,卫星定位则会失效。而SLAM则能在上述环境下发挥作用
3)自由度不同
导航软件的定位通常只是一个2D的平面坐标,也就是2个自由度,而SLAM可以得到6个自由度(位置和姿态)
SLAM应用领域
对比项目 | 自主移动机器人 | 自动驾驶汽车 | 增强/虚拟现实 | 无人机 |
---|---|---|---|---|
主要传感器 | 鱼眼摄像头、双目摄像头、RG-D摄像头、激光雷达、轮速计 | 环视摄像头、激光雷达、毫米波雷达、IMU、RTK、轮速计 | 鱼眼摄像头、双目摄像头、RGB-D摄像头、IMU | 双目摄像头、IMU、超声波、GPS |
精度 | 关注全局定位精度,需要获得全局一致地图,误差需控制在一定范围,循环回路要能闭合 | 对定位精度要求较高 | 关注局部定位精度,要求估计的位姿非常准确,特别是AR的的虚实融合,否则可能出现明显的漂移、重影、抖动 | 工作范围大,对定位精度要求不高 |
运行效率 | 低于运行机器人对效率要求不高 | 出于安全考虑,对时效性要求非常高 | 在有限的计算资源下实时运行,对运行效率要求很高 | 在有限的计算资源下实时运行,对运行效率要求很高 |
鲁棒性 | 一般要求 | 出于安全考虑,鲁棒性要求非常高 | 要求较高 | 出于安全考虑,鲁棒性要求很高 |
硬件配置 | 可配置高性能硬件,对体积、功耗要求不高 | 可配置高性能硬件,对体积、功耗要求不高 | 要求硬件体积尽量小,低功耗、低成本 | 要求硬件体积尽量小,低功耗 |