Ubuntu18.04上编译并跑通VINS-Fusion

VINS-Fusion github 地址:​​​​​​GitHub - HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi-sensor state estimatorAn optimization-based multi-sensor state estimator - GitHub - HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi-sensor state estimatorhttps://github.com/HKUST-Aerial-Robotics/VINS-Fusion

1  环境依赖

需要安装的第三方库有 ROS、Eigen3 、Ceres Solver、Opencv, 由于ROS、Eigen3 、Opencv之前运行其它项目时已经安装过,这里只记录了Ceres Solver的安装。

1.1 下载

VINS-Fusion的Readme中给出了Ceres Solver的官方安装教程地址,即

Installation — Ceres Solver

由于git clone没有下载成功,所以最后我选择了下载latest stable release版本。

Ubuntu18.04上编译并跑通VINS-Fusion_第1张图片

下载完成后解压,tar zxf ceres-solver-2.0.0.tar.gz

1.2 编译与安装 

cd ceres-solver-2.0.0 #进入解压后的目录
mkdir ceres-bin #创建编译目录
cd ceres-bin
cmake ../
make
sudo make install

cmake 过程中遇到错误,提示找不到 glog,解决思路是缺什么依赖项就安装什么依赖项。

Ubuntu18.04上编译并跑通VINS-Fusion_第2张图片

解决方法:用以下命令安装 glog

sudo apt-get install libgoogle-glog-dev 

安装完成后再次执行 cmake ../ 以后续操作。

2  编译VINS-Fusion

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

2.1 下载数据集

EuRoC数据集的下载地址为:kmavvisualinertialdatasets – ASL Datasets

任意下载一个即可,例如第一个link下载得到的数据包名字为MH_01_easy.bag

Ubuntu18.04上编译并跑通VINS-Fusion_第3张图片

2.2 运行VINS-Fusion

#打开第一个终端,运行下面的命令
roscore

#打开第二个终端,分别运行下面的命令
source ~/catkin_ws/devel/setup.bash
roslaunch vins vins_rviz.launch

#打开第三个终端,分别运行下面的命令
source ~/catkin_ws/devel/setup.bash
rosrun vins vins_node src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

#打开第四个终端,分别运行下面的命令
source ~/catkin_ws/devel/setup.bash
rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

则会在RVIZ窗口中看到如下图所示轨迹。

Ubuntu18.04上编译并跑通VINS-Fusion_第4张图片
此运行样例中没有执行闭环检测命令,如需要,则可参考其它教程执行

rosrun loop_fusion loop_fusion_node src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

2.3 遇到的问题

执行 rosrun vins vins_node src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 时遇到了Segmentation fault的错误。如下图所示:

检查编译时的打印发现有告警 warning: libopencv_core.so.4.3, needed by /home/ubuntu/catkin_ws/devel/lib/libvins_lib.so, may conflict with libopencv_core.so.3.2, 如下图所示:

Ubuntu18.04上编译并跑通VINS-Fusion_第5张图片

从打印信息来看是不同opencv的库冲突了。继续查看打印,在运行命令 catkin_make时会有对依赖库的检查,如下图所示,可以看到编译时用的opencv4.3. 说明用opencv4编译虽然可以编译成功,但编译中有告警,运行时会报Segmentation fault的错误。

Ubuntu18.04上编译并跑通VINS-Fusion_第6张图片

解决方法:

在CMakeLists.txt文件中指定Opencv的版本

Ubuntu18.04上编译并跑通VINS-Fusion_第7张图片

 注意:

        1)如果打印信息中没有opencv版本,则以CMakeLists.txt文件中添加message(WARNING "OpenCV_VERSION: ${OpenCV_VERSION}")

        2)一共要修改的地方有三处,分别在下面三个文件夹中

        Ubuntu18.04上编译并跑通VINS-Fusion_第8张图片

3  参考文章

Ubuntu18.04运行Vins-Fusion_wzj5530的专栏-CSDN博客

【VINS-Fusion入门之一】让系统跑起来_北络-CSDN博客_vinsfusion

VINS_Fusion 编译运行碰到的问题_HERO_CJN的博客-CSDN博客

你可能感兴趣的:(SLAM,自动驾驶,人工智能,SLAM,VINS-Fusion)