Fork me on GitHub

Ubuntu下Intel RealSense Depth Camera D455( 景深相机)的ROS2 wrapper 安装、RViz2的使用和设备序列号的获取方法

 Intel RealSense Depth Camera D455( 景深相机)的ROS2驱动安装

找到官方开发者中心的文档https://dev.intelrealsense.com/docs/docs-get-started?_ga=2.22118398.41936604.1734785296-801471888.1733994584

 

先别着急按照文档的指引就先安装好对应的SDK,我在这里走了弯路,这里的SDK是老版本,装ROS Wrapper 会报版本过低的错,要装ROS2的wraaper不要点这里。

 

 

 

 

我们直接点 README.md ,按照这里的要求装。

 

 

 

 第一步安装ROS2,推荐鱼香ROS一键安装,装好的跳过。

第二步,安装latest Intel® RealSense™ SDK 2.0,一般都是选 Linux Debian Installation Guide,然后按照里面指引把SDK2..0给装好。 Linux Debian Installation Guide里也有卸载方法。

 第三步,按照说明,安装好就行了。

RViz2的使用


 

1. 使用 ros2 run 启动相机节点

  • 基础命令

    ros2 run realsense2_camera realsense2_camera_node
    

    这个命令会启动 realsense2_camera_node,即 RealSense 相机的核心驱动节点。它会初始化相机并开始发布数据。

  • 带参数的命令(启用空间和时间滤波器,禁用彩色图像):

    ros2 run realsense2_camera realsense2_camera_node --ros-args -p enable_color:=false -p spatial_filter.enable:=true -p temporal_filter.enable:=true
    

    这个命令启用了时间和空间滤波器,同时禁用了彩色图像(可能是为了减小数据量或只关注深度数据)。这些滤波器有助于改善深度数据的质量,特别是在噪声较多或不稳定的环境中。

2. 使用 ros2 launch 启动

  • 基础 launch 命令

    ros2 launch realsense2_camera rs_launch.py
    

    这个命令会启动 rs_launch.py 启动文件,通常用于启动相机节点并设置一些默认配置。

  • 带参数的 launch 命令(设置特定的深度配置和点云功能):

    ros2 launch realsense2_camera rs_launch.py depth_module.depth_profile:=1280x720x30 pointcloud.enable:=true
    

    这个命令设置了深度图像的分辨率为 1280x720,帧率为 30,并启用了点云数据发布。点云数据能够帮助你在三维空间中可视化深度信息,常用于机器人感知、建图等任务。

 

  1. 验证数据:你可以使用 rqt_image_view 或其他 ROS 2 工具来查看相机发布的图像和深度信息。例如,使用以下命令查看深度图像:

    ros2 run rqt_image_view rqt_image_view
    

    然后在界面中选择 /camera/depth/image_rect_raw 话题来查看实时的深度图像。

  2. 查看点云数据:如果启用了点云数据发布,可以使用 rviz2 来可视化点云:

    ros2 run rviz2 rviz2
    

    在 RViz 中,添加一个 PointCloud2 显示,订阅 /camera/depth/points 或类似的话题来查看点云数据。

  3. 调试与优化:如果在运行过程中遇到问题或需要调整相机设置,可以参考 RealSense 官方文档或调整启动命令中的参数。例如,你可以调节不同的深度配置或滤波器参数来提高性能。

 

3. RViz2(通过 ROS 2)

如果你使用的是 ROS 2 环境,RViz2 是一个强大的可视化工具,可以帮助你查看来自 RealSense 相机的图像和深度数据。你可以通过 PointCloud2 插件查看点云数据,或者查看深度图像、RGB 图像等。

步骤:

  1. 启动相机节点(例如通过 ros2 launch 启动)。
  2. 启动 rviz2
    ros2 run rviz2 rviz2
    
  3. 在 RViz2 中添加 ImagePointCloud2 显示,选择你相机的对应话题(例如 /camera/depth/image_rect_raw/camera/depth/points)来查看数据。

 

 

RViz2 中查看 实时图像,尤其是彩色图像,需要一些额外的配置和步骤。如果你在 ROS 2 中使用 RealSense 相机,默认情况下,你可能看到的是深度图像、点云或者其他传感器数据,而彩色图像则需要进行额外的配置和显示。

1. 确保相机发布了彩色图像

首先,要确保 RealSense 相机正在发布彩色图像。如果你使用的是 RealSense 2.0 驱动(realsense2_camera),默认情况下,相机会发布彩色图像和深度图像。你可以通过以下命令确认彩色图像的话题是否在发布:

