机器人状态估计总体由如下三部分构成:

1.前端里程计

2.后端优化

3.回环约束

目前总体的研究重心在后端优化,但本质上无论是光束平差法BA(或称为集束调整)还是卡尔曼滤波,慢慢现在差异都变得越来越小了。这个在后续再详解。今天重点聊聊前端。

前端里程计总体来说是比较简单的部分,描述常用的3种,有部分前端涉及到专利壁垒,提及的主要都是公开和方便使用的。先从提取说起:

1. ORB

ORB是一种相当有效的提取前端特征的方法,主要提取角点与描述子。角点就是角点咯(和字面意思一样),描述子(Descripter)是比较有趣的东西,实际上相当于给其定义了一个方向!即质心对应的重心。最终因为用一组二进制进行存储和处理,开销比较理想。

初学者无需过度去研究这个东西的原理,属于大成熟项目,懂的使用即可

在纯VSLAM里是最好用的方法之一。

2. LK光流法

最主流的前端特征提取方法,简单的说就是利用灰度差提取视觉特征点,缺点是受光流和阴影变化影响极大!优点就是极其的高效,为了提升准确度可以利用尺度不确定性建立多层光流金字塔(如3层)。

这种方法成为最主流的方法,是因为在加入了各种优化/滤波用的运动传感器如IMU/车速计后进行耦合后,高效的LK光流法成为了利器,类似于航空发动机的双引擎架构。

3.直接法

主流在用直接法的系统有DSO,直接法可以认为是加强版光流法!同样具备多重金字塔架构,用特殊的方法计算光度误差及其Jacobian 

个人觉得应该是未来比较主流的手段,这一类求解的前端精度相当高。

4.深度学习前端

深度学习前端目前总体来看比较扯淡,但是目前孙佳明博士研究出了一类针对特定目标的位姿估计前端,这个从原理和逻辑看应该属于学习网络(仍然需要样本和数据集,但是可以高速生成),具体大家可以去研究孙博士的LoFTR,总体这个挺复杂的。

5.基于线段跟踪和凸优化的前端

这个目前中科院自动化所在做,从原理上看非常有意思也符合逻辑,我们也在尝试这种可能性效果不佳可能还是因为我们水平一般。。。同时因为目前还没有开源,实际效果还有待市场或者项目中的验证。大家有兴趣地可以去看他们的paper,从实践效果来看很棒。