论文祥读之——动态场景的多层次地图构建
- 0. 出发点(暨摘要)
- 1. 引言
- 2. 相关工作
- 3.主要内容概括
- 3.1 几何地图的构建
- 3.1.1 密集点云地图和八叉图的构建
- 3.1.2 平面地图的构建
- 3.2 对象地图的构建
- 3.2.1 对象参数化和数据关联
- 3.2.2 对象的更新与优化
- 4. 实验
- 4.1 构建几何地图
- 4.2 构建物体地图
- 4.3 在真实环境中的稳健性测试
- 4.4 动态物体跟踪实验
- 5. 本文总结
- 6. 个人读后感
论文网址:https://arxiv.org/pdf/2308.04000.pdf
源码网址:https://github.com/Hbelief1998/DyMLM-SLAM
注意 源码好像还没发不出来,git下来的文件里面只有一些图片。
0. 出发点(暨摘要)
在动态场景中,视觉SLAM中的定位和建图都面临着重大挑战。近年来,大量优秀的研究工作为定位问题提出了有效的解决方案。然而,针对动态场景下的长时间一致性地图构建的优秀研究工作较少,严重阻碍了地图应用的发展。
针对这一问题,设计了一种面向动态场景的多层次地图构建系统。该系统采用多目标跟踪算法、DBSCAN聚类算法和深度信息对目标检测结果进行校正,准确提取静态点云,并构建密集的点云图和八叉树图。提出一种面向动态场景的平面地图构建算法,涉及动态环境下平面的提取、过滤、数据关联和融合优化,从而生成平面地图。此外,还提出了一种针对动态场景的目标地图构建算法,包括目标参数化、数据关联和更新优化。在公开数据集和真实场景上的大量实验验证了所构建的多层次地图的准确性和所提算法的鲁棒性。最后,利用构建的目标映射展示了算法在动态目标跟踪中的实际应用前景。
1. 引言
下图1为动态场景多层次地图构建算法的系统框架。
- 浅绿色部分为输入模块,输入RGB图像和深度图像。
- 深绿色部分为预处理模块,主要负责语义信息的获取和预处理。
- 黄色、蓝色和棕色模块为映射模块,分别表示构建密集点云地图和八叉树地图、平面地图、物体地图的一般过程。
- 紫红色为输出模块,输出由映射模块构建的多级映射。
本文的主要贡献有:
- 基于修正后的目标检测结果对点云进行过滤,构建干净的点云图和只包含静态元素的八叉树图。
- 提出一种在动态场景中构建平面地图的方法,实现对环境的结构感知。
- 提出一种在动态场景中构建物体地图的方法,使SLAM能够服务于更高层次的需求,如机器人环境理解、物体操纵和语义增强现实。
- 目前为止是第一个进行尝试在动态场景中,构建平面地图的工作,对物体进行精确参数化,构建精确完整的轻量化物体地图的。
2. 相关工作
对于动态场景制图,目前主要解决两个关键问题:
- 解决语义信息缺失引起的动态噪声块
- 提高映射效率
对于动态场景制图的研究,目前主要集中在:
- 构建密集点云地图
- 构建八叉图
- 基于体素或TSDF的密集重建
为本文的分析打下基础的一些研究:
- DS-SLAM使用log-odds评分来过滤不稳定的体素,并更新这些体素的语义,以构建密集的语义3D八叉树。
- Detect-SLAM为每个关键点实时传播运动概率,并构建环境的实例级语义图。
- Han等利用光流和PSPNet对动态点进行检测和剔除,同时创建了语义点云图和语义八叉树图。
- Wen et al.利用深度误差、光度误差和重投影误差为静态点分配鲁棒权值,删除动态对象构建八叉树语义地图
- Cheng等人将几何信息、语义信息和人类活动融合在一个精确可靠的3D稠密地图中。
- RS-SLAM采用最大置信度融合方法进行语义更新,构建具有语义标签的静态背景语义八图。
- SG-SLAM结合几何和语义信息快速去除动态特征,然后使用ROS接口构建语义对象图和全局octo图。
- Yang等将改进的基于光流的移动一致性检测方法与深度信息调整的语义分割结果相结合,构建静态对象的语义八叉图。
仍然存在的问题:
密集映射可以满足增强现实等需求,但耗时较长。相比之下,平面映射以较低的计算需求实现了类似的功能,但缺乏相关研究。
目前面向动态场景的语义映射方案在对静态物体建模方面较为粗糙,缺乏对物体姿态、大小等信息的测量,且普遍缺乏物体数据关联和物体地图更新,即使部分工作存在这一环节,方法也相对简单,只适用于简单场景,缺乏强有力的实验支持来证明方法的有效性。此外,目前的研究工作主要集中在椅子和监视器两个物体的建模,忽略了场景中的其他物体。
3.主要内容概括
3.1 几何地图的构建
3.1.1 密集点云地图和八叉图的构建
处理工作:
在语义先验信息存在的情况下,可以根据语义类别删除目标检测框或者语义掩码中的点云,构建只包含静态因素的密集点云地图。
但是,这样操作会存在两个问题——漏检、欠分割。这两个问题会导致动态对象删除不完全。
本文使用YOLOX进行语义信息的获取对这两个问题的解决如下:
漏检 | 利用多目标跟踪算法进行漏检补偿 |
---|---|
欠分割 | 首先,采用DBSCN类聚算法提取出潜在运动物体边界框内的前景点 然后,基于邻近像素沿着检测框边界和前景点的深度信息,适当扩展检测框 最后,为了避免DBSCAN聚类引起的错误,将检测框四个方向设置为扩展限制,限制为50个像素 |
建图工作:
在关键帧中,提取并映射到3D世界坐标系中的潜在移动对象的校正边界框外的像素。
然后,基于我们先前研究提供的相机姿态,将不同关键帧提取的点云进行拼接和融合,随后通过体素网格滤波进行下采样。
为了提高存储效率并支持导航和避障等任务,点云地图转换为八叉树地图。
3.1.2 平面地图的构建
平面地图的初始化:
- 平面提取的方法————>PEAC算法,得到当前相机坐标系下平面的参数和点云。
- 提取平面的边缘点
- 对平面进行二次拟合————>利用PCL点云库,获取精化后的参数和内点,移除平面边缘点的异常值
在此过程中,根据深度信息、内点比例以及与目标检测框的位置关系等各种因素对平面进行过滤
完成平面地图初始化后,遍历当前帧中检测到的平面和地图中已存在的平面,建立数据关联。
这样操作完会存在一定的问题,在复杂的动态场景中,检测到的平面常常会出现显著的错误和随机性,导致平面数据关联失败。但随着更多的观测,未成功关联的两个平面将朝着正确的方向进行优化,使得后续关联变得更加容易。
因此进行以下的操作:
在局部地图构建线程中,对地图中的平面进行成对比较。如果两个平面满足上述关联条件,它们将被视为潜在的未关联。然后,将观测次数较少的平面合并到观测次数较多的平面中并进行优化,随后,将观测次数较少的平面从地图中移除。
3.2 对象地图的构建
3.2.1 对象参数化和数据关联
由于要建模的对象通常属于背景,且远离相机,提取的地图点通常数量稀少且质量较差,使用聚类算法进行异常值去除是不可行的。因此每帧中使用密集点云进行对象建模,并利用DBSCAN密度聚类算法处理点云。
在当前帧k中,对于每个检测到的实例,我们对地图中的每个对象实例进行关联判断。运动IoU,投影IoU,3D-IoU和非参数统计是常见的对象数据关联策略。尽管它们存在限制,但在集成时,这些策略可以相互补充,从而产生更强大、准确和多功能的对象数据关联算法。
3.2.2 对象的更新与优化
分别使用密集点云和稀疏地图点来对检测实例和对象实例进行参数化,这种方法弥补了单个帧中地图点不足的缺点和多个帧中密集点云的显著耗时。在成功的数据关联之后,地图点和参数将会更新,随后,利用对象的地图点与平面或与对象关联的平面之间的距离以及孤立森林算法,从这些地图点中去除异常值。
图2为地图点的异常值剔除(a)确定桌面平面。(b)根据点到平面的距离剔除异常值。(c)使用隔离森林算法剔除异常值。
4. 实验
实验是在性能较高的笔记本电脑上运行的。在TUM RGB-D数据集上评估了算法性能,并在实际场景中应用算法进行动态物体跟踪。研究主要重点是地图构建,由于测试序列没有提供真值地图,实验主要旨在定性地展示地图构建结果。
4.1 构建几何地图
点云地图和八叉树地图
稠密点云地图和八叉树地图的构建结果如图3所示。可以观察到,由于缺乏处理动态物体的模块,ORB-SLAM2算法无法在高动态场景中进行定位和地图构建。在低动态场景中,该算法保留了动态物体的点云。由于物体检测中的漏检和完全覆盖潜在运动物体的边界框的挑战,通过删除位于原始潜在运动物体检测边界框内的点云构建的稠密点云地图包含了这些物体的大量残留痕迹。
下图为图3,点云地图和八叉树题图。顶部一行显示了使用ORB-SLAM2算法和密集建图模块构建的稠密点云地图。第二行展示了使用先前研究的方法 [9] 作为定位模块构建的稠密点云地图,其中排除了位于潜在运动物体检测区域内的点云。第三行展示了我们算法构建的稠密点云地图。底部一行展示了我们算法生成的八叉树地图。
平面地图
平面地图在动态场景中准确地感知静态背景平面结构。这可以应用于高级场景,如增强现实,并作为地标来增强相机姿态估计的准确性
下图为图4,相邻放置的重复物体的生成地图,左侧的图像提供了序列的概览
4.2 构建物体地图
在TUM数据集的8个动态序列上评估了物体地图构建的性能,如图5所示。为了验证物体地图构建的准确性,我们将构建的物体模型叠加在稠密地图上,并将它们投影到图像平面上。在高动态场景中,本文的算法能够准确地对场景中的几乎所有物体进行建模,不受相机不同的运动模式和环境中动态物体的影响。
然而,在低动态场景中,两个人一直坐在桌子旁边,导致了静态物体和背景的严重遮挡。因此,本文的算法对于某些物体缺乏足够的观测,导致了一些物体的建模不够准确,这是不可避免的。
实验结果表明,本文的算法在物体参数化、物体数据关联和物体优化策略方面具有很强的有效性,通过克服动态物体的影响,构建的物体地图为后续的应用,如语义导航、物体抓取和增强现实,提供了有力的支持。
下图为图5——物体地图。常规形状的物体,如显示器、书籍和键盘,使用立方体表示,而不规则形状的物体,如椅子、瓶子和泰迪熊,使用二次曲面表示。
4.3 在真实环境中的稳健性测试
使用Realsense D435i相机在真实世界场景中对本文的方法进行了测试,来验证其有效性和稳健性。在实验中,一个人在相机的视野范围内进行了不规则的运动。为了验证算法的稳健性,评估了两种相机运动方式:
- 从场景的一端到另一端的移动;
- 几乎静止。多级地图构建的结果如图6所示。
实验结果表明,本文的算法能够在物体和相机的不同运动状态下构建准确的稠密点云地图、八叉树地图、平面地图和轻量级物体地图
下图为图6——真实世界场景中的多级地图构建结果,在上面一组图像中,相机从场景的一端移动到另一端;在下面一组图像中,相机几乎保持静止。图像(a)、(b)和©分别代表稠密点云地图、八叉树地图和平面地图。图像(d)展示了轻量级物体地图,其中物体被叠加在稠密点云地图上(图像(e)),并投影到图像上(图像(f)),以展示物体地图构建的有效性。
4.4 动态物体跟踪实验
进一步将构建的物体地图应用于动态物体跟踪,使用Pico Neo3设备捕获场景图像,并利用本文的算法构建物体地图。
在这种情况下,通过立体匹配获得地图点的深度信息,这些计算仅在关键帧上进行,以确保实时性能。构建的物体地图如图7(a)所示。
一旦构建了物体地图,用户可以选择目标物体进行跟踪。当用户移动物体时,系统使用KCF单物体跟踪和光流跟踪算法计算物体的实时姿态。图7(b)-(d)展示了书、键盘和瓶子的动态跟踪结果。实验结果表明,本文的算法能够在动态环境中准确建模物体,为物体跟踪提供准确的物体模型和姿态,从而对实际应用非常有价值。此外,这也突显出我们的算法不依赖于特定设备,展示了其稳健性和通用性
下图为图7——实际场景中的物体建模和动态跟踪。
5. 本文总结
提出一种适应动态场景的多层次地图构建算法。本文成功地构建了密集的点云地图、八叉树地图、平面地图和在动态干扰存在下只包含静态背景和物体的物体地图。丰富了移动机器人的环境感知能力,拓展了动态环境下构建地图的应用场景。大量实验验证了算法的准确性和鲁棒性,动态目标跟踪实验进一步验证了算法的实用性。
未来,计划考虑除了人类之外其他可移动物体的真实运动,并以平面和物体作为地标优化相机姿态,进一步提高定位精度。
6. 个人读后感
整篇论文读下来感觉最创新的地方在于平面地图的构建与应用。整个操作就是用现有的知识和算法进行罗列和拼接,但是能达到自己的目的也挺好。
如果能在本文的基础上加上本论文实验的准确性和鲁棒性的数据值与其他算法比较的数据值的比较会更有说服力。
个人读后感只代表自己的感受,不喜勿喷,欢迎指正批评。