关于photo-slam的安装过程,参考github项目中的readme和以下配置流程:

全网首发photo slam配置全流程 - 知乎

        报错时服务器环境配置如下:

ubuntu20.04(在pve虚拟系统中)、英伟达驱动535.183.06、cuda11.8+cudnn8.9.3.28、cmake3.22.6、opencv+opencv_contrib4.7.0、pangolin0.5(readme中未指定明确版本)、libtorch2.0.1-cu118

        本人目前在尝试跑通photo-slam的可视化版本时,运行以下命令;

./bin/euroc_stereo ./ORB-SLAM3/Vocabulary/ORBvoc.txt ./cfg/ORB_SLAM3/Stereo/EuRoC/EuRoC.yaml ./cfg/gaussian_mapper/Stereo/EuRoC/EuRoC.yaml ./data/EuRoC/MH_01_easy ./cfg/ORB_SLAM3/Stereo/EuRoC/EuRoC_TimeStamps/MH01.txt ./result/euroc_stereo_1/MH_01_easy/

遇到了如下报错:

        可以看到在终端中显示:

Pass 'Combine redundant instructions' is not initialized.
Verify if there is a pass dependency cycle.
Required Passes:
段错误 (核心已转储)

        之后通过gdb进行调试,发现错误发生在第二次for循环中的176行之后,如图下所示:

        可以看到,是在进入ORBSLAM3的system中时出现的报错,初步推断是ORBSLAM3中的可视化界面出现问题,导致内存冲突问题。

        在经过网上的搜索后发现,可能由于特定版本的pangolin和libtorch之间存在冲突,这个问题在github上的issue中也有人提到类似问题:

I'm having some problems compiling your code. · Issue #2 · HuajianUP/Photo-SLAM · GitHub

An error occured while compiling your code. · Issue #12 · HuajianUP/Photo-SLAM · GitHub

An Error in imgui_viewer · Issue #5 · HuajianUP/Photo-SLAM · GitHub

编译通过但运行报错 · Issue #12 · YWL0720/YOLO_ORB_SLAM3 · GitHub

pangolin::X11Window::MakeCurrent segmentation fault when compiled with libtorch · Issue #884 · stevenlovegrove/Pangolin · GitHub

        经过多次测试,发现在其他配置不变情况下,更改libtorch版本为2.1.0-cu118,可以正常运行带可视化界面的photo-slam,目前测试的tum-rgbd和euroc数据集都可以跑通,效果如下:

总结:

        目前猜测是pangolin0.5版本中存在于libtorch2.0.1-cu118的部分冲突问题,导致无法运行可视化界面,而官方在readme中没有指定pangolin版本,有可能是使用了更高的版本,没有此项冲突问题。但此猜想具体没有做进一步验证,感兴趣的同学可以进一步验证。

更多推荐