当前位置: 首页 > news >正文

ROS1+VINS-fusion+RTAB-Map 程序部署记录

运行环境:Ubuntu 20.04 虚拟机,采用 ROS1 Noetic 版本,使用小鱼一键安装工具完成部署。

一、主要参考

除了官方原始的RTAB工程 (务必注意切换到noetic分支):

introlab/rtabmap: RTAB-Map library and standalone application

以及打补丁的方法:

VINS-Fusion patch to use it as library from external project on ros Noetic Ubuntu 20.04 (apply on pull request 136: https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/pull/136)

还重点参考了:

【RTAB-Map+VINS-Fusion+euroc】(Ubuntu 20.04)三维稠密重建-实践笔记 - 技术栈

对于第二个博客,建议大家按照他说的走一遍,走不下去了也没事,至少环境基本配置好了,尤其是:

sudo apt-get install ros-noetic-rtabmap ros-noetic-rtabmap-ros sudo apt-get remove ros-noetic-rtabmap ros-noetic-rtabmap-ros

大致的思路是没问题的,主要是RTAB-MAP已经更新了一些内容,导致文中的内容已经不适用。

我是在前面没有成功的基础上基础操作的,因此如果直接按我的这个往下走可能依赖出问题,两个走下来其实你也会对RTAB-map的安装有更深的理解,自己部署试试别的也不成问题了。

VINS+opencv4的安装,参考(自己想办法解锁,我只摘录了VINS-FUSIONG)

Ubuntu20.04下运行VINS系列:VINS-Mono、VINS-Fusion和GVINS

二、主要过程

1、新建ros空间并初始化

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace

2、配置VINS-fusion依赖

主要是安装Ceres2.1.0Eigen3.4.0和opencv 4.*。

前两个请自查安装方法。

后者与VINS的一些功能如GPU加速需要指定版本,如果只是为了编译测试一下,可以用最简单的办法,安装个python(目前我用的python 3.8.*),然后用pip安装opencv指定版本,卸载也方便,如

pip install opencv-python==4.5.*(我没有指定版本,直接装的最新版4.13也可以编译通过)

3、安装VINS-fusion

(1)下载源码并打补丁

cd ~/catkin_ws/src git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git cd VINS-Fusion git fetch origin pull/136/head:noetic_fix git checkout noetic_fix wget https://gist.githubusercontent.com/matlabbe/795ab37067367dca58bbadd8201d986c/raw/193453344b0e35d3b0156a763699d7976474d928/vins-fusion_pull136.patch git apply vins-fusion_pull136.patch

(2)将所有文件夹下的CMakeLists.txt文件全部修改为C++14编译

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

(3)并在各个CMakeLists.txt里面find_package的时候明确指定OpenCV的版本:

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

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

#include <opencv2/imgproc/types_c.h> #include <opencv2/calib3d/calib3d_c.h>

(5)在头文件CameraCalibration.h、pose_graph.h、feature_tracker.h、BRIEF.h中添加

#include <opencv2/imgproc/types_c.h> #include <opencv2/imgproc/imgproc_c.h>

(6)在KITTIGPSTest.cpp和KITTIOdomTest.cpp中将报错的CV_LOAD_IMAGE_GRAYSCALE修改为cv::IMREAD_GRAYSCALE(我目前这个版本似乎已经改过了)

(7) 编译运行

cd ~/catkin_ws catkin_make

出现了warning可以不用理会。

提示:如果你不小心其他时候安装了conan环境,这一步很可能报跟conan有关的错误,需要去~/.bashrc文件中把conan相关的环境注释掉在编译。

4、安装rtab-map

务必注意,要 noetic对应的分支,默认的main不是。

自己找个目录,比如我直接根目录

​ cd git clone -b 0.21.10-noetic https://github.com/introlab/rtabmap.git rtabmap_vins cd rtabmap_vins/build cmake -DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel -DWITH_VINS=ON .. make -j8 make install ​

其中, -DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel 就是你编译VINS那个地方,只有给对了,才会出现:

没有这个YES,编译通过也没有意义。可能会有一些warning,前面参考的安装链接里面遇到的问题我没有遇到。

会发现直接安装到VINS所在的ros工程目录里面了,注意版本是0.21,才是noetic。

5、安装rtabmap-ros

这次安装到VINS的工程目录,放一起,注意,目前是ros2是主分支,需要给定noetic分支。

​ cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/introlab/rtabmap_ros.git rtabmap_ros cd ~/catkin_ws source ./devel/setup.bash ​

有可能遇到catkin_ws/devel目录没有写入权限的问题(如果你前面安装rtmap的时候sudo make install了),直接777就好,

sudo chmod -R 777 ~/catkin_ws/devel(你的VINS工程目录)

三、运行euroc数据测试

euroc数据集参看我前面的博文有一个百度云共享。

1、测试rtabmap

终端1:

cd ~/catkin_ws source ./devel/setup.bash roslaunch rtabmap_examples euroc_datasets.launch MH_seq:=true

终端2:

cd到你的数据bag目录

rosbag play --clock MH_01_easy.bag

2、测试rtabmap+vins

使用euroc_stereo_config.yaml和euroc_stereo_imu_config.yaml进行VO和VIO测试。

分别打开两个终端执行命令:

终端1:

cd ~/catkin_ws source ./devel/setup.bash roslaunch rtabmap_examples euroc_datasets.launch args:="Odom/Strategy 9 OdomVINS/ConfigPath ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml" MH_seq:=true raw_images_for_odom:=true

终端2:

cd到你的数据bag目录

rosbag play --clock MH_01_easy.bag

VO的结果

三、遗留问题

问题:运行VIO同样遇到了参考文中的Odom: quality=0, std dev=0.010000m|0.010000rad,好吧,那么只好按照参考文中的(我怀疑原文作者其实也没有解决,因为他这个branch好像不是解决这个问题的,原文作者也一样没有给出VIO的状态):

cd ~/catkin_ws/src/rtabmap_ros git checkout 3eb0b47a55bd56ea6282e5fff157880dcdca753a cd ~/catkin_ws catkin_make

经核对,跳转到链接:

https://github.com/introlab/rtabmap_ros/commit/3eb0b47a55bd56ea6282e5fff157880dcdca753a

可知对应rtmap-ros的0.21.10-noetic和0.21.09-noetic分支,我遇到这个问题的时候分支没选对,修正之后似乎还是不行,VIO完全跑飞了,VO还可以,跟参考文章差不多,但是Odom: quality=0还是存在,没找到是什么原因。

再次对简单的数据集:V1_01_easy.bag进行VIO测试如下,似乎还行,没有跑飞。

下一步对ROS2版本+VINS再行测试是否还会跑飞。

这样看下来,可能是这个数据集已经超过了这样结合的算法的能力,也可能VINS安安静静的自己跑+GPU加速才是最好的答案。

http://www.jsqmd.com/news/470641/

相关文章:

  • 【干货】字节大佬:教培行业销售运营全景作战地图
  • 2026年苏州口碑好的家教老师联系方式,全托补习班/一对一家教试听课/师范家教/一对一/全托一对一,家教机构联系方式 - 品牌推荐师
  • 电子商务行业内哪个环节容易遇到攻击
  • UA-Glo® 荧光法细胞活力检测试剂盒技术原理与应用
  • 五:MySQL 索引使用优化指南:何时建、怎么建、怎么用
  • 虚幻引擎资源查看工具全面解析:从新手入门到高级应用实战指南
  • 2026年知名的ALD技术工厂推荐:ALD工艺开发/ALD原子层沉积高口碑品牌推荐 - 行业平台推荐
  • 联发科牵手星链:紧急警报直连太空
  • 2026年分期乐天虹提货券回收价格表 - 京回收小程序
  • 企业AI大脑是什么?企业落地前先回答的 5 个关键问题
  • AI写专著的秘密武器,实用工具大集合,开启高效写作模式
  • 揭秘AI专著撰写工具!功能对比分析,选对工具事半功倍
  • 代码反混淆实战指南:如何用AST技术快速还原JavaScript代码
  • 2026年热门的二轴程控平面磨床公司推荐:精密台湾型高精度平面磨床品牌厂家哪家靠谱 - 行业平台推荐
  • 掌握AI专著写作工具,快速生成创新性专著,提升学术影响力
  • 2026年口碑好的打包丝公司推荐:退火丝/黑色退火丝/退火调直丝厂家推荐哪家好 - 行业平台推荐
  • ML梅花联轴器哪家研发
  • 2026 实测10款降AI率工具!知网/维普/Turnitin/QuillBot降AI率效果大比拼!
  • 网络代理相关
  • RePKG:Wallpaper Engine资源处理的效率革命工具
  • AI专著生成攻略!实用工具大盘点,助你轻松完成著作
  • 用Openclaw小龙虾自动发布小红书!!!Ubuntu
  • 如何用ExifToolGui批量重命名照片:让摄影文件管理不再繁琐
  • Python基于flask的演唱会在线票务预订平台
  • 抖音直播回放下载工具:从痛点解决到企业级应用的全攻略
  • 三菱PLC恒压供水程序开发分享
  • 火语言 RPA:元宝 AI 来源参考网址采集案例(GEO 优化)
  • 深入理解 Java HashMap 扩容机制:从源码到原理全解析
  • 4步实现高效直播内容保存:面向内容创作者的抖音直播下载与管理工具
  • 考试云全功能在线认证考试解决方案:解密传统认证四大核心痛点