2D-3D pose tracking

本文主要是记录一下 <Monocular Camera Localization in Prior LiDAR Maps with 2D-3D Line Correspondences> (IROS 2020)这篇文章的开源代码的编译运行方法。
文章主要讲述利用线匹配的方法在,把单目相机获得的2d图像和先验3d激光雷达点云地图进行匹配的方法。
论文链接: https://arxiv.org/abs/2004.00740.
开源代码链接:https://github.com/Zumbalamambo/2D-3D-pose-tracking.

运行结果示意图

在这里插入图片描述由于我在编译代码的时候网上并没有看到相关的编译运行教程,但是确实遇到了一点坑,于是就趁着最近比较空写一篇博客啦~

我的环境配置:

ubuntu18.04 + ROS + CUDA10.2 + CUDNN7.6.85 + (python3.7+pytorch1.7用于配置afm) + (python2.7+pytorch1.4用于ROS运行代码)
个人感觉比较坑的就是要安装两个版本的python+pytorch这里了,在2d-3d-pose-tracking的README里面只提到了要使用python2,但是仅仅用python2是编译不了afm的。(afm是作者借用别人提出的一种基于学习的方法提取2d直线的算法)
afm算法的链接: https://github.com/cherubicXN/afm_cvpr2019

编译步骤:

首次先把afm文件夹、initialization_publisher文件夹、map_fusion文件夹放置到catkin_ws文件夹下面,然后开始编译。

1、编译afm:

根据afm的github的描述,需要以下环境,实测我的python3.7+pytorch1.7也是可以满足的。这里我使用了anaconda的虚拟环境,但是virtualenv之类的python虚拟环境应该也是可以用的。

在这里插入图片描述
具体的安装方法如下所示。

先使用anaconda新建一个名为afm的python3的虚拟环境.

conda create --name afm python=3.7
conda activate afm

然后进入到afm文件夹,安装python所需要的环境.
安装pytorch torchvision时很可能会出现网络问题导致下载失败,可以考虑更换成为清华源,还是不行的话需要在网页上找到pytorch清华源,下载后再使用conda的本地安装功能。

cd catkin_ws/src/afm/scripts

pip install -r requirements.txt

//cudatoolkit的版本根据自己的cuda版本来
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch

进入lib文件夹,开始编译

cd lib
make
conda develop . ./lib

最终结果如下图所示就是编译完成了.
在这里插入图片描述
在这里插入图片描述
然后进入到catkin_ws文件夹进行编译.

cd ../../../../
catkin_make
source ~/catkin_ws/devel/setup.bash

2、 安装ROS版VINS-Mono :

直接gitclone然后编译,如果前面的afm安装好了,这里应该没有问题。可能会有一些c++库没有安装,直接安装就是,用的库和VINS-Mono所需要的差不多。

    cd ~/catkin_ws/src
    git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

最终编译结果如下图所示.

在这里插入图片描述

3、在 EuRoC数据集运行测试 :

为了适应本算法的单目的场景,需要使用2d-3d-pose-tracking文件夹下面的vins_rviz_config.rviz把VINS-Mono\config下面自带的vins_rviz_config.rviz给替换掉。
并且需要进入VINS-Mono\config\euroc\euroc_config.yaml 文件,把 freq改为 15.

需要注意的是,由于ROS只支持python2,所以这里我们必须使用python2+pytorch才能运行,否则在第二个命令的时候会报错。

    roslaunch vins_estimator euroc.launch 
    roslaunch map_fusion euroc_tracking.launch
    roslaunch vins_estimator vins_rviz.launch
    rosbag play YOUR_PATH_TO_DATASET/V1_02_medium.bag

运行结果就是本文开头的那张图了。
编译运行就此结束,俺读代码去了嘞~~
编译运行有问题欢迎在评论区留言.