ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

这篇具有很好参考价值的文章主要介绍了ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Intel RealSense SDK 2.0 是跨平台的开发套装,包含了基本的相机使用工具如 realsense-viewer,也为二次开发提供了丰富的接口,包括 ROS,python , Matlab, node.js, LabVIEW, OpenCV, PCL, .NET 等。

这次使用的摄像头是D435i
它可以提供深度和 RGB 图像,而且带有 IMU
本次流程就是想使用D435i摄像头进行SLAM的点云建图

进行安装Intel RealSense SDK,查看摄像头的数据
Linux/Ubuntu - 实感 SDK 2.0 构建指南

安装完成后,查看相机的深度和 RGB 图像

realsense-viewer

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

然后这里下载驱动 intel 的各个摄像头的 ROS 框架的驱动功能包
适用于英特尔®实感™设备的 ROS 封装器


当安装完成后便可以启动看看摄像头的数据

我们这里继续配置SMAL
在启动相机之前,我们需要设置一下 realsense2_camera rospack 中的 rs_camera.launch 的文件
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


前者是让不同传感器数据(depth, RGB, IMU)实现时间同步,即具有相同的 timestamp;
后者会增加若干 rostopic,其中我们比较关心的是/camera/aligned_depth_to_color/image_raw,这里的 depth 图像与 RGB 图像是对齐的

  <arg name="enable_sync"               default="true"/>
  <arg name="align_depth"               default="true"/>

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


完成后,就可以用如下命令启动相机

roslaunch realsense2_camera rs_camera.launch

其中关键的是 /camera/color/image_raw /camera/aligned_depth_to_color/image_raw
分别对应 RGB 图像和深度图像


然后在Examples/RGB-D中,新建一个名为RealSense.yaml的参数文件,
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


然后进行编辑

#--------------------------------------------------------------------------------------------
# Camera calibration and distortion parameters (OpenCV)
Camera.fx: 909.3504638671875
Camera.fy: 908.5739135742188
Camera.cx: 645.5443725585938
Camera.cy: 369.3554992675781

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

Camera.width: 1280
Camera.height: 720

#Camera frames per second
Camera.fps: 30.0

#IR projector baseline times fx (aprox.)
Camera.bf: 46.01

#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,将深度像素值转化为实际距离,原来单位是 mm,转化成 m
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


其中,里面包含了相机内参,可以通过以下获取,每个相机的参数可能会有差别

rostopic echo /camera/color/camera_info

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

这里主要在yaml中注意的是

# 相机标定和畸变参数(OpenCV)

要根据话题【/camera/color/camera_info】的数据进行修改
参数可以对照网址查看具体的各参数信息
http://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/CameraInfo.html

也就是以下的参数

Camera.fx: 909.3504638671875
Camera.fy: 908.5739135742188
Camera.cx: 645.5443725585938
Camera.cy: 369.3554992675781

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

Camera.width: 1280
Camera.height: 720

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


完成后保存并退出

然后修改src/pointcloudmapping.cc文件

1.第128行附近

	voxel.setLeafSize (0.02f, 0.02f, 0.02f); 		//Modified place 1 调节点云密度

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

2,第75行左右

            p.y = ( m - kf->cy) * p.z / kf->fy;
           // p.y = - ( m - kf->cy) * p.z / kf->fy;   //Modified place2 与原先添加了负号,将原本颠倒的点云地图上下翻转,方便观察 
           //【后续测试显示的pcd完全无法使用。不进行上下翻转】
            
	    	p.r = color.ptr<uchar>(m)[n*3];         //Modified place3 修改颜色显示
            p.g = color.ptr<uchar>(m)[n*3+1];
            p.b = color.ptr<uchar>(m)[n*3+2];

#########2023年04月17日 08:54:17 UTC+8:00#########
#########由于原先的截图有歧义,更换新的图片#########
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


然后编译ORB_SLAM2_modified

./build.sh
./build_ros.sh

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

完成编译后进行测试

启动主节点

roscore

启动摄像头

roslaunch realsense2_camera rs_camera.launch

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


进行建图,发现报错

rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.bin Examples/RGB-D/RealSense.yaml /camera/rgb/image_raw:=/camera/color/image_raw /camera/depth_registered/image_raw:=/camera/aligned_depth_to_color/image_raw

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


经过查找可能是yaml文件还需要修改
opencv4.0读取yaml文件错误 error: (-49:Unknown error code -49) Input file is empty in function ‘open’

需要在yaml文件顶端添添加

%YAML:1.0

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

重新运行

rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.bin Examples/RGB-D/RealSense.yaml /camera/rgb/image_raw:=/camera/color/image_raw /camera/depth_registered/image_raw:=/camera/aligned_depth_to_color/image_raw

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图
当CTRL+C后,可以看到输出的pcd文件

查看保存的pcd文件

pcl_viewer vslam.pcd

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

至此,基于深度相机 Intel RealSense D435i 实现 ORB SLAM 2 的流程成功

不过由于启动SLAM的指令有点复杂,使用roslauch进行优化
首先是离线包的启动

当启动的命令没有输全的时候,终端会输出使用的用法

Usage: rosrun ORB_SLAM2 RGBD path_to_vocabulary path_to_settings

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

首先建立一个功能包,命名为 slam

cd ~/catkin_ws/src
catkin_create_pkg slam std_msgs rospy roscpp

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

然后在这个功能包中创建launch文件,我命名为rgbd.launch
进行编辑

<launch>
    <!--定义全局参数-->
    <arg name="rgb_image" default="/camera/rgb/image_raw"/>
    <arg name="path_to_vacabulary" default="/home/heying/ORB_SLAM2_modified/Vocabulary/ORBvoc.bin"/>
    <arg name="path_to_settings" default="/home/heying/ORB_SLAM2_modified/Examples/RGB-D/TUM1_ROS.yaml"/>


    <!--播放离线包-->
    <!-- 注意这里bag文件的路径必须为绝对路径-->
    <node pkg="rosbag" type="play" name="player" output="screen"
         args=" /home/heying/ORB_SLAM2_modified/Examples/datasets/rgbd_dataset_freiburg1_xyz.bag">
         <remap from="/camera/rgb/image_color" to="/camera/rgb/image_raw" />
	 <remap from="/camera/depth/image" to="/camera/depth_registered/image_raw" />

    </node>

    <!--启动ORB-SLAM2 RGBD-->
    <node name ="RGBD" pkg="ORB_SLAM2" type="RGBD"
        args="$(arg path_to_vacabulary) $(arg path_to_settings)" respawn="true" output="screen">
        <!--remap from="/camera/image_raw" to="$(arg rgb_image)"/-->
    </node>
</launch>

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


完成后测试

roslaunch slam rgbd.launch

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


正常启动
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


实时摄像头

再新建一个launch文件,用于摄像头的启动于建图

touch  camera.launch
gedit camera.launch

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

然后进行编写

首先是全局参数,先不要打全指令,可以看到输出了使用方法,出来的path_to_vocabularypath_to_settings便是需要设置的全局参数

rosrun ORB_SLAM2 RGBD

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

<launch>

<!--定义全局参数-->
  <arg name = "path_to_vocabulary" default = "/home/heying/ORB_SLAM2_modified/Vocabulary/ORBvoc.bin"/>
  <arg name = "path_to_settings" default = "/home/heying/ORB_SLAM2_modified/Examples/RGB-D/RealSense.yaml"/>


  <!--include file="$(find realsense2_camera)/launch/rs_camera.launch"/-->


<!--启动ORB-SLAM2 RGBD-->
  <node pkg = "ORB_SLAM2" type ="RGBD" name = "RGBD_camera" args="$(arg path_to_vocabulary) $(arg path_to_settings)" respawn="true" output="screen">
        <remap from="/camera/rgb/image_raw" to="/camera/color/image_raw" />
	 	<remap from="/camera/depth_registered/image_raw" to="/camera/aligned_depth_to_color/image_raw" />
  </node>

</launch>

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


测试
开启主节点

roscore

然后检查摄像头的硬件连接

启动摄像头

roslaunch realsense2_camera rs_camera.launch

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图


启动建图

roslaunch slam camera.launch

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图
启动正常,效果简直完美
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图
在程序CTRL+C后会生成pcd文件
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

查看效果

pcl_viewer vslam.pcd

ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

效果良好
ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图

至此,使用 intel D435i 构建SLAM点云地图与slam摄像头建图的启动指令优化流程结束文章来源地址https://www.toymoban.com/news/detail-407594.html

到了这里,关于ORB-SLAM2的布置(五)使用 intel D435i 构建SLAM点云地图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ORB_SLAM3 ROS编译及使用D435I运行

    本文介绍ORB_SLAM3编译、运行中遇到问题,尤其涉及到ORB_SLAM3 ROS编译遇到的问题。最后通过使用D435I完成在室内环境下运行。 本文运行环境在Ubuntu20.04 + ROS noetic。 一、ORB_SLAM3 依赖安装 ORB_SLAM3 依赖的安装,有同学喜欢上来就baidu,按照别人介绍的安装,这样做大多数时候会出现

    2024年02月03日
    浏览(47)
  • intel realsense d435i相机标定中文文档

    此文档参考了官方的英文文档,原地址面向英特尔®实感™深度摄像头的 IMU 校准工具 (intelrealsense.com) IMU概述:惯性测量单元(imu)通常由加速度计组成,加速度通常以国际系统(SI)的米/秒为单位输出平方(m/s^2)和陀螺仪,陀螺仪通常以SI单位测量角速度弧度/秒(rad/s)。英特尔Real

    2024年02月09日
    浏览(43)
  • Ubuntu 20.04 Intel RealSense D435i 相机标定教程

    报错:sumpixel_test.cpp:2:10: fatal error: backward.hpp: 没有那个文件或目录,将sumpixel_test.cpp中# include \\\"backward.hpp\\\"改为:#include “code_utils/backward.hpp”。 报错 创建rs_imu_calibration.launch 找到realsense-ros包,进入/catkin_ws/src/realsense2_camera/launch(路径仅供参考),复制其中的rs_camera.launch,并重

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

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

    2024年02月07日
    浏览(49)
  • 项目设计:YOLOv5目标检测+机构光相机(intel d455和d435i)测距

    1.1  Intel D455 Intel D455 是一款基于结构光(Structured Light)技术的深度相机。 与ToF相机不同,结构光相机使用另一种方法来获取物体的深度信息。它通过投射可视光谱中的红外结构光图案,然后从被拍摄物体表面反射回来的图案重建出其三维形状和深度信息。 Intel D455 深度相机

    2024年02月08日
    浏览(46)
  • Intel RealSense D435i深度相机通过点云获取图片中任意点三维信息(python实现)

    此时效果(左侧RGB图,右侧深度图)(过近时深度信息几乎显示不出来)  按下p键暂停画面 按下s键保存图片 按下r键读取刚才保存的图片,并通过image_sliced文件将图片裁剪到自己需要的范围 image_sliced.py 按下g键进行图像处理,判断方向,并将三维信息显示在图片上 image_pro

    2023年04月08日
    浏览(46)
  • 使用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日
    浏览(44)
  • 【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

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

    2024年02月02日
    浏览(43)
  • 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日
    浏览(54)
  • Realsense d435i驱动安装、配置及校准

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

    2024年02月02日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包