0 引言
GVINS系统涵盖了GNSS、Camera、INS等传感器,具有较好的全局位恣估计性能,具体介绍可参见博主文章:GVINS之系统简介。本文主要介绍GVINS系统复现的相关细节,包括环境的搭建、源码的下载及可能存在的相关问题解决方法。GVINS开源代码的网址为:https://github.com/HKUST-Aerial-Robotics/GVINS
1 搭建环境概况
GVINS系统环境要求版本可见图1所示。
图1 GVINS环境要求
本文搭建环境的版本如下表1所示,具体安装步骤可见后续章节。其中,ubuntu及ROS安装可参见其它相关教程,本文不再赘述,ROS安装教程,建议搜索使用鱼香ROS一键安装即可,简单、易操作。
表1 本文搭建环境版本
软件 | 版本 |
ubuntu | 20.04 |
ROS | ROS Kinetic非ROS2 |
C++ | 11 |
Eigen | 3.3.3 |
Ceres | 1.12.0 |
gnss_comm | - |
Opencv | 3.4.5 |
gvins | - |
2 安装Eigen3.3.3
Eigen3.3.3安装包下载网址为:https://gitlab.com/libeigen/eigen/-/releases,安装步骤如下:
2.1 解压安装包
tar xzf eigen-3.3.3.tar.gz
2.2 创建编译文件夹
cd eigen-3.3.3
mkdir build
cd build
2.3 编译
cmake ..
2.4 安装
sudo make install
3 安装Ceres1.12.0
3.1 在线下载Ceres1.12.0
git clone https://ceres-solver.googlesource.com/ceres-solver -b 1.12.0
3.2 更新软件列表
sudo apt update
sudo apt upgrade
3.3 解压安装包
tar xzf ceres1.12.0
3.4 创建编译文件夹
cd
mkdir build
cd build
3.5 编译
cmake ..
3.6 安装
sudo make install
4 安装gnss_comm
安装gnss_comm之前需要检查系统是否安装anaconda,如果安装则需要关闭anaconda环境,否则会出现安装失败等异常问题。
4.1 安装相关依赖
sudo apt-get install libgoogle-glog-dev
4.2 建立GVINS文件夹
mkdir GVINS
cd ~/GVINS
mkdir src
cd ~/src
4.3 在线下载gnss_comm安装包
git clone https://github.com/HKUST-Aerial-Robotics/gnss_comm.git
4.4 编译
cd ~/GVINS
catkin_make
4.5 设置环境变量
source ~/GVINS/devel/setup.bash
5 安装Opencv3.4.5
在线下载安装包网址:https://github.com/opencv/opencv/releases/tag/3.4.5
5.1 安装依赖
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libopenexr-dev libtbb-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libgtk-3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev pkg-config
5.2 linux_frame问题
遇到linux_frame问题,可能是boot内存不足,需要删除多余内核。首先查看linux内存
df -h
其次,查看系统内核
dpkg --get-selections|grep linux
然后,查看使用的内核
uname -a
最后,卸载未使用的内核,以增加boot内存
sudo apt-get purge linux-modules-x.x.x-xx-generic
5.3 解压到/home目录下
tar xzf opencv-3.4.5
cd ~/home/opencv-3.4.5
5.4 建立编译文件夹
mkdir build
5.5 编译
cd build
cmake ..
5.6 安装
sudo make -j4
sudo make install
5.7 修改配置文件
sudo gedit /etc/ld.so.conf
在文件中加上一行,/usr/local是opencv的默认安装路径,这样告诉系统以后去lib目录下找opencv的库文件
include /usr/local/lib
输入命令使得conf生效
sudo gedit /etc/bash.bashrc
在文件末尾加上:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
pkg-config opencv --modversion
6 多版本Opencv切换
GVINS代码使用的opencv的版本是opencv2,并且由于ROS等系统也会安装一些opencv版本,所以需要配置opencv配置文件,调用需要的opencv版本,如果opencv版本不适配,编译gvins时将报错。
修改cv_bridge,修改后的cv_bridge文件可通过本文附件下载。
sudo gedit cv_bridgeConfig.cmake
更换头文件include(94)
if(NOT "include;/usr/local/include/opencv;/usr/local/include/opencv2 " STREQUAL " ")
set(cv_bridge_INCLUDE_DIRS "")
set(_include_dirs "include;/usr/local/include/opencv;/usr/local/include/opencv2;/usr/local/include;/usr/include")
更换库文件路径libraries(119)
set(libraries "cv_bridge;/usr/local/lib/libopencv_calib3d.so.3.4.5;/usr/local/lib/libopencv_objdetect.so.3.4.5;/usr/local/lib/libopencv_core.so.3.4.5;/usr/local/lib/libopencv_photo.so.3.4.5;/usr/local/lib/libopencv_dnn.so.3.4.5;/usr/local/lib/libopencv_shape.so.3.4.5;/usr/local/lib/libopencv_features2d.so.3.4.5;/usr/local/lib/libopencv_stitching.so.3.4.5;/usr/local/lib/libopencv_flann.so.3.4.5;/usr/local/lib/libopencv_superres.so.3.4.5;/usr/local/lib/libopencv_highgui.so.3.4.5;/usr/local/lib/libopencv_videoio.so.3.4.5;/usr/local/lib/libopencv_imgcodecs.so.3.4.5;/usr/local/lib/libopencv_video.so.3.4.5;/usr/local/lib/libopencv_imgproc.so.3.4.5;/usr/local/lib/libopencv_videostab.so.3.4.5;/usr/local/lib/libopencv_ml.so.3.4.5;/usr/local/lib/libopencv_viz.so.3.4.5")
7 GVINS源码及数据集下载
7.1 进入src文件夹
cd ~/GVINS/src/
7.2 下载gvins源码
git clone https://github.com/HKUST-Aerial-Robotics/GVINS.git
7.3 编译
cd ..
catkin_make
7.4 设置环境变量
source ~/GVINS/devel/setup.bash
7.5 下载数据集
由于gvins数据集下载需要通过Onedrive,即使科学上网的前提下可能存在下载中断及异常的情况,推荐大家可以找TB代下,稳定节省时间。
7.6 启动gvins的launch
roslaunch gvins visensor_f9p.launch
7.7 打开rviz可视化软件
rviz -d ~/GVINS/src/GVINS/config/gvins_rviz_config.rviz
7.8 播放sport_field数据集
rosbag play sports_field.bag
最后的运行效果图如下图所示,两条曲线都需要显示出来,才说明GVINS系统复现成功,后续期文章,将为大家带来,GVINS的代码解读、文章公式理解、自研设备搭建等相关内容,期待大家持续关注。
图2 sport_field数据集运行结果