docs: update camera feature documentation

This commit is contained in:
slz
2026-04-27 16:41:07 +08:00
parent af9b03e7db
commit 627af59d4f
17 changed files with 358 additions and 118 deletions
@@ -181,6 +181,7 @@ To learn how to obtain and upgrade the latest firmware, [please click here](../3
| **Products List** | **Recommended FW Version** | Launch File |
| ----------------------- | -------------------------------------------------------------------------------------------- | --------------------------- |
| Gemini 305 | [1.0.30](https://doc.orbbec.com/documentation/Gemini%20305%20Series%20Documentation/Firmware%20Release%20of%20Gemini%20305) | gemini305.launch.py |
| Gemini 305G | [1.0.54](https://doc.orbbec.com/documentation/Gemini%20305%20Series%20Documentation/Firmware%20Release%20of%20Gemini%20305) | gemini305_g.launch.py |
| Astra Mini Pro | [2.0.03](https://github.com/orbbec/OrbbecFirmware/releases/tag/Astra-Mini-Pro) | astra.launch.py |
| Astra Mini S Pro | [2.0.03](https://github.com/orbbec/OrbbecFirmware/releases/tag/Astra-Mini-S-Pro) | astra.launch.py |
| Gemini 435Le | [1.3.6](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemin435Le-Firmware) | gemini435_le.launch.py |
@@ -40,19 +40,14 @@ The following are the launch parameters available:
* ROS 2 Message Quality of Service (QoS) settings. The possible values are `SYSTEM_DEFAULT`, `DEFAULT`, `PARAMETER_EVENTS`, `SERVICES_DEFAULT`, `PARAMETERS`, `SENSOR_DATA` and are case-insensitive. These correspond to `rmw_qos_profile_system_default`, `rmw_qos_profile_default`, `rmw_qos_profile_parameter_events`, `rmw_qos_profile_services_default`, `rmw_qos_profile_parameters`, and `SENSOR_DATA`, respectively.
* **`color.image_raw.enable_pub_plugins`**
* Enable Color image transport plugins. Default: `["image_transport/compressed", "image_transport/raw", "image_transport/theora"]`.
> **Supported Versions**: Wrapper version 2.6.3 and above.
* **`depth.image_raw.enable_pub_plugins`**
* Enable Depth image transport plugins. Default: `["image_transport/compressedDepth", "image_transport/raw"]`.
> **Supported Versions**: Wrapper version 2.6.3 and above.
* **`left_ir.image_raw.enable_pub_plugins`**
* Enable Left IR image transport plugins. Default: `["image_transport/compressed", "image_transport/raw", "image_transport/theora"]`.
> **Supported Versions**: Wrapper version 2.6.3 and above.
* **`right_ir.image_raw.enable_pub_plugins`**
* Enable Right IR image transport plugins. Default: `["image_transport/compressed", "image_transport/raw", "image_transport/theora"]`.
> **Supported Versions**: Wrapper version 2.6.3 and above.
* **`point_cloud_decimation_filter_factor`**
* Point cloud downsampling factor. Range: `1–8`. `1` means no downsampling.
> **Supported Versions**: Wrapper version 2.6.3 and above.
### Sensor Controls
@@ -71,18 +66,22 @@ The following are the launch parameters available:
* Set the Color white balance.
* **`color_ae_max_exposure`**
* Set the maximum exposure value for Color auto exposure.
* **`color_ae_max_gain`**
* Set the maximum gain for Color auto exposure. Supported by Gemini 2 firmware `1.5.04` and above, and Gemini 2L firmware `1.5.09` and above.
* **`color_brightness`**, **`color_sharpness`**, **`color_gamma`**, **`color_saturation`**, **`color_contrast`**, **`color_hue`**
* Set the Color brightness, sharpness, gamma, saturation, contrast, and hue.
* **`color_backlight_compensation`**
* Enables the color camera’s backlight compensation feature. **Range**: `0–6`, **Default**: `3`.
* **`color_powerline_freq`**
* Set the power line freq. The possible values are `disable`, `50hz`, `60hz`, `auto`.
* **`color_anti_flicker`**
* Enable Color anti-flicker. Supported by Gemini 330 series firmware `1.7.13` and above, and Gemini 305 series firmware `1.0.54` and above.
* **`enable_color_decimation_filter`** / **`color_decimation_filter_scale`**
* Enable the Color decimation filter and set its scale.
* **`color_ae_roi_[left|right|top|bottom]`**
* Set Color auto exposure ROI.
* **`color_denoising_level`**
* Enables the ISP denoising feature for Gemini 330 series devices. **Range:** `0–8`, **Default:** `0` (auto).
* Enable ISP Color denoising. **Range:** `0–8`; `0` means auto. Supported by Gemini 330 series, Gemini 2 firmware `1.5.04` and above, and Gemini 2L firmware `1.5.09` and above. This feature requires Color auto exposure and new firmware support.
#### Depth Stream
@@ -142,19 +141,14 @@ The following are the launch parameters available:
* Set net device's IP address and port (Usually `8090`).
* **`force_ip_enable`**
* Enable the Force IP function. **Default:** `false`
> **Supported Versions**: Wrapper version 2.5.4 and above.
* **`force_ip_mac`**
* Target device MAC address when multiple cameras are connected (e.g., `"54:14:FD:06:07:DA"`). You can use the `list_devices_node` to find the MAC of each device. **Default:** `""`
> **Supported Versions**: Wrapper version 2.5.4 and above.
* **`force_ip_address`**
* Static IP address to assign. **Default:** `192.168.1.10`
> **Supported Versions**: Wrapper version 2.5.4 and above.
* **`force_ip_subnet_mask`**
* Subnet mask for the static IP. **Default:** `255.255.255.0`
> **Supported Versions**: Wrapper version 2.5.4 and above.
* **`force_ip_gateway`**
* Gateway address for the static IP. **Default:** `192.168.1.1`
> **Supported Versions**: Wrapper version 2.5.4 and above.
> Used for [net camera](../5_advanced_guide/configuration/net_camera.md).
#### Device-Specific
@@ -165,27 +159,23 @@ The following are the launch parameters available:
* **`enable_ptp_config`**
* Enable PTP time synchronization. Requires `enable_sync_host_time` to be `false`.
> **Supported Modules**: Gemini 335Le
> **Supported Versions**: Wrapper version 2.3.4 and above.
* **`preset_resolution_config`**
* Preset resolution configuration for the camera device. Format: "width,height,ir_decimation_factor,depth_decimation_factor". Example: "1280,720,4,4". Leave empty to disable.
> **Supported Modules**: Gemini 435Le
> **Supported Versions**: Wrapper version 2.6.3 and above.
* **`ae_mode`**
* `colorbased`: Automatic exposure based on color flow. `depthbased`: Automatic exposure based on depth flow. **Default:** `depthbased`
> **Supported Modules**: Gemini 305
> **Supported Versions**: Wrapper version 2.7.2 and above.
* **`enalbe_sports_mode`**
* Whether to enable sports mode. **Default:** `false`
> **Supported Modules**: Gemini 305
> **Supported Versions**: Wrapper version 2.7.2 and above.
* **`ae_reference_stream`**
* Set the auto-exposure reference stream. Options: `depth`, `color`. Default: `depth`.
> **Supported Modules**: Gemini 305 series.
> **Compatibility**: This replaces the old `ae_mode` parameter. The old values `depthbased/colorbased` map to `depth/color`.
* **`ae_strategy`**
* Set the auto-exposure strategy. Options: `default`, `motion`. Default: `motion`.
> **Supported Modules**: Gemini 305 series.
> **Compatibility**: This replaces the old `enable_sports_mode` parameter.
* **`depth_downscale`** / **`left_ir_downscale`** /**`right_ir_downscale`**
* Set the downsampling multiple. You can use `ros2 run orbbec_camera list_camera_profile_mode_node` to view the settable resolution. **Default value:** `1`
> **Supported Modules**: Gemini 305
> **Supported Versions**: Wrapper version 2.7.2 and above.
* **`enable_false_positive_filter`**
* Enable this option to reduce ghosting noise.
> **Supported Modules**: DaBaiA / DaBaiAL / Gemini345 / Gemini345Lg
> **Supported Versions**: Wrapper version 2.7.6 and above; Firmware version 1.9.03 and above.
#### Disparity
* **`disparity_to_depth_mode`**
* `HW`: use hardware disparity to depth conversion. `SW`: use software disparity to depth conversion.
@@ -214,13 +204,12 @@ The following are the launch parameters available:
* `DEPTH`: Align color to depth.
- **`intra_camera_sync_reference`**
- Sets the reference point for intra-camera synchronization. Applicable for Gemini 330 series devices when `sync_mode` is set to **software** or **hardware trigger** mode. **Options:** `Start`, `Middle`, `End`. When set to empty, the long baseline device defaults to End, and the short baseline device defaults to Middle.
> **Supported Versions**: Wrapper version 2.6.3 and above.
### Basic & General Parameters
#### Firmware & Backend
* **`upgrade_firmware`**
* The input parameter is the firmware path.
* The input parameter is the firmware path. For new versions, use the standalone `firmware_update_tool` for firmware updates.
* **`preset_firmware_path`**
* The input parameter is the preset firmware path. If multiple paths are input, each path needs to be separated by `,` and a maximum of 3 firmware paths can be input.
* **`uvc_backend`**
@@ -248,17 +237,22 @@ The following are the launch parameters available:
* **`time_sync_period`**
* Interval (in seconds) for synchronizing the camera time with the host system.
> **Note**: This parameter only needs to be set when `enable_sync_host_time = true` and `time_domain = device`.
> **Supported Versions**: Wrapper version 2.6.3 and above.
* **`enable_frame_sync`**
* Enable the frame synchronization.
* **`enable_frame_timestamp_csv`**
* Enable frame timestamp CSV logging. This is mainly used to analyze Color/Depth frame timestamps, publish latency, and synchronization issues.
* **`frame_timestamp_csv_file`**
* Path of the frame timestamp CSV file. If empty, the default path is used; specify a writable path when debugging.
#### Logging & Diagnostics
* **`log_level`**
* SDK log level. Default is `info`. Optional values: `debug`, `info`, `warn`, `error`, `fatal`.
* Shared SDK and ROS node log level. By default, only current device status is printed; set it to `debug` for more debug logs. Optional values: `none`, `debug`, `info`, `warn`, `error`, `fatal`.
* SDK logs and crash files are saved to `~/.ros/Log` by default. ROS logs remain in `~/.ros/log`.
* **`log_file_name`**
* Saved SDK log file name. Effective when `log_level` is `debug`.
> **Supported Versions**: Wrapper version 2.6.3 and above.
* **`enable_firmware_log`**
* Enable firmware logging. This switch is independent from `enable_heartbeat` and can be enabled only when firmware logs are needed.
* **`diagnostic_period`**
* Diagnostic period in seconds.
* **`enable_heartbeat`**
@@ -311,6 +305,10 @@ The following are the launch parameters available:
* Enable the Depth spatial fast filter. Set with `spatial_fast_filter_radius`.
* **`enable_spatial_moderate_filter`**
* Enable the Depth spatial moderate filter. Set with `spatial_moderate_filter_diff_threshold`, etc.
* **`enable_mgc_noise_removal_filter`**
* Enable the MGC noise removal filter, mainly for OpenNI devices that support this filter.
* **`enable_lut_noise_removal_filter`**
* Enable the LUT noise removal filter, mainly for OpenNI devices that support this filter.
---
@@ -128,7 +128,6 @@
```bash
ros2 service call /camera/get_laser_status orbbec_camera_msgs/srv/GetBool '{}'
```
> **Supported Versions**: Wrapper version 2.6.3 and above.
* `/camera/set_ldp_enable` & `/camera/get_ldp_status`
```bash
ros2 service call /camera/set_ldp_enable std_srvs/srv/SetBool '{data: true}'
@@ -216,6 +215,26 @@
# Set SpatialModerateFilter: [disp_diff, magnitude, radius]
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: SpatialModerateFilter, filter_enable: true, filter_param: [160,1,3]}'
# Set FalsePositiveFilter: []
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: FalsePositiveFilter, filter_enable: true, filter_param: []}'
# Set MgcNoiseRemovalFilter / LutNoiseRemovalFilter: []
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: MgcNoiseRemovalFilter, filter_enable: true, filter_param: []}'
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: LutNoiseRemovalFilter, filter_enable: true, filter_param: []}'
```
Filter status is updated after service calls on `/camera/depth_filter_status` and `/camera/depth_filters/status`. `/camera/depth_filters/status` uses the structured `orbbec_camera_msgs/msg/DepthFiltersStatus` message and includes each filter's enabled state and parameters.
### Disparity Configuration
* `/camera/set_disparity_range_mode`
```bash
ros2 service call /camera/set_disparity_range_mode orbbec_camera_msgs/srv/SetInt32 '{data: 0}'
```
* `/camera/set_disparity_search_offset`
```bash
ros2 service call /camera/set_disparity_search_offset orbbec_camera_msgs/srv/SetInt32 '{data: 0}'
```
### Data Capture
@@ -237,7 +256,6 @@
ros2 service call /camera/read_customer_data orbbec_camera_msgs/srv/GetString '{}'
```
> **Supported Modules**: Gemini 435Le
> **Supported Versions**: Wrapper version 2.5.4 and above.
* `/camera/set_user_calib_params` & `/camera/get_user_calib_params`
```bash
ros2 service call /camera/set_user_calib_params orbbec_camera_msgs/srv/SetUserCalibParams \
@@ -259,29 +277,28 @@
ros2 service call /camera/get_user_calib_params orbbec_camera_msgs/srv/GetUserCalibParams '{}'
```
> **Supported Modules**: Gemini 435Le
> **Supported Versions**: Wrapper version 2.5.4 and above.
* `/camera/set_ae_mode`
* `/camera/set_ae_reference_stream`
```bash
# depthbased or colorbased
ros2 service call /camera/set_ae_mode orbbec_camera_msgs/srv/SetString "data: depthbased"
# depth or color
ros2 service call /camera/set_ae_reference_stream orbbec_camera_msgs/srv/SetString "{data: depth}"
```
> **Supported Modules**: Gemini 305
> **Supported Versions**: Wrapper version 2.7.2 and above.
* `/camera/set_sports_mode`
> **Supported Modules**: Gemini 305 series.
> **Compatibility**: Replaces the old `/camera/set_ae_mode` service. The old values `depthbased/colorbased` map to `depth/color`.
* `/camera/set_ae_strategy`
```bash
ros2 service call /camera/set_sports_mode std_srvs/srv/SetBool "data: true"
# default or motion
ros2 service call /camera/set_ae_strategy orbbec_camera_msgs/srv/SetString "{data: motion}"
```
> **Supported Modules**: Gemini 305
> **Supported Versions**: Wrapper version 2.7.2 and above.
> **Supported Modules**: Gemini 305 series.
> **Compatibility**: Replaces the old `/camera/set_sports_mode` service.
### Point cloud decimation
* `/camera/set_point_cloud_decimation`
```bash
ros2 service call /camera/set_point_cloud_decimation orbbec_camera_msgs/srv/SetInt32 '{data: 8}'
```
> **Supported Versions**: Wrapper version 2.6.3 and above.
* `/camera/get_point_cloud_decimation`
```bash
ros2 service call /camera/get_point_cloud_decimation orbbec_camera_msgs/srv/GetInt32 '{}'
```
> **Supported Versions**: Wrapper version 2.6.3 and above.
@@ -61,7 +61,11 @@ The Inertial Measurement Unit (IMU) topics provide accelerometer and gyroscope d
* Reports the current status of the camera device.
* `/camera/depth_filter_status`
* Reports the status of the depth sensor's post-processing filters.
* Reports the status of the depth sensor's post-processing filters. The type is `std_msgs/msg/String`, and the content is a JSON string.
* `/camera/depth_filters/status`
* Reports the structured status of the depth sensor's post-processing filters. The type is `orbbec_camera_msgs/msg/DepthFiltersStatus`.
* The message contains `DepthFilterState[] filters`; each filter state contains `filter_name`, `enabled`, and `DepthFilterParam[] params`.
* `/diagnostics`
* Publishes diagnostic information about the camera node. Currently, this includes the device temperature.
@@ -44,38 +44,80 @@ For [multi_net_camera.launch.py](https://github.com/orbbec/OrbbecSDK_ROS2/blob/v
ros2 launch orbbec_camera multi_net_camera.launch.py
```
## set_device_ip Utility
Use `list_devices_node` to inspect connected devices. Since v2.8.x, this tool also prints firmware version, local network interface name for Ethernet devices, and IP source type (`NONE`, `LLA`, `DHCP`, `PERSISTENT`).
The **`set_device_ip`** executable allows you to configure the IP settings of a network camera directly from ROS 2, including switching between DHCP and static IP, and setting subnet mask and gateway. This is useful for quickly assigning or updating IP addresses without modifying launch files.
## ip_config_tool Utility
> **Note:** The IP settings applied with `set_device_ip` are **permanent** and **will not be reset** if the device is powered off or restarted.
> **Supported Versions**: Wrapper version 2.6.3 and above.
The **`ip_config_tool`** executable allows you to configure network camera IP settings directly from ROS 2, including DHCP, static IP, Force IP, and DHCP address assignment timeout. This is useful for quickly assigning or updating IP addresses without modifying launch files.
> **Note:** Configuration applied with `dhcp` or `set_ip` is written to the device. `force_ip` is temporary and must be applied again after the device is powered off or restarted.
> **Compatibility**: `set_device_ip` is still kept as a legacy alias and calls `ip_config_tool`. The old `old_ip` argument has been renamed to `current_ip`.
**Example Usage**
Show help:
```bash
ros2 run orbbec_camera set_device_ip --ros-args \
-p old_ip:=192.168.1.10 \
-p dhcp:=false \
-p new_ip:=192.168.1.11 \
-p mask:=255.255.255.0 \
-p gateway:=192.168.1.1
ros2 run orbbec_camera ip_config_tool -- --help
```
Enable DHCP:
```bash
ros2 run orbbec_camera ip_config_tool -- \
dhcp \
--current_ip 192.168.1.10 \
--enable_dhcp true
```
Disable DHCP and set a static IP:
```bash
ros2 run orbbec_camera ip_config_tool -- \
set_ip \
--current_ip 192.168.1.10 \
--new_ip 192.168.1.11 \
--mask 255.255.255.0 \
--gateway 192.168.1.1
```
Force IP by MAC address:
```bash
ros2 run orbbec_camera ip_config_tool -- \
force_ip \
--force_ip_mac 54:14:FD:06:07:DA \
--new_ip 192.168.1.50 \
--mask 255.255.255.0 \
--gateway 192.168.1.1
```
Set DHCP address assignment timeout:
```bash
ros2 run orbbec_camera ip_config_tool -- \
set_dhcp_timeout \
--current_ip 192.168.1.10 \
--timeout 10
```
**Parameters**
- **`old_ip`** – Current IP address of the device.
- **`dhcp`** – Set to `true` to use DHCP or `false` for static IP.
- **`new_ip`** – Static IP address to assign when DHCP is disabled.
- **`current_ip`** – Current IP address of the device.
- **`enable_dhcp`** – Enable or disable DHCP for the `dhcp` or `force_ip` subcommand.
- **`new_ip`** – Static IP address to assign.
- **`mask`** – Subnet mask for the new IP.
- **`gateway`** – Gateway address for the new IP.
- **`force_ip_mac`** – Target MAC address for Force IP.
- **`timeout`** / **`dhcp_assign_ip_timeout`** – DHCP address assignment timeout in seconds.
> **Version notes**: `ip_config_tool` was integrated in wrapper version 2.8.0. The `LLA` switch was removed from this tool after wrapper version 2.8.1. `set_dhcp_timeout` is supported from wrapper version 2.8.5.
## Force IP Function
The **Force IP** feature allows you to assign a **static IP address** to a network camera, overriding DHCP settings. This is useful when multiple network cameras are connected, and you need each device to have a fixed IP for reliable communication.
> **Note:** The Force IP configuration **will be reset if the device is powered off or restarted**. You need to reapply the settings after reboot.
> **Supported Versions**: Wrapper version 2.6.3 and above.
**Parameters**
@@ -38,6 +38,16 @@ This document lists available presets, features, and recommended scenarios by pr
| Binned Sparse Default | Small dead zone, low power consumption, high frame rate |
| Unbinned Sparse Default | Balance quality and power consumption, improve low-reflection and semi-outdoor effects |
### Gemini 2L Dual IR Mode
Gemini 2L can switch to Dual IR mode with a YAML configuration:
```bash
ros2 launch orbbec_camera gemini2L.launch.py config_file_path:=gemini2L_dual_ir.yaml
```
The configuration file is located at `orbbec_camera/config/gemini2L_dual_ir.yaml`. It sets `depth_work_mode` to `In-scene Calibration`, disables the normal `ir` stream, and enables `left_ir` and `right_ir`.
## Gemini 305
| Defaults | Features |
@@ -4,7 +4,6 @@
This example node is designed for **synchronized capture and timestamp verification** across **four Orbbec cameras**.
It can be used to validate frame alignment accuracy under the multi-camera **Primary / Secondary Synced** mode.
> **Supported Versions**: Wrapper version 2.6.3 and above.
---
@@ -1,5 +1,52 @@
# Other Tools
## firmware_update_tool
`firmware_update_tool` upgrades device firmware or writes preset files from the ROS 2 command line. Before upgrading, make sure the device connection is stable. When multiple devices are connected, specify the serial number to avoid updating the wrong device.
Show help:
```bash
ros2 run orbbec_camera firmware_update_tool -- --help
```
Upgrade firmware for one device:
```bash
ros2 run orbbec_camera firmware_update_tool -- \
--serial_number <SN> \
--firmware_path /path/to/firmware.bin
```
Write a preset file:
```bash
ros2 run orbbec_camera firmware_update_tool -- \
--serial_number <SN> \
--preset_path /path/to/preset.bin
```
For batch updates, `--serial_number` accepts comma-separated values. Add `--continue_on_error` if later devices should still be processed after one device fails.
```bash
ros2 run orbbec_camera firmware_update_tool -- \
--serial_number SN1,SN2 \
--firmware_path /path/to/firmware.bin \
--continue_on_error
```
## Frame Timestamp CSV Logging
When `enable_frame_timestamp_csv` is enabled, the camera node records Color and Depth frame timestamp data to a CSV file. This is useful for frame synchronization, publish latency, and timestamp debugging.
```bash
ros2 launch orbbec_camera gemini_330_series.launch.py \
enable_frame_timestamp_csv:=true \
frame_timestamp_csv_file:=/tmp/frame_timestamp.csv
```
The CSV includes SDK frame index, hardware frame number, sensor timestamp, device/global/system timestamp, arrival timestamp, publish timestamp, inter-frame delta values, and SDK delay fields.
## Ob_benchmark tool
> The goal of this tool is to benchmark the performance of various OrbbecSDK_ROS2 camera configurations. The benchmark results depend on the camera and settings used.(Currently only works with ROS2 Humble)
@@ -49,4 +96,4 @@ ros2 run orbbec_camera ob_benchmark_node
The output data files will be stored in the ob_benchmark folder with filenames like `0.csv`, `1.csv`, ..., 19.csv. For example:
- `0.csv` contains data from the `ob_benchmark_0.launch.py` configuration.
- `1.csv` contains data from the `ob_benchmark_1.launch.py` configuration.
- `1.csv` contains data from the `ob_benchmark_1.launch.py` configuration.
@@ -181,10 +181,12 @@ OrbbecSDK ROS2 封装为 Orbbec 相机与 ROS 2 环境提供无缝集成。它
| **产品列表** | **推荐固件版本** | **启动文件** |
| ----------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------- |
| Gemini 305 | [1.0.30](https://doc.orbbec.com/documentation/Gemini%20305%20Series%20Documentation/Firmware%20Release%20of%20Gemini%20305) | gemini305.launch.py |
| Gemini 305G | [1.0.54](https://doc.orbbec.com/documentation/Gemini%20305%20Series%20Documentation/Firmware%20Release%20of%20Gemini%20305) | gemini305_g.launch.py |
| Astra Mini Pro | [2.0.03](https://github.com/orbbec/OrbbecFirmware/releases/tag/Astra-Mini-Pro) | astra.launch.py |
| Astra Mini S Pro | [2.0.03](https://github.com/orbbec/OrbbecFirmware/releases/tag/Astra-Mini-S-Pro) | astra.launch.py |
| Gemini 435Le | [1.3.6](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemin435Le-Firmware) | gemini435_le.launch.py |
| Gemini 330 series | [1.6.00](https://orbbec-debian-repos-aws.s3.amazonaws.com/product/Gemini330_Release_1.6.00.zip) | gemini_330_series.launch.py |
| Gemini 338/338L/338Le/338Lg/331L | 以发布包内推荐固件为准 | gemini_330_series.launch.py |
| Gemini 215 | [1.0.9](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemini215-Firmware) | gemini210.launch.py |
| Gemini 210 | [1.0.9](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemini210-Firmware) | gemini210.launch.py |
| Gemini 2 | [1.4.98](https://github.com/orbbec/OrbbecFirmware/releases/tag/Gemini2-Firmware) | gemini2.launch.py |
@@ -20,3 +20,7 @@ sudo udevadm control --reload-rules && sudo udevadm trigger
此步骤对于 Linux 用户是**必需的**。
`注意:` 如果不执行此脚本,由于权限问题,打开设备将会失败。您需要使用 sudo(管理员权限)运行示例程序。
### 新增设备规则
v2.8.x 版本的 udev 规则新增了 Gemini 305 系列和 Gemini 338 系列相关 PID,包括 Gemini 305 (`0840/0841`)、Gemini 305G (`0842`)、Gemini 301G (`0843`)、Gemini 338L/338Le/338Lg、Gemini 331L 等。升级 ROS 包后请重新安装 udev 规则并重新插拔设备,确保系统应用最新权限规则。
@@ -40,19 +40,14 @@
* 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`。
* **`color.image_raw.enable_pub_plugins`**
* 启用彩色图像传输插件。默认值:`["image_transport/compressed", "image_transport/raw", "image_transport/theora"]`。
> **支持版本**: wrapper version 2.6.3 及以上。
* **`depth.image_raw.enable_pub_plugins`**
* 启用深度图像传输插件。默认值:`["image_transport/compressedDepth", "image_transport/raw"]`。
> **支持版本**: wrapper version 2.6.3 及以上。
* **`left_ir.image_raw.enable_pub_plugins`**
* 启用左红外图像传输插件。默认值:`["image_transport/compressed", "image_transport/raw", "image_transport/theora"]`。
> **支持版本**: wrapper version 2.6.3 及以上。
* **`right_ir.image_raw.enable_pub_plugins`**
* 启用右红外图像传输插件。默认值:`["image_transport/compressed", "image_transport/raw", "image_transport/theora"]`。
> **支持版本**: wrapper version 2.6.3 及以上。
* **`point_cloud_decimation_filter_factor`**
* 点云下采样因子。范围:`1–8`,`1`表示不下采样,数值越大下采样倍数越大。
> **支持版本**: wrapper version 2.6.3 及以上。
### 传感器控制
@@ -71,18 +66,22 @@
* 设置彩色白平衡。
* **`color_ae_max_exposure`**
* 设置彩色自动曝光的最大曝光值。
* **`color_ae_max_gain`**
* 设置彩色自动曝光的最大增益。Gemini 2 固件 `1.5.04` 及以上、Gemini 2L 固件 `1.5.09` 及以上支持。范围通常为 `16–112`,具体范围以设备属性为准。
* **`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`。
* **`color_anti_flicker`**
* 启用彩色防闪烁功能。Gemini 330 系列固件 `1.7.13` 及以上支持;Gemini 305 系列固件 `1.0.54` 及以上支持。
* **`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`(自动)。
* 启用ISP彩色降噪功能。**范围:** `0–8`,`0`表示自动。支持 Gemini 330 系列、Gemini 2 固件 `1.5.04` 及以上、Gemini 2L 固件 `1.5.09` 及以上;该功能需要开启彩色自动曝光并依赖新固件支持。
#### 深度流
@@ -143,19 +142,14 @@
* 设置网络设备的IP地址和端口(通常为 `8090`)。
* **`force_ip_enable`**
* 启用强制IP功能。**默认值:** `false`
> **支持版本**: wrapper version 2.5.4 及以上。
* **`force_ip_mac`**
* 连接多个相机时的目标设备MAC地址(例如,`"54:14:FD:06:07:DA"`)。您可以使用 `list_devices_node` 查找每个设备的MAC。**默认值:** `""`
> **支持版本**: wrapper version 2.5.4 及以上。
* **`force_ip_address`**
* 要分配的静态IP地址。**默认值:** `192.168.1.10`
> **支持版本**: wrapper version 2.5.4 及以上。
* **`force_ip_subnet_mask`**
* 静态IP的子网掩码。**默认值:** `255.255.255.0`
> **支持版本**: wrapper version 2.5.4 及以上。
* **`force_ip_gateway`**
* 静态IP的网关地址。**默认值:** `192.168.1.1`
> **支持版本**: wrapper version 2.5.4 及以上。
> 用于 [网络相机](../5_advanced_guide/configuration/net_camera.md)。
@@ -165,27 +159,23 @@
* **`enable_ptp_config`**
* 启用PTP时间同步。仅适用于Gemini 335Le。需要 `enable_sync_host_time` 设置为 `false`。
> **支持模组**:Gemini 335Le。
> **支持版本**: wrapper version 2.3.4 及以上。
* **`preset_resolution_config`**
* 摄像头设备的预设分辨率配置。格式: "width,height,ir_decimation_factor,depth_decimation_factor". Example: "1280,720,4,4". 留空禁用。
> **支持模组**:Gemini 435Le。
> **支持版本**: wrapper version 2.6.3 及以上。
* **`ae_mode`**
* `colorbased`:自动曝光基于彩色流。`depthbased`:自动曝光基于深度流。**默认值:** `depthbased`
> **支持模组**:Gemini 305。
> **支持版本**: wrapper version 2.7.2 及以上。
* **`enalbe_sports_mode`**
* 是否开启运动模式。**默认值:** `false`
> **支持模组**:Gemini 305。
> **支持版本**: wrapper version 2.7.2 及以上。
* **`ae_reference_stream`**
* 设置自动曝光参考流。可选值:`depth`、`color`,默认值为 `depth`。
> **支持模组**:Gemini 305 系列。
> **兼容说明**:该参数替代旧参数 `ae_mode`,旧值 `depthbased/colorbased` 对应新值 `depth/color`。
* **`ae_strategy`**
* 设置自动曝光策略。可选值:`default`、`motion`,默认值为 `motion`。
> **支持模组**:Gemini 305 系列。
> **兼容说明**:该参数替代旧参数 `enable_sports_mode`。
* **`depth_downscale`** / **`left_ir_downscale`** /**`right_ir_downscale`**
* 设置下采样倍数。可用`ros2 run orbbec_camera list_camera_profile_mode_node`查看可设置分辨率。**默认值:** `1`
> **支持模组**:Gemini 305。
> **支持版本**: wrapper version 2.7.2 及以上。
* **`enable_false_positive_filter`**
* 启用鬼影滤波。可减少重影噪声。
> **支持模组**: DaBaiA/DaBaiAL/Gemini345/Gemini345Lg.
> **支持版本**: wrapper version 2.7.6 及以上;firmware version 1.9.03 及以上。
#### 视差
* **`disparity_to_depth_mode`**
@@ -215,13 +205,12 @@
* `DEPTH`:将彩色对齐到深度。
- **`intra_camera_sync_reference`**
- 设置相机内同步的参考点。适用于Gemini 330系列设备,当 `sync_mode` 设置为**软件**或**硬件触发**模式时。**选项:** `Start`、`Middle`、`End`。设置为空时,长基线设备默认End,短基线设备默认Middle。
> **支持版本**: wrapper version 2.6.3 及以上。
### 基础与通用参数
#### 固件与后端
* **`upgrade_firmware`**
* 输入参数为固件路径。
* 输入参数为固件路径。新版本建议使用独立工具 `firmware_update_tool` 进行固件升级。
* **`preset_firmware_path`**
* 输入参数为预设固件路径。如果输入多个路径,每个路径需要用 `,` 分隔,最多可输入3个固件路径。
* **`uvc_backend`**
@@ -249,16 +238,21 @@
* **`time_sync_period`**
* 相机时间与主机系统同步的间隔(秒)。
> **注意**:仅当 **`enable_sync_host_time = true`** 且 **`time_domain = device`** 时需要设置此参数。
> **支持版本**: wrapper version 2.6.3 及以上。
* **`enable_frame_sync`**
* 启用帧同步。
* **`enable_frame_timestamp_csv`**
* 启用帧时间戳CSV记录。主要用于分析彩色/深度帧时间戳、发布延迟和同步问题。
* **`frame_timestamp_csv_file`**
* 帧时间戳CSV文件路径。为空时使用默认路径;建议在排查时指定到可写目录。
#### 日志与诊断
* **`log_level`**
* SDK日志级别。默认为 `info`。可选值:`debug`、`info`、`warn`、`error`、`fatal`。
* SDK和ROS节点日志级别。默认只输出设备当前状态;需要更多调试信息时可设置为 `debug`。可选值:`none`、`debug`、`info`、`warn`、`error`、`fatal`。
* SDK日志和崩溃文件默认保存在 `~/.ros/Log`,ROS日志仍保存在 `~/.ros/log`。
* **`log_file_name`**
* 保存的SDK日志文件名。当`log_level`为`debug`时生效。
> **支持版本**: wrapper version 2.6.3 及以上。
* **`enable_firmware_log`**
* 启用固件日志。该开关与 `enable_heartbeat` 解耦,适合在需要抓取固件日志时单独开启。
* **`diagnostic_period`**
* 诊断周期(秒)。
* **`enable_heartbeat`**
@@ -311,6 +305,10 @@
* 启用深度空间快速滤波器。使用 `spatial_fast_filter_radius` 设置。
* **`enable_spatial_moderate_filter`**
* 启用深度空间中等滤波器。使用 `spatial_moderate_filter_diff_threshold` 等设置。
* **`enable_mgc_noise_removal_filter`**
* 启用 MGC 降噪滤波器,主要用于支持该滤波能力的 OpenNI 设备。
* **`enable_lut_noise_removal_filter`**
* 启用 LUT 降噪滤波器,主要用于支持该滤波能力的 OpenNI 设备。
---
@@ -128,7 +128,6 @@
```bash
ros2 service call /camera/get_laser_status orbbec_camera_msgs/srv/GetBool '{}'
```
> **支持版本**: wrapper version 2.6.3 及以上。
* `/camera/set_ldp_enable` & `/camera/get_ldp_status`
```bash
ros2 service call /camera/set_ldp_enable std_srvs/srv/SetBool '{data: true}'
@@ -217,6 +216,26 @@
# 设置 SpatialModerateFilter: [disp_diff, magnitude, radius]
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: SpatialModerateFilter, filter_enable: true, filter_param: [160,1,3]}'
# 设置 FalsePositiveFilter: []
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: FalsePositiveFilter, filter_enable: true, filter_param: []}'
# 设置 MgcNoiseRemovalFilter / LutNoiseRemovalFilter: []
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: MgcNoiseRemovalFilter, filter_enable: true, filter_param: []}'
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: LutNoiseRemovalFilter, filter_enable: true, filter_param: []}'
```
滤波状态会在服务调用后同步更新到 `/camera/depth_filter_status` 和 `/camera/depth_filters/status`。其中 `/camera/depth_filters/status` 使用结构化消息 `orbbec_camera_msgs/msg/DepthFiltersStatus`,包含每个滤波器的使能状态和参数。
### 视差配置
* `/camera/set_disparity_range_mode`
```bash
ros2 service call /camera/set_disparity_range_mode orbbec_camera_msgs/srv/SetInt32 '{data: 0}'
```
* `/camera/set_disparity_search_offset`
```bash
ros2 service call /camera/set_disparity_search_offset orbbec_camera_msgs/srv/SetInt32 '{data: 0}'
```
### 数据捕获与校准管理
@@ -238,7 +257,6 @@
ros2 service call /camera/read_customer_data orbbec_camera_msgs/srv/GetString '{}'
```
> **支持模组**:Gemini 435Le。
> **支持版本**: wrapper version 2.5.4 及以上。
* `/camera/set_user_calib_params` & `/camera/get_user_calib_params`
```bash
ros2 service call /camera/set_user_calib_params orbbec_camera_msgs/srv/SetUserCalibParams \
@@ -260,28 +278,27 @@
ros2 service call /camera/get_user_calib_params orbbec_camera_msgs/srv/GetUserCalibParams '{}'
```
> **支持模组**:Gemini 435Le。
> **支持版本**: wrapper version 2.5.4 及以上。
* `/camera/set_ae_mode`
* `/camera/set_ae_reference_stream`
```bash
# depthbased or colorbased
ros2 service call /camera/set_ae_mode orbbec_camera_msgs/srv/SetString "data: depthbased"
# depth or color
ros2 service call /camera/set_ae_reference_stream orbbec_camera_msgs/srv/SetString "{data: depth}"
```
> **支持模组**:Gemini 305。
> **支持版本**: wrapper version 2.7.2 及以上。
* `/camera/set_sports_mode`
> **支持模组**:Gemini 305 系列。
> **兼容说明**:替代旧服务 `/camera/set_ae_mode`,旧值 `depthbased/colorbased` 对应新值 `depth/color`。
* `/camera/set_ae_strategy`
```bash
ros2 service call /camera/set_sports_mode std_srvs/srv/SetBool "data: true"
# default or motion
ros2 service call /camera/set_ae_strategy orbbec_camera_msgs/srv/SetString "{data: motion}"
```
> **支持模组**:Gemini 305。
> **支持版本**: wrapper version 2.7.2 及以上。
> **支持模组**:Gemini 305 系列。
> **兼容说明**:替代旧服务 `/camera/set_sports_mode`。
### 点云下采样
* `/camera/set_point_cloud_decimation`
```bash
ros2 service call /camera/set_point_cloud_decimation orbbec_camera_msgs/srv/SetInt32 '{data: 8}'
```
> **支持版本**: wrapper version 2.6.3 及以上。
* `/camera/get_point_cloud_decimation`
```bash
ros2 service call /camera/get_point_cloud_decimation orbbec_camera_msgs/srv/GetInt32 '{}'
```
> **支持版本**: wrapper version 2.6.3 及以上。
@@ -21,7 +21,6 @@
* 深度流的相机校准数据和元数据。
* `/camera/depth/metadata`
* 来自深度流固件的底层元数据。
* `/camera/ir/image_raw`
* 红外(IR)流的原始图像数据。
* `/camera/ir/camera_info`
@@ -61,7 +60,11 @@
* 报告相机设备的当前状态。
* `/camera/depth_filter_status`
* 报告深度传感器后处理滤波器的状态。
* 报告深度传感器后处理滤波器的状态,类型为 `std_msgs/msg/String`,内容为 JSON 字符串。
* `/camera/depth_filters/status`
* 报告深度传感器后处理滤波器的结构化状态,类型为 `orbbec_camera_msgs/msg/DepthFiltersStatus`。
* 消息中包含 `DepthFilterState[] filters`,每个滤波器状态包含 `filter_name`、`enabled` 和 `DepthFilterParam[] params`。
* `/diagnostics`
* 发布相机节点的诊断信息。目前包括设备温度。
@@ -44,38 +44,80 @@ ros2 launch orbbec_camera femto_mega.launch.py enumerate_net_device:=false net_d
ros2 launch orbbec_camera multi_net_camera.launch.py
```
## set_device_ip 工具
可以使用 `list_devices_node` 查看当前连接设备。v2.8.x 之后,该工具会额外输出固件版本、网口设备本地网卡名和 IP 来源类型(`NONE`、`LLA`、`DHCP`、`PERSISTENT`)。
**`set_device_ip`** 可执行文件允许您直接从 ROS 2 配置网络相机的 IP 设置,包括在 DHCP 和静态 IP 之间切换,以及设置子网掩码和网关。这对于快速分配或更新 IP 地址而无需修改启动文件非常有用。
## ip_config_tool 工具
> **注意:**使用 `set_device_ip` 应用的 IP 设置是**永久性的**,如果设备断电或重启,**不会重置**。
> **支持版本**: wrapper version 2.6.3 及以上。
**`ip_config_tool`** 可执行文件允许您直接从 ROS 2 配置网络相机的 IP 设置,包括 DHCP、静态 IP、Force IP 和 DHCP 分配 IP 超时时间。这对于快速分配或更新 IP 地址而无需修改启动文件非常有用。
> **注意:** 通过 `dhcp` 或 `set_ip` 应用的配置会写入设备。`force_ip` 是临时强制 IP,设备断电或重启后需要重新应用。
> **兼容说明**:`set_device_ip` 仍作为兼容别名保留,实际调用 `ip_config_tool`。旧参数 `old_ip` 已更名为 `current_ip`。
**示例用法**
查看帮助:
```bash
ros2 run orbbec_camera set_device_ip --ros-args \
-p old_ip:=192.168.1.10 \
-p dhcp:=false \
-p new_ip:=192.168.1.11 \
-p mask:=255.255.255.0 \
-p gateway:=192.168.1.1
ros2 run orbbec_camera ip_config_tool -- --help
```
开启 DHCP:
```bash
ros2 run orbbec_camera ip_config_tool -- \
dhcp \
--current_ip 192.168.1.10 \
--enable_dhcp true
```
关闭 DHCP 并设置静态 IP:
```bash
ros2 run orbbec_camera ip_config_tool -- \
set_ip \
--current_ip 192.168.1.10 \
--new_ip 192.168.1.11 \
--mask 255.255.255.0 \
--gateway 192.168.1.1
```
通过 MAC 地址 Force IP:
```bash
ros2 run orbbec_camera ip_config_tool -- \
force_ip \
--force_ip_mac 54:14:FD:06:07:DA \
--new_ip 192.168.1.50 \
--mask 255.255.255.0 \
--gateway 192.168.1.1
```
设置 DHCP 分配 IP 超时时间:
```bash
ros2 run orbbec_camera ip_config_tool -- \
set_dhcp_timeout \
--current_ip 192.168.1.10 \
--timeout 10
```
**参数**
- **`old_ip`** – 设备的当前 IP 地址。
- **`dhcp`** – 设置为 `true` 使用 DHCP 或 `false` 使用静态 IP。
- **`new_ip`** – 禁用 DHCP 时要分配的静态 IP 地址。
- **`current_ip`** – 设备的当前 IP 地址。
- **`enable_dhcp`** – 在 `dhcp` 或 `force_ip` 子命令中设置是否启用 DHCP。
- **`new_ip`** – 要分配的静态 IP 地址。
- **`mask`** – 新 IP 的子网掩码。
- **`gateway`** – 新 IP 的网关地址。
- **`force_ip_mac`** – Force IP 目标设备 MAC 地址。
- **`timeout`** / **`dhcp_assign_ip_timeout`** – DHCP 分配 IP 超时时间,单位为秒。
> **版本说明**:`ip_config_tool` 在 wrapper version 2.8.0 集成;`LLA` 开关在 wrapper version 2.8.1 后已从该工具移除;`set_dhcp_timeout` 在 wrapper version 2.8.5 后支持。
## 强制 IP 功能
**强制 IP** 功能允许您为网络相机分配**静态 IP 地址**,覆盖 DHCP 设置。当连接多个网络相机时,这非常有用,您需要每个设备具有固定的 IP 以实现可靠的通信。
> **注意:**如果设备断电或重启,强制 IP 配置**将被重置**。您需要在重启后重新应用设置。
> **支持版本**: wrapper version 2.6.3 及以上。
**参数**
@@ -38,6 +38,16 @@
| Binned Sparse Default | 小盲区、低功耗、高帧率 |
| Unbinned Sparse Default | 平衡质量和功耗,提升低反和半室外效果 |
### Gemini 2L 双 IR 模式
Gemini 2L 支持通过 YAML 配置切换到双 IR 模式:
```bash
ros2 launch orbbec_camera gemini2L.launch.py config_file_path:=gemini2L_dual_ir.yaml
```
该配置文件位于 `orbbec_camera/config/gemini2L_dual_ir.yaml`,会将 `depth_work_mode` 设置为 `In-scene Calibration`,关闭普通 `ir` 流,并开启 `left_ir` 与 `right_ir`。
## Gemini 305
| 预设 | 特点 |
@@ -4,7 +4,6 @@
此示例节点用于 **4 台 Orbbec 相机** 的同步采集与时间戳验证。
它可用于验证多相机主从同步(Primary / Secondary Synced)模式下的帧对齐精度。
> **支持版本**: wrapper version 2.6.3 及以上。
---
## 使用教程
@@ -1,5 +1,52 @@
# 其他工具
## firmware_update_tool 工具
`firmware_update_tool` 用于从 ROS 2 命令行升级设备固件或烧录 preset 文件。升级前请确认设备连接稳定;多设备连接时建议指定序列号,避免升级到错误设备。
查看帮助:
```bash
ros2 run orbbec_camera firmware_update_tool -- --help
```
升级单个设备固件:
```bash
ros2 run orbbec_camera firmware_update_tool -- \
--serial_number <SN> \
--firmware_path /path/to/firmware.bin
```
烧录 preset 文件:
```bash
ros2 run orbbec_camera firmware_update_tool -- \
--serial_number <SN> \
--preset_path /path/to/preset.bin
```
批量升级多个设备时,`--serial_number` 支持逗号分隔;如希望某个设备失败后继续处理后续设备,可增加 `--continue_on_error`。
```bash
ros2 run orbbec_camera firmware_update_tool -- \
--serial_number SN1,SN2 \
--firmware_path /path/to/firmware.bin \
--continue_on_error
```
## 帧时间戳 CSV 记录
开启 `enable_frame_timestamp_csv` 后,相机节点会记录彩色和深度帧的时间戳数据到 CSV 文件,用于分析帧同步、发布延迟和时间戳异常。
```bash
ros2 launch orbbec_camera gemini_330_series.launch.py \
enable_frame_timestamp_csv:=true \
frame_timestamp_csv_file:=/tmp/frame_timestamp.csv
```
CSV 中包含 SDK frame index、hardware frame number、sensor timestamp、device/global/system timestamp、arrival timestamp、publish timestamp、相邻帧 delta 以及 SDK delay 等字段。
## Ob_benchmark 工具
> 此工具的目标是对各种 OrbbecSDK_ROS2 相机配置的性能进行基准测试。基准测试结果取决于使用的相机和设置。(目前仅适用于 ROS2 Humble)