天天看点

VINS-MONO实践

1.配置ros(运行VINS需要,记得换源,会快一些)

sudo apt-get install ros-melodic-cv-bridge ros-melodic-tf ros-melodic-message-filters ros-melodic-image-transport
           

解释:

cv-bridge在ROS图像消息和OpenCV图像之间转换。

message-filters一组消息过滤器,根据过滤器需要满足的条件,接收消息并在以后输出这些消息。

image-transport应始终使用图像传输来订阅和发布图像。它为以低带宽压缩格式传输图像提供支持

2.安装依赖库

1)eigen3.3.4版本(pkg-config --modversion eigen3命令看)

sudo apt-get install libeigen3-dev
           

2)安装opencv

进入到解压后的文件包中,由于我已经安装好cmake了,在此不多叙述

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev    
libswscale-dev libjasper-dev
           

创建文件夹

mkdir build 
cd build
cmake
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
           

完成后输入

sudo make
           

等待完成后再输入

sudo make install
           

完成编译,

cd到opencv-3.4.0/smaples/cpp/example_cmake目录下

我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下

按顺序执行

cmake . 
make 
./opencv_example
           

即可看到打开了摄像头,在左上角有一个hello opencv

即表示配置成功

VINS-MONO实践

3.安装Ceres

安装依赖

sudo apt-get install liblapack-dev 
sudo apt-get install libsuitesparse-dev 
sudo apt-get install libcxsparse3 
sudo apt-get install libgflags-dev 
sudo apt-get install libgoogle-glog-dev libgtest-dev
           

进入Ceres的文件夹下

编译Ceres

mkdir build
cd build
cmake ..
sudo make install
           

4.Vins_mono的编译

git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git#在src下执行
catkin_make
           

打开四个终端分别运行以下命令:

roscore
roslaunch vins_estimator euroc.launch 
roslaunch vins_estimator vins_rviz.launch
rosbag play MH_01_easy.bag
           

结果:其中绿线表示基于VINS-Mono算法的估计轨迹,红线表示闭环。

VINS-MONO实践
rostopic echo /vins_estimator/odometry
           
VINS-MONO实践

如果想看到轨迹的同时,看到数据集的ground truth,我们可以再打开一个terminal,执行:

roslaunch benchmark_publisher publish.launch sequence_name:=MH_01_easy
           

然后,你就会看到两条轨迹,红色的轨迹是ground truth,绿色的轨迹是vins-mono跑出来的。

VINS-MONO实践

修改地图保存的路径

因为我们现在跑的是euroc数据集,所以我们要修改的地方有两处。

euroc_config.yaml中的pose_graph_save_path
           

pose_graph_save_path: “/home/kk/自己的路径/”

euroc_config.yaml中的output_path项
           

output_path: “/home/kk/自己的路径/”

上述""里填写自己的路径,先创建好该路径,注意最后面有个/,代表着是一个文件夹。 修改完之后,记得在ros工作空间中重新编译一下catkin_make。

保存地图

重新运行程序,待地图跑完之后,在运行 roslaunch vins_estimator euroc.launch 的terminal中,输入 “s” ,并按下回车键Enter,等待地图保存,我电脑花了20秒左右的时间。然后会出现下列信息:

VINS-MONO实践

之后会在保存的路径下出现一堆图片文件,地图保存成功。

VINS-MONO实践

重载地图

首先要修改两处地方:

euroc_config.yaml的load_previous_pose_graph,置1
euroc_config.yaml的fast_relocalization,置1
           

第一项的意思是使能重新加载地图功能,第二项是快速重定位。(你可以先不改第二项试试看,然后再改,看看有什么不同),修改完之后重新编译catkin_make。 重新运行程序,会发现先加载了地图,颜色是黄色的。

VINS-MONO实践

加载地图之后的结果如下所示:

VINS-MONO实践

快速重定位实践如下:

VINS-MONO实践

精度评测可采用evo工具,一个评测SLAM的工具。

继续阅读