云计算百科
云计算领域专业知识百科平台

ROS 下 奥比中光Orbbec 双相机(多相机)调试实战记录

一、环境说明

  • 系统:Ubuntu + ROS(Melodic / Noetic 均适用)

  • 相机型号:

    • Orbbec Dabai DW2

    • Orbbec Dabai Max Pro

  • 驱动包:orbbec_camera  官网有ROS1和ROS2的驱动包,下载即可

  • 连接方式:USB

本文记录一次实际调试 两台 Orbbec 相机同时工作 的过程,包含单相机验证、多相机启动、话题检查、RViz 显示以及 USB 带宽相关问题的处理。


二、单相机分别启动测试

在进行多相机启动之前,必须确保每一台相机都可以单独正常工作。

1. 启动 Dabai DW2

roslaunch orbbec_camera dabai_dw2.launch

2. 启动 Dabai Max Pro

roslaunch orbbec_camera dabai_max_pro.launch

检查点:

  • ROS 节点是否正常启动

  • 是否有 depth / image 相关话题

  • 无 USB 或设备占用错误


三、同时启动双相机(multi_camera)

当单相机测试无问题后,使用多相机 launch 文件统一启动。

roslaunch orbbec_camera multi_camera.launch


四、检查 ROS 话题是否正确

启动后,查看系统中已发布的话题:

rostopic list

预期输出应包含类似如下结构(只展部分,输出包含ob_camera_01和02):

/ob_camera_01
/ob_camera_02
/ob_camera_01/depth/image_raw
/ob_camera_02/depth/image_raw

说明两台相机已经通过不同 namespace 成功区分。


五、使用 RViz 查看深度图像

1. 启动 RViz

rviz

2. 添加第一台相机深度图

Add → By topic → /ob_camera_01 → depth → image_raw → Image

3. 添加第二台相机深度图

Add → By topic → /ob_camera_02 → depth → image_raw → Image

此时可以同时看到两路深度画面,验证多相机数据是否正常发布。


六、查看相机型号及 USB 端口信息

在多相机场景中,USB 端口绑定是关键。通过以下命令查看当前连接的设备信息:

rosrun orbbec_camera list_device_node

输出内容通常包含:

  • 相机型号

  • Serial Number

  • USB Port(如 5-1.1、2-1.1.1)

这些信息将用于 multi_camera.launch 中的参数配置。


七、multi_camera.launch 关键配置说明

1. 核心修改点

  • camera1_usb_port

  • camera2_usb_port

  • launch 文件需与具体相机型号匹配

2. 示例 launch 文件

<launch>
<arg name="camera_name" default="ob_camera"/>
<arg name="3d_sensor" default="gemini_330_series"/>
<arg name="camera1_prefix" default="01"/>
<arg name="camera2_prefix" default="02"/>
<arg name="camera1_usb_port" default="5-1.1"/>
<arg name="camera2_usb_port" default="2-1.1.1"/>
<arg name="device_num" default="2"/>
<include file="$(find orbbec_camera)/launch/dabai_dcw2.launch">
<arg name="camera_name" value="$(arg camera_name)_$(arg camera1_prefix)"/>
<arg name="usb_port" value="$(arg camera1_usb_port)"/>
<arg name="device_num" value="$(arg device_num)"/>
</include> <include file="$(find orbbec_camera)/launch/dabai_max_pro.launch">
<arg name="camera_name" value="$(arg camera_name)_$(arg camera2_prefix)"/>
<arg name="usb_port" value="$(arg camera2_usb_port)"/>
<arg name="device_num" value="$(arg device_num)"/>
</include>
</launch>

3. 注意事项

  • 不同型号必须引用对应 launch 文件

  • USB 端口必须唯一且与 list_device_node 输出一致

  • camera_name + prefix 决定最终 ROS namespace


八、USB 带宽与缓存问题

在多相机高分辨率 / 高帧率场景下,USB 带宽和缓存可能成为瓶颈。

1. 查看当前 USB 缓存大小

cat /sys/module/usbcore/parameters/usbfs_memory_mb

示例输出:

16

2. 调整 USB 缓存大小

该值可以设置为 16 的倍数,例如:

sudo sh -c 'echo 64 > /sys/module/usbcore/parameters/usbfs_memory_mb'

调整后可有效缓解多相机同时工作时的丢帧或数据异常问题。


九、总结

本次双相机调试的关键点包括:

  • 单相机先验证,再进行多相机整合

  • 使用 USB port 而非 serial number 区分设备

  • launch 文件中 namespace 与型号必须明确

  • 多相机场景下需关注 USB 带宽与缓存配置

赞(0)
未经允许不得转载:网硕互联帮助中心 » ROS 下 奥比中光Orbbec 双相机(多相机)调试实战记录
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!