0. 简介

现在的SLAM算法在静态环境中表现良好,但在动态环境中很容易失败。最近的工作将基于深度学习的语义信息引入到SLAM系统以减轻动态对象的影响。然而,在资源受限的机器人的动态环境中应用鲁棒定位仍然具有挑战性。所以《RGB-D Inertial Odometry for a Resource-Restricted Robot in Dynamic Environments》提出了一种用于动态环境下资源受限机器人的实时RGB-D惯性里程计系统-Dynamic-VINS。系统包含三个主要并行运行的线程:目标检测、特征跟踪和状态优化。这里作者放出了Github代码。Dynamic-VINS采用基于网格的特征检测方法,提出了一种快速、高效的提取高质量FAST特征点的方法。应用IMU来预测运动,进行特征跟踪以及运动一致性检测。近年来,他们的实验室也在这方面做出了很多的贡献。这里CSDN上传空间有限,所以各位想看的直接去IEEE官网看即可。其方法和Github上的YOLO-DynaSLAM差异不大。但是效率更高。

[video(video-vMFhXdd4-1669887009954)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=296794486)(image-https://img-blog.csdnimg.cn/img_convert/2f4baf588b97ac4c4e7602269b948bae.jpeg)(title-RGB-D Inertial Odometry for a Resource-restricted Robot in Dynamic Environments)]

1. 文章贡献

本文提出一种动态环境下资源受限机器人的实时RGB-D惯性里程计(dynamic - vins)。它使边缘计算设备能够以较小的计算负担为移动平台提供即时鲁棒的状态反馈。一种不需要高精度深度相机的高效动态特征识别模块可用于配备深度测量模块的移动设备。本文的主要贡献如下:

  1. 为了在动态复杂环境下为资源受限机器人提供实时状态估计结果,提出了一种高效的基于优化的RGB-D惯性里程计。
  2. 提出了轻量级的特征检测与跟踪方法,降低了计算负担。此外,提出了结合目标检测和深度信息的动态特征识别模块,以提供复杂和户外环境下鲁棒的动态特征识别。
  3. 在资源受限平台和动态环境下进行了验证实验,验证了所提方法的准确性、鲁棒性和高效性。

2. 具体算法

本文介绍的算法是基于VINS-Mono[2]和VINS-RGBD[25]对提出的SLAM系统进行了扩展;我们的框架如图1所示,主要贡献点的模块用不同的颜色突出显示。为了提高效率,Dynamic-VINS中有三个主线(由虚线包围)并行运行:目标检测、特征跟踪和状态优化。彩色图像被传递给目标检测线程和特征跟踪线程。对连续两帧之间的IMU测量值进行[26]预积分,用于特征跟踪、运动一致性检查和状态优化。

在特征跟踪线程中,利用IMU预积分实现特征跟踪,并通过基于网格的特征检测实现特征检测。对象检测线程实时检测每帧中的动态对象。然后,状态优化线程汇总特征信息、目标检测结果和深度图像来识别动态特征;针对漏检情况进行漏检补偿模块。运动一致性检测过程结合IMU预积分和历史位姿估计结果识别潜在动态特征。最后,利用稳定特征和IMU预积分结果进行姿态估计。IMU的传播产生IMU率的姿态估计结果。该系统也支持闭环,但重点关注与闭环无关的局部化。

3. 特征匹配

对于每幅输入图像,使用KLT稀疏光流方法[27]跟踪特征点;利用帧间IMU测量值预测特征点的运动。通过减少光流金字塔层数,提供更好的特征初始位置估计,提高特征跟踪效率。它能有效地去除噪声等不稳定特征和运动不一致的动态特征。基本思想如图2所示(这部分类似vins的操作)。

在前一帧中,稳定的特征被标记为红色,新检测到的特征被标记为蓝色。当当前帧到达时,使用当前帧和前一帧之间的IMU测量值来预测当前帧中的特征位置(绿色)。光流将预测的特征位置作为初始位置,在当前帧中寻找匹配的特征。成功跟踪的特征被标记为红色,而失败的特征被标记为不稳定特征(紫色)。为避免特征检测的重复和聚合,设置以稳定特征为中心的橙色圆形掩模;将不稳定特征所在区域视为不稳定特征检测区域,并用紫色圆形掩码以避免不稳定特征检测。

根据掩码,从当前帧的未掩码区域检测到新的特征,并将其着色为蓝色。上述方法可以获得均匀分布的特征,捕捉综合约束,避免在模糊或弱纹理区域重复提取不稳定特征。长期的特征跟踪可以在接下来的基于网格的特征检测中减少时间消耗。

4. 基于网格的特征检测

系统保持最小数量的特性以保持稳定性。因此,需要不断地从帧中提取特征点。采用基于网格的特征检测方法。将图像划分为网格,对每个网格的边界进行填充,以防止忽略网格边缘的特征;填充使当前网格能够获得用于特征检测的相邻像素信息。与遍历整个图像进行特征检测不同,只有特征匹配不足的网格才进行特征检测。对于纹理弱而未能检测到特征或被蒙版覆盖的网格单元,将在下一帧检测中跳过,避免重复无用检测。采用线程池技术来提高基于网格的特征检测的并行性能。因此,特征检测的时间消耗显著减少,且没有损失。

快速特征检测器[28]可以高效地提取特征点,但容易将噪声作为特征,提取相似的聚类特征。因此,结合第III-A节的mask和非极大值抑制的思想,选择高质量且均匀分布的快速特征。

5. 动态特征识别

通过上述改进,大部分特征点都能得到稳定的跟踪。然而,动态目标的长时跟踪特征往往会伴随异常运动,给系统引入错误的约束。为了提高检测效率和计算量,采用一种实时单阶段目标检测方法YOLOv3[11]对人、车等多种动态场景元素进行检测。如果检测到的边界框覆盖了图像的很大区域,盲目删除边界框中的特征点可能会导致没有可用的特征来提供约束。因此,类似语义分割的掩码有助于跟踪未被动态对象遮挡的特征,从而维持系统的运行。本文结合目标检测和深度信息进行高效的动态特征识别,以实现与语义分割相当的性能。深度相机测量的距离越远,精度越差。这个问题使得一些充分利用深度信息的方法,如种子填充、DBSCAN、K-Means等,在低精度深度相机下表现不佳,如图5(a)所示。因此,将检测到的边界框内的点集和深度信息进行集成,以获得与语义分割相当的性能,如图3所示。

6. 漏检补偿

由于目标检测有时可能会失败,因此提出的Dynamic-VINS利用之前的检测结果来预测接下来的检测结果,以补偿漏检。假设相邻帧中的动态物体具有一致的运动。一旦检测到动态对象,它的像素速度和边界框将被更新。假设j为当前检测帧,j−1为前一检测帧,定义帧与帧之间第k个动态对象的像素速度^Kv^{cj} (pixel/frame)为

其中,^Ku^{c_j}_c^Ku^{c_{j−1}}_c分别表示第j帧和第j−1帧中第k个目标检测边界框中心的像素位置。加权预测速度^K\hat{v}定义为

7. 移动一致性检查

由于目标检测只能识别人为定义的动态对象,存在漏检问题,状态优化仍然会受到人移动的书籍等未知移动对象的影响。dynamic - vins将IMU预测的姿态与滑动窗口中优化的姿态相结合来识别动态特征。

假设第k个特征首先在第i个图像中观察到,并且在滑动窗口中被其他m个图像观察到。特征观测在滑动窗口内的平均重投影残差rk定义为

其中u^{c_i}_k为第i帧第k个特征的观测值;P^{c_j}_k为第j帧中第k个特征的三维位置;T^b_cT^w_{b_j}分别是相机坐标系到车身坐标系的转换,第j个车身坐标系到世界坐标系的转换;π表示摄像机投影模型。当r_k超过预设阈值时,将第k个特征视为动态特征。

如图7所示,移动一致性检查(moving consistency check, MCC)模块可以发现不稳定的特征。然而,一些稳定的特征被错误识别(左上图),站着的人的特征没有被识别(右下图)。阈值越低,对不稳定特征的召回率越高。此外,如果重投影误差低于阈值,则错误识别的不稳定特征具有更多的观测值,将被循环。


8. 参考链接

https://mp.weixin.qq.com/s?__biz=MzI5MTM1MTQwMw