ORB_SLAM3 ROS编译及使用D435I运行

这篇具有很好参考价值的文章主要介绍了ORB_SLAM3 ROS编译及使用D435I运行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文介绍ORB_SLAM3编译、运行中遇到问题,尤其涉及到ORB_SLAM3 ROS编译遇到的问题。最后通过使用D435I完成在室内环境下运行。
本文运行环境在Ubuntu20.04 + ROS noetic。

一、ORB_SLAM3 依赖安装

ORB_SLAM3 依赖的安装,有同学喜欢上来就baidu,按照别人介绍的安装,这样做大多数时候会出现错误,因为每个人的电脑环境不一样(可能库安装不一样的版本)。其实最好的方式是直接在仓库代码,按照readme介绍安装就好,故这部分着实没啥好介绍的。
具体参考:https://github.com/UZ-SLAMLab/ORB_SLAM3#readme
注:因为文章会介绍ROS运行,故自行安装上ROS。

二、编译

很遗憾,一步步完成上述安装,以为可以直接愉快的玩耍了,结果编译时会出错。主要错误如下:

1.error: decay_t is not a member of std did you mean decay

问题出现的原因是作者使用的是C++11编译的,从CMakeLists.txt可以看出,所以只需要将下面几行C++14替换C++11即可。

17行:CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
20行:set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
22行:message(STATUS "Using flag -std=c++14.")
28行:message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++14 support. Please use a different C++ compiler.")
2.Could not find a configuration file for package “OpenCV” that is compatible

with requested version “4.4”.
问题出现主要是opencv版本问题。查看自己安装的opencv版本,将cmake中,改成自己安装的版本即可。修改如下

原:find_package(OpenCV 4.4)
修改后:find_package(OpenCV 3.4)

其中OpenCV 3.4,是我安装的版本,更低版本是否可用读者可按照自己安装的版本自行尝试。
接下来就可以愉快的玩耍了。

cd ORB_SLAM3
chmod +x build.sh
./build.sh

正常情况下应该没有错误啦。

三、ROS编译

ROS编译,是本文要讲的重点。因为按照作者readme中介绍,直接执行如下脚本就可以了,

gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples/ROS
chmod +x build_ros.sh
./build_ros.sh

执行完后,可以编译成功,但是出现错误
./build_ros.sh: line 3: cd: Examples/ROS/ORB_SLAM3: No such file or directory
mkdir: cannot create directory ‘build’: File exists
按照路径查找居然在Examples没有ROS文件夹!!!
哎,你说坑不坑。
下面要开始我们的操作了,几番查找,发现Examples_old中有。于是:
将Examples_old文件夹下ROS文件夹复制到Examples文件夹下,然后编译,会出现如下错误:

1.C++11编译的版本问题,对应将ROS/ORB_SLAM3文件下CMakeLists.txt文件中用C++14替换C++11即可。
2.提示找不到sophus库

在CMakeLists.txt文件中,添加

 include_directories(
 ${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
 )
3.Sophus::SE3f, cv::MAT,Eigen::Vector3f类型转换报错,在报错文件中添加头文件
#include <Eigen/Dense>
#include <opencv2/core/eigen.hpp>
4.解决 cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()); 报错

引入上述两个头文件,然后删除ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc第151行,由下面内容替换

cv::Mat Tcw;
Sophus::SE3f Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();
cv::eigen2cv(Tcw_Matrix, Tcw);
5.解决 vPoints.push_back(pMP->GetWorldPos()); 报错

引入上述两个头文件,然后删除ROS/ORB_SLAM3/src/AR/ViewerAR.cc第409行,由以下内容替换

cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);
6.解决 cv::Mat Xw = pMP->GetWorldPos();报错

引入上述两个头文件,然后删除ROS/ORB_SLAM3/src/AR/ViewerAR.cc第530行,由以下内容替换

cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);

于是又可以愉快的玩耍了,在进行上述编译

gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples/ROS
chmod +x build_ros.sh
./build_ros.sh

这下没有错误啦。

三、跑数据集

1.slam3
(1)EuRoC stereo+Inertial测试

euroc数据集
本测试是以双目+imu跑euroc 数据集为例
./Examples/Stereo-Inertial/stereo_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/EuRoC.yaml ./Examples/datasets/MH_03_medium ./Examples/Stereo-Inertial/EuRoC_TimeStamps/MH03.txt
运行结果如下:
ORB_SLAM3 ROS编译及使用D435I运行ps:在Examples建立datasets文件夹,将下载好的数据集放里面即可。

(2) 运行D435I

./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/Realsense_D435i.yaml
关于D435I相机设置、校准可以参考系列文章
Realsense d435i驱动安装、配置及校准
Realsense d435i内参、外参标定
从零完成slam实战,以Vins-Fusion为例

2. slam3_ros
(1)EuRoC ros包 + stereo+Inertial测试

rosrun ORB_SLAM3 Stereo-Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/Realsense_D435i.yaml false
rosbag play MH_03_medium.bag
运行结果如下:
ORB_SLAM3 ROS编译及使用D435I运行

其中:MH_03_medium.bag话题/imu0 /cam0/image_raw /cam1/image_raw

(2)运行自己录制好的bag

