使用D435i深度相机运行ORB-SLAM3

2023-05-16

下载安装链接

下载ORB-SLAM3地址: git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

eigen3多版本安装:https://blog.csdn.net/weixin_41756645/article/details/129570141

ORB-SLAM2中eigen3版本为:3.2.10版本
ORB-SLAM3中eigen3版本为:3.3.9版本
参考文档:https://blog.csdn.net/weixin_41756645/article/details/129570141

安装fmt 8.1.1版本:https://github.com/fmtlib/fmt/tags
安装Sophus 1.22.4版本:参考文档:地址

数据包地址:https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

下载ORB-SLAM3

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

修改ORB-SLAM3源文件

ORB_SLAM3下CMakeLists.txt

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall   -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3")
set(CMAKE_CXX_STANDARD 14)
find_package(OpenCV 4.0 QUIET)
if(NOT OpenCV_FOUND)
   find_package(OpenCV 2.4.3 QUIET)
   if(NOT OpenCV_FOUND)
      message(FATAL_ERROR "OpenCV > 4.2 not found.")
   endif()
endif()
find_package(Eigen3 REQUIRED)

在这里插入图片描述
在这里插入图片描述

DBoW2下CMakeLists.txt

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3  ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall  -O3 ")

find_package(OpenCV 4.0 QUIET)
if(NOT OpenCV_FOUND)
   find_package(OpenCV 2.4.3 QUIET)
   if(NOT OpenCV_FOUND)
      message(FATAL_ERROR "OpenCV > 4.2 not found.")
   endif()
endif()

在这里插入图片描述

g2o下CMakeLists.txt

SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 ")
FIND_PACKAGE(Eigen3  REQUIRED)

在这里插入图片描述

將Examples_old中的ROS移動到Examples中

在这里插入图片描述

修改 Examples下CMakeLists.txt

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3  ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall  -O3 ")
set(CMAKE_CXX_STANDARD 14)
find_package(OpenCV 4.0 QUIET)
if(NOT OpenCV_FOUND)
   find_package(OpenCV 2.4.3 QUIET)
   if(NOT OpenCV_FOUND)
      message(FATAL_ERROR "OpenCV > 4.2 not found.")
   endif()
endif()
find_package(Eigen3  REQUIRED)
add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
set(Boost_NO_BOOST_CMAKE ON)
set(BOOST_ROOT "/usr/include")

在这里插入图片描述
在这里插入图片描述

在编译ros版本时候需要初始化ROS,在**~/.bashrc的最后一行加入以下代码,一定要添加到最後一行,否則報錯

sudo gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/youzhu/ROS/catkin_modi/src/ORB_SLAM3/Examples/ROS
#保存退出
source ~/.bashrc

编译

编译ORB-SLAM3

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

在ORB_SLAM3中创建dataset

在这里插入图片描述

下载数据包放到dataset文件中:

下载数据包地址:http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/

wget http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_01_easy/MH_01_easy.bag

在这里插入图片描述

查看是否编译成功。运行命令

roscore
rosbag play --pause ./dataset/MH_01_easy.bag /cam0/image_raw:=/camera/image_raw /imu0:=/imu
rosrun ORB_SLAM3 Mono_Inertial Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/EuRoC.yaml true

在这里插入图片描述

编译ROS下ORB-SLAM3

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

编辑过程中报错:ros版本编译,提示找不到sophus库,及 Sophus::SE3f, cv::MAT,Eigen::Vector3f类型转换报错 #442

1:首先查看是否安装了Sophus 没有安装的话的现进行安装,安装前查看fmt是否安装,没有的话现安装fmt

安装成功后再进行编译

./build_ros.sh

2:/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc文件中cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()); 报错:

解决:

cv::Mat Tcw;
Sophus::SE3f Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();

在这里插入图片描述

3:文件:/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc文件中:error: ‘eigen2cv’ is not a member of ‘cv’报错:

解决

#include <Eigen/Dense>
#include <opencv2/core/eigen.hpp>
#include <opencv2/opencv.hpp>

在这里插入图片描述

4:在/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ViewerAR.cc文件中:vPoints.push_back(pMP->GetWorldPos()); 报错

cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);

在这里插入图片描述

5:在/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ViewerAR.cc文件cv::Mat Xw = pMP->GetWorldPos();报错

在这里插入图片描述

6:在/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ViewerAR.cc文件error: ‘eigen2cv’ is not a member of ‘cv’报错:

在这里插入图片描述

参考·链接:https://blog.csdn.net/m0_54539677/article/details/123480828

再进行编译

./build_ros.sh

使用D435i深度相机进行测试

在/home/youzhu/ROS/catkin_modi/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3文件中创建:MyD435i.yaml

%YAML:1.0

#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
Camera.type: "PinHole"

 
# Camera calibration and distortion parameters (OpenCV) 
Camera.fx: 905.8228759765625
Camera.fy: 905.6454467773438
Camera.cx: 640.6072998046875
Camera.cy: 364.5034484863281

Camera.k1: 0.0
Camera.k2: 0.0
Camera.p1: 0.0
Camera.p2: 0.0
Camera.p3: 0.0

Camera.width: 720
Camera.height: 1280
# Camera frames per second 
Camera.fps: 30.0

# IR projector baseline times fx (aprox.)
# bf = baseline (in meters) * fx, D435i的 baseline = 50 mm 
Camera.bf: 50.0
 
# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1
 
# Close/Far threshold. Baseline times.
ThDepth: 40.0
 
# Deptmap values factor
DepthMapFactor: 1000.0
 
#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------
 
# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000
 
# ORB Extractor: Scale factor between levels in the scale pyramid 	
ORBextractor.scaleFactor: 1.2
 
# ORB Extractor: Number of levels in the scale pyramid	
ORBextractor.nLevels: 8
 
# ORB Extractor: Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast			
ORBextractor.iniThFAST: 20
ORBextractor.minThFAST: 7
 
#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize:2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500
 
PointCloudMapping.Resolution: 0.01
meank: 50
thresh: 2.0

修改ros接口

启动RealSense的ROS节点
realsense的ROS接口可以理解为一个读取数据并发布topic的节点,自己写ROS程序的时候订阅这个节点发出的topic即可

roslaunch realsense2_camera rs_camera.launch

查看这些节点

rostopic list

在这里插入图片描述

使用rqt_image_view订阅这些节点

也可以使用rqt_image_view订阅这些节点

在这里插入图片描述

修改rs_camera.launch,我的rs_camera.launch文件在:/home/youzhu/catkin_ws/src/realsense-ros/realsense2_camera/launch目录中有的人是在:/opt/ros/noetic/share/realsense2_camera/launch中

在这里插入图片描述

在这里插入图片描述

再使用rqt_image_view订阅这些节点:

在这里插入图片描述

修改ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_mono.cc文件的订阅消息

    message_filters::Subscriber<sensor_msgs::Image> left_sub(nh, "/camera/infra1/image_rect_raw", 1);
    message_filters::Subscriber<sensor_msgs::Image> right_sub(nh, "/camera/infra2/image_rect_raw", 1);

在这里插入图片描述

再进行编译

./build_ros.sh

使用D435i相机运行ORB-SLAM3

roscore
roslaunch realsense2_camera rs_camera.launch
true:
是正在将关键帧轨迹保存到KeyFrameTrajectory_TUM_Format.txt。。。
正在将相机轨迹保存到FrameTrajectory_TUM_Format.txt。。。
正在将相机轨迹保存到FrameTrajectory_KITTI_Format.txt。。
rosrun ORB_SLAM3 Stereo ../../../Vocabulary/ORBvoc.txt  MyD435i.yaml false  

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用D435i深度相机运行ORB-SLAM3 的相关文章

随机推荐

  • 初学FreeRTOS实现多任务程序

    初学FreeRTOS实现多任务程序 1 什么是FreeRTOS2 STM32下FreeRTOS移植2 1 准备工作2 2 移植更改2 2 1 新建分组2 2 2 添加相应的头文件路径2 2 3 修改 SYSTEM 文件 3 多任务程序的实现
  • 【计网+go】如何获取完整的报文?

    我们想要获取完整的报文 xff0c 首先得知道消息的长度和起始位置然后来读取 通常有以下几种方法 使用带消息头的协议 头部写入包长度 xff0c 然后再读取包内容 设置定长消息 xff0c 每次读取定长内容 xff0c 长度不够时空位补固定
  • Visual Studio 2022下载安装

    Visual Studio 2022下载安装 1 进入官网 官网地址 xff1a https visualstudio microsoft com 这里以Windows操作系统为例 根据需要选择版本 xff0c 我这里下载的是Enterpr
  • Lighttpd入门教程

    Lighttpd入门教程 概述入门教程安装配置静态文件服务动态文件服务 虚拟主机SSL启动服务器日志模块总结lighthttpd使用场景和原理使用场景原理 概述 Lighttpd xff08 也称为轻量级HTTP服务器 xff09 是一款快
  • 5.OSD叠加学习之在YUV图片上显示 竖线横线斜线

    目录 实现效果图 实现思路 xff1a 代码编写 实现效果图 实现思路 xff1a 无论是显示 竖线横线还是斜线 xff0c 无非是对 多个连续的 像素点进行操作 xff0c 明白了一个像素点如何点亮 xff0c 加个循环偏移量 xff0c
  • shell脚本发送http请求

    简述 xff1a 使用shell脚本发送http请求 xff0c 解析请求获取token再次发起请求 系统 xff1a ubuntu系统 工具 xff1a cURL 发送http请求 xff0c jq 解析json xff0c 没有需要安装
  • 2020年电赛省赛题目A——无线运动传感器节点设计

    无线运动传感器节点设计 题目要求设计方案分析心电检测模块方案ADS1292的A D转换计算心电信号的处理体表温度分析计算运动量分析计算无线传输模块设计显示屏的设计电路设计温度模块设计加速度计模块设计无线传输模块设计PCB布线布局 题目要求
  • 【全志T113-S3_100ask】8-USB串口获取GPS数据(含解析)

    全志T113 S3 100ask 8 USB串口获取GPS数据 xff08 含解析 xff09 背景 xff08 一 xff09 USB串口驱动 xff08 二 xff09 驱动加载 xff08 三 xff09 简单读取串口数据 xff08
  • Java ---JVM栈的存储结构与运行原理

    目录 一 栈中存储结构 二 栈运行原理 一 栈中存储结构 1 每个线程都有自己的栈 xff0c 栈中的数据都是以栈帧 Stack Frame 的格式存在 2 在这个线程上正在执行的每个方法都各自对应一个栈帧 3 栈帧是一个内存区块 xff0
  • c++配置opencv环境

    c 43 43 配置opencv环境 环境 xff1a 系统 xff1a win10系统截至20190523版本 opencv版本 xff1a 3 4 6版本 教程 xff1a 1 下载opencv安装包 xff0c 由于4 0 1版本会出
  • Android应用安全解决方案

    前言 防止第三方反编译篡改应用 xff0c 防止数据隐私泄露 xff0c 防止二次打包欺骗用户 1 一些必要的基础知识 我们在加密的时候会用到一些加密或者编码方法 常见的有 xff0c 非对称加密算法 RSA 等 xff1b 对称加密算法
  • win10修改系统配置处理器引导参数后,系统无限蓝屏解决办法

    win10修改系统配置处理器引导参数后 xff0c 系统无限蓝屏解决办法 0 xff1a 开机时先按f8进入安全模式 xff0c 在进入命令提示符 1 进入 启动修复 的 命令提示符 xff08 最好是使用有管理员权限的 xff0c 不过普
  • 运行内存变成的2G,为硬件保留内存为6G

    运行内存变成的2G xff0c 为硬件保留内存为6G 先看设置中下面是否有设置是否激活windows xff0c 如有点进去 xff0c 有疑难解疑下面 xff0c 点入会自动激活windows xff0c 如盗版就不行 xff0c 激活后
  • ubuntu20.4安装NVIDIA驱动,cuda

    安装NVIDIA驱动准备工作 下载NVIDIA地址 xff1a https www nvidia cn Download index aspx lang 61 cn 查看是否安装好驱动命令 xff1a nvidia span class t
  • 图像进行反转:白变黑,黑变白

    图像进行反转 xff1a 白变黑 xff0c 黑变白 二值图对图像进行反转 span class token keyword import span cv2 img span class token operator 61 span spa
  • python调用相机和双目相机

    python调用相机 span class token keyword import span cv2 span class token keyword import span numpy span class token keyword
  • 安装PCL1.9.1其它版本号Python3.6+PCL1.9.1+VS2017+gtkbundle_3.6.4版本

    下载 python pcl文件 地址 xff1a https github com strawlab python pcl 安装 VS2017 安装PLC1 91 首先在自己电脑上安装PCL xff08 点击这里 xff09 xff0c 这
  • ROS--机器人小车仿真rviz

    URDF练习 需求描述 创建一个四轮圆柱状机器人模型 xff0c 机器人参数如下 底盘为圆柱状 xff0c 半径 10cm xff0c 高 8cm xff0c 四轮由两个驱动轮和两个万向支撑轮组成 xff0c 两个驱动轮半径为 3 25cm
  • ROS--URDF集成Gazebo仿真小车和rviz结合

    ROS URDF集成Gazebo仿真小车 实现流程 需要编写封装惯性矩阵算法的 xacro 文件 为机器人模型中的每一个 link 添加 collision 和 inertial 标签 xff0c 并且重置颜色属性 在 launch 文件中
  • 使用D435i深度相机运行ORB-SLAM3

    下载安装链接 下载ORB SLAM3地址 xff1a git clone https github com UZ SLAMLab ORB SLAM3 git eigen3多版本安装 xff1a https blog csdn net wei