Ubuntu20.04下运行VINS-Mono、GVINS

文章目录

  • 一、安装VINS-Mono
    • 1.1 适配Ceres2.1.0
    • 1.2 适配OpenCV4
    • 1.3 编译运行
  • 二、安装GVINS
    • 2.1 适配Ceres2.1.0
    • 2.2 适配OpenCV4
    • 2.3 安装依赖库gnss_comm
    • 2.4 编译运行

在我的博文Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+Gazebo仿真运行ORB-SLAM2+各种相关库的安装和Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、LIO-SAM 和 LVI-SAM的基础环境下跑通VINS-Mono、GVINS

一、安装VINS-Mono

VINS-Mono在Github的开源地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono。
首先按照前面两篇篇文章已经安装好了VINS-Mono所需的ROS noetic、Eigen3.4.0、Ceres2.1.0和OpenCV4.2.0等三方库,它们的安装不再赘述VINS-Mono是在ROS melodic以及Ceres1的环境下开发的,因此需要适配高版本的环境。

1.1 适配Ceres2.1.0

Ceres-solver2.0.0及以上版本采用的是C++14编译,而VINS-Mono使用的Ceres-solver1.4.0采用C++11编译,将所有文件夹下的CMakeList文件全部修改为C++14编译

#set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS "-std=c++14")

1.2 适配OpenCV4

ROS noetic版本中的OpenCV4.2和VINS-mono中需要使用的OpenCV3冲突,修改vins-mono代码兼容opencv4。幸运的是发现不用修改代码中不兼容的变量,可以直接添加缺失的头文件即可:
在camera_model包中的头文件Chessboard.h中添加

#include 
#include 

在camera_model包中的头文件CameraCalibration.h、pose_graph包中的头文件pose_graph.h和keyframe.h中添加

#include 
#include 

若vins_estiamtor包中报错,将头文件替换为

// #include 
// #include 
#include 
#include 

还有可能由于电脑上有不同版本的OpenCV,找到的版本不对,需要在各个CMakeLists.txt里面find_package的时候明确指定OpenCV的版本:

#find_package(OpenCV REQUIRED)  
find_package(OpenCV 4 REQUIRED)

1.3 编译运行

新建工作空间,将修改的源功能包移动到工作空间,编译:

cd ~/catkin_ws_vins/src
cd ../
catkin_make
#可添加到 ~/.bashrc 文件中:
source devel/setup.bash

运行之前需要在配置文件****_config.yaml中修改结果输出目录

output_path: "/home/zard/Downloads/VINS-Mono"

以EuRoC数据集为例,打开三个终端,source后再分别输入

# 运行feature_tracker节点和estimator节点, 订阅图像和IMU数据, 发布位姿, 3D特征点等消息给RVIZ显示
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play ~/dataset/V1_01_easy.bag#路径根据自己下载的数据集而定

Ubuntu20.04下运行VINS-Mono、GVINS_第1张图片

二、安装GVINS

GVINS是在VINS-Mono基础上进行开发的,在Github的开源地址:https://github.com/HKUST-Aerial-Robotics/GVINS。与VINS-Mono一样,安装了ROS noetic、Eigen3.4.0、Ceres2.1.0和OpenCV4.2.0,需要适配高版本的环境。

2.1 适配Ceres2.1.0

将所有文件夹下的CMakeList文件全部修改为C++14编译

#set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS "-std=c++14")

2.2 适配OpenCV4

在camera_model包中的头文件Chessboard.h中添加

#include 
#include 

在camera_model包中的头文件CameraCalibration.h中添加

#include 
#include 

2.3 安装依赖库gnss_comm

gnss_comm库需要下载到catkin_ws/src中,并编译

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

2.4 编译运行

cd ~/catkin_ws_vins
catkin_make
source devel/setup.bash

运行之前需要在配置文件visensor_left_f9p_config.yaml中修改结果输出目录

output_dir: "/home/zard/Downloads/GVINS"

下载示例数据集GVINS-Dataset,source之后后运行节点:

roslaunch gvins visensor_f9p.launch

启动rviz显示窗口

source devel/setup.bash
rviz -d src/config/gvins_rviz_config.rviz

rosbag播放数据

rosbag play sports_field.bag

Ubuntu20.04下运行VINS-Mono、GVINS_第2张图片

Ubuntu20.04下运行VINS-Mono、GVINS_第3张图片

你可能感兴趣的:(ubuntu,计算机视觉,自动驾驶,linux,opencv)