最近在做科研训练的时候配置了HKUST-Aerial-Robotics实验室的VINS_Fusion代码项目,经历了一些编译报错的问题,在网上查找的时候博客内容良莠不齐,且实质针对性意见不多,于是在此记录下自己配置期间遇到的一些共性问题,留作自己日后参考和大家的交流学习。

        github网站传送门->https://github.com/HKUST-Aerial-Robotics/VINS-Fusion

1、安装ubnutu20.04

        在此不做赘述,但是推荐一下b站上有关安装ubuntu20.04的双系统的教学视频,相当赞!

        传送门->Windows 和 Ubuntu 双系统的安装和卸载_哔哩哔哩_bilibili

2、安装ROS

        对于每个不同的ubuntu版本,ROS都有一个唯一的专门版本与之对应,例如,与ubuntu16.04对应的是ROS Kinetic,与ubuntu18.04对应的是ROS Melodic,与 ubuntu20.04对应的是ROS noetic。

        ROS安装步骤已经相对比较成熟,所以在这里直接援引已有的文章作为参考。

        传送门->

        这一篇推文步骤比较简单,差不多够用,首选这一篇。

        新Ubuntu20.04安装配置ROS Noetic_ubuntu20.04 安装ros_浪荡书生mw的博客-CSDN博客

        这一篇推文就复杂很多,咱也不知道为什么安装个ROS需要这么繁琐哈哈哈哈,不过里面应该是加了一下报错的处理步骤,如果uu们有报错问题可以参考一下。

        详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)_ubuntu安装ros_慕羽★的博客-CSDN博客

3、安装ceres

        注意这里会有一个坑,如果按照github上给出的链接的话,安装的ceres是2.X版本,使用这类版本的时候在后面会导致编译出错,所以不要按照官网上的安装步骤来,在这里我们需要选择的版本是Ceres1.14.0,安装这个版本会省去后面的一堆麻烦。

        首先下载依赖项

sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev

        接着下载ceres-solver1.14.0安装包并解压(下载好的安装包在主目录中)

#下载安装包
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
#解压安装包
tar -xvf ceres-solver-1.14.0.tar.gz

        最后完成编译安装操作

cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
sudo make 
sudo make test
sudo make install

        至此,完成ceres1.14.0版本的安装操作。

4、配置 VINS-Fusion

        克隆github代码并编译

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

       注意,在这里catkin_ws只是一个文件名称用于标识编译文件,如果你的电脑在编译其他代码的时候已经在电脑中创建过属于那一段代码的catkin_ws文件的话,在这里就需要更改一下这一段代码的编译文件名称,比如更改为vins_ws,防止冲突。

        在catkin_make步骤,如果你的ubuntu系统中配置了anaconda3或者在之前的使用中出现过python路径有问题的情况的话,建议在这里指定python3的编译路径,命令如下:

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

        编译过程中,会有如下几种类型的报错:

        1、首先,ROS noetic版本中自带的OpenCV4和VINS-mono中需要使用的OpenCV3冲突的问题。修改vins-mono代码兼容opencv4。其实主要修改的是camera_model这个包,幸运的是发现不用修改代码中不兼容的变量,而是可以直接包含缺失的头文件即可。于是参考opencv参考文档查找opencv4中未定义的变量在opencv3中所属的头文件,然后添加到camera_model相应的头文件中顺利解决问题。(到图形界面中的文件夹里寻找相应文件)

在camera_model包中的头文件Chessboard.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>
在CameraCalibration.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>

        2、编译时遇到报错 error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

解决:根据报错提醒中指出的路径找到相应报错的文件,在文件中搜索CV_FONT_HERSHEY_SIMPLEX并替换成cv::FONT_HERSHEY_SIMPLEX。

        3、编译时遇到报错 error: ‘CV_BGR2GRAY’ was not declared in this scope

解决:根据报错提醒中指出的路径找到相应报错的文件,在文件中搜索CV_BGR2GRAY并替换成cv::COLOR_BGR2GRAY。

        4、编译时遇到报错 error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope

解决:根据报错提醒中指出的路径找到相应报错的文件,在文件中搜索CV_LOAD_IMAGE_GRAYSCALE并替换成IMREAD_GRAYSCALE。

        以上几个步骤都需要我们自己慢慢地找到文件位置然后一个一个的修改,比较繁琐,不要焦躁,这些都是必备的过程!

       

        可参考相关文章:Ubuntu20.04运行Vins-fusion_run vin fusion_可即的博客-CSDN博客

5、运行数据集

        至此,所有的配置都已完成,我们只需要下载数据集存到指定位置而后根据github上的指令运行即可。

        例如——Monocualr camera + IMU

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
    rosbag play YOUR_DATASET_FOLDER(需要修改为放置数据集的文件夹名字)/MH_01_easy.bag

       在第二行命令中,如果我们的编译文件不是叫catkin_ws,而是叫vins_ws或者其他什么名字的话,那么需要修改命令,如下:

rosrun vins vins_node ~/vins_ws(或者对应的文件名)/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 

         四行命令需要在四个终端上执行偶~

        最终我们就可以在RVIZ上看到数据集跑通的视频录像啦!

        END!

        在完成VINS_Fusion配置之后,可以使用evo测试工具来对VINS_Fusion进行一些评估,判断其相对位姿误差和绝对位姿误差等,以此对VINS_Fusion性能进行判定,大家可以参考笔者的另一篇有关VINS_Fusion的evo测试的相关文章~

        传送门🔗有关VINS_Fusion的evo测试_Waygoer的博客-CSDN博客

        

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