本课程面向已经具备基本 ROS 2 使用经验的开发者。你将把奥比中光相机接入 ROS 2,检查图像与相机参数话题,并在 RViz2 中查看深度点云。

课程目标

一、环境准备

请准备已经安装 ROS 2 的 Ubuntu 环境,并确认基础命令可用:

ros2 --help
colcon --help

连接相机后,先关闭可能占用设备的查看器或其他采集程序。一个物理相机通常不应同时被多个进程独占访问。

二、创建工作空间并获取驱动

mkdir -p ~/orbbec_ros2_ws/src
cd ~/orbbec_ros2_ws/src
git clone https://github.com/orbbec/OrbbecSDK_ROS2.git

进入仓库后,请阅读当前版本的 README,确认支持的 ROS 2 发行版、依赖安装方式和相机型号。仓库更新后,包名与启动参数可能发生变化,应以当前文档为准。

三、安装依赖并构建

cd ~/orbbec_ros2_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

建议将最后一条 source 命令放在新的终端中执行。调试期间不要急于写入 shell 启动文件,以免不同工作空间相互覆盖。

四、选择正确的 Launch 文件

OrbbecSDK ROS 2 Wrapper 为不同产品系列提供对应的启动配置。先列出仓库中的 Launch 文件,再选择与设备型号匹配的文件:

find ~/orbbec_ros2_ws/src -path "*launch*" -name "*.launch.py" | sort

启动形式通常如下:

source ~/orbbec_ros2_ws/install/setup.bash
ros2 launch orbbec_camera <与相机型号匹配的启动文件>.launch.py

不要直接套用其他型号的 Launch 文件。 即使节点能够启动,也可能因为数据流配置不受支持而没有图像。

五、检查节点与话题

打开另一个终端,加载同一个工作空间:

source ~/orbbec_ros2_ws/install/setup.bash
ros2 node list
ros2 topic list

重点检查以下类型的话题是否存在:

不同版本和 Launch 配置的话题名称可能不同,请以 ros2 topic list 的实际输出为准。

六、检查数据是否持续发布

找到实际深度话题后,查看发布频率:

ros2 topic hz <深度图像话题>

再查看消息类型:

ros2 topic type <深度图像话题>
ros2 topic info <深度图像话题>

如果话题存在但频率为零,检查相机是否正常连接、数据流组合是否受支持,以及终端中的驱动日志。

七、使用 RViz2 查看点云

  1. 运行 rviz2。
  2. 点击 Add,添加 PointCloud2 显示项。
  3. 在 Topic 中选择实际点云话题。
  4. 将 Fixed Frame 设置为点云消息使用的坐标系。
  5. 根据距离范围调整 Point Size 与 Style。

如果 RViz2 提示找不到坐标变换,先检查点云消息的 frame_id,再确认 Fixed Frame 是否选择正确。可使用以下命令查看消息头:

ros2 topic echo <点云话题> --once

八、常见问题

构建时找不到依赖

先确认 ROS 2 环境已经加载,再运行 rosdep update 和依赖安装命令。若仓库 README 指定了额外依赖,应按对应发行版安装。

节点启动后找不到设备

检查数据线、USB 权限与设备占用情况。关闭官方查看器或之前遗留的相机节点后重试。

有深度图但没有点云

检查 Launch 参数中是否启用了点云,以及彩色与深度数据流组合是否满足当前点云模式的要求。

点云方向或位置异常

检查 Fixed Frame、相机坐标系及 TF 树。机器人系统中还需要发布相机到机器人基座的外参变换。

课后练习

  1. 记录相机启动后的节点、图像话题和点云话题名称。
  2. 测量深度图与点云的实际发布频率。
  3. 将相机固定,对同一静态场景连续观察一分钟,记录异常帧。
  4. 尝试将相机坐标系连接到机器人基座坐标系,并在 RViz2 中验证方向。

参考资源

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注