欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-07 11:34:54
...

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

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:
关于编译VIORBSLAM算法的若干问题
这个是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算法的若干问题
修改下图文件中的CmakeLists,按照上面把opencv的版本改成3.0的。
关于编译VIORBSLAM算法的若干问题
错误4:
关于编译VIORBSLAM算法的若干问题
主要问题是没有把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

运行结果:
关于编译VIORBSLAM算法的若干问题

5、结果评价

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

/home/sunshine/catkin_VIOORB/

保存得到的txt文件,后期用evo评估一下与vins-mono的对比。
关于编译VIORBSLAM算法的若干问题

相关标签: 手写VIO