关于编译VIORBSLAM算法的若干问题

关于编译VIORBSLAM算法的若干问题

文章目录

    • 1、目的
    • 2、论文以及代码
    • 3、编译遇到的问题汇总
    • 4、数据集测试
    • 5、结果评价

1、目的

主要目的是想与VINSmono算法进行结果上的对比,VINS-mono主要是前端基于光流法,而VIORB是基于特征点法。大多数SLAM问题想要提高精度一般要从前端入手,后端优化结果上其实没有多大提升。

2、论文以及代码

代码作者没有开源,网上这一版是王京大佬实现的。
Visual-Inertial Monocular SLAM with Map Reuse
论文
代码

3、编译遇到的问题汇总

作者已经写好了脚本,可以直接到build.sh文件夹下执行脚本

sh build.sh

遇到以下错误

CMake Error at CMakeLists.txt:33 (find_package):
Could not find a configuration file for package "OpenCV" that is compatible
with requested version "2.4.3".

The following configuration files were considered but not accepted:

/opt/ros/kinetic/share/OpenCV-3.2.0-dev/OpenCVConfig.cmake, version: 3.2.0
/usr/local/share/OpenCV/OpenCVConfig.cmake, version: 3.2.0

原因:opencv版本符合,代码中要的是opencv2.0版本,电脑上安装的是opencv3.0版本,在CmakeLists把下面内容

find_package(OpenCV 2.4.3 REQUIRED)

修改为

find_package(OpenCV 3.0 QUIET)

错误2:
在这里插入图片描述
这个是Eigen3的bug,可以对比ORB_SLAM2修改
把Thirdparty/g2o/g2o/solvers/linear_solver_eigen.h文件中的

typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic,SparseMatrix::Index> PermutationMatrix;

修改为:

typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic,int> PermutationMatrix;

错误3:

关于编译VIORBSLAM算法的若干问题_第1张图片
修改下图文件中的CmakeLists,按照上面把opencv的版本改成3.0的。
在这里插入图片描述
错误4:
关于编译VIORBSLAM算法的若干问题_第2张图片
主要问题是没有把ros路径添加到bashrc中,可以使用在当前终端下生效或者在bashrc中修改在所有终端下生效
1、采用在当前终端生效的办法

source devel/setup.bash

这个需要建立ros工作空间然后执行

catkin_make

2、在所有终端生效的方法
打开bashrc文件,

sudo gedit ~/.bashrc

在最下添加路径

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/sunshine/catkin_VIOORB/src/LearnVIORB/Examples/ROS/ORB_VIO

然后执行

source ~/.bashrc

终于解决完bug了,头苦!!!!!!

4、数据集测试

执行下面的命令

 roslaunch src/LearnVIORB/Examples/ROS/ORB_VIO/launch/testeuroc.launch 

播放bag数据

 rosbag play MH_02_easy.bag

运行结果:

5、结果评价

保存轨迹文件
修改config/euroc.yaml

/home/sunshine/catkin_VIOORB/

保存得到的txt文件,后期用evo评估一下与vins-mono的对比。
在这里插入图片描述
evo遇到问题

[ERROR] TUM trajectory files must have 8 entries per row and no trailing delimiter at the end of the rows (space)

解决办法
https://github.com/MichaelGrupp/evo/issues/70

cut --delimiter " " --fields 1-8 msckf_traj.txt > clean.tum

你可能感兴趣的:(手写VIO)