论文阅读笔记PLP-SLAM
Structure PLP-SLAM: Efficient Sparse Mapping and Localization usingPoint, Line and Plane for Monocular, RGB-D and Stereo Cameras
论文地址:https://arxiv.org/abs/2207.06058
作者单位:德国人工智能研究中心
开源代码:https://github.com/PeterFWS/Structure-PLP-SLAM
本文提出了一种视觉 SLAM 系统,该系统同时使用点和线进行鲁棒的相机定位,同时对环境执行分段(piece-wise)平面重建 (PPR) 以实时提供结构图,并且通过在运行时做了一些基于重建的线和平面解决了单目相机在并行追踪和建图中最大的挑战之一——在重建几何单元的时候保持尺度一致。
PLP-SLAM系统是基于OpenVSLAM(ORBSLAM2的衍生)建立的,它的主要贡献有三个方面:(1).第一个提出了一个模块化的多特征的单目SLAM系统,除标准特征点外,还利用线检测、跟踪和映射、实时分段平面重建和联合图优化。(2).展示了可以使用校正后的线图有效地完成闭环,并提出了一个基于预建点线图的重新定位模块。 (3) 该系统同样可用于RGB-D相机和立体相机。
下图是PLP-SLAM系统框图
该系统分为四个模式可供使用:
1.Standard SLAM with Standard Datasets 即基于点特征的标准SLAM模式。
2.Point-Line SLAM 其中,2D线特征的提取使用的是LSD算法,匹配使用的是LBD描述符。线段的表示用了两种方法,一种是用两个端点来表示,一种是使用普吕克坐标和正交表示(Pl ̈ucker Coordinates and Orthonormal Representation),前着便于线段在3D地图中的可视化、基于LBD描述子的3D-2D的线匹配以及帮助追踪被部分遮挡的线段。后者则是便于进行非线性优化。
3.Re-localization (Map-based Image Localization) using Pre-built Map 该模式首先需要得到msg格式的先验地图,然后才能运行重定位模式。
4.Point-Plane SLAM (+ Line if Activated) 该模式需要先验的语义掩模,参考上图,PLPSLAM使用 PlaneRecNet对输入图片生成平面先验而后作为系统输入。
线特征的表示及重构:
两张图像相互匹配的线段三角化到三维空间的方法是首利用两个2D线段分别与光心所构成的两平面交线获得3D线段所在的直线,然后使用其参考关键帧中相应的2D线段来估计3D线段的端点。如下图:

(估计端点的参考文献(序号等来源于文章):
[25]S. J. Lee and S. S. Hwang. Elaborate monocular point and line slamwith robust initialization. InProceedings of the IEEE/CVF Interna-tional Conference on Computer Vision, pages 1121–1129, 2019.
[52]G. Zhang, J. H. Lee, J. Lim, and I. H. Suh. Building a 3-d line-basedmap using stereo slam.IEEE Transactions on Robotics, 31(6):1364–1377, 2015.)
平面表示及重构:
表示:平面使用π=(nT,d )T,其中,n是平面的法线,d是平面(沿着法线)到坐标原点的距离。
重构:通过拟合一组实时三角化的稀疏且带有噪声的 3D 点来重建 3D 平面实例。通过使用 PlaneRecNet [46](仅在关键帧上)预测输入图像的实例平面分割来初始化属于单个平面的点集。然而,为了应对神经网络可能出现分类错误的问题,特别是在 SLAM中未见的数据上,重建是作为顺序 RANSAC [38] 进行的,加上图切割 [1] 的内部局部优化。通过这种方式,局部优化了空间
3D空间中的相干平面,如下图所示。为此,将平面拟合问题表述为具有能量项的最优二元标记问题 [18]。
(参考文献(序号等来源于文章):
[46] Y. Xie, F. Shu, J. Rambach, A. Pagani, and D. Stricker. Planerecnet:Multi-task learning with cross-task consistency for piece-wise planedetection and reconstruction from a single rgb image.arXiv preprintarXiv:2110.11219, 2021.
[38] F. Shu, Y. Xie, J. Rambach, A. Pagani, and D. Stricker. Visual slamwith graph-cut optimized multi-plane reconstruction. In2021 IEEEInternational Symposium on Mixed and Augmented Reality Adjunct(ISMAR-Adjunct), pages 165–170. IEEE, 2021.
[1] D. Barath and J. Matas. Graph-cut ransac: Local optimization onspatially coherent structures.IEEE Transactions on Pattern Analysisand Machine Intelligence, 2021.
[18] H. Isack and Y. Boykov. Energy-based geometric multi-model fitting.International journal of computer vision, 97(2):123–147, 2012.)
回环及优化
回环使用基于ORB特征的DBOW进行回环检测,然后根据3D线的相似变换[31]。
优化构造的误差项即点和线的投影误差以及点到相对应的分割平面的距离。
源码安装编译
按照作者在github上给出步骤即可,要注意到由于opencv在新的版本里删除了LSD算法的实现,且作者并未提供自己实现的LSD算法,因此需要手动从opencv3.1.0版本(该版本没有删除LSD算法的实现)替换自己opencv中的lsd.cpp并重新编译一下即可(非常简单暴力)。
其次注意,DBOW和g2o使用的是和OpenVSLAM相同的版本,不同版本可能报错。本文作者甚至在github的issue里有提供。
一些编译运行错误及解决:
1.遇到找不到findg2o.cmake等相似问题,一般是因为g2o在make后没有sudo make install;
2.遇到类似Eigen3::Eigen和g2o::core相关报错,修改/Structure-PLP-SLAM/src/PLPSLAM下的CmakeLists.txt如下:

3.在运行项目时出现类似于Aborted (core dumped)的错误,应该是因为g2o开启BUILD_WITH_MARCH NATIVE 后于SLAM系统冲突的问题,重新cmake项目的时候关掉即可,例如
cmake \
-DBUILD_WITH_MARCH_NATIVE=OFF \
-DUSE_PANGOLIN_VIEWER=ON \
-DUSE_SOCKET_PUBLISHER=OFF \
-DUSE_STACK_TRACE_LOGGER=ON \
-DBOW_FRAMEWORK=DBoW2 \
-DBUILD_TESTS=OFF \
..
更多推荐
所有评论(0)