目录
3、vins-fusion编译安装(可选,针对不接入小觅相机,仅想运行已有数据集)
[(二)安装MYNTEYE SDK](#(二)安装MYNTEYE SDK)
一、相关介绍
二、VINS-FUSION环境安装及使用
VINS-FUSION可以运行录制好的图像数据集实现地图绘制,也可以接入相机实时绘制地图。我们可以根据需要进行环境配置。
(一)Ubuntu18.04安装配置
小觅相机最高支持到ubuntu18版本,因此我们在Ubuntu18.04系统下完成vins-fusion的环境搭建。
1、Ubuntu下载安装
ubuntu18.04系统安装教程(如果在新电脑上直接安装Ubuntu单系统,参考该博客至制作启动盘即可,完成后直接将USB插入电脑并按照提示步骤安装ubuntu):
2、设置虚拟内存(可选)
(二)VINS-FUSION环境配置
1、ros安装
参考以下教程
2、ceres-solver安装
(1)在Release 2.0.0 · ceres-solver/ceres-solver · GitHub上下载需要的ceres-solver版本并解压。
这里使用的是2.0.0版本:
(2)接下来,安装ceres-solver需要的相关依赖:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
(3)安装ceres-solver:
cd ceres-solver-2.0.0 //进入解压后的ceres-solver文件夹
mkdir build //创建build文件夹
cd build
cmake ..
make -j4 //
sudo make install
3、vins-fusion编译安装(可选,针对不接入小觅相机,仅想运行已有数据集)
(1)在主目录新建文件夹fusion_ws/src,并在其中修改、构建和安装catkin包,从而实现ros工作空间的创建:
mkdir -p ~/fusion_ws/src
cd ~/fusion_ws/src
(2)将vins-fusion项目clone到src目录下并解压:
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
(3)返回上一级目录,执行catkin_make:
cd ..
catkin_make
如果上述命令成功运行,在fusion_ws工作空间会生成build、devel、src这个三个目录文件夹(这3个是catkin编译系统默认的):
- build(Build Space):catkin(CMake)的缓存信息和其他中间件
- devel(Development Space):生成目标文件(包括头文件、动态链接库、静态链接库、可执行文件等)、环境变量
- src(Source Space):ROS的catkin软件包(源码)
Tips:
早期有些教程仍然保留catkin_init_workspace这条初始化命令,它的作用就是在fusion_ws工作空间的src目录下创建CMakeLists.txt 文件。但实际上catkin_make命令包含了catkin_init_workspace,不必再调用了(当然你也可以使用,没有任何影响)。
(4)接下来设置环境变量,首先source一下新生成的setup.*sh文件(在devel目录下可看见几个setup.*sh):
source devel/setup.bash
但是上述命令只适用当前终端,这导致每次打开新的终端都需要source命令一下,重新刷新环境变量,才能使用ROS相关命令。解决办法是,在终端中输入如下命令,如此每次打开终端,.bashrc会自动运行:
echo "source ~/fusion_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
至此,我们完成了vins-fusion的环境安装,可以通过一些官方提供的数据集来验证是否安装正确及环境是否完成搭建。
(二)VINS-FUSION运行官方数据集
1、下载数据集
下载链接:
kmavvisualinertialdatasets -- ASL Datasets
我这里下载的是MH_01_easy.bag。
该数据集中包括了相机双目图像数据以及IMU数据。VINS-Fusion支持双目、单目+IMU以及双目+IMU,我们可以依次进行实验。
2、运行双目
(1)新建终端输入以下命令行,开启rviz实现ros可视化:
roslaunch vins vins_rviz.launch
(2)新建终端输入以下命令行,指向双目配置文件XXX_config.yaml。该配置文件中包括了相机的内参及外参、帧率等信息,在后期我们使用自己的相机时,如果对相机进行了更精确的标定,可以对这些参数进行修改,从而进一步提升建图的精准度。
这里我们直接使用官方默认参数。
rosrun vins vins_node ~/fusion_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
(3)新建终端输入一下命令行,播放bag数据包。由于指定了配置文件,我们只会使用到bag包中双目图像帧数据。
rosbag play ~/MH_01_easy.bag
3、运行单目+IMU
新建终端分别输入以下命令行:
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/fusion_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml //除了相机参数,还包含IMU参数
rosrun loop_fusion loop_fusion_node ~/fusion_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml //开启回环检测,可选
rosbag play ~/MH_01_easy.bag
4、运行双目+IMU
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/fusion_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
rosbag play ~/MH_01_easy.bag
三、VINS-FUSION接入小觅相机
如果想实现实时绘图,我们则需要接入相机,在录制数据的过程中同时利用vins-fusion进行定位建图。这里我们使用D系列小觅相机,该相机可以同时采集双目图像及IMU数据,并在硬件上基本实现了左右目和IMU的时间同步。
小觅相机官方在github上提供了VINS-FUSION的样例,方便我们使用,地址:GitHub - slightech/MYNT-EYE-VINS-FUSION-Samples at master。该样例包括了Docker版本(docker_feat分支)和非Docker版本(master分支)。这里我们使用非Docker版本。
在接入小觅相机前,我们需要先保证ros和ceres-solver的正确安装。
(一)安装MYNT-EYE--FUSION-Sample
(1)在主目录新建文件夹catkin_ws工作空间:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
(2)将MYNT-EYE--FUSION-Sample项目clone到src目录下并解压:
git clone https://github.com/slightech/MYNT-EYE-VINS-FUSION-Samples.git
(3)返回上一级目录,执行catkin_make:
cd ..
catkin_make
(4)配置环境变量:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
(二)安装MYNTEYE SDK
参考官方教程:
MYNT EYE D SDK: Linux SDK 用户指南https://slightech.github.io/MYNT-EYE-D-SDK/build_linux.html
(三)实时建图+bag数据包采集
1、将小觅相机连接到电脑上:
2、开启小觅相机:
cd MYNT-EYE-D-SDK-master //进入小觅相机SDK
source ./wrappers/ros/devel/setup.bash //将setup.bash挂载到ROS文件系统
roslaunch mynteye_wrapper_d vins_fusion.launch //开启小觅相机
3、修改配置文件
以单目+IMU为例,其配置文件是~/catkin_ws/src/MYNT-EYE-VINS-FUSION-Samples-master/config/mynteye-d/mynt_mono_config.yaml,我们需要对输出结果的文件存放位置output_path和pose_graph_save_path进行修改。
其它参数我们暂时不进行修改,如果进行参数大修,那么需要重新对相机和IMU的参数进行标定,并将重投影误差控制在1px内。
4、以单目+IMU为例,输入如下命令运行vins-fusion:
cd ~/catkin_ws //进入catkin_ws工作空间
roslaunch vins mynteye-d-mono-imu.launch //运行启动VINS-FUSION单目+IMU
实时建图效果如下:
5、及时开启一个新的命令窗口,同步进行数据包的录制(以便后期数据重用)
cd XXX //进入想存放数据包的文件夹
rosbag record /mynteye/left/image_color /mynteye/imu/data_raw //录制单目灰度图及IMU数据,这里的topic(image_color和data_raw)需要和前面提到的yaml配置文件保持一致,topic可以自行修改
录制完成后会生成一个带有录制时间的bag数据包,该数据包下包含了单目及IMU数据,ros topic分别为image_color和data_raw。基于该数据集,我们可以重绘电子地图,或对该数据进行一定处理,使得绘图更加准确。
利用该bag数据包绘制地图的命令如下:
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/MYNT-EYE-VINS-FUSION-Samples-master/config/mynteye-d/mynt_mono_config.yaml
rosbag play XXX.bag //XXX包含了路径及bag数据包名称