This commit is contained in:
winf
2025-09-15 06:27:21 +00:00
commit ad1cb49f7d
188 changed files with 24357 additions and 0 deletions
@@ -0,0 +1,12 @@
Application Guide
======================================================
This chapter introduces application development with the SDK, including launch parameter configuration, ROS2 services, and topics usage.
.. toctree::
:maxdepth: 2
launch_parameters.md
services.md
topics.md
@@ -0,0 +1,264 @@
# Launch parameters
> If you are not sure how to set the parameters, you can connect the orbbec camera and open the [OrbbecViewer](https://github.com/orbbec/OrbbecSDK/releases).
The following are the launch parameters available:
### Core & Stream Configuration
* **`camera_name`**
* Start the node namespace.
* **`depth_registration`**
* Enable alignment of the depth frame to the color frame. This field is required when the `enable_colored_point_cloud` is set to `true`.
* **`serial_number`**
* The serial number of the camera. This is required when multiple cameras are used.
* **`usb_port`**
* The USB port of the camera. This is required when multiple cameras are used.
* **`device_num`**
* The number of devices. This must be filled in if multiple cameras are required.
* **`[color|depth|left_ir|right_ir|ir]_[width|height|fps|format]`**
* The resolution and frame rate of the sensor stream.
* **`[color|depth|left_ir|right_ir|ir]_rotation`**
* Set stream image rotation.
* The possible values are `0`, `90`, `180`, `270`.
* **`[color|depth|left_ir|right_ir|ir]_flip`**
* Enable the stream image flip.
* **`[color|depth|left_ir|right_ir|ir]_mirror`**
* Enable the stream image mirror.
* **`enable_point_cloud`**
* Enable the point cloud.
* **`enable_colored_point_cloud`**
* Enable the RGB point cloud.
* **`cloud_frame_id`**
* Modify the `frame_id` name within the ros message.
* **`ordered_pc`**
* Enable filtering of invalid point clouds.
* **`align_mode`**
* The alignment mode to be used. Options are `HW` for hardware alignment and `SW` for software alignment.
* **`align_target_stream`**
* Set align target stream mode.
* The possible values are `COLOR`, `DEPTH`.
* `COLOR`: Align depth to color.
* `DEPTH`: Align color to depth.
* **`point_cloud_qos`, `[stream]_qos`, `[stream]_camera_info_qos`**
* 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.
### Sensor Controls
#### Color Stream
* **`enable_color_auto_exposure`**
* Enable the Color auto exposure.
* **`enable_color_auto_exposure_priority`**
* Enable the Color auto exposure priority.
* **`color_exposure`**
* Set the Color exposure.
* **`color_gain`**
* Set the Color gain.
* **`enable_color_auto_white_balance`**
* Enable the Color auto white balance.
* **`color_white_balance`**
* Set the Color white balance.
* **`color_ae_max_exposure`**
* Set the maximum exposure value for Color auto exposure.
* **`color_brightness`**, **`color_sharpness`**, **`color_gamma`**, **`color_saturation`**, **`color_contrast`**, **`color_hue`**
* Set the Color brightness, sharpness, gamma, saturation, contrast, and hue.
* **`enable_color_backlight_compensation`**
* Enable the Color backlight compensation.
* **`color_powerline_freq`**
* Set the power line freq. The possible values are `disable`, `50hz`, `60hz`, `auto`.
* **`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.
#### Depth Stream
* **`enable_depth_auto_exposure_priority`**
* Enable the Depth auto exposure priority.
* **`mean_intensity_set_point`**
* Set the target mean intensity of the Depth image. For example: `mean_intensity_set_point:=100`.
> **Note:** This replaces the deprecated `depth_brightness`, which is still supported for backward compatibility.
* **`enable_depth_scale`**
* Enable the depth scale.
* **`depth_precision`**
* The depth precision should be in the format `1mm`. The default value is `1mm`.
* **`depth_ae_roi_[left|right|top|bottom]`**
* Set Depth auto exposure ROI.
#### IR Stream
* **`enable_ir_auto_exposure`**
* Enable the IR auto exposure.
* **`ir_exposure`** / **`ir_gain`**
* Set the IR exposure and gain.
* **`ir_ae_max_exposure`**
* Set the maximum exposure value for IR auto exposure.
* **`ir_brightness`**
* Set the IR brightness.
#### Laser / LDP
* **`enable_laser`**
* Enable the laser. The default value is `true`.
* **`laser_energy_level`**
* Set the laser energy level.
* **`enable_ldp`** / **`ldp_power_level`**
* Enable the LDP and set its power level.
### Device, Sync & Advanced Features
#### Multi-Camera Synchronization
* **`sync_mode`**
* Set sync mode. The default value is `standalone`.
* **`depth_delay_us`** / **`color_delay_us`**
* The delay time (microseconds) of the depth/color image capture after receiving the capture command or trigger signal.
* **`trigger2image_delay_us`**
* The delay time (microseconds) of the image capture after receiving the capture command or trigger signal. Us
* **`trigger_out_delay_us`**
* The delay time (microseconds) of the trigger signal output after receiving the capture command or trigger signal.
* **`trigger_out_enabled`**
* Enable the trigger out signal.
* **`software_trigger_enabled`** / **`software_trigger_period`**
* Enable the software trigger out signal / set the software trigger period in ms.
* **`frames_per_trigger`**
* The frame number of each stream after each trigger in triggering mode.
> Used for [multi camera synced](../5_advanced_guide/multi_camera_synced.md).
#### Network Cameras
* **`enumerate_net_device`**
* Enable automatically enumerate network devices.
* **`net_device_ip`** / **`net_device_port`**
* Set net device's IP address and port (Usually `8090`).
> Used for [net camera](../5_advanced_guide/net_camera.md).
#### Device-Specific
* **`device_preset`**
* The default value is `Default`. Only the G330 series is supported. For more information, refer to the [G330 documentation](https://www.orbbec.com/docs/g330-use-depth-presets/). The value should be one of the preset names listed [in the table](../5_advanced_guide/predefined_presets.md).
* **`enable_gmsl_trigger`** / **`gmsl_trigger_fps`**
* Enable the gmsl trigger out signal / set gmsl trigger fps. Used for [gmsl camera](../5_advanced_guide/gmsl_camera.md).
#### Disparity
* **`disparity_to_depth_mode`**
* `HW`: use hardware disparity to depth conversion. `SW`: use software disparity to depth conversion.
* **`disparity_range_mode`**, **`disparity_search_offset`**, **`disparity_offset_config`**
* Parameters for disparity search offset. Used for [disparity search offset](../5_advanced_guide/disparity_search_offset.md).
#### Interleave AE Mode
* **`interleave_ae_mode`**
* Set `laser` or `hdr` interleave.
* **`interleave_frame_enable`**, **`interleave_skip_enable`**, **`interleave_skip_index`**
* Parameters to control interleave frame mode.
* **`[hdr|laser]_index[0|1]_[...]`**
* In interleave frame mode, set the 0th and 1st frame parameters of hdr or laser interleaving frames.
* *All interleave parameters are used for [interleave ae mode](../5_advanced_guide/interleave_ae_mode.md).*
### Basic & General Parameters
#### Firmware & Backend
* **`upgrade_firmware`**
* The input parameter is the firmware path.
* **`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`**
* Optional values: `v4l2`, `libuvc`.
* **`connection_delay`**
* The delay time in milliseconds for reopening the device. Some devices, such as Astra mini, require a longer time to initialize and reopening the device immediately can cause firmware crashes when hot plugging.
* **`retry_on_usb3_detection_failure`**
* If the camera is connected to a USB 2.0 port and is not detected, the system will attempt to reset the camera up to three times. It is recommended to set this parameter to `false` when using a USB 2.0 connection to avoid unnecessary resets.
#### TF, Extrinsics & Calibration
* **`publish_tf`** / **`tf_publish_rate`**
* Enable the TF publish and set its publication rate.
* **`enable_publish_extrinsic`**
* Enable the extrinsics publish.
* **`ir_info_url`** / **`color_info_url`**
* Set URL of the IR/color camera info.
* **`enable_color_undistortion`**
* Enable the Color undistortion.
#### Time Synchronization
* **`enable_sync_host_time`**
* Enable synchronization of the host time with the camera time. The default value is `true`. If using global time, set to `false`.
* **`time_domain`**
* Select timestamp type: `device`, `global`, and `system`.
* **`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`**.
* **`enable_ptp_config`**
* Enable PTP time synchronization. Only for Gemini 335Le. Requires `enable_sync_host_time` to be `false`.
* **`enable_frame_sync`**
* Enable the frame synchronization.
#### Logging & Diagnostics
* **`log_level`**
* SDK log level. Default is `info`. Optional values: `debug`, `info`, `warn`, `error`, `fatal`.
* **`diagnostic_period`**
* Diagnostic period in seconds.
* **`enable_heartbeat`**
* Enable the heartbeat function. Default is `false`. If `true`, the camera node will send heartbeat signals to the firmware.
#### Miscellaneous
* **`config_file_path`**
* The path to the YAML configuration file. Default is `""`. If not specified, default parameters from the launch file will be used.
* **`frame_aggregate_mode`**
* Set frame aggregate output mode. Optional values: `full_frame`, `color_frame`, `ANY`, `disable`.
* **`enable_d2c_viewer`**
* Publishes the D2C overlay image (for testing only).
### IMU
* **`enable_accel`** / **`enable_gyro`**
* Enable the Accelerometer/gyroscope and output its info topic data.
* **`enable_sync_output_accel_gyro`**
* Enable the sync `accel_gyro`, and output IMU topic real-time data.
* **`accel_rate`** / **`gyro_rate`**
* The frequency of the accelerometer/gyroscope. Values range from `1.5625hz` to `32khz`.
* **`accel_range`** / **`gyro_range`**
* The range of the accelerometer (`2g`, `4g`, `8g`, `16g`) and gyroscope (`16dps` to `2000dps`).
* **`enable_accel_data_correction`** / **`enable_gyro_data_correction`**
* Enable data correction for the accelerometer/gyroscope.
* **`linear_accel_cov`** / **`angular_vel_cov`**
* Covariance of the linear acceleration and angular velocity.
### Depth Filters
* **`enable_decimation_filter`**
* Enable the Depth decimation filter. Set with `decimation_filter_scale`.
* **`enable_hdr_merge`**
* Enable the Depth hdr merge filter. Set with `hdr_merge_exposure_1`, etc.
* **`enable_sequence_id_filter`**
* Enable the Depth sequence id filter. Set with `sequence_id_filter_id`.
* **`enable_threshold_filter`**
* Enable the Depth threshold filter. Set with `threshold_filter_max`, `threshold_filter_min`.
* **`enable_hardware_noise_removal_filter`**
* Enable the Depth hardware noise removal filter.
* **`enable_noise_removal_filter`**
* Enable the Depth software noise removal filter. Set with `noise_removal_filter_min_diff`, etc.
* **`enable_spatial_filter`**
* Enable the Depth spatial filter. Set with `spatial_filter_alpha`, etc.
* **`enable_temporal_filter`**
* Enable the Depth temporal filter. Set with `temporal_filter_diff_threshold`, etc.
* **`enable_hole_filling_filter`**
* Enable the Depth hole filling filter. Set with `hole_filling_filter_mode`.
* **`enable_spatial_fast_filter`**
* 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.
---
> **_IMPORTANT_**: Please carefully read the instructions regarding software filtering settings at [this link](https://www.orbbec.com/docs/g330-use-depth-post-processing-blocks/). If you are uncertain, do not modify these settings.
@@ -0,0 +1,209 @@
# All available services for camera control
> **Note:** Services related to a specific stream (e.g., `/camera/set_color_*`) are only available if that stream is enabled in the launch file (e.g., `enable_color:=true`).
### Stream Control
#### Color Stream
* `/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: [Left, Right, Top, Bottom]
ros2 service call /camera/set_color_ae_roi orbbec_camera_msgs/srv/SetArrays '{data_param: [0,1279,0,719]}'
```
#### Depth Stream
* `/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: [Left, Right, Top, Bottom]
ros2 service call /camera/set_depth_ae_roi orbbec_camera_msgs/srv/SetArrays '{data_param: [0,847,0,479]}'
```
#### IR Stream
* `/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}'
```
#### All Streams
* `/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}'
```
### Sensor & Emitter Control
* `/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}'
```
### Device Information & Management
* `/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 '{}'
```
### Synchronization & Triggering
* `/camera/send_software_trigger`
```bash
ros2 service call /camera/send_software_trigger std_srvs/srv/SetBool '{data: true}'
```* `/camera/set_reset_timestamp`
```bash
# Only available when time_domain param is set to device
ros2 service call /camera/set_reset_timestamp std_srvs/srv/SetBool '{data: true}'
```
* `/camera/set_sync_interleaverlaser`
```bash
# Only available if interleave_ae_mode is 'laser' and interleave_frame_enable is true
ros2 service call /camera/set_sync_interleaverlaser orbbec_camera_msgs/srv/SetInt32 '{data: 0}'
```
### Depth Filter Configuration
* `/camera/set_filter`
```bash
# Set DecimationFilter
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: DecimationFilter, filter_enable: false, filter_param: [5]}'
# Set 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]}'
```
### Data Capture & Calibration Management
* `/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 '{}'
```
> **Note**: The following services are currently supported only on the 435Le module. Each service can store only one set of data or string at a time.
* `/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 '{}'
```
@@ -0,0 +1,67 @@
# Available Topics
Topics are organized by stream and function. By default, all topics are published under the `/camera` namespace, which can be changed with the `camera_name` launch parameter.
> **Note:** Topics for a specific stream (e.g., `/camera/color/...`) are only published if their corresponding launch parameter (e.g., `enable_color`) is set to `true`.
### Image Streams
These topics provide the raw image data and corresponding calibration information for each enabled camera stream. The pattern is consistent for `color`, `depth`, `ir`, `left_ir`, and `right_ir` streams.
* `/camera/color/image_raw`
* Raw image data from the color stream.
* `/camera/color/camera_info`
* Camera calibration data and metadata for the color stream.
* `/camera/color/metadata`
* Low-level metadata from the color stream firmware.
* `/camera/depth/image_raw`
* Raw image data from the depth stream.
* `/camera/depth/camera_info`
* Camera calibration data and metadata for the depth stream.
* `/camera/depth/metadata`
* Low-level metadata from the depth stream firmware.
* `/camera/ir/image_raw`
* Raw image data from the infrared (IR) stream.
* `/camera/ir/camera_info`
* Camera calibration data and metadata for the IR stream.
* `/camera/ir/metadata`
* Low-level metadata from the IR stream firmware.
### Point Cloud Topics
* `/camera/depth/points`
* Point cloud data generated from the depth stream.
* **Condition:** Published only when `enable_point_cloud` is `true`.
* `/camera/depth_registered/points`
* Colored point cloud data, where the depth points are registered to the color image frame.
* **Condition:** Published only when `enable_colored_point_cloud` is `true`.
### IMU Topics
The Inertial Measurement Unit (IMU) topics provide accelerometer and gyroscope data. Their behavior depends on the synchronization setting.
* `/camera/accel/sample`
* Individual accelerometer data stream.
* **Condition:** Published when `enable_accel` is `true` AND `enable_sync_output_accel_gyro` is `false`.
* `/camera/gyro/sample`
* Individual gyroscope data stream.
* **Condition:** Published when `enable_gyro` is `true` AND `enable_sync_output_accel_gyro` is `false`.
* `/camera/gyro_accel/sample`
* Synchronized data stream containing both accelerometer and gyroscope data in a single message.
* **Condition:** Published when `enable_sync_output_accel_gyro` is `true`.
### Device Status & Diagnostics
* `/camera/device_status`
* Reports the current status of the camera device.
* `/camera/depth_filter_status`
* Reports the status of the depth sensor's post-processing filters.
* `/diagnostics`
* Publishes diagnostic information about the camera node. Currently, this includes the device temperature.