前言
还记得在上家公司时,我就常常看到身边的同事拿着机器人小车在公司的走廊上跑来跑去,有时运行得很顺利,有时候却总是撞上墙壁,那是我就感到这个东西很好玩,什么时候自己也能玩一下。最近终于有机会接触到机器人的视觉问题,于是开始查询相关资料,而视觉SLAM作为机器人视觉定位和导航主流的研究方向,也是我最主要关注的方面。鉴于我自己对这方面的知识并没有一个系统的认识,所以我把我最近找到的资料做一些整理,试图梳理一下相关的知识之间的联系。
SLAM是什么?SLAM技术的对于机器人的重要性
SLAM的全称是:Simultaneous Localization and Mapping,中文翻译为即时定位与地图构建。需要理解的是,SLAM并非单一的算法而是更像是一中概念,是各种用于定位和建图的算法的集合。
视觉SLAM是通过机器视觉的方法来处理定位和建图的问题,但是SLAM并不只有视觉SLAM一种,它也可以通过其他方法来处理其相关核心问题。只是由于视觉图像携带信息的丰富性,各种视觉传感器摄像头的发展,以及各种计算机处理视觉图像方法的成熟,让使用机器视觉来处理SLAM问题,成为了当前主流SLAM研究方向。
对一个需要实现自由移动的机器人而言,它首先要解决的最基础的问题就是对它所处环境的了解,而SLAM技术可以分别从两个方面,即:机器人自身的位置和周围环境的情况,给予机器人对于自身和所处环境的:位置和地图这两个关键信息,所以对这类机器人而言,SLAM技术是它实现自由移动的关键之一。
SLAM的应用方向
- 自动驾驶
- 无人机自动返航于蔽障
- 工业运输机器人
- VR和AR设备
关键设备
在SLAM中最重要的设备就是其感知周围信息的传感器了,传感器类型的选择对SLAM的实现方式和难易程度都密切相关。当前SLAM使用的传感器主要分一下两类:
- 激光雷达
激光雷达的作用是提供机器人本体与周围环境障碍物的距离信息,实物如下图所示:
优点:
- 扫描精度高
- 速度快
- 计算量相对较小
- 研究历史久技术比较成熟
缺点:
- 价格昂贵
- 不易表示回环和线性误差严重
- 视觉摄像头
视觉SLAM采用的是各种类型的摄像头作为传感器的,当前主要的摄像头类型有以下三类:单目,双目,RGBD。对于以上三类,SLAM实现的难度为:单目视觉 > 双目视觉 > RGBD。
单目相机简称MonoSLAM,主要优点是成本低、装置简单,但是缺陷也是很明显:缺乏深度信息,只能购过其他手段来估测,这使得SLAM实现其他会比较困难。
双目相机通过两个摄像头拍摄物体的时差来获取深度信息,因此对比单目相机它获取深度信息相对来说会容易一些,但是双目相机的配置与标定都较为复杂,对计算量要求较高。
RGBD相机是普通的摄像头加上深度摄像头组成,他最大的优点是它可以直接获得深度图像信息,而不需要通过其他手段计算后才能获得,所以其实现SLAM是三者中最简单的一个,但是由于这种相机出现较晚,目前还存在测量范围窄、噪声大、视野小等诸多问题。
视觉SLAM的框架
针对于视觉SLAM,一般都有一个基本的框架:数据采集、VO、后端、建图、回环检测
相关学习资料链接
- OpenSLAM:https://openslam.org/
- Andrew Davison的课程: http://www.doc.ic.ac.uk/~ajd/Robotics/index.html
- 创客智造:http://www.ncnynl.com/category/slam-learning/
- 半仙居士blog: http://www.cnblogs.com/gaoxiang12/
- 泡泡机器人课件:http://www.rosclub.cn/article/list/id/9/p/9.html