目录
一、问题提出
首先假设一个场景,在下图的机器人上,你如何让它自由行走?也就是说,拥有自主运动能力?
当然,增加轮子和电机是必不可少的。然而,有了轮子和电机,它只能乱跑乱撞,因为缺少规划和控制。如何才能拥有规划和控制?首先需要增加相机,通过相机捕获周边环境信息。
然而,相机虽可以感知环境,归根到底要知道环境的啥信息,要干啥?答案是,至少需要解决两个问题:
1 周边环境什么样子?构建环境地图。(建图)
2 清楚知道,我在哪里?(定位)
回顾一下,在没有提出SLAM之前,或者说如果不用SLAM,如何能够解决以上两个基本问题?其方案有:
- 地上标注黄线,让机器沿黄线运动。
- 在墙上贴上二维码做地标
- 用无线定位设备。
- 户外用GPS
而SLAM方案与以上所列有所不同,它是通过如下配置完成:轮式编码器、相机、激光传感器来完成定位和构图的。这里对比一下,非SLAM方案与SLAM比较存在啥区别:
- 非SLAM方案将建图和定位安装在机器人的外端,与环境构成一体。
- SLAM将定位和地图,安装在移动机器人上,与机器人构成一体。
以上两种方案的优缺点比较:
- 非SLAM方案优点,构成简单,容易实现。缺点是条件限制太多,太多的限制将不足以实现机器人的自主行走。
- SLAM方案优点,定位系统独立于环境,不受环境限制,能实现自主行动。缺点:对环境测量不是直接的,是迂回的,要求算法必须足够高级。
二、视觉测量传感器--相机
SLAM的相机有三种:1)单目相机 2)双目相机 3)RGB-D深度相机。单目相机,就是普通的相机,输出的是图片。双目相机,是由两个单目相机构成,因此,能同时拍摄两张图片,这两张图片相差一个视角,因此密切相关,通过对极几何、三角测量等原理换算出距离。注意,换算景物距离,不仅仅是个障碍规避问题,更重要的是能换算出相机移动的距离向量,从而实现自身定位。RGB-D是2010年才出现的相机,是彩色,双目,能测量景物深度的相机。由于双目相机计算量大,耗时,因此业内注重单目相机,因为单目移动一个距离后,前后两个图片也可以实现双目相同的计算。
三、经典SLAM框架
如果将环境限定成:静态、刚体、光照变化不显著、没有人为干扰。那么,目前的SLAM已经相当成熟。而环境如果是动态的、光干扰明显、物体形状可变(如布料),则挑战骤然升级。以下我们列出目前较成型的SLAM框架结构:
1)传感器信息读取:说白了就是把现场图片导入内存。加上必要的预处理图像。
2)前端(视觉里程机):通过两次相机采样,换算出相机走过的距离向量。也就是处理STEP的问题。
3)后端(非线性优化):将前端形成的每一步移动,并产生全局轨迹地图。解决ROUTER问题。
4)回环检测:是计算相机移动中,是否产生回路。
5) 建图:根据后端所生成的轨迹,以及及环境信息,构成全局地图。
参考资料:《视觉SLAM十四讲》高翔