2025-10-19 16:20:38 +08:00
|
|
|
|
## ROS 包快速入门
|
|
|
|
|
|
|
|
|
|
|
|
### 简介
|
|
|
|
|
|
|
|
|
|
|
|
本节提供 Orbbec ROS 2 包装器的快速入门指南。
|
|
|
|
|
|
您将学习如何:
|
|
|
|
|
|
|
|
|
|
|
|
* 启动相机节点。
|
|
|
|
|
|
* 在 **RViz2** 中可视化深度/彩色流。
|
|
|
|
|
|
* 使用 **ROS 2 CLI 工具**与话题和服务交互。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 构建您的第一个相机应用
|
|
|
|
|
|
|
|
|
|
|
|
#### 步骤 1:配置 ROS 2 和工作空间环境
|
|
|
|
|
|
|
|
|
|
|
|
确保已配置 ROS 2 和工作空间环境:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
source /opt/ros/$ROS_DISTRO/setup.bash
|
2025-12-01 10:20:52 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
源码构建需要
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-10-19 16:20:38 +08:00
|
|
|
|
source ~/ros2_ws/install/setup.bash
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 步骤 2:启动相机节点
|
|
|
|
|
|
|
|
|
|
|
|
- 在终端 1 中
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
. ./install/setup.bash
|
|
|
|
|
|
ros2 run orbbec_camera list_devices_node #检查相机是否已连接
|
|
|
|
|
|
ros2 launch orbbec_camera gemini_330_series.launch.py # 或其他启动文件,见下表
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
如果您连接了多个相机,可以指定**序列号**:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 launch orbbec_camera gemini_330_series.launch.py serial_number:=<您的相机序列号>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 步骤 3:在 RViz2 中可视化
|
|
|
|
|
|
|
|
|
|
|
|
启动 RViz2 并加载默认配置:
|
|
|
|
|
|
|
|
|
|
|
|
- 在终端 2 中
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
rviz2
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* 添加一个 **Image** 显示,将话题设置为 `/camera/color/image_raw`。
|
|
|
|
|
|
* 为 `/camera/depth/image_raw` 添加另一个 **Image** 显示。
|
|
|
|
|
|
* 可选:为 `/camera/depth/points` 添加 **PointCloud2** 显示。
|
|
|
|
|
|
|
|
|
|
|
|
现在您应该能在 RViz2 中看到彩色流、深度流和 3D 点云。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 示例功能
|
|
|
|
|
|
|
|
|
|
|
|
节点运行后,尝试一些 ROS 2 CLI 命令:
|
|
|
|
|
|
|
|
|
|
|
|
#### 列出可用的话题/服务/参数
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 topic list
|
|
|
|
|
|
ros2 service list
|
|
|
|
|
|
ros2 param list
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 回显话题
|
|
|
|
|
|
|
|
|
|
|
|
查看深度相机数据:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 topic echo /camera/depth/camera_info
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 调用服务
|
|
|
|
|
|
|
|
|
|
|
|
例如,获取设备信息:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 service call /camera/get_device_info orbbec_camera_msgs/srv/GetDeviceInfo '{}'
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 使用 rosbag2 录制
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 bag record /camera/color/image_raw /camera/depth/image_raw
|
|
|
|
|
|
```
|
2026-06-22 15:03:55 +08:00
|
|
|
|
|
|
|
|
|
|
#### 使用 SDK bag 录制和回放
|
|
|
|
|
|
|
|
|
|
|
|
SDK bag 会通过 Orbbec SDK 录制设备数据,适合后续用 wrapper 作为回放设备重新启动。启动时录制:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 launch orbbec_camera gemini_330_series.launch.py bag_record_filename:=/tmp/orbbec_record.bag
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
也可以在节点运行时通过服务开始或停止录制:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 service call /camera/set_bag_recording orbbec_camera_msgs/srv/SetBagRecording "{enable: true, file_path: '/tmp/orbbec_record.bag'}"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 service call /camera/set_bag_recording orbbec_camera_msgs/srv/SetBagRecording "{enable: false, file_path: ''}"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
回放 SDK bag:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 launch orbbec_camera gemini_330_series.launch.py bag_filename:=/tmp/orbbec_record.bag
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
如果需要循环回放:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
ros2 launch orbbec_camera gemini_330_series.launch.py bag_filename:=/tmp/orbbec_record.bag bag_loop:=true
|
|
|
|
|
|
```
|