如果相机已经能够被 Ubuntu 识别,但还没有在 ROS 2 中发布数据,可以按照本文完成一次最小接入:编译 Orbbec ROS 2 Wrapper、配置设备权限、启动相机节点,并在 RViz2 中看到彩色图、深度图和点云。示例采用官方 v2-main 分支;SLAM、多相机同步和机器人外参标定留到基础数据流跑通后再处理。
🛠️ 准备系统与 ROS 2 环境
下面的命令在 Ubuntu 终端中执行。开始前,系统中应已安装 ROS 2;本文以 Ubuntu 22.04 + ROS 2 Humble 为主要示例,Ubuntu 24.04 + ROS 2 Jazzy 也可沿用相同步骤。
先加载 ROS 2 环境并检查发行版:
source /opt/ros/humble/setup.bash
echo "$ROS_DISTRO"
Humble 环境正常时,第二条命令会输出:
humble
连接相机后,也可以先确认 Linux 是否已枚举设备:
lsusb | grep -i -E 'Orbbec|2bc5'
出现 Orbbec 设备或厂商 ID 2bc5,说明相机已经到达 USB 设备层;这里还没有验证 ROS 2 驱动。
📦 安装编译依赖
官方仓库依赖图像传输、相机标定信息、诊断消息和若干系统开发库。下面的命令会修改系统软件包,但不会更改相机设置:
sudo apt update
sudo apt install libgflags-dev nlohmann-json3-dev
ros-$ROS_DISTRO-image-transport ros-${ROS_DISTRO}-image-transport-plugins ros-${ROS_DISTRO}-compressed-image-transport
ros-$ROS_DISTRO-image-publisher ros-$ROS_DISTRO-camera-info-manager
ros-$ROS_DISTRO-diagnostic-updater ros-$ROS_DISTRO-diagnostic-msgs ros-$ROS_DISTRO-statistics-msgs ros-$ROS_DISTRO-xacro
ros-$ROS_DISTRO-backward-ros libdw-dev libssl-dev mesa-utils libgl1 libgoogle-glog-dev
🔨 获取并编译 v2-main
v2-main 是 OrbbecSDK ROS 2 Wrapper V2 的默认分支,官方将其用于大多数新款 Orbbec 相机。先创建 ROS 2 工作空间并克隆源码:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone --branch v2-main
https://github.com/orbbec/OrbbecSDK_ROS2.git
回到工作空间开始编译:
cd ~/ros2_ws
colcon build
--event-handlers console_direct+
--cmake-args -DCMAKE_BUILD_TYPE=Release
编译完成后,终端末尾应看到 orbbec_camera_msgs、orbbec_description 和 orbbec_camera 等软件包完成,且没有 Failed。接着加载本次构建结果:
source ~/ros2_ws/install/setup.bash
ros2 pkg prefix orbbec_camera
正常时会输出类似路径:
/home/<用户名>/ros2_ws/install/orbbec_camera

这说明当前终端已经能够找到 Orbbec ROS 2 驱动。
colcon 工作空间: ROS 2 用来集中保存源码、构建文件和安装结果的目录,本文使用
~/ros2_ws。
📥 Humble 的二进制安装入口
官方也提供 Humble 二进制包。先检查当前 ROS 2 软件源是否包含 Orbbec 包:
sudo apt update
apt list 2>/dev/null | grep orbbec
列表中出现 ros-humble-orbbec-camera 与 ros-humble-orbbec-description 时,可用下面的命令代替源码编译:
sudo apt install -y
ros-humble-orbbec-camera
ros-humble-orbbec-description
如果查询不到这两个包,继续采用前面的源码编译路线即可。
🔐 配置相机访问权限
Linux 通过 udev 规则决定普通用户是否能够访问 USB 设备。源码编译完成后,运行仓库提供的安装脚本:
cd ~/ros2_ws/src/OrbbecSDK_ROS2/orbbec_camera/scripts
sudo bash install_udev_rules.sh
sudo udevadm control --reload-rules
sudo udevadm trigger
随后重新插拔相机。缺少这组规则时,常见现象是 lsusb 能看到设备,但相机节点提示打开设备失败或权限不足。
如果采用 Humble 二进制包,可从安装目录复制规则:
sudo cp
/opt/ros/${ROS_DISTRO}/share/orbbec_camera/udev/99-obsensor-libusb.rules
/etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
📷 选择相机对应的 Launch 文件
不同系列的默认分辨率、格式和传感器组合不同,因此官方为各系列提供了对应的 Launch 文件。常见型号可按下表选择:
如果型号不在表中,可在官方仓库的 Supported Devices 表中确认其对应分支与 Launch 文件。部分旧 OpenNI 设备仍使用 main 分支,不属于本文的 v2-main 路线。

🚀 枚举设备并启动相机
关闭 Orbbec Viewer 或其他正在占用相机的程序,然后在新终端中加载环境:
source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash
Jazzy 用户将第一条命令中的 humble 改为 jazzy;二进制安装用户只需加载对应的 /opt/ros/<发行版>/setup.bash。先枚举相机:
ros2 run orbbec_camera list_devices_node
正常输出中会出现设备数量、型号和序列号。设备列表为空时,问题通常仍停留在 USB 连接、udev 权限或设备占用层。
以下以 Gemini 330 系列为例启动节点:
ros2 launch orbbec_camera
gemini2.launch.py
其他相机将文件名替换为上表对应项。终端持续输出设备连接和数据流日志后,保持这个窗口运行。
📡 检查彩色图与深度图
打开第二个终端,加载相同环境,然后查看相机 Topic:
ros2 topic list | grep '^/camera'
常见输出包括:
/camera/color/image_raw
/camera/color/camera_info
/camera/depth/image_raw
/camera/depth/camera_info

再检查深度图是否持续发布:
ros2 topic hz /camera/depth/image_raw
终端持续输出接收频率,说明深度消息正在到达 ROS 2。这里只验证数据流;实际帧率会受到 Launch 配置、USB 带宽和主机性能影响。

也可以查看相机内参:
ros2 topic echo /camera/depth/camera_info --once
CameraInfo: 与图像配套的相机标定信息,包含分辨率、内参和畸变参数,后续生成点云或进行视觉测量时会用到。
🧪 在 RViz2 中查看图像
在另一个已加载 ROS 2 环境的终端中启动:
rviz2
在 RViz2 中添加两个 Image 显示项,并分别选择:
/camera/color/image_raw
/camera/depth/image_raw
画面持续更新,说明 RGB 与 Depth 已经从相机经过 Wrapper 到达 ROS 2。某个 Topic 没有出现在列表中时,先回到终端确认该数据流是否已经启用,以及相机节点是否仍在运行。

☁️ 启用并查看点云
点云默认是否启用会随 Launch 配置而变化。先在相机终端按 Ctrl+C 结束节点,再用参数重新启动。
启用深度点云:
ros2 launch orbbec_camera
gemini2.launch.py
enable_point_cloud:=true
在 RViz2 中:
- 将
Fixed Frame设置为camera_link;
- 添加
PointCloud2;
- 将 Topic 设置为
/camera/depth/points。

RViz2 已收到 /camera/depth/points,点云能够从三维视角查看。来源:OrbbecSDK ROS 2 Wrapper 官方点云教程。
🔗 查看官方资料。
如果需要带 RGB 颜色的点云,使用:
ros2 launch orbbec_camera
gemini2.launch.py
enable_colored_point_cloud:=true
对应的 RViz2 Topic 为:
/camera/depth_registered/points

深度点已经映射到彩色图像,RViz2 显示带颜色的三维场景。来源:OrbbecSDK ROS 2 Wrapper 官方点云教程。
🔗 查看官方资料。
当前结果说明图像、深度和点云发布链路已经接通。彩色点云还包含 Depth-to-Color 对齐过程;如果后续要做三维检测或抓取,还需要继续确认对齐精度以及相机到机器人坐标系的外参。
⚠️ 快速排查常见问题
建议按“USB 设备 → udev 权限 → ROS 2 软件包 → 相机节点 → Topic → RViz2”的顺序检查。前一层还没有出现预期结果时,后续可视化通常也不会正常。
🚀 跑通后可以继续做什么
完成本篇后,Orbbec 相机已经能够作为 ROS 2 传感器提供 RGB、Depth 和 PointCloud2 数据。下一步可根据项目需要进入:
- D2C 对齐与彩色点云参数;
- IMU、帧同步与多相机同步;
- 使用
rosbag2记录彩色图和深度图;
- 将点云接入 SLAM、目标三维定位或机械臂视觉流程。