教程更新丨手把手带你玩转ORB-SLAM3(2.0)

是的,你没看错!「手把手带你玩转ORB-SLAM3」教程2.0来了,在原有教程基础上更细节、更全面,不仅有SDK及ORB-SLAM3安装过程中的各种常见性问题解决方法及安装细节,同时还提供官方完整编译代码包哦,真正带你手把手~

本文主要讲解如何在orb-slam3中使用ros接入INDEMIND的双目鱼眼+imu模组。

具体分为以下4部分:

  • SDK安装
  • orb-slam3安装
  • SDK orb-slam3中ROS程序修改和配置文件
  • 运行

其中【SDK orbslam3中ROS程序修改和配置文件】又分为4部分:

  • SDK中ros程序的修改
  • orbslam3 ros中自定义msg的添加和topic订阅
  • orbslam3 ros中配置文件的修改
  • orbslam3 中读取配置文件代码修改

本文操作系统:ubuntu18.04

完整代码包下载地址:https://github.com/INDEMIND/ORB-SLAM3-Course

一、SDK安装

SDK下载及准备安装:

安装过程主要参考产品手册中Ubuntu一节,官方产品手册地址:https://imsee-sdk-docs.readthedocs.io/zh/latest/src/sdk/contents.html

1.安装依赖:

2.然后使用git下载 SDK:

3.准备安装SDK需要的依赖,执行以下命令即可:

安装OpenCV3.4.3版本

1.为什么安装OpenCV3.4.3版本?

解决方法:安装OpenCV3.4.3版本,并把SDK中的libIndemind.so替换掉

2.安装Opencv参考如下:

MNN安装:

因为MNN依赖protobuf,而安装protbuf有两种方式,一种是源码安装(可参见产品手册),另一种方法如下(较容易):

完成这些步骤,SDK就安装完毕了。

二、orb-slam3安装

如何安装:

具体安装过程请参考orbslam3官网。

安装注意:

orbslam3依赖的opencv是4.4以上的版本,而Indemind的sdk使用的是3.4.3版本。因此,需要修改orbslam3的工程,方法如下:

1.打开orbslam3工程的cmakelist.txt找到如下片段:

2.然后将该片段注释掉并添加代码,修改如下:

3.之后进行编译,成功后如下:

4.运行如下:

5.编译中的问题:

解决方法:修改 build.sh文件 将其中的make -j 改为 make -j2 或者-j1。

至此,ORB-SLAM3的安装结束。

三、SDK orb-slam3中ROS程序修改与配置文件

  • SDK中ros程序的修改

接下来是介绍SDK中的ros程序imsee_ros_wrapper,浏览${xx}/sdk/IMSEE-SDK/ros/src/imsee_ros_wrapper的目录:${xx}是下载sdk的路径

其中添加了自定义的msg文件夹,里面包含了自定义的设备信息消息。主要包含双目鱼眼相机的参数和imu参数。

在src/wrapper_nodelet.cc中添加了发送设备信息函数和对应的topic:

从SDK接口中读取设备信息,使用ROS Topic方式,将信息发送出去。

程序中ros参数器的读取,需要修改相应的字段

否则,config文件中的配置参数不会生效。这里工程师将图像频率改为25hz,imu频率改为200hz

  • orbslam3 ros中自定义msg的添加和topic订阅

随后是orbslam3中的ros程序修改:

工程师将Example_old/ros 拷贝到了 Example中

然后在build_ros.sh文件中添加如下命令:

运行 build_ros.sh后出现报错:

解决方法:将Thirdparty中的Sophus依赖加入到ros中的Cmakelist.txt中。如下:

再次运行后显示成功。

然后 在终端输入:

source Example/ROS/build/devel/setup.bash

也可以直接写入到.bashrc文件

下面是使用命令提示:

开ros_stereo.cc文件

订阅主题需要修改一下:

上图紫色部分是SDK发布出来的topic,订阅imu数据和左右目数据,具体可以查看SDK的文档。

  • orbslam3 ros中配置文件的修改

为了能接受imsee_ros_wrapper发出的自定义设备信息,首先在对应的cmakelist.txt中添加:

在ros_stereo_inertial.cc中添加头文件:

#include<imsee_ros_wrapper/DeviceInfo.h>

在manifest.xml中添加:

<depend package="imsee_ros_wrapper"/>

定义IndemindParams类,该类的主要功能是将设备信息中的外参进行必要的变换,并重新写入到配置文件中。

在main函数中添加,一次性接受

rostopic的代码:

该代码在接受信息后,会调用函数CalculateTransforms,生成左右目之间的外参数Tlr和camera到Imu的外参数Tbc。然后再调用函数ReplaceParamsInYaml(argv[2]),在argv[2]对应的文件中写入Indemind的参数(参数的key都采用的下划线):

同时,Tlr和Tbc都以vector的方式写入到文件中。如下示例:

  • orbslam3 中读取配置文件代码修改

orbslam3的tracking.cc文件中的函数ParseCamParamFile和ParseIMUParamFile需要修改其读入字段(需修改字段即上方两个截图),对应的修改代码如下:

至此修改完毕。

四、运行

启动SDK ros wrapper :

roslaunch imsee_ros_wrapper start.launch

启动orb-slam3 ros stereo inertial:

rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txtExamples/ROS/ORB_SLAM3/Indemind_stereo_imu_fisheye.yaml 0

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值