rosrun ORB_SLAM3 Stereo-Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml ./Examples/datasets/MH_03_medium.bag false
rosbag play room.bag
运行结果如下:
ORB_SLAM3 ROS编译及使用D435I运行
其中:room.bag包含话题:/camera/imu /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw
ps:小技巧,根据自己录制包的话题,在ros_stereo_inertial.cc中141-143行更改对应订阅的话题。

参考文献

https://github.com/UZ-SLAMLab/ORB_SLAM3
https://blog.csdn.net/zhh2005757/article/details/122353772文章来源地址https://www.toymoban.com/news/detail-435907.html

到了这里,关于ORB_SLAM3 ROS编译及使用D435I运行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实测 (四)NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图

    首先小白老师分享的ORB-SLAM3的可回环的稠密地图版本,具体在这篇博客,下载但是却没有相关的具体实现教程,这里我们先使用 奥比中光Astrapro 两款相机进行配置实现 其实与orb-slam2的环境配置一样,使用的仍然是pagolin0.5,和opencv3.2.0版本(3.4.x也可以),pcl1.8.1+vtk7.1.1 这里

    2024年02月16日
    浏览(32)
  • 实测 (二)NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图

    接着上篇,开始orb-slam2稠密回环建图 先上效果图  这里感谢大神提供一个可回环的稠密地图版本: https://github.com/xiaobainixi/ORB-SLAM2_RGBD_DENSE_MAP.git 2.1 安装依赖(和orb-slam2环境配置一样,如果已经配置过,可以跳到pcl安装) (1)Pangolin(推荐0.5版本) (2)opencv3.2.0(巨坑!!

    2024年02月08日
    浏览(30)
  • ROS D435I识别目标并获取深度数据

    使用D435I相机,并基于ros获取到彩色图像和匹配后的深度数据,通过OPENCV对彩色图像进行目标识别,得到目标所在的像素范围,随后得到深度数据 重点在于:转换ros图像数据到opencv格式,得到目标像素点的实际深度值 d435i启动与修改 使用上述指令启动d435i,可以在里面进行分

    2024年02月10日
    浏览(31)
  • Ubuntu18.04安装配置使用Intel RealSense D435i深度相机以及在ROS环境下配置

    最近因为学习开发需要,要开始接触一些视觉相关的内容,拿到了一个Inter 的D435i深度相机,记录一下在Ubuntu18环境下配置SDK 包的历程 注意 : Intel官方最新版的librealsense版本与ROS1的ROS Wrapper是 版本不一致的 ,且ROS Wrapper支持的是较低版本的SDK ,具体可以去网站查看 如果完全

    2024年02月07日
    浏览(37)
  • Ubuntu 18.04安装D435i 相机驱动及Ros1 Wrapper

    1.安装前注意 librealsense SDK相当于相机的驱动,SR300和ZR300的支持驱动是librealsense SDK 1.0,而D435i是librealsense SDK 2.0 **安装前一定要注意librealsense,realsense-ros(即Ros Wrapper),D435i相机固件版本三者之间的版本对应关系。**ros1环境只支持librealsense2.50.0之前的版本,ros2环境要下载librealse

    2024年02月22日
    浏览(36)
  • 使用D435i相机录制TUM格式的数据集

    本文写于2023年3月14日。 D435i相机的rgb图像与depth图像的像素没有对齐,在此记录一下如何像素对齐 Ubuntu18.04 + ROS melodic 这一步需要使用 InterRealSenseD435i SDK2 ,可以参考此链接安装。 打开 Intel RealSense Viewer 。设置 Depth Stream 以及 Color Stream 的图像分辨率为 640 × 480 ,设置采集帧率

    2024年02月09日
    浏览(33)
  • ubuntu18.04安装Realsense D435i相机SDK及realsense-ros记录,为后期运行yolo v5作准备

    写在前面 :一定要注意各个版本之间的匹配问题,否则会报各种错误。 例如ROS版本和librealsense SDK版本之间的对应关系,以及realsense-ros(Wrapper)与librealsense SDK之间的对应关系 。 系统:ubuntu18.04 ros: melodic 附上Intel® RealSense github网站: https://github.com/IntelRealSense 以及安装教程

    2024年02月05日
    浏览(39)
  • 【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

    最近组里面的项目需要用到D435i深度相机采集深度图片,所以记录一下在Windows+Ubuntu的环境下使用D435i深度相机的流程,以及如何利用python读取、保存常见的RGB、Depth图片。 D435i 在小巧外形中采用英特尔模块和视觉处理器,是一个功能强大的一体产品,可与可定制软件配合使用

    2024年02月02日
    浏览(27)
  • d435i 相机和imu标定

    使用 imu_utils 功能包标定 IMU,由于imu_utils功能包的编译依赖于code_utils,需要先编译code_utils,主要参考 相机与IMU联合标定_熊猫飞天的博客-CSDN博客 Ubuntu20.04编译并运行imu_utils,并且标定IMU_学无止境的小龟的博客-CSDN博客 1.1 编译 code_utils 创建工作空间 1.1.1 修改 CMakeLists.txt 文件

    2024年02月09日
    浏览(42)
  • Realsense d435i驱动安装、配置及校准

    写在前面 本文是在ubuntu20.04下安装,其它版本大同小异。可能出现的问题,主要由各自安装相关库版本不一致导致,故问题不一,但一般很好解决,正常情况下不会出现。 Intel Realsense 深度摄像头D435i将D435强大的深度感知能力和惯性测量单元(IMU)结合起来,可满足RGBD、单目、

    2024年02月02日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包