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版本。

下载完成后解压,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,解决思路是缺什么依赖项就安装什么依赖项。

解决方法:用以下命令安装 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

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窗口中看到如下图所示轨迹。


此运行样例中没有执行闭环检测命令,如需要,则可参考其它教程执行

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, 如下图所示:

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

解决方法:

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

 注意:

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

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

        

3  参考文章

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

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

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

  • 2
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值