解决本地运行SuperPoint_SLAM报错ERROR: flag ‘flagfile‘ was defined more than once

解决本地运行SuperPoint_SLAM报错ERROR: flag 'flagfile' was defined more than once

起因

在之前本地编译了opencv-3.4.2,当时因为contrib模块需要gflags,重新下载了一个gflags在本地编译(其实本地电脑已经有这个库,但忘记为啥又去下载了一个),所以编译好的contrib(主要是sfm库)链接的就是新下载的gflags。但现在编译libtorch后,caffe2链接的是默认环境下的老的gflags,二者版本应该是不一样的,导致在运行时,各自去动态链接这两个库进来,导致了符号冲突,以下是排查过程。

使用LD_DEBUG排查链接过程

在这里插入图片描述
可以看到有四个target中都去查找了flagfile符号,前两个是可执行程序和superpoint_slam的库,不用管,问题应该就是出在libcaffe2.so和libopencv_sfm.so.3.4中,这两个中都有flagfile,最后报错。

用ldd查看各自链接的库

在这里插入图片描述
可以看到二者都有这个gflags依赖

解决办法

删除新gflags库,重新编译opencv。事后想了一下,感觉只要重新编译的opencv,是使用的默认环境中的gflags是不是也可以了。

问题解决

然后重新编译SuperPoint_SLAM,可以正常运行。
在这里插入图片描述
链接gflags时,也不会再报符号冲突了
在这里插入图片描述
但奇怪的是,重新编译opencv后,mono_kitti里也没有对opencv_sfm的依赖了,也是诡异的问题。

### SuperPoint SLAM介绍 SuperPoint SLAM 是一种基于深度学习的视觉同步定位与建图(SLAM)系统,该系统利用神经网络(具体来说是SuperPoint模型)来提取图像中的特征点并描述这些特征点,从而替代传统方法如ORB-SLAM2中使用的手工设计特征点检测器和描述子。这种改进使得SuperPoint SLAM能够在更复杂的环境中提供更加鲁棒的表现[^1]。 #### 特征优势 相比传统的SLAM方案,SuperPoint SLAM具有以下几个显著特点: - **更强适应性**:由于采用了自监督学习的方式训练得到的兴趣点检测算法,在面对不同类型的场景时能够自动调整参数以获得更好的匹配效果; - **更高的精度**:相比于依赖于特定几何结构的传统方法,SuperPoint通过对大量自然图像的学习获得了更为通用且精确的关键点位置预测能力; - **易于集成**:可以直接替换掉原有框架内的特征提取模块而不必改动其他部分代码逻辑,降低了迁移成本; ### 安装指南 为了安装并运行SuperPoint SLAM项目,按照如下说明操作即可完成环境搭建以及程序部署: ```bash # 创建一个新的工作目录,并进入其中 mkdir ~/superpoint_slam && cd ~/superpoint_slam # 从GitHub仓库克隆最新的源码至本地计算机上 git clone https://github.com/KinglittleQ/SuperPoint_SLAM.git . # 下载预训练好的权重文件放置于指定路径下以便后续加载使用 wget http://rpg.ifi.uzh.ch/datasets/superpoint/kitti_superpoint.zip -P ./weights/ unzip ./weights/kitti_superpoint.zip -d ./weights/ # 编译C++组件 cd build cmake .. make -j4 ``` 以上命令适用于Ubuntu 18.04操作系统下的编译配置过程[^2]。 ### 使用教程 启动SuperPoint SLAM之前,请先确认已经正确设置了ROS(机器人操作系统),因为此工具包是以ROS节点的形式发布的。接着可以通过下面的方法来进行简单的测试验证: ```bash roslaunch superpoint Slam.launch vocab_file:=<path_to_vocab_dbow2> settings_file:=<path_to_settings> ``` 这里`vocab_file`指的是词袋模型的位置,通常位于`./thirdparty/DBoW2/orb_vocab.dbow2`; `settings_file`则是指定了相机内参等相关设置的信息文档,对于不同的硬件设备可能有所差异[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值