代码链接
代码主要思想是使用神经网络(SuperPoint)提取特征点,以替代ORB SLAM2中使用的ORB特征点。

配置

1、cmake的版本
推荐11,查看cmake版本可以使用指令:

$ cmake --version

在这里插入图片描述
确认自己的cmake版本为11。
安装cmake11可以参考博客:https://blog.csdn.net/qq_32526087/article/details/88616116
2、安装Pangolin、OpenCV、Eigen3、DBoW3 and g2o(不要用代码Thirdparty里的,不全并且无法sudo make install)。
安装可以参考博客:https://www.cnblogs.com/hloay/p/13344073.html
3、Libtorch(大坑,博主卡在这好几天,嘤嘤嘤)
编译指令:

git clone --recursive -b v1.0.1 https://github.com/pytorch/pytorch
cd pytorch && mkdir build && cd build
python ../tools/build_libtorch.py

最开始使用的的30系列显卡,由于只支持cuda11.0以上版本(cuda11.0对应需要下载v1.7.0版本的Libtorch),编译时总是报错

在这里插入图片描述
显示找不到cudnn。
后来看到一条这样的帖子
在这里插入图片描述
于是装了v8.0.1版本的cudnn。以前一直以为cudnn版本和cuda版本一致即可,第一次发现对应同一版本的cuda还有不同的cudnn,如下图所示:
在这里插入图片描述
用于时间不同,以cuda11.0为例,目前有v8.0.1,v8.0.2,v8.0.3,v8.0.4四款,卸载和安装cudnn代码如下:
卸载:

$ sudo rm -rf /usr/local/cuda/include/cudnn.h
$ sudo rm -rf /usr/local/cuda/lib64/libcudnn*

安装

$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

改装v8.0.1版本cudnn后可以成功编译,但是后面编译SuperPoint_SLAM时仍然会报错,初步估计是硬件兼容性不足,30系列显卡对Libtorch兼容性不足。实测发现这和直接从pytorch官网上下载编译好的Libtorch结果一致,编译SuperPoint_SLAM时报相同的错误。
在这里插入图片描述
博主能力有限,没能解决这个问题,希望网友不吝赐教。

自己的解决方案(笨办法)

拿出自己好久不用的笔记本(MX150显卡)
各软件版本:
cuda 9.2
cudnn v7.6.5
opencv 3.4.3
cmake 3.11.3
Libtorch v1.0.1


下载SuperPoint_SLAM:

git clone https://github.com/KinglittleQ/SuperPoint_SLAM.git SuperPoint_SLAM

编译:

cd SuperPoint_SLAM
chmod +x build.sh
./build.sh

第一次编译SuperPoint_SLAM里的./build.sh时会报这样一个错:
在这里插入图片描述
原因是找不到Torch的配置文件,修改SuperPoint_SLAM里CMakeLists.txt
在这里插入图片描述

set(Torch_DIR "/home/victor/pytorch/torch/lib/tmp_install/share/cmake/Torch")  # libtorch

根据自己的路径做相应修改即可。
最终成功编译


然后下载词袋和kitti数据集(具体链接见:https://github.com/KinglittleQ/SuperPoint_SLAM
词袋下载好之后解压放入Vocabulary文件中(需要自己建立):

$ cd SuperPoint_SLAM
$ mkdir Vocabulary

最后启动命令格式(以 sequence 03为例):

$ ./Examples/Monocular/mono_kitti Vocabulary/superpoint_voc.yml Examples/Monocular/KITTI03.yaml /home/victor/SuperPoint_SLAM/data_odometry_gray/dataset/sequences/03

最后一部分的/home/victor/SuperPoint_SLAM/改成自己数据集的存储路径。

运行效果

在这里插入图片描述
笔记本跑起来比较卡,就没有跑完,也没有作评测,原始代码中的评测结果如下:
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