一文看懂机器人与自动驾驶与机器人的“眼睛”[即时定位与地图重建SLAM]到底是什么?有哪几个关键环节?他们之间的联系是什么?
即时定位与地图重建(SLAM)到底是什么?为什么需要它?在哪需要它?如何使用它?
SLAM技术是什么?它就是通过摄像头和雷达等传感器来对周围环境进行实时地图重建并且还能计算出传感器位于所重建的地图的哪个地方。
SLAM技术有什么用?在哪需要它?如何使用它?自动驾驶需用用SLAM技术来建图和定位自己在哪。通过建图后才能决策到底前面有没有车,以及前面是否有路口,到底改怎么转。机器人需要对周围环境进行建图才知道如何规划执行任务的行动路线。SLAM技术就像人的眼睛,没了眼睛哪都去不了。还有一个很广泛的应用就是增强现实技术(AR),我们用淘宝的天猫精灵AR可以看到那个精灵能够很逼真的站在地面,这就是因为淘宝通过摄像头对周围环境进行重建,然后把三维模型按照合适的角度恰当的放在了地面。由于月球和火星离地球非常远无法实时发送电磁波控制月球车,因此它也需要用SLAM技术实现自主探索。大家进商场会发现高德地图没法用,这是因为GPS压根就在室内没信号而且精度完全没法满足室内导航。如果我们用SLAM技术结合手机摄像头那就能让手机根据周围环境来指引我们去想去的店铺。
最简单的SLAM技术是通过提取周围环境的特征点,算出他们之间的相对位置关系来作为地图。比如我把某条路的路灯和红路灯作为特征点,算出他们之间位置关系那么我不就得到了这个区域的地图了么。接下来我就将就基于特征点的SLAM技术从整体介绍下SLAM技术。
基于特征点的SLAM要解决的问题是什么?
已知:机器人观测到自己相对各个特征点的距离,机器人控制命令(如:速度,移动距离,朝向)
待求:各个特征点之间的相对位置关系(即特征点地图),机器人的移动路径
注意:机器人的位姿和所构建的特征点地图是相对于世界坐标下的坐标数据。而机器人观测值(观测到自己相对于各个特征点的距离)则是一个相对距离,所以观测值是把它自己当做参考坐标系。
只要知道各个特征点之间的相对位置关系就完成了地图的构建。只要能算出机器人移动路径那就能知道每个时刻机器人位置在哪。
基于特征点的SLAM怎么做的?有哪几个关键环节?他们之间的联系是什么?
- 初始化将起点设置为世界坐标系
- 根据控制命令估计当前时刻机器人所在的位置(如速度是10m/s,那么过了1秒那就机器人相对世界坐标系就走了10m)
- 根据传感器测量值算出各个路标相对于机器人自己的相对位置坐标。然后再根据自己相对于世界坐标系的坐标来计算各个路标相对于世界坐标系下的坐标。
- 将这些路标相对世界坐标系下的坐标保存作为地图。(可以用作未来的导航)
- 重复2,3,4就可以构建出这个环境的地图。
- (然后根据回环检测发现自己走到自己曾经走过的地方还可以校准下自己的坐标。)