我是靠谱客的博主 明理火,最近开发中收集的这篇文章主要介绍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
即表示配置成功
在这里插入图片描述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

下载源码:git clone https://github.com/ceres-solver/ceres-solver
进入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算法的估计轨迹,红线表示闭环。
在这里插入图片描述

rostopic echo /vins_estimator/odometry

在这里插入图片描述

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

roslaunch benchmark_publisher publish.launch sequence_name:=MH_01_easy

然后,你就会看到两条轨迹,红色的轨迹是ground truth,绿色的轨迹是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秒左右的时间。然后会出现下列信息:
在这里插入图片描述

之后会在保存的路径下出现一堆图片文件,地图保存成功。
在这里插入图片描述
重载地图
首先要修改两处地方:

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

第一项的意思是使能重新加载地图功能,第二项是快速重定位。(你可以先不改第二项试试看,然后再改,看看有什么不同),修改完之后重新编译catkin_make。 重新运行程序,会发现先加载了地图,颜色是黄色的。
在这里插入图片描述加载地图之后的结果如下所示:

在这里插入图片描述在这里插入图片描述快速重定位实践如下:
在这里插入图片描述精度评测可采用evo工具,一个评测SLAM的工具。

最后

以上就是明理火为你收集整理的VINS-MONO实践的全部内容,希望文章能够帮你解决VINS-MONO实践所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部