文章:PLVS: A SLAM System with Points, Lines, Volumetric Mapping, and 3D Incremental Segmentation
作者: Luigi Freda
编辑:点云PCL
代码:https://github.com/luigifreda/plvs.git
摘要
本文介绍了PLVS:一种稀疏、栅格建图和3D无监督增量分割的实时SLAM系统。PLVS代表Points(点)、Lines(线)、Volumetric mapping(栅格建图)和Segmentation(分割)。它支持RGB-D和双目摄像头,可以选择搭配IMU。SLAM模块是基于关键帧的提取和跟踪稀疏点和线段作为特征。栅格建图与SLAM前端并行运行,通过融合从关键帧反投影的点云生成探索环境的3D重建。PLVS集成了不同的栅格建图方法。我们使用一种新颖的重投影误差来进行线段的捆集调整。这个误差利用可用的深度信息来稳定线段端点的位置估计。PLVS框架中实现并集成了用于RGBD相机的增量和几何分割方法。我们对PLVS框架在一些公开可用的数据集上进行了定性和定量评估,并且该软件是开源的。

图1. 三维重建的三个方面 (a) 线段 (b) 点云 (c) 分割点云。为简单起见,我们没有显示点特征。 栅格地图是通过使用1cm分辨率的八叉树模型获得的。
主要贡献
PLVS方案的目标是创建一个强大而灵活的SLAM框架,可以可靠地在小型机器人平台上运行,并生成周围环境的一致稠密地图。目标传感器是RGBD和双目摄像头,可以选择搭配IMU设备。以下是PLVS的主要贡献:
PLVS是一个模块化和多功能的系统。其不同功能被组织成可以由用户以不同方式启用/禁用和配置的分区。这允许在地图精度/分辨率与CPU负载之间进行精细权衡,并将框架的功能适应到手头的系统。图1-2显示了使用PLVS实时构建地图的详细信息。开源代码在github.com/luigifreda/plvs。

图2. 三维重建的细节 (a) 线段 (b) 法线 (c) 点云 (d) 分割点云。
内容概述
PLVS系统可以分为两个主要组件:(i) 稀疏SLAM和(ii)栅格建图(Volumetric Mapping,VOMA)。
我们构建了基于ORB-SLAM的稀疏SLAM子系统,它是基于关键帧的。它检测、跟踪和地图点和线段作为稀疏特征。PLVS使用稀疏SLAM来准确定位相机并选择相关的关键帧。实际上,PLVS有两个不同的版本:第一个版本,PLVS I,基于ORB-SLAM2,而最新版本PLVS II,基于ORB-SLAM3,并支持配备IMU的相机系统。
VOMA在一个并行线程中运行,并使用SLAM关键帧、它们估计的相机位置和反投影的点云来构建探测环境的三维重建。系统中集成了不同的方法,以融合关键帧点云。针对RGB-D相机,VOMA实施了一个增量的三维分割方法。事实上,平行构建了两种类型的地图:
PLVS框架完全在CPU上运行,旨在移植到小型移动机器人上(这些机器人不一定具备高级GPU功能)。它是模块化的,这意味着用户可以通过启用/禁用和配置其不同部分的方式来微调地图的精度/分辨率与CPU负载,并使框架适应自己的系统。
实验
我们成功地使用不同的传感器(Asus Xtion Pro、ZED立体相机、Intel Realsense等)在实时环境中测试了PLVS框架,以证明其多功能性。图6显示了一个使用配备了Realsense R200的追踪机器人获得的栅格地图(自定义八叉树方法)。

图6,配备Realsense R200的机器人和构建的栅格地图(基于八叉树模型)
图8显示了我们使用手持式Asus Xtion Pro实时获得的实验室的3D重建和分割结果。

图8,在大型办公环境中执行的分割
总结
本文介绍了PLVS,这是一个模块化且多功能的系统,展示了基于特征的SLAM系统的跟踪“灵活性”,并且能够仅依赖CPU生成密集的栅格地图,可用的不同方法包括:八叉树、Octomap以及带有TSDFs和网格的空间散列的体积像素。系统的不同功能模块可以由用户以不同方式启用/禁用和配置。这允许用户在地图精度/分辨率与CPU负载之间进行精细的权衡,并使框架能够适应手头的系统。