deploy: 2c1d661d9c
@@ -0,0 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 5656ed5a7444881318ca81c158684e70
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 313 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 140 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 313 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 256 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 736 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 234 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 823 KiB |
|
After Width: | Height: | Size: 245 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 163 KiB |
@@ -0,0 +1,19 @@
|
||||
.. OrbbecSDK V2 ROS2 封装文档主文件,由
|
||||
sphinx-quickstart 于 Tue Sep 9 21:55:16 2025 创建。
|
||||
您可以完全按照自己的喜好调整此文件,但至少应包含根 `toctree` 指令。
|
||||
|
||||
OrbbecSDK V2 ROS2 封装文档
|
||||
=======================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
:numbered:
|
||||
|
||||
source/1_overview/overview.rst
|
||||
source/2_installation/installation.rst
|
||||
source/3_quickstarts/quickstarts.rst
|
||||
source/4_application_guide/application_guide.rst
|
||||
source/5_advanced_guide/advanced_guide.rst
|
||||
source/6_benchmark/benchmark.rst
|
||||
source/7_developer_guide/developer_guide.rst
|
||||
source/8_FAQ/FAQ.rst
|
||||
@@ -0,0 +1,260 @@
|
||||
# 引言
|
||||
|
||||
OrbbecSDK ROS2 封装为 Orbbec 相机与 ROS 2 环境提供无缝集成。它支持 ROS2 Foxy、Humble 和 Jazzy 发行版。
|
||||
|
||||
默认推荐使用 **v2-main** 分支。对于 v2-main 尚不支持的旧 OpenNI 设备,请使用 **main** 分支。仅由 main 分支支持的设备型号列在下表中。
|
||||
|
||||
如果您是中国用户,推荐使用 [gitee 仓库](https://gitee.com/orbbecdeveloper/OrbbecSDK_ROS2)。
|
||||
|
||||
下面是 main 分支 (v1.x) 与 v2-main 分支 (v2.x) 的设备支持列表:
|
||||
|
||||
<table border="1" style="border-collapse: collapse; text-align: left; width: 100%;">
|
||||
<thead>
|
||||
<tr style="background-color: #1f4e78; color: white; text-align: center;">
|
||||
<th>产品系列</th>
|
||||
<th>产品</th>
|
||||
<th><a href="https://github.com/orbbec/OrbbecSDK_ROS2/tree/main" style="color: black; text-decoration: none;">main 分支</a></th>
|
||||
<th><a href="https://github.com/orbbec/OrbbecSDK_ROS2/tree/v2-main" style="color: black; text-decoration: none;">v2-main 分支</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: center; font-weight: bold;">Gemini 435Le</td>
|
||||
<td>Gemini 435Le</td>
|
||||
<td>不支持</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="8" style="text-align: center; font-weight: bold;">Gemini 330</td>
|
||||
<td>Gemini 335</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 336</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 335L</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 336L</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 335Lg</td>
|
||||
<td>不支持</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 335Le</td>
|
||||
<td>不支持</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 330</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 330L</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="3" style="text-align: center; font-weight: bold;">Gemini 2</td>
|
||||
<td>Gemini 2</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 2 L</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 2 XL</td>
|
||||
<td>建议用于新设计</td>
|
||||
<td>即将支持</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="3" style="text-align: center; font-weight: bold;">Femto</td>
|
||||
<td>Femto Bolt</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Femto Mega</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Femto Mega I</td>
|
||||
<td>完整维护</td>
|
||||
<td>即将支持</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="3" style="text-align: center; font-weight: bold;">Astra</td>
|
||||
<td>Astra 2</td>
|
||||
<td>完整维护</td>
|
||||
<td>建议用于新设计</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Astra+</td>
|
||||
<td>限制维护</td>
|
||||
<td>不支持</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Astra Pro Plus</td>
|
||||
<td>限制维护</td>
|
||||
<td>不支持</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center; font-weight: bold;">Astra Mini</td>
|
||||
<td>Astra Mini Pro</td>
|
||||
<td>完整维护</td>
|
||||
<td>完整维护</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
**注意**: 如果未找到您的设备,请联系我们的 FAE 或销售代表获取帮助。
|
||||
|
||||
**术语定义**:
|
||||
|
||||
1. 建议用于新设计:我们将提供完整支持,包括新特性、缺陷修复与性能优化;
|
||||
2. 完整维护:我们将提供缺陷修复支持;
|
||||
3. 限制维护:我们仅提供关键缺陷修复支持;
|
||||
4. 不支持:当前版本不支持该设备;
|
||||
5. 即将支持:近期将添加支持。
|
||||
|
||||
## 支持的硬件产品
|
||||
|
||||
以下设备由 OrbbecSDK ROS2 封装 v2-main 分支支持。后续将增加更多设备支持。如果您在下表中未找到设备,请尝试 [main](https://github.com/orbbec/OrbbecSDK_ROS2) 分支。
|
||||
|
||||
为获得最佳性能,强烈建议升级到最新固件版本,以确保获得最新的改进与缺陷修复。
|
||||
|
||||
关于如何获取与升级最新固件,[请点击这里](../3_quickstarts/orbbecviewer.md)。
|
||||
|
||||
| 产品列表 | 最低固件版本 | **启动文件** |
|
||||
|:--------------- |:------------ |:---------------------------- |
|
||||
| Gemini 435Le | 1.2.04 | gemini435_le.launch.py |
|
||||
| Gemini 335 | 1.2.20 | gemini_330_series.launch.py |
|
||||
| Gemini 336 | 1.2.20 | gemini_330_series.launch.py |
|
||||
| Gemini 335L | 1.2.20 | gemini_330_series.launch.py |
|
||||
| Gemini 336L | 1.2.20 | gemini_330_series.launch.py |
|
||||
| Gemini 335Lg | 1.3.46 | gemini_330_series.launch.py |
|
||||
| Gemini 335Le | 1.5.31 | gemini_330_series.launch.py |
|
||||
| Gemini 330 | 1.2.20 | gemini_330_series.launch.py |
|
||||
| Gemini 330L | 1.2.20 | gemini_330_series.launch.py |
|
||||
| Gemini 2 | 1.4.92 | gemini2.launch.py |
|
||||
| Gemini 2 L | 1.4.53 | gemini2L.launch.py |
|
||||
| Femto Bolt | 1.1.2 | femto_bolt.launch.py |
|
||||
| Femto Mega | 1.3.0 | femto_mega.launch.py |
|
||||
| Astra 2 | 2.8.20 | astra2.launch.py |
|
||||
| Astra Mini Pro | 2.0.01 | astra.launch.py |
|
||||
|
||||
所有启动文件本质上是类似的,主要区别在于同系列不同型号设置的参数默认值。USB 标准差异(如 USB 2.0 与 USB 3.0)可能需要调整这些参数。如果遇到启动失败,请仔细查看规格说明书,特别关注启动文件中的分辨率设置以及其他参数,以确保兼容与最佳性能。
|
||||
|
||||
## Orbbec 相机规格书
|
||||
|
||||
更多信息请参考相机规格书。
|
||||
|
||||
<style>
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
th, td {
|
||||
border: 1px solid #ccc;
|
||||
padding: 8px;
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
}
|
||||
thead th {
|
||||
background-color: #1f4e78;
|
||||
color: white;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>产品系列</th>
|
||||
<th>产品</th>
|
||||
<th>规格书</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: center;">Gemini 435Le</td>
|
||||
<td>Gemini 435Le</td>
|
||||
<td><a href="https://new-orbbec3d-s3.s3.amazonaws.com/wp-content/uploads/2025/06/04011158/Orbbec-Gemini-435Le-Datasheet-V1.pdf">Orbbec Gemini 435Le 规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;" rowspan="6">Gemini 330</td>
|
||||
<td>Gemini 335</td>
|
||||
<td rowspan="4"><a href="https://new-orbbec3d-s3.s3.amazonaws.com/wp-content/uploads/2025/04/22062452/Gemini-330-series-Datasheet-V1.6.pdf">Gemini 330 系列 USB 设备规格书</a></td>
|
||||
</tr>
|
||||
<tr><td>Gemini 336</td></tr>
|
||||
<tr><td>Gemini 335L</td></tr>
|
||||
<tr><td>Gemini 336L</td></tr>
|
||||
<tr>
|
||||
<td>Gemini 335Lg</td>
|
||||
<td><a href="https://new-orbbec3d-s3.s3.amazonaws.com/wp-content/uploads/2024/10/22030914/Gemini-335Lg-Datasheet-V1.0-241022.pdf">Gemini 330 系列 GMSL 设备规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 335Le</td>
|
||||
<td><a href="https://new-orbbec3d-s3.s3.amazonaws.com/wp-content/uploads/2025/03/24023151/Orbbec-Gemini-335Le-Datasheet-V1-2.pdf">Gemini 330 系列 以太网设备规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;" rowspan="3">Gemini 2</td>
|
||||
<td>Gemini 2</td>
|
||||
<td rowspan="2"><a href="https://xm917ch2uk.feishu.cn/file/Khxfb2vdioUghexIMqJcAyL3nXf">Orbbec Gemini 2 系列规格书</a></td>
|
||||
</tr>
|
||||
<tr><td>Gemini 2 L</td></tr>
|
||||
<tr>
|
||||
<td>Gemini 2 XL</td>
|
||||
<td><a href="https://xm917ch2uk.feishu.cn/file/QW2vbNvwxoocRIxSL6Zcvut2npS">Orbbec Gemini 2 XL 规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;" rowspan="3">Femto</td>
|
||||
<td>Femto Bolt</td>
|
||||
<td><a href="https://d1cd332k3pgc17.cloudfront.net/wp-content/uploads/2024/08/ORBBEC_Datasheet_Femto-Bolt-v1.0.pdf">Orbbec Femto Bolt 规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Femto Mega</td>
|
||||
<td><a href="https://d1cd332k3pgc17.cloudfront.net/wp-content/uploads/2023/04/ORBBEC_Datasheet_Femto-Mega1.pdf">Orbbec Femto Mega 规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Femto Mega I</td>
|
||||
<td><a href="https://d1cd332k3pgc17.cloudfront.net/wp-content/uploads/2023/08/ORBBEC_Datasheet_Femto-Mega-I.pdf">Orbbec Femto Mega I 规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;" rowspan="3">Astra</td>
|
||||
<td>Astra 2</td>
|
||||
<td><a href="https://d1cd332k3pgc17.cloudfront.net/wp-content/uploads/2023/04/ORBBEC_Datasheet_Astra-2_V1.2.pdf">Orbbec Astra 2 规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Astra+</td>
|
||||
<td><a href="https://xm917ch2uk.feishu.cn/file/Qk0zbx26Doh8XMxw0rIcOgQYnff">Orbbec Astra+ 规格书</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Astra Mini Pro</td>
|
||||
<td><a href="https://d1cd332k3pgc17.cloudfront.net/wp-content/uploads/2023/04/ORBBEC_Datasheet_Astra-Mini-Pro-1.pdf">Orbbec Astra Mini Pro 规格书</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
---
|
||||
|
||||
## 支持的平台
|
||||
|
||||
- Linux x64:已在 Ubuntu 22.04 上测试
|
||||
- Linux ARM64:已在 NVIDIA Jetson AGX Orin、NVIDIA Jetson Orin NX、NVIDIA Jetson Orin Nano、NVIDIA Jetson AGX Xavier、NVIDIA Jetson Xavier NX 上测试
|
||||
@@ -0,0 +1,106 @@
|
||||
# Orbbec SDK 概述
|
||||
|
||||
本节介绍 C++ 版本的 Orbbec SDK。其架构和概念与 Python 包装器一致。
|
||||
|
||||
## 术语
|
||||
|
||||
| 序号 | 名称 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| 1 | USB | 通用串行总线(Universal Serial Bus) |
|
||||
| 2 | UVC | USB 视频类(USB Video Class) |
|
||||
| 3 | Firmware | 3D 相机的固件 |
|
||||
| 4 | Disparity | 视差是指从两个有一定距离的点观察同一目标时的方向差异。 |
|
||||
| 5 | D2D (Disparity to depth) | 视差转深度是一种图像处理技术,用于将视差信息转换为深度信息。 |
|
||||
| 6 | Hardware D2D | 视差转深度在设备内部实现,不占用主机的计算能力。 |
|
||||
| 7 | Software D2D | 视差转深度,在 Orbbec SDK 中实现 |
|
||||
| 8 | Depth point cloud | 深度点云,三维世界坐标系中点的坐标,可以使用深度相机的内参转换为点云。 |
|
||||
| 9 | RGBD point cloud | 叠加了 RGB 信息的点云 |
|
||||
| 10 | D2C | "深度到彩色"(Depth to Color)是一种对深度图像进行逐像素几何变换的功能。其结果是通过 D2C 变换将深度图像与其对应的彩色图像对齐,使我们能够通过在变换后的深度图像中使用相同图像坐标位置来定位彩色像素的深度信息。经过 D2C 变换后,我们生成一个与目标彩色图像大小相同的深度图像,其中图像内容表示彩色相机坐标系中的深度数据。换句话说,它重建了一个使用彩色相机的原点和尺寸"拍摄"的深度图像,其中每个像素与彩色相机的相应像素坐标匹配。 |
|
||||
| 11 | Hardware D2C | 硬件 D2C 是指在相机内部执行深度到彩色变换的功能,相机直接输出 D2C 变换的结果。 |
|
||||
| 12 | Software D2C | 使用 SDK 在主机端执行 D2C 计算。 |
|
||||
| 13 | Frame aggregation (FrameSet) | 帧聚合,将深度、红外和彩色帧组合成一个帧集(Frameset),并通过管道调用。 |
|
||||
| 14 | C2D | "彩色到深度"(Color to Depth)是一种对彩色图像进行逐像素几何变换的功能。其结果是通过 C2D 变换将彩色图像与其对应的深度图像对齐。 |
|
||||
| 15 | MetaData | 帧元数据是一组参数(或属性),提供了帧生成时传感器配置和/或系统状态的快照。 |
|
||||
| 16 | HDR | 高动态范围(High Dynamic Range,HDR)成像允许成像系统在极暗和极亮的场景中拍摄图像。我们提出了一种在主机 CPU 上运行的软件解决方案来实现此功能。它利用两个连续帧的数据,直接合成这两个深度图像,从而增强 16 位深度图像的动态范围。 |
|
||||
| 17 | LDP | 激光近距离保护(Laser close-range protection) |
|
||||
|
||||
## Orbbec SDK v2 架构概述
|
||||
|
||||

|
||||
|
||||
- 应用层(Application)
|
||||
|
||||
OrbbecViewer、示例程序和用户应用程序实现。
|
||||
|
||||
- 接口和封装层(Interfaces and Encapsulation Layer)
|
||||
|
||||
OrbbecSDK 接口封装和包装器封装。
|
||||
|
||||
- 高级层(High-level Layer)
|
||||
|
||||
HighLevel 封装了核心业务组件,并使用管道(pipeline)向外部提供接口。
|
||||
|
||||
- 基础业务层(Basic business layer)
|
||||
|
||||
核心业务逻辑框架的实现。
|
||||
|
||||
- 平台抽象层(Platform abstraction layer)
|
||||
|
||||
跨平台组件抽象操作系统差异,提供统一的访问接口。
|
||||
|
||||
- 平台实现层(Platform implementation layer)
|
||||
|
||||
各平台的驱动实现。
|
||||
|
||||
## SDK 概念概述
|
||||
|
||||
- Context(上下文)
|
||||
|
||||
上下文提供一组设置,包括设备状态更改回调、日志级别等设置。Context 可以访问多个设备。
|
||||
|
||||
- Device(设备)
|
||||
|
||||
一个实际的硬件设备对应一个 Device 对象,用于获取设备的相关信息并控制其属性。
|
||||
|
||||
- Pipeline(管道)
|
||||
|
||||
HighLevel 对应的对象,封装了快速访问 SDK 的接口。它具有简单的功能,使用户能够快速上手并使用 SDK。
|
||||
|
||||
- Config(配置)
|
||||
|
||||
提供启用数据流、对齐模式和帧聚合模式的配置,用于控制数据输出的行为。
|
||||
|
||||
- StreamProfile(流配置)
|
||||
|
||||
流配置定义分辨率、帧率和编码格式等参数,还提供相机参数的管理。
|
||||
|
||||
- Frame(帧)
|
||||
|
||||
表示流中的一帧数据,还包含该帧数据的相关信息,如时间戳、类型等。
|
||||
|
||||
- Filter(滤镜)
|
||||
|
||||
主要指用于复合流 FrameSet 的一些算法处理模块,如点云算法处理。
|
||||
|
||||
- Record(录制)
|
||||
|
||||
录制功能,捕获数据流并将其保存为文件,以便后续分析或回放。
|
||||
|
||||
- Playback(回放)
|
||||
|
||||
回放功能,播放录制的文件,并支持控制回放速度和其他相关参数。
|
||||
|
||||
## SDK 编程模型
|
||||
|
||||
以下是 C++ 编程逻辑流程图。Python 的编程逻辑与之相同。
|
||||
|
||||
- 标准流程图:
|
||||
|
||||

|
||||
|
||||
标准流程图演示了如何从设备列表创建设备、设置和获取参数,以及应用后处理滤镜。
|
||||
|
||||
- 使用默认配置的流程图(基于 OrbbecSDKConfig.xml 中的默认设置获取流):
|
||||
|
||||

|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
概述
|
||||
======================================================
|
||||
|
||||
本章节提供 Orbbec SDK 的概述,包括支持的产品、主要功能和架构。
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
introduction.md
|
||||
orbbecsdk_overview.md
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
### 从源码构建
|
||||
|
||||
#### 环境配置
|
||||
|
||||
根据官方指南安装 ROS 2:
|
||||
|
||||
* [ROS 2 安装指南(Ubuntu)](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html)
|
||||
|
||||
启用 ROS 2 自动补全:
|
||||
|
||||
```bash
|
||||
eval "$(register-python-argcomplete3 ros2)"
|
||||
eval "$(register-python-argcomplete3 colcon)"
|
||||
```
|
||||
|
||||
创建 `colcon` 工作空间:
|
||||
|
||||
```bash
|
||||
mkdir -p ~/ros2_ws/src
|
||||
```
|
||||
|
||||
#### Linux ROS2 包装器编译
|
||||
|
||||
克隆源代码并切换到 `v2-main` 分支:
|
||||
|
||||
```bash
|
||||
cd ~/ros2_ws/src
|
||||
git clone https://github.com/orbbec/OrbbecSDK_ROS2.git
|
||||
cd OrbbecSDK_ROS2
|
||||
git checkout v2-main
|
||||
```
|
||||
|
||||
安装依赖项:
|
||||
|
||||
```bash
|
||||
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-backward-ros libdw-dev
|
||||
```
|
||||
|
||||
可选依赖项:
|
||||
|
||||
```bash
|
||||
# 435Le writeCustomerDate 功能:
|
||||
sudo apt install libssl-dev
|
||||
```
|
||||
|
||||
构建:
|
||||
|
||||
```bash
|
||||
cd ~/ros2_ws
|
||||
colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_BUILD_TYPE=Release
|
||||
```
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
安装
|
||||
======================================================
|
||||
|
||||
本章节说明如何安装 Orbbec ROS2 Python SDK,包括从源码构建、安装依赖项以及使用注册脚本。
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
build_the_package.md
|
||||
registration_script.md
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
## 注册脚本(必需)
|
||||
|
||||
为了让 Orbbec 相机在 Linux 上被正确识别,请安装 udev 规则:
|
||||
|
||||
```bash
|
||||
cd ~/ros2_ws/src/OrbbecSDK_ROS2/orbbec_camera/scripts
|
||||
sudo bash install_udev_rules.sh
|
||||
sudo udevadm control --reload-rules && sudo udevadm trigger
|
||||
```
|
||||
|
||||
此步骤对于 Linux 用户是**必需的**。
|
||||
|
||||
`注意:` 如果不执行此脚本,由于权限问题,打开设备将会失败。您需要使用 sudo(管理员权限)运行示例程序。
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# OrbbecViewer 快速入门
|
||||
|
||||
> **注意:** 此 ROS 包的参数和功能与 **Orbbec Viewer** 保持一致;有关参数使用或设备型号支持的任何问题,请参考 Orbbec Viewer。
|
||||
|
||||
## 下载
|
||||
|
||||
**仓库链接:**[OrbbecViewer 下载](https://github.com/orbbec/OrbbecSDK_v2/releases)
|
||||
|
||||
根据您的设备类型选择合适版本的 OrbbecViewer。
|
||||
|
||||

|
||||
|
||||
## 连接设备
|
||||
|
||||
当 Orbbec Viewer 打开时,当前设备连接状态将显著地显示在应用程序窗口的左上角。此区域提供关于相机是否已连接并正常工作的即时反馈。
|
||||
|
||||

|
||||
|
||||
## 相机控制
|
||||
|
||||
您可以使用窗口顶部的按钮快速查看图像,并在窗口左侧的相机面板中调整图像参数。
|
||||
|
||||

|
||||
|
||||
## 设备信息和固件升级
|
||||
|
||||
点击窗口左下角的图标以查看当前相机信息并升级固件。
|
||||
|
||||

|
||||
|
||||
请参考下面的列表获取最新的相机固件。[更多信息请点击这里。](https://www.orbbec.com/docs/g330-explore-camera-functions-in-orbbec-viewer/)
|
||||
|
||||
**仓库链接:**[固件下载](https://github.com/orbbec/OrbbecFirmware?tab=readme-ov-file#firmware-download)
|
||||
|
||||
| **产品列表** | **下载链接** | 最新版本 |
|
||||
| ------------------ | -------------------------------------------------------------------------------------------------- | ---------- |
|
||||
| Femto Bolt | [Femto Bolt 固件](https://github.com/orbbec/OrbbecFirmware/releases/tag/Femto-Bolt-Firmware) | v1.1.2 |
|
||||
| Femto Mega | [Femto Mega 固件](https://github.com/orbbec/OrbbecFirmware/releases/tag/Femto-Mega-Firmware) | v1.3.1 |
|
||||
| Gemini 2 | [Gemini 2 固件](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemini2-Firmware) | v1.4.98 |
|
||||
| Gemini 2 L | [Gemini 2L 固件](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemini2L-Firmware) | v1.5.02 |
|
||||
| Femto Mega I | [Femto Mega I 固件](https://github.com/orbbec/OrbbecFirmware/releases/tag/Femto-Mega-I-Firmware) | v2.0.4 |
|
||||
| Gemini 330 系列 | [Gemini 330 系列固件](https://www.orbbec.com/docs/g330-firmware-release/?_gl=1) | |
|
||||
| Gemini 215 | [Gemini 215](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemini215-Firmware) | v1.0.9 |
|
||||
| Gemini 210 | [Gemini 210](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemini210-Firmware) | v1.0.9 |
|
||||
| Gemini 435Le | [Gemini 435Le](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemin435Le-Firmware) | v1.3.2 |
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
## ROS 包快速入门
|
||||
|
||||
### 简介
|
||||
|
||||
本节提供 Orbbec ROS 2 包装器的快速入门指南。
|
||||
您将学习如何:
|
||||
|
||||
* 启动相机节点。
|
||||
* 在 **RViz2** 中可视化深度/彩色流。
|
||||
* 使用 **ROS 2 CLI 工具**与话题和服务交互。
|
||||
|
||||
---
|
||||
|
||||
### 构建您的第一个相机应用
|
||||
|
||||
#### 步骤 1:配置 ROS 2 和工作空间环境
|
||||
|
||||
确保已配置 ROS 2 和工作空间环境:
|
||||
|
||||
```bash
|
||||
source /opt/ros/$ROS_DISTRO/setup.bash
|
||||
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
|
||||
```
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
快速开始
|
||||
======================================================
|
||||
|
||||
本章节提供 SDK 的快速入门指南,帮助用户快速运行基本示例程序。
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
quickstart.md
|
||||
orbbecviewer.md
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
应用指南
|
||||
======================================================
|
||||
|
||||
本章介绍使用SDK进行应用开发,包括启动参数配置、ROS2服务和话题使用。
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
launch_parameters.md
|
||||
services.md
|
||||
topics.md
|
||||
coordinate_systems.md
|
||||
camera_sensor_structure.md
|
||||
tf_transformations.md
|
||||
compressed_image.md
|
||||
point_cloud.md
|
||||
@@ -0,0 +1,5 @@
|
||||
### 相机传感器结构
|
||||
|
||||

|
||||
|
||||

|
||||
@@ -0,0 +1,11 @@
|
||||
### 压缩图像
|
||||
|
||||
您可以使用 `image_transport` 通过 `jpeg` 压缩图像。以下是使用示例:
|
||||
|
||||
要访问压缩的彩色图像,可以使用以下命令:
|
||||
|
||||
```bash
|
||||
ros2 topic echo /camera/color/image_raw/compressed --no-arr
|
||||
```
|
||||
|
||||
此命令将允许您从指定话题接收压缩的彩色图像。
|
||||
@@ -0,0 +1,12 @@
|
||||
### ROS2机器人坐标系 vs 相机光学坐标系
|
||||
|
||||
* 视角:
|
||||
* 想象我们站在相机后面,向前看。
|
||||
* 在讨论坐标、左右红外、传感器位置等时,始终使用此视角。
|
||||
|
||||

|
||||
|
||||
* ROS2坐标系:(X: 向前,Y: 向左,Z: 向上)
|
||||
* 相机光学坐标系:(X: 向右,Y: 向下,Z: 向前)
|
||||
* 我们封装器话题中发布的所有数据都是直接从相机传感器获取的光学数据。
|
||||
* 静态和动态TF话题发布光学坐标系和ROS坐标系,使用户能够在两个坐标系之间转换。
|
||||
@@ -0,0 +1,274 @@
|
||||
# 启动参数
|
||||
|
||||
> 如果您不确定如何设置参数,可以连接orbbec相机并打开 [OrbbecViewer](https://github.com/orbbec/OrbbecSDK/releases)。
|
||||
|
||||
以下是可用的启动参数:
|
||||
|
||||
### 核心与数据流配置
|
||||
|
||||
* **`camera_name`**
|
||||
* 启动节点的命名空间。
|
||||
* **`serial_number`**
|
||||
* 相机的序列号。当使用多个相机时需要此参数。
|
||||
* **`usb_port`**
|
||||
* 相机的USB端口。当使用多个相机时需要此参数。
|
||||
* **`device_num`**
|
||||
* 设备数量。如果需要多个相机,必须填写此参数。
|
||||
* **`[color|depth|left_ir|right_ir|ir]_[width|height|fps|format]`**
|
||||
* 传感器流的分辨率和帧率。
|
||||
* **`[color|depth|left_ir|right_ir|ir]_rotation`**
|
||||
* 设置流图像旋转。
|
||||
* 可能的值为 `0`、`90`、`180`、`270`。
|
||||
* **`[color|depth|left_ir|right_ir|ir]_flip`**
|
||||
* 启用流图像翻转。
|
||||
* **`[color|depth|left_ir|right_ir|ir]_mirror`**
|
||||
* 启用流图像镜像。
|
||||
* **`enable_point_cloud`**
|
||||
* 启用点云。
|
||||
* **`enable_colored_point_cloud`**
|
||||
* 启用RGB点云。
|
||||
* **`cloud_frame_id`**
|
||||
* 修改ros消息中的 `frame_id` 名称。
|
||||
* **`ordered_pc`**
|
||||
* 启用无效点云过滤。
|
||||
* **`point_cloud_qos`、`[stream]_qos`、`[stream]_camera_info_qos`**
|
||||
* ROS 2消息服务质量(QoS)设置。可能的值为 `SYSTEM_DEFAULT`、`DEFAULT`、`PARAMETER_EVENTS`、`SERVICES_DEFAULT`、`PARAMETERS`、`SENSOR_DATA`,不区分大小写。这些分别对应 `rmw_qos_profile_system_default`、`rmw_qos_profile_default`、`rmw_qos_profile_parameter_events`、`rmw_qos_profile_services_default`、`rmw_qos_profile_parameters` 和 `SENSOR_DATA`。
|
||||
|
||||
### 传感器控制
|
||||
|
||||
#### 彩色流
|
||||
* **`enable_color_auto_exposure`**
|
||||
* 启用彩色自动曝光。
|
||||
* **`enable_color_auto_exposure_priority`**
|
||||
* 启用彩色自动曝光优先级。
|
||||
* **`color_exposure`**
|
||||
* 设置彩色曝光。
|
||||
* **`color_gain`**
|
||||
* 设置彩色增益。
|
||||
* **`enable_color_auto_white_balance`**
|
||||
* 启用彩色自动白平衡。
|
||||
* **`color_white_balance`**
|
||||
* 设置彩色白平衡。
|
||||
* **`color_ae_max_exposure`**
|
||||
* 设置彩色自动曝光的最大曝光值。
|
||||
* **`color_brightness`**、**`color_sharpness`**、**`color_gamma`**、**`color_saturation`**、**`color_contrast`**、**`color_hue`**
|
||||
* 设置彩色亮度、锐度、伽马、饱和度、对比度和色调。
|
||||
* **`color_backlight_compensation`**
|
||||
* 启用彩色相机的背光补偿功能。**范围**:`0–6`,**默认值**:`3`。
|
||||
* **`color_powerline_freq`**
|
||||
* 设置电源线频率。可能的值为 `disable`、`50hz`、`60hz`、`auto`。
|
||||
* **`enable_color_decimation_filter`** / **`color_decimation_filter_scale`**
|
||||
* 启用彩色抽取滤波器并设置其比例。
|
||||
* **`color_ae_roi_[left|right|top|bottom]`**
|
||||
* 设置彩色自动曝光ROI。
|
||||
* **`color_denoising_level`**
|
||||
* 启用Gemini 330系列设备的ISP降噪功能。**范围:** `0–8`,**默认值:** `0`(自动)。
|
||||
|
||||
|
||||
#### 深度流
|
||||
* **`enable_depth_auto_exposure_priority`**
|
||||
|
||||
* 启用深度自动曝光优先级。
|
||||
* **`mean_intensity_set_point`**
|
||||
* 设置深度图像的目标平均强度。例如:`mean_intensity_set_point:=100`。
|
||||
> **注意:** 这取代了已弃用的 `depth_brightness`,后者仍支持以保持向后兼容性。
|
||||
* **`enable_depth_scale`**
|
||||
* 启用深度缩放。
|
||||
* **`depth_precision`**
|
||||
* 深度精度应为 `1mm` 格式。默认值为 `1mm`。
|
||||
* **`depth_ae_roi_[left|right|top|bottom]`**
|
||||
* 设置深度自动曝光ROI。
|
||||
|
||||
#### 红外流
|
||||
* **`enable_ir_auto_exposure`**
|
||||
* 启用红外自动曝光。
|
||||
* **`ir_exposure`** / **`ir_gain`**
|
||||
* 设置红外曝光和增益。
|
||||
* **`ir_ae_max_exposure`**
|
||||
* 设置红外自动曝光的最大曝光值。
|
||||
* **`ir_brightness`**
|
||||
* 设置红外亮度。
|
||||
|
||||
#### 激光 / LDP
|
||||
* **`enable_laser`**
|
||||
* 启用激光。默认值为 `true`。
|
||||
* **`laser_energy_level`**
|
||||
* 设置激光能量级别。
|
||||
* **`enable_ldp`** / **`ldp_power_level`**
|
||||
* 启用LDP并设置其功率级别。
|
||||
|
||||
### 设备、同步与高级功能
|
||||
|
||||
#### 多相机同步
|
||||
* **`sync_mode`**
|
||||
* 设置同步模式。默认值为 `standalone`。
|
||||
* **`depth_delay_us`** / **`color_delay_us`**
|
||||
* 接收捕获命令或触发信号后深度/彩色图像捕获的延迟时间(微秒)。
|
||||
* **`trigger2image_delay_us`**
|
||||
* 接收捕获命令或触发信号后图像捕获的延迟时间(微秒)。
|
||||
* **`trigger_out_delay_us`**
|
||||
* 接收捕获命令或触发信号后触发信号输出的延迟时间(微秒)。
|
||||
* **`trigger_out_enabled`**
|
||||
* 启用触发输出信号。
|
||||
* **`software_trigger_enabled`** / **`software_trigger_period`**
|
||||
* 启用软件触发输出信号 / 设置软件触发周期(毫秒)。
|
||||
* **`frames_per_trigger`**
|
||||
* 触发模式下每次触发后每个流的帧数。
|
||||
|
||||
> 用于 [多相机同步](../5_advanced_guide/multi_camera/multi_camera_synced.md)。
|
||||
|
||||
#### 网络相机
|
||||
* **`enumerate_net_device`**
|
||||
* 启用自动枚举网络设备。
|
||||
* **`net_device_ip`** / **`net_device_port`**
|
||||
* 设置网络设备的IP地址和端口(通常为 `8090`)。
|
||||
* **`force_ip_enable`**
|
||||
* 启用强制IP功能。**默认值:** `false`
|
||||
|
||||
* **`force_ip_mac`**
|
||||
* 连接多个相机时的目标设备MAC地址(例如,`"54:14:FD:06:07:DA"`)。您可以使用 `list_devices_node` 查找每个设备的MAC。**默认值:** `""`
|
||||
|
||||
* **`force_ip_address`**
|
||||
* 要分配的静态IP地址。**默认值:** `192.168.1.10`
|
||||
|
||||
* **`force_ip_subnet_mask`**
|
||||
* 静态IP的子网掩码。**默认值:** `255.255.255.0`
|
||||
|
||||
* **`force_ip_gateway`**
|
||||
* 静态IP的网关地址。**默认值:** `192.168.1.1`
|
||||
|
||||
> 用于 [网络相机](../5_advanced_guide/configuration/net_camera.md)。
|
||||
|
||||
#### 设备特定
|
||||
* **`device_preset`**
|
||||
* 默认值为 `Default`。仅支持G330系列。有关更多信息,请参阅 [G330文档](https://www.orbbec.com/docs/g330-use-depth-presets/)。该值应为 [表中列出](../5_advanced_guide/configuration/predefined_presets.md) 的预设名称之一。
|
||||
* **`enable_gmsl_trigger`** / **`gmsl_trigger_fps`**
|
||||
* 启用gmsl触发输出信号 / 设置gmsl触发fps。用于 [gmsl相机](../5_advanced_guide/multi_camera/gmsl_camera.md)。
|
||||
|
||||
|
||||
#### 视差
|
||||
* **`disparity_to_depth_mode`**
|
||||
* `HW`:使用硬件视差到深度转换。`SW`:使用软件视差到深度转换。
|
||||
* **`disparity_range_mode`**、**`disparity_search_offset`**、**`disparity_offset_config`**
|
||||
* 视差搜索偏移参数。用于 [视差搜索偏移](../5_advanced_guide/configuration/disparity_search_offset.md)。
|
||||
|
||||
#### 交错AE模式
|
||||
* **`interleave_ae_mode`**
|
||||
* 设置 `laser` 或 `hdr` 交错。
|
||||
* **`interleave_frame_enable`**、**`interleave_skip_enable`**、**`interleave_skip_index`**
|
||||
* 控制交错帧模式的参数。
|
||||
* **`[hdr|laser]_index[0|1]_[...]`**
|
||||
* 在交错帧模式下,设置hdr或laser交错帧的第0和第1帧参数。
|
||||
* *所有交错参数用于 [交错ae模式](../5_advanced_guide/configuration/interleave_ae_mode.md)。*
|
||||
|
||||
#### 相机内同步
|
||||
|
||||
- **`depth_registration`**
|
||||
* 启用深度帧与彩色帧的对齐。当 `enable_colored_point_cloud` 设置为 `true` 时需要此字段。
|
||||
- **`align_mode`**
|
||||
* 要使用的对齐模式。选项为 `HW`(硬件对齐)和 `SW`(软件对齐)。
|
||||
- **`align_target_stream`**
|
||||
* 设置对齐目标流模式。
|
||||
* 可能的值为 `COLOR`、`DEPTH`。
|
||||
* `COLOR`:将深度对齐到彩色。
|
||||
* `DEPTH`:将彩色对齐到深度。
|
||||
- **`intra_camera_sync_reference`**
|
||||
- 设置相机内同步的参考点。适用于Gemini 330系列设备,当 `sync_mode` 设置为**软件**或**硬件触发**模式时。**选项:** `Start`、`Middle`、`End`。**默认值:** `Middle`
|
||||
|
||||
### 基础与通用参数
|
||||
|
||||
#### 固件与后端
|
||||
* **`upgrade_firmware`**
|
||||
* 输入参数为固件路径。
|
||||
* **`preset_firmware_path`**
|
||||
* 输入参数为预设固件路径。如果输入多个路径,每个路径需要用 `,` 分隔,最多可输入3个固件路径。
|
||||
* **`uvc_backend`**
|
||||
* 可选值:`v4l2`、`libuvc`。
|
||||
* **`connection_delay`**
|
||||
* 重新打开设备的延迟时间(毫秒)。某些设备(如Astra mini)需要较长时间初始化,热插拔时立即重新打开设备可能导致固件崩溃。
|
||||
* **`retry_on_usb3_detection_failure`**
|
||||
* 如果相机连接到USB 2.0端口且未检测到,系统将尝试重置相机最多三次。使用USB 2.0连接时建议将此参数设置为 `false`,以避免不必要的重置。
|
||||
|
||||
#### TF、外参与校准
|
||||
* **`publish_tf`** / **`tf_publish_rate`**
|
||||
* 启用TF发布并设置其发布速率。
|
||||
* **`enable_publish_extrinsic`**
|
||||
* 启用外参发布。
|
||||
* **`ir_info_url`** / **`color_info_url`**
|
||||
* 设置IR/彩色相机信息的URL。
|
||||
* **`enable_color_undistortion`**
|
||||
* 启用彩色去畸变。
|
||||
|
||||
#### 时间同步
|
||||
* **`enable_sync_host_time`**
|
||||
* 启用主机时间与相机时间的同步。默认值为 `true`。如果使用全局时间,设置为 `false`。
|
||||
* **`time_domain`**
|
||||
* 选择时间戳类型:`device`、`global` 和 `system`。
|
||||
* **`time_sync_period`**
|
||||
|
||||
* 相机时间与主机系统同步的间隔(秒)。
|
||||
> **注意**:仅当 **`enable_sync_host_time = true`** 且 **`time_domain = device`** 时需要设置此参数。
|
||||
* **`enable_ptp_config`**
|
||||
* 启用PTP时间同步。仅适用于Gemini 335Le。需要 `enable_sync_host_time` 设置为 `false`。
|
||||
* **`enable_frame_sync`**
|
||||
* 启用帧同步。
|
||||
|
||||
#### 日志与诊断
|
||||
* **`log_level`**
|
||||
* SDK日志级别。默认为 `info`。可选值:`debug`、`info`、`warn`、`error`、`fatal`。
|
||||
* **`diagnostic_period`**
|
||||
* 诊断周期(秒)。
|
||||
* **`enable_heartbeat`**
|
||||
* 启用心跳功能。默认为 `false`。如果为 `true`,相机节点将向固件发送心跳信号。
|
||||
|
||||
#### 其他
|
||||
* **`config_file_path`**
|
||||
* YAML配置文件的路径。默认为 `""`。如果未指定,将使用启动文件中的默认参数。
|
||||
* **`frame_aggregate_mode`**
|
||||
* 设置帧聚合输出模式。可选值:`full_frame`、`color_frame`、`ANY`、`disable`。
|
||||
* **`enable_d2c_viewer`**
|
||||
* 发布D2C叠加图像(仅用于测试)。
|
||||
|
||||
### IMU
|
||||
|
||||
* **`enable_accel`** / **`enable_gyro`**
|
||||
* 启用加速度计/陀螺仪并输出其信息话题数据。
|
||||
* **`enable_sync_output_accel_gyro`**
|
||||
* 启用同步 `accel_gyro`,并输出IMU话题实时数据。
|
||||
* **`accel_rate`** / **`gyro_rate`**
|
||||
* 加速度计/陀螺仪的频率。值范围从 `1.5625hz` 到 `32khz`。
|
||||
* **`accel_range`** / **`gyro_range`**
|
||||
* 加速度计(`2g`、`4g`、`8g`、`16g`)和陀螺仪(`16dps` 到 `2000dps`)的范围。
|
||||
* **`enable_accel_data_correction`** / **`enable_gyro_data_correction`**
|
||||
* 启用加速度计/陀螺仪的数据校正。
|
||||
* **`linear_accel_cov`** / **`angular_vel_cov`**
|
||||
* 线性加速度和角速度的协方差。
|
||||
|
||||
### 深度滤波器
|
||||
|
||||
* **`enable_decimation_filter`**
|
||||
* 启用深度抽取滤波器。使用 `decimation_filter_scale` 设置。
|
||||
* **`enable_hdr_merge`**
|
||||
* 启用深度hdr合并滤波器。使用 `hdr_merge_exposure_1` 等设置。
|
||||
* **`enable_sequence_id_filter`**
|
||||
* 启用深度序列id滤波器。使用 `sequence_id_filter_id` 设置。
|
||||
* **`enable_threshold_filter`**
|
||||
* 启用深度阈值滤波器。使用 `threshold_filter_max`、`threshold_filter_min` 设置。
|
||||
* **`enable_hardware_noise_removal_filter`**
|
||||
* 启用深度硬件降噪滤波器。
|
||||
* **`enable_noise_removal_filter`**
|
||||
* 启用深度软件降噪滤波器。使用 `noise_removal_filter_min_diff` 等设置。
|
||||
* **`enable_spatial_filter`**
|
||||
* 启用深度空间滤波器。使用 `spatial_filter_alpha` 等设置。
|
||||
* **`enable_temporal_filter`**
|
||||
* 启用深度时间滤波器。使用 `temporal_filter_diff_threshold` 等设置。
|
||||
* **`enable_hole_filling_filter`**
|
||||
* 启用深度孔洞填充滤波器。使用 `hole_filling_filter_mode` 设置。
|
||||
* **`enable_spatial_fast_filter`**
|
||||
* 启用深度空间快速滤波器。使用 `spatial_fast_filter_radius` 设置。
|
||||
* **`enable_spatial_moderate_filter`**
|
||||
* 启用深度空间中等滤波器。使用 `spatial_moderate_filter_diff_threshold` 等设置。
|
||||
|
||||
---
|
||||
|
||||
> **_重要_**:请仔细阅读 [此链接](https://www.orbbec.com/docs/g330-use-depth-post-processing-blocks/) 中有关软件滤波设置的说明。如果不确定,请勿修改这些设置。
|
||||
@@ -0,0 +1,53 @@
|
||||
## 在ROS 2中启用和可视化点云
|
||||
|
||||
本节演示如何从相机节点启用点云数据输出并使用RViz2进行可视化。
|
||||
|
||||
### 启用深度点云
|
||||
|
||||
#### 启用深度点云的命令
|
||||
|
||||
要激活深度信息的点云数据流,使用以下命令:
|
||||
|
||||
```bash
|
||||
ros2 launch orbbec_camera gemini_330_series.launch.py enable_point_cloud:=true
|
||||
```
|
||||
|
||||
#### 在RViz2中可视化深度点云
|
||||
|
||||
运行上述命令后,执行以下步骤可视化深度点云:
|
||||
|
||||
1. 打开RViz2。
|
||||
2. 添加 `PointCloud2` 显示。
|
||||
3. 选择 `/camera/depth/points` 话题进行可视化。
|
||||
4. 将固定帧设置为 `camera_link` 以正确对齐数据。
|
||||
|
||||
- **可视化示例**
|
||||
|
||||
深度点云在RViz2中可能如下所示:
|
||||
|
||||

|
||||
|
||||
### 启用彩色点云
|
||||
|
||||
#### 启用彩色点云的命令
|
||||
|
||||
要启用彩色点云功能,输入以下命令:
|
||||
|
||||
```bash
|
||||
ros2 launch orbbec_camera gemini_330_series.launch.py enable_colored_point_cloud:=true
|
||||
```
|
||||
|
||||
#### 在RViz2中可视化彩色点云
|
||||
|
||||
要可视化彩色点云数据:
|
||||
|
||||
1. 执行命令后启动RViz2。
|
||||
2. 添加 `PointCloud2` 显示面板。
|
||||
3. 从列表中选择 `/camera/depth_registered/points` 话题。
|
||||
4. 确保固定帧设置为 `camera_link`。
|
||||
|
||||
- **可视化示例**
|
||||
|
||||
RViz2中彩色点云的结果应该如下所示:
|
||||
|
||||

|
||||
@@ -0,0 +1,210 @@
|
||||
# 所有可用的相机控制服务
|
||||
|
||||
> **注意:** 与特定数据流相关的服务(例如 `/camera/set_color_*`)仅在启动文件中启用该数据流时可用(例如 `enable_color:=true`)。
|
||||
|
||||
### 数据流控制
|
||||
|
||||
#### 彩色流
|
||||
* `/camera/toggle_color`
|
||||
```bash
|
||||
ros2 service call /camera/toggle_color std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/get_color_exposure` & `/camera/get_color_gain`
|
||||
```bash
|
||||
ros2 service call /camera/get_color_exposure orbbec_camera_msgs/srv/GetInt32 '{}'
|
||||
ros2 service call /camera/get_color_gain orbbec_camera_msgs/srv/GetInt32 '{}'
|
||||
```
|
||||
* `/camera/set_color_auto_exposure`
|
||||
```bash
|
||||
ros2 service call /camera/set_color_auto_exposure std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/set_color_exposure` & `/camera/set_color_gain`
|
||||
```bash
|
||||
ros2 service call /camera/set_color_exposure orbbec_camera_msgs/srv/SetInt32 '{data: 1}'
|
||||
ros2 service call /camera/set_color_gain orbbec_camera_msgs/srv/SetInt32 '{data: 64}'
|
||||
```
|
||||
* `/camera/set_color_mirror`, `/camera/set_color_flip`, `/camera/set_color_rotation`
|
||||
```bash
|
||||
ros2 service call /camera/set_color_mirror std_srvs/srv/SetBool '{data: true}'
|
||||
ros2 service call /camera/set_color_flip std_srvs/srv/SetBool '{data: true}'
|
||||
ros2 service call /camera/set_color_rotation orbbec_camera_msgs/srv/SetInt32 '{data: 180}'
|
||||
```
|
||||
* `/camera/set_color_ae_roi`
|
||||
```bash
|
||||
# data_param: [左, 右, 上, 下]
|
||||
ros2 service call /camera/set_color_ae_roi orbbec_camera_msgs/srv/SetArrays '{data_param: [0,1279,0,719]}'
|
||||
```
|
||||
|
||||
#### 深度流
|
||||
* `/camera/toggle_depth`
|
||||
```bash
|
||||
ros2 service call /camera/toggle_depth std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/get_depth_exposure` & `/camera/get_depth_gain`
|
||||
```bash
|
||||
ros2 service call /camera/get_depth_exposure orbbec_camera_msgs/srv/GetInt32 '{}'
|
||||
ros2 service call /camera/get_depth_gain orbbec_camera_msgs/srv/GetInt32 '{}'
|
||||
```
|
||||
* `/camera/set_depth_auto_exposure`
|
||||
```bash
|
||||
ros2 service call /camera/set_depth_auto_exposure std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/set_depth_exposure` & `/camera/set_depth_gain`
|
||||
```bash
|
||||
ros2 service call /camera/set_depth_exposure orbbec_camera_msgs/srv/SetInt32 '{data: 3000}'
|
||||
ros2 service call /camera/set_depth_gain orbbec_camera_msgs/srv/SetInt32 '{data: 64}'
|
||||
```
|
||||
* `/camera/set_depth_mirror`, `/camera/set_depth_flip`, `/camera/set_depth_rotation`
|
||||
```bash
|
||||
ros2 service call /camera/set_depth_mirror std_srvs/srv/SetBool '{data: true}'
|
||||
ros2 service call /camera/set_depth_flip std_srvs/srv/SetBool '{data: true}'
|
||||
ros2 service call /camera/set_depth_rotation orbbec_camera_msgs/srv/SetInt32 '{data: 180}'
|
||||
```
|
||||
* `/camera/set_depth_ae_roi`
|
||||
```bash
|
||||
# data_param: [左, 右, 上, 下]
|
||||
ros2 service call /camera/set_depth_ae_roi orbbec_camera_msgs/srv/SetArrays '{data_param: [0,847,0,479]}'
|
||||
```
|
||||
|
||||
#### 红外流
|
||||
* `/camera/toggle_ir`
|
||||
|
||||
```bash
|
||||
ros2 service call /camera/toggle_ir std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/get_ir_exposure` & `/camera/get_ir_gain`
|
||||
```bash
|
||||
ros2 service call /camera/get_ir_exposure orbbec_camera_msgs/srv/GetInt32 '{}'
|
||||
ros2 service call /camera/get_ir_gain orbbec_camera_msgs/srv/GetInt32 '{}'
|
||||
```
|
||||
* `/camera/set_ir_auto_exposure`
|
||||
```bash
|
||||
ros2 service call /camera/set_ir_auto_exposure std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/set_ir_exposure` & `/camera/set_ir_gain`
|
||||
```bash
|
||||
ros2 service call /camera/set_ir_exposure orbbec_camera_msgs/srv/SetInt32 '{data: 3000}'
|
||||
ros2 service call /camera/set_ir_gain orbbec_camera_msgs/srv/SetInt32 '{data: 64}'
|
||||
```
|
||||
* `/camera/switch_ir`
|
||||
```bash
|
||||
ros2 service call /camera/switch_ir orbbec_camera_msgs/srv/SetString '{data: left}'
|
||||
```
|
||||
|
||||
#### 所有数据流
|
||||
* `/camera/get_streams_enable` & `/camera/set_streams_enable`
|
||||
```bash
|
||||
ros2 service call /camera/get_streams_enable orbbec_camera_msgs/srv/GetBool '{}'
|
||||
ros2 service call /camera/set_streams_enable std_srvs/srv/SetBool '{data: false}'
|
||||
```
|
||||
|
||||
### 传感器与发射器控制
|
||||
|
||||
* `/camera/set_auto_white_balance` & `/camera/get_auto_white_balance`
|
||||
```bash
|
||||
ros2 service call /camera/set_auto_white_balance std_srvs/srv/SetBool '{data: true}'
|
||||
ros2 service call /camera/get_auto_white_balance orbbec_camera_msgs/srv/GetInt32 '{}'
|
||||
```
|
||||
* `/camera/set_white_balance` & `/camera/get_white_balance`
|
||||
```bash
|
||||
ros2 service call /camera/set_white_balance orbbec_camera_msgs/srv/SetInt32 '{data: 2800}'
|
||||
ros2 service call /camera/get_white_balance orbbec_camera_msgs/srv/GetInt32 '{}'
|
||||
```
|
||||
* `/camera/set_laser_enable`
|
||||
```bash
|
||||
ros2 service call /camera/set_laser_enable std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/set_ldp_enable` & `/camera/get_ldp_status`
|
||||
```bash
|
||||
ros2 service call /camera/set_ldp_enable std_srvs/srv/SetBool '{data: true}'
|
||||
ros2 service call /camera/get_ldp_status orbbec_camera_msgs/srv/GetBool '{}'
|
||||
```
|
||||
* `/camera/set_fan_work_mode`
|
||||
```bash
|
||||
ros2 service call /camera/set_fan_work_mode orbbec_camera_msgs/srv/SetInt32 '{data: 0}'
|
||||
```
|
||||
* `/camera/set_floor_enable`
|
||||
```bash
|
||||
ros2 service call /camera/set_floor_enable std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
|
||||
### 设备信息与管理
|
||||
|
||||
* `/camera/get_device_info`
|
||||
```bash
|
||||
ros2 service call /camera/get_device_info orbbec_camera_msgs/srv/GetDeviceInfo
|
||||
```
|
||||
* `/camera/get_sdk_version`
|
||||
```bash
|
||||
ros2 service call /camera/get_sdk_version orbbec_camera_msgs/srv/GetString
|
||||
```
|
||||
* `/camera/reboot_device`
|
||||
```bash
|
||||
ros2 service call /camera/reboot_device std_srvs/srv/Empty '{}'
|
||||
```
|
||||
|
||||
### 同步与触发
|
||||
|
||||
* `/camera/send_software_trigger`
|
||||
```bash
|
||||
ros2 service call /camera/send_software_trigger std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/set_reset_timestamp`
|
||||
```bash
|
||||
# 仅在time_domain参数设置为device时可用
|
||||
ros2 service call /camera/set_reset_timestamp std_srvs/srv/SetBool '{data: true}'
|
||||
```
|
||||
* `/camera/set_sync_interleaverlaser`
|
||||
```bash
|
||||
# 仅在interleave_ae_mode为'laser'且interleave_frame_enable为true时可用
|
||||
ros2 service call /camera/set_sync_interleaverlaser orbbec_camera_msgs/srv/SetInt32 '{data: 0}'
|
||||
```
|
||||
|
||||
### 深度滤波器配置
|
||||
|
||||
* `/camera/set_filter`
|
||||
```bash
|
||||
# 设置DecimationFilter
|
||||
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: DecimationFilter, filter_enable: false, filter_param: [5]}'
|
||||
# 设置SpatialAdvancedFilter
|
||||
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: SpatialAdvancedFilter, filter_enable: true, filter_param: [0.5,160,1,8]}'
|
||||
```
|
||||
|
||||
### 数据捕获与校准管理
|
||||
|
||||
* `/camera/save_images`
|
||||
```bash
|
||||
ros2 service call /camera/save_images std_srvs/srv/Empty '{}'
|
||||
```
|
||||
* `/camera/save_point_cloud`
|
||||
```bash
|
||||
ros2 service call /camera/save_point_cloud std_srvs/srv/Empty '{}'
|
||||
```
|
||||
|
||||
> **注意**:以下服务目前仅支持435Le模块。每个服务一次只能存储一组数据或字符串。
|
||||
|
||||
* `/camera/write_customer_data` & `/camera/read_customer_data`
|
||||
```bash
|
||||
ros2 service call /camera/write_customer_data orbbec_camera_msgs/srv/SetString '{data: "string"}'
|
||||
ros2 service call /camera/read_customer_data orbbec_camera_msgs/srv/GetString '{}'
|
||||
```
|
||||
* `/camera/set_user_calib_params` & `/camera/get_user_calib_params`
|
||||
```bash
|
||||
ros2 service call /camera/set_user_calib_params orbbec_camera_msgs/srv/SetUserCalibParams \
|
||||
'{k: [614.9613647460938, 0.0, 634.91552734375,
|
||||
0.0, 614.65771484375, 391.407470703125,
|
||||
0.0, 0.0, 1.0],
|
||||
d: [-0.03131488710641861,
|
||||
0.032955970615148544,
|
||||
9.096559369936585e-05,
|
||||
-0.0003368517500348389,
|
||||
-0.01115430984646082,
|
||||
0.0, 0.0, 0.0],
|
||||
rotation: [0.9999880790710449, 0.0003024190664291382, -0.004874417092651129,
|
||||
-0.0002965621242765337, 0.9999992251396179, 0.001202247804030776,
|
||||
0.004874777048826218, -0.0012007878394797444, 0.9999874234199524],
|
||||
translation: [-0.023897956848144532,
|
||||
-9.439220279455185e-05,
|
||||
-6.804073229432106e-06]}'
|
||||
ros2 service call /camera/get_user_calib_params orbbec_camera_msgs/srv/GetUserCalibParams '{}'
|
||||
```
|
||||