ros2 topic list

查找类似 /camera/color/image_raw 的话题。这是发布彩色图像的数据流。

2. 在 RViz2 中显示彩色图像

为了在 RViz2 中查看实时彩色图像,你需要在 RViz2 中添加一个 Image 显示器,并选择正确的话题。下面是具体步骤:

  1. 启动 RViz2

    ros2 run rviz2 rviz2
    
  2. 在 RViz2 中,点击左上角的 "Add" 按钮,选择 "By display type" 下的 "Image"

     

  3. 在右侧的 "Global Options" 部分,确保你选择了正确的 Fixed Frame,通常是 camera_link 或者是与相机相关的坐标系。如果你不确定,可以选择 mapbase_link

     

  4. "Image" 显示器设置中,点击 "Topic" 字段,选择 /camera/color/image_raw,这是 RealSense 相机发布彩色图像的常见话题。如果你的话题是其他名字,也可以选择正确的彩色图像话题。

     

  5. 现在,你应该能够在 RViz2 中看到实时的彩色图像了。

3. 调整图像显示

如果图像显示不正常,可能是由于图像格式或渲染问题,以下是一些常见的调整方法:

  • 图像格式:确认相机发布的是 sensor_msgs/msg/Image 类型的图像数据,RViz2 支持这种格式。
  • 图像大小:大尺寸图像可能需要较高的计算资源,你可以尝试降低相机的分辨率来提高显示性能。
  • 话题确认:确保话题 /camera/color/image_raw 正在正确发布,可以通过以下命令进行查看:
    ros2 topic echo /camera/color/image_raw
    

4. 同时查看深度图像

如果你同时想查看 深度图像彩色图像,你可以按照类似的步骤添加另一个 Image 显示器,选择 /camera/depth/image_rect_raw 或者类似的话题,来显示深度图像。

小贴士:

  • 点云数据:如果你还想查看点云数据,可以添加 PointCloud2 显示器,订阅 /camera/depth/points 来查看三维点云。
  • 视频和帧率:在 RealSense Viewer 中可以轻松调整帧率和分辨率。如果你在 RViz2 中使用低帧率设置,可以减少图像延迟。

 


 

获取Intel RealSense D455 的设备序列号的方法

config_2.enable_device('11111111111') 是用来指定你要启用的 Intel RealSense 相机设备的序列号。

这在使用多台 RealSense 相机时特别有用,以确保你配置和捕获的是正确的设备。

要找到 Intel RealSense D455 的设备序列号,可以通过以下几种方法:


1. 使用 RealSense Viewer

  1. 打开 Intel RealSense Viewer(这是随 RealSense SDK 一起安装的工具)。
  2. 连接你的相机,RealSense Viewer 会自动检测到设备。
  3. 在左侧设备列表中找到你的 D455,点击它,你会看到设备的详细信息,其中包括 Serial Number

2. 通过 RealSense SDK 查询序列号

使用以下 Python 代码来列出连接到电脑的所有 RealSense 相机设备及其序列号:

import pyrealsense2 as rs

# Create a context object
ctx = rs.context()

# List all connected devices
devices = ctx.query_devices()
if not devices:
    print("No RealSense devices connected.")
else:
    print("Connected RealSense devices:")
    for device in devices:
        print(f"Device Name: {device.get_info(rs.camera_info.name)}")
        print(f"Serial Number: {device.get_info(rs.camera_info.serial_number)}")

运行此代码,它会输出类似如下内容:

Connected RealSense devices:
Device Name: Intel RealSense D455
Serial Number: 242322076532

3. 检查 RealSense ROS2 的输出

如果你已经安装了 ROS2 的 RealSense 驱动,可以通过以下命令查看序列号:

ros2 launch realsense2_camera rs_launch.py

然后在启动的日志中查找 serial_number 的输出。


4. 通过命令行工具获取序列号

如果你安装了 RealSense SDK 的命令行工具,可以直接通过命令行获取设备信息:

rs-enumerate-devices

输出中会包含设备的序列号。例如:

Serial Number: 242322076532

5. 通过配置设备时的日志确认

如果你已经启用了 ROS2 并且设备正常工作,启动 ROS2 时的控制台输出中也可能列出相机的序列号,类似于:

[INFO] [RealSenseCamera]: Device with serial number 242322076532 was found.

 

posted @ 2024-12-22 20:24  z_s_s  阅读(2594)  评论(0)    收藏  举报