用realsense d435i传感器在实际环境中跑ORB_SLAM3,顺带解决一部分编译问题

4 篇文章 0 订阅
3 篇文章 0 订阅

是的ORB_SLAM3 来了,时隔五年,它来带的惊喜到底是啥呢?

  1. 一个完全依赖于最大后验估计(MAP)的单/双目惯导融合系统
  2. 高回召的地点识别功能(High-recall place recognition)
  3. 第一个完整的多地图系统(multi-map)
  4. 一个抽象的相机模型表示
    论文地址
    论文细节今天不说,今天主要先拿到代码,并且用自己的传感器试试实际效果

编译

终端拉代码
记得提前安装好OpenCV,Eigen,和Pangolin

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
cd ORB_SLAM3
chmod +x build.sh
./build.sh
#安装ros版
chmod +x build_ros.sh
./build_ros.sh

编译时可能出现的错误

  1. [rosbuild] rospack found package “ORB_SLAM3” at “”, but the current
    directory is “/home/damon/catkin_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3”.
    在这里插入图片描述
    解决如下
gedit ~/.bashrc
#在文本末尾添加
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/damon/catkin_ws/src/ORB_SLAM3/Examples/ROS/
#记得要改成自己报错所对应的路径
  1. 还可能报错 fatal error: GeometricCamera.h: No such file or directory
    找到以下文件:
    ORB_SLAM3/include/KeyFrame.h
    ORB_SLAM3/include/Atlas.h
    ORB_SLAM3/include/Tracking.h
    中作如下修改
//#include "GeometricCamera.h"
#include "CameraModels/GeometricCamera.h"

ORB_SLAM3/include/Atlas.h 中还需要这些修改

#include "CameraModels/Pinhole.h"
//#include "KannalaBrandt8.h"
#include "CameraModels/KannalaBrandt8.h"

修改之后编译出现一堆错误,大致如下:
在这里插入图片描述
打开一个终端

sed -i "s/ORB_SLAM2/ORB_SLAM3/g" `grep -rl "ORB_SLAM2"`

修改之后刚才的错误没了。
但是出现一个boost链接错误:
在这里插入图片描述在ROS中的CMakeLists.txt里添加

gedit ORB_SLAM3/Examples/ROS/ORB_SLAM3/CMakeLists.txt

然后ctrl+F
搜索set(LIBS
在这里插入图片描述

添加

-lboost_system

然后编译就成功了
在这里插入图片描述

用realsense 跑ORB_SLAM3

首先realsense 需要安装驱动和标定,具体看这里
得到标定结果之后,由于ros版的topic是写死在代码里的,所以首先修改Example/ROS/ORB_SLAM3/src/ros_mono.cc (这里以mono为例,其他也差不多):
在这里插入图片描述
然后重新编译。。。

cd ORB_SLAM3/Examples/Monocular
cp EuRoC.yaml d435i.yaml
gedit d435i.yaml

将d435i标定结果填到d435i.yaml 中
在这里插入图片描述
余下部分保持默认。

最终效果

启动roscore

打开一个终端,启动OBR_SLAM3

source ORB_SLAM3/Examples/ROS/ORB_SLAM3/build/devel/setup.bash
rosrun ORB_SLAM3 Mono /home/damon/catkin_ws/src/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/damon/catkin_ws/src/ORB_SLAM3/Examples/Monocular/d435i.yaml

等到以下界面出现,继续下一步
在这里插入图片描述

再打开一个终端启动realsense_ros

roslaunch realsense2_camera rs_camera.launch

然后发现:
在这里插入图片描述

  • 3
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
ORB-SLAM2是一种广泛使用的视觉定位和地图构建算法,能够在实时环境下使用单目、双目和RGB-D相机进行定位和三维地图构建。在本文中,我们将讨论如何使用Intel Realsense D435i相机进行ORB-SLAM2实时定位与地图构建。 首先,Intel Realsense D435i相机是一种结构光相机,可以提供RGB和深度图像。通过该相机提供的深度图像,ORB-SLAM2算法可以计算出相机的运动以及环境中的特征点,并构建出三维地图。 在使用ORB-SLAM2前,我们需要安装OpenCV、Pangolin和其他一些依赖库,并将ORB-SLAM2代码编译为可执行文件。 通过运行ORB-SLAM2程序时,需要选择所使用的相机类型,在这里我们选择Intel Realsense D435i相机。然后,我们通过代码配置相机参数,如分辨率、深度图像的合理范围等。 接下来,我们可以选择使用单目、双目或RGB-D模式进行定位和地图构建。对于单目模式,我们只使用相机的RGB图像,并通过ORB-SLAM2算法实时定位和地图构建。对于双目和RGB-D模式,我们需要同时使用相机的RGB图像和深度图像,并通过计算立体匹配或深度图像对齐来获得更准确的定位和地图构建结果。 最后,ORB-SLAM2会实时计算相机的运动,并在地图中添加新的特征点和关键帧。通过地图和关键帧的维护,我们可以实现相机的实时定位,即使在没有先前观察到的场景中。 总之,通过使用Intel Realsense D435i相机和ORB-SLAM2算法,我们可以实时运行单目、双目和RGB-D模式下的定位和地图构建。这种能力在许多应用中都是非常有用的,如机器人导航、增强现实等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值