mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-04 20:17:47 +08:00
docs: update the documentation to version 2.8.8
This commit is contained in:
@@ -25,7 +25,7 @@ Here is the device support list of main branch (v1.x) and v2-main branch (v2.x):
|
||||
<td>recommended for new designs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="2" style="text-align: center; font-weight: bold;">Gemini 301</td>
|
||||
<td rowspan="3" style="text-align: center; font-weight: bold;">Gemini 301</td>
|
||||
<td>Gemini 305</td>
|
||||
<td>not supported</td>
|
||||
<td>recommended for new designs</td>
|
||||
@@ -35,6 +35,11 @@ Here is the device support list of main branch (v1.x) and v2-main branch (v2.x):
|
||||
<td>not supported</td>
|
||||
<td>recommended for new designs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 309g</td>
|
||||
<td>not supported</td>
|
||||
<td>recommended for new designs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="8" style="text-align: center; font-weight: bold;">Gemini 330</td>
|
||||
<td>Gemini 335</td>
|
||||
@@ -200,15 +205,20 @@ To learn how to obtain and upgrade the latest firmware, [please click here](../3
|
||||
<td>gemini435_le.launch.py</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="2" style="text-align: center; font-weight: bold;">Gemini 301</td>
|
||||
<td rowspan="3" style="text-align: center; font-weight: bold;">Gemini 301</td>
|
||||
<td>Gemini 305</td>
|
||||
<td><a href="https://doc.orbbec.com/documentation/Gemini%20305%20Documentation/Firmware%20Release%20of%20Gemini%20305">1.0.70</a></td>
|
||||
<td>gemini305.launch.py</td>
|
||||
<td>gemini_301_series.launch.py</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 305g</td>
|
||||
<td><a href="https://doc.orbbec.com/documentation/Gemini%20305%20Documentation/Firmware%20Release%20of%20Gemini%20305">1.0.70</a></td>
|
||||
<td>gemini305_g.launch.py</td>
|
||||
<td>gemini_301_series.launch.py</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gemini 309g</td>
|
||||
<td>-</td>
|
||||
<td>gemini_301_series.launch.py</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="8" style="text-align: center; font-weight: bold;">Gemini 330</td>
|
||||
@@ -309,8 +319,9 @@ To learn how to obtain and upgrade the latest firmware, [please click here](../3
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td style="text-align: center; font-weight: bold;">Gemini 430</td><td>Gemini 435Le</td><td>-</td></tr>
|
||||
<tr><td rowspan="2" style="text-align: center; font-weight: bold;">Gemini 301</td><td>Gemini 305</td><td>-</td></tr>
|
||||
<tr><td rowspan="3" style="text-align: center; font-weight: bold;">Gemini 301</td><td>Gemini 305</td><td>-</td></tr>
|
||||
<tr><td>Gemini 305g</td><td>-</td></tr>
|
||||
<tr><td>Gemini 309g</td><td>-</td></tr>
|
||||
<tr><td rowspan="8" style="text-align: center; font-weight: bold;">Gemini 330</td><td>Gemini 335</td><td>gemini_335_336.urdf.xacro</td></tr>
|
||||
<tr><td>Gemini 336</td><td>gemini_335_336.urdf.xacro</td></tr>
|
||||
<tr><td>Gemini 330</td><td>-</td></tr>
|
||||
@@ -319,7 +330,8 @@ To learn how to obtain and upgrade the latest firmware, [please click here](../3
|
||||
<tr><td>Gemini 330L</td><td>-</td></tr>
|
||||
<tr><td>Gemini 335Lg</td><td>gemini_335_Lg.urdf.xacro</td></tr>
|
||||
<tr><td>Gemini 335Le</td><td>gemini_335_Le.urdf.xacro</td></tr>
|
||||
<tr><td style="text-align: center; font-weight: bold;">Gemini 340</td><td>Gemini 345Lg</td><td>gemini_345_Lg.urdf.xacro</td></tr>
|
||||
<tr><td rowspan="2" style="text-align: center; font-weight: bold;">Gemini 340</td><td>Gemini 345</td><td>gemini_345.urdf.xacro</td></tr>
|
||||
<tr><td>Gemini 345Lg</td><td>gemini_345_Lg.urdf.xacro</td></tr>
|
||||
<tr><td rowspan="4" style="text-align: center; font-weight: bold;">Gemini 2</td><td>Gemini 2</td><td>gemini_2.urdf.xacro</td></tr>
|
||||
<tr><td>Gemini 2 L</td><td>gemini_2_L.urdf.xacro</td></tr>
|
||||
<tr><td>Gemini 215</td><td>-</td></tr>
|
||||
|
||||
@@ -15,7 +15,7 @@ The following are the launch parameters available:
|
||||
* **`device_num`**
|
||||
* The number of devices. This must be filled in if multiple cameras are required.
|
||||
* **`device_preset`**
|
||||
* The default value is `Default`. You can use the following command to view the configurable mode
|
||||
* The default value is determined by the launch file. You can use the following command to view the configurable modes; the tool also prints the preset list and preset version information.
|
||||
```bash
|
||||
ros2 run orbbec_camera list_camera_profile_mode_node
|
||||
```
|
||||
@@ -177,10 +177,11 @@ The following are the launch parameters available:
|
||||
> **Supported Modules**: Gemini 305
|
||||
* **`enable_false_positive_filter`**
|
||||
* Enable this option to reduce ghosting noise.
|
||||
> **Supported Modules**: DaBaiA / DaBaiAL / Gemini345 / Gemini345Lg
|
||||
> **Supported Modules**: DaBaiA / DaBaiAL / Gemini 330 series / Gemini345 / Gemini345Lg
|
||||
#### Disparity
|
||||
* **`disparity_to_depth_mode`**
|
||||
* `HW`: use hardware disparity to depth conversion. `SW`: use software disparity to depth conversion.
|
||||
* `HW`: use hardware disparity to depth conversion. `SW`: use software disparity to depth conversion. Use `disable` to turn it off.
|
||||
* This parameter is case-insensitive. Invalid values are reported and replaced with the default value.
|
||||
* **`disparity_range_mode`**, **`disparity_search_offset`**, **`disparity_offset_config`**
|
||||
* Parameters for disparity search offset. Used for [disparity search offset](../5_advanced_guide/configuration/disparity_search_offset.md).
|
||||
|
||||
@@ -199,11 +200,13 @@ The following are the launch parameters available:
|
||||
* Enable alignment of the depth frame to the color frame. This field is required when the `enable_colored_point_cloud` is set to `true`.
|
||||
- **`align_mode`**
|
||||
* The alignment mode to be used. Options are `HW` for hardware alignment and `SW` for software alignment.
|
||||
* This parameter is case-insensitive. Invalid values are reported and replaced with the default value.
|
||||
- **`align_target_stream`**
|
||||
* Set align target stream mode.
|
||||
* The possible values are `COLOR`, `DEPTH`.
|
||||
* `COLOR`: Align depth to color.
|
||||
* `DEPTH`: Align color to depth.
|
||||
* This parameter is case-insensitive. Hardware D2C only supports `COLOR` as the target stream; use `align_mode:=SW` if you need to align 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.
|
||||
|
||||
@@ -228,24 +231,27 @@ The following are the launch parameters available:
|
||||
* 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.
|
||||
* **`enable_[color|depth|ir|left_ir|right_ir]_undistortion`**
|
||||
* Enable the SDK undistortion filter for the selected image stream. Dual-IR devices use `enable_left_ir_undistortion` / `enable_right_ir_undistortion`; single-IR devices use `enable_ir_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`.
|
||||
* This parameter is case-insensitive. Invalid values are reported and replaced with the default value.
|
||||
* **`timestamp_clock_type`**
|
||||
* Set the SDK timestamp clock type. Optional values: `realtime`, `monotonic`. The default is `realtime`.
|
||||
* **`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_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.
|
||||
* **`enable_frame_drop_log`**
|
||||
* Enable frame drop logging. The log reports drops detected at both the SDK receive stage and the ROS publish stage.
|
||||
* **`frame_timestamp_csv_file`**
|
||||
* Path of the frame timestamp CSV file. If empty, the default path is used; specify a writable path when debugging.
|
||||
* CSV output path for frame timestamp statistics. If empty, no CSV file is written; set a path such as `/tmp/frame_timestamp.csv` to save CSV data.
|
||||
|
||||
#### Logging & Diagnostics
|
||||
* **`log_level`**
|
||||
@@ -263,8 +269,13 @@ The following are the launch parameters available:
|
||||
#### 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.
|
||||
* **`load_config_json_file_path`**
|
||||
* SDK JSON configuration import path. When set, the node imports the JSON configuration during initialization. For Gemini 330 series, use `gemini_330_series_sdk_json.launch.py` as the dedicated SDK JSON launch file.
|
||||
* **`export_config_json_file_path`**
|
||||
* SDK JSON configuration export path. When set, the node exports the current device configuration to JSON after initialization. You can also export at runtime with the `/camera/export_config_json` service.
|
||||
* **`frame_aggregate_mode`**
|
||||
* Set frame aggregate output mode. Optional values: `full_frame`, `color_frame`, `ANY`, `disable`.
|
||||
* This parameter is case-insensitive. Invalid values are reported and replaced with the default value.
|
||||
* **`enable_d2c_viewer`**
|
||||
* Publishes the D2C overlay image (for testing only).
|
||||
|
||||
|
||||
@@ -161,6 +161,10 @@
|
||||
```bash
|
||||
ros2 service call /camera/get_sdk_version orbbec_camera_msgs/srv/GetString
|
||||
```
|
||||
* `/camera/export_config_json`
|
||||
```bash
|
||||
ros2 service call /camera/export_config_json orbbec_camera_msgs/srv/SetString "{data: '/tmp/orbbec_camera_config.json'}"
|
||||
```
|
||||
* `/camera/reboot_device`
|
||||
```bash
|
||||
ros2 service call /camera/reboot_device std_srvs/srv/Empty '{}'
|
||||
@@ -191,7 +195,9 @@
|
||||
|
||||
* `/camera/set_filter`
|
||||
```bash
|
||||
# filter_name is the filter name, filter_enable indicates whether the filter is enabled or disabled, and filter_param represents the filter parameters.
|
||||
# filter_name is the filter name, and filter_enable indicates whether the filter is enabled.
|
||||
# filter_param is the legacy positional parameter form; filter_config is the new named parameter form.
|
||||
# filter_param and filter_config cannot be used at the same time.
|
||||
|
||||
# Set DecimationFilter: [scale]
|
||||
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter '{filter_name: DecimationFilter, filter_enable: false, filter_param: [5]}'
|
||||
@@ -222,6 +228,11 @@
|
||||
# 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: []}'
|
||||
|
||||
# Tune filters with named parameters
|
||||
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter "{filter_name: NoiseRemovalFilter, filter_enable: true, filter_config: [{name: min_diff, value: '256'}, {name: max_size, value: '80'}]}"
|
||||
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter "{filter_name: HardwareNoiseRemovalFilter, filter_enable: true, filter_config: [{name: threshold, value: '0.2'}]}"
|
||||
ros2 service call /camera/set_filter orbbec_camera_msgs/srv/SetFilter "{filter_name: SpatialAdvancedFilter, filter_enable: true, filter_config: [{name: alpha, value: '0.5'}, {name: disp_diff, value: '160'}, {name: magnitude, value: '1'}, {name: radius, value: '8'}]}"
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
@@ -9,7 +9,9 @@ Topics are organized by stream and function. By default, all topics are publishe
|
||||
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.
|
||||
* Raw image data from the color stream. Subscribe to this topic for non-MJPG color formats such as RGB or YUYV.
|
||||
* `/camera/color/image_raw/compressed`
|
||||
* Compressed image data from the MJPG color stream. When `color_format:=MJPG` is used, subscribe to this topic to avoid extra decoding in the ROS wrapper and reduce CPU usage.
|
||||
* `/camera/color/camera_info`
|
||||
* Camera calibration data and metadata for the color stream.
|
||||
* `/camera/color/metadata`
|
||||
|
||||
@@ -32,3 +32,12 @@ ros2 run orbbec_camera firmware_update_tool -- \
|
||||
--firmware_path /path/to/firmware.bin \
|
||||
--continue_on_error
|
||||
```
|
||||
|
||||
To enable SDK file logs and also attempt to enable firmware logs, add `--sdk_log_level`. Optional values are `debug`, `info`, `warn`, `error`, `fatal`, and `off`; the default is `off`.
|
||||
|
||||
```bash
|
||||
ros2 run orbbec_camera firmware_update_tool -- \
|
||||
--serial_number <SN> \
|
||||
--preset_path /path/to/preset.bin \
|
||||
--sdk_log_level debug
|
||||
```
|
||||
|
||||
@@ -44,13 +44,19 @@ For [multi_net_camera.launch.py](https://github.com/orbbec/OrbbecSDK_ROS2/blob/v
|
||||
ros2 launch orbbec_camera multi_net_camera.launch.py
|
||||
```
|
||||
|
||||
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`).
|
||||
Use `list_devices_node` to inspect connected devices. Since v2.8.x, this tool also prints firmware version, preset list, preset version, local network interface name for Ethernet devices, and IP source type (`NONE`, `LLA`, `DHCP`, `PERSISTENT`). If one device fails during enumeration, the tool continues enumerating the remaining devices.
|
||||
|
||||
To enable SDK and firmware logs, add `--sdk_log_level debug`:
|
||||
|
||||
```bash
|
||||
ros2 run orbbec_camera list_devices_node -- --sdk_log_level debug
|
||||
```
|
||||
|
||||
## ip_config_tool Utility
|
||||
|
||||
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.
|
||||
> **Note:** DHCP / persistent IP configuration applied with `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**
|
||||
@@ -65,17 +71,33 @@ Enable DHCP:
|
||||
|
||||
```bash
|
||||
ros2 run orbbec_camera ip_config_tool -- \
|
||||
dhcp \
|
||||
set_ip \
|
||||
--current_ip 192.168.1.10 \
|
||||
--enable_dhcp true
|
||||
--enable_dhcp true \
|
||||
--enable_persistent_ip false
|
||||
```
|
||||
|
||||
Disable DHCP and set a static IP:
|
||||
Disable DHCP and set a persistent IP:
|
||||
|
||||
```bash
|
||||
ros2 run orbbec_camera ip_config_tool -- \
|
||||
set_ip \
|
||||
--current_ip 192.168.1.10 \
|
||||
--enable_dhcp false \
|
||||
--enable_persistent_ip true \
|
||||
--new_ip 192.168.1.11 \
|
||||
--mask 255.255.255.0 \
|
||||
--gateway 192.168.1.1
|
||||
```
|
||||
|
||||
Enable both DHCP and persistent IP (requires a device/firmware that supports IP config V2):
|
||||
|
||||
```bash
|
||||
ros2 run orbbec_camera ip_config_tool -- \
|
||||
set_ip \
|
||||
--current_ip 192.168.1.10 \
|
||||
--enable_dhcp true \
|
||||
--enable_persistent_ip true \
|
||||
--new_ip 192.168.1.11 \
|
||||
--mask 255.255.255.0 \
|
||||
--gateway 192.168.1.1
|
||||
@@ -104,12 +126,14 @@ set_dhcp_timeout \
|
||||
**Parameters**
|
||||
|
||||
- **`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.
|
||||
- **`enable_dhcp`** – Enable or disable DHCP for the `set_ip` or `force_ip` subcommand.
|
||||
- **`enable_persistent_ip`** – Enable or disable persistent IP for the `set_ip` subcommand.
|
||||
- **`new_ip`** – Persistent IP or Force 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.
|
||||
- **`sdk_log_level`** – SDK file log level. Optional values: `debug`, `info`, `warn`, `error`, `fatal`, `off`. Any non-`off` value also attempts to enable firmware logs.
|
||||
|
||||
> **Version notes**: The `LLA` switch was supported only by Gemini 335Le firmware `1.7.05` and above and Gemini 435Le firmware `1.3.17` and above.
|
||||
|
||||
|
||||
@@ -14,6 +14,14 @@ To achieve the lowest possible CPU usage in OrbbecSDK_ROS2, it is recommended to
|
||||
| `color_format` | `RGB` | Lower CPU usage than `MJPG` |
|
||||
| `filter` | Only `hardware_noise_removal_filter` | Other filters significantly increase CPU usage |
|
||||
|
||||
### Color Stream Format and Subscription
|
||||
|
||||
v2.8.8 optimizes the color image publishing path:
|
||||
|
||||
- For non-MJPG color formats such as RGB or YUYV, subscribe to `/camera/color/image_raw`.
|
||||
- When `color_format:=MJPG` is used, subscribe to `/camera/color/image_raw/compressed`. The ROS wrapper publishes the compressed image directly, avoiding extra host-side decoding and significantly reducing CPU usage for MJPG streams.
|
||||
- If you subscribe to `/camera/color/image_raw`, MJPG still needs to be decoded on the host, which increases CPU usage.
|
||||
|
||||
### Launch Files Used for Testing
|
||||
|
||||
* `gemini_330_series_lower_cpu_usage.launch.py`
|
||||
@@ -93,4 +101,3 @@ Based on the test results, using only the `hardware_noise_removal_filter` result
|
||||
| `depth_registration` | `false` or `true` with `align_mode=HW` | Software alignment consumes more CPU |
|
||||
| `enable_point_cloud` | `false` | Disabling point cloud reduces CPU usage |
|
||||
| `enable_colored_point_cloud` | `false` | Disabling colored point cloud reduces CPU usage |
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
# Other Tools
|
||||
|
||||
## Frame Timestamp CSV Logging
|
||||
## Frame Drop Logging and 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.
|
||||
When `enable_frame_drop_log` is enabled, the camera node prints Color and Depth frame drop statistics to the log. The log helps distinguish drops detected at the SDK receive stage from drops detected at the ROS publish stage. When `frame_timestamp_csv_file` is set, the camera node also records Color and Depth frame timestamp data to a CSV file for frame continuity, publish latency, and timestamp debugging.
|
||||
|
||||
```bash
|
||||
ros2 launch orbbec_camera gemini_330_series.launch.py \
|
||||
enable_frame_timestamp_csv:=true \
|
||||
enable_frame_drop_log:=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.
|
||||
The CSV includes SDK frame index, hardware frame number, sensor timestamp, device/global/system timestamp, steady arrival/publish delta values, ROS publish latency, and SDK delay fields.
|
||||
|
||||
### Field Description
|
||||
|
||||
@@ -28,15 +28,8 @@ The current CSV contains two sets of homogeneous fields with the prefixes `color
|
||||
| `_global_ts_delta_us` | Delta between adjacent global timestamps | us |
|
||||
| `_system_ts_sec` | SDK system timestamp | Seconds |
|
||||
| `_system_ts_delta_us` | Delta between adjacent SDK system timestamps | us |
|
||||
| `_arrival_system_sec` | System time sampled when the frame arrives at the node | Seconds |
|
||||
| `_arrival_system_delta_us` | Delta between adjacent arrival system timestamps | us |
|
||||
| `_arrival_steady_sec` | Host steady time sampled when the frame arrives at the node | Seconds |
|
||||
| `_arrival_steady_delta_us` | Delta between adjacent arrival steady timestamps | us |
|
||||
| `_publish_system_sec` | System time sampled before publishing the image | Seconds |
|
||||
| `_publish_system_delta_us` | Delta between adjacent publish system timestamps | us |
|
||||
| `_publish_steady_sec` | Host steady time sampled before publishing the image | Seconds |
|
||||
| `_publish_steady_delta_us` | Delta between adjacent publish steady timestamps | us |
|
||||
| `_arrival_to_publish_system_us` | Time from frame arrival to publish on the ROS side (system) | `publish_system - arrival_system` |
|
||||
| `_arrival_to_publish_steady_us` | Time from frame arrival to publish on the ROS side (steady) | `publish_steady - arrival_steady` |
|
||||
| `_sdk_delay_from_global_us` | SDK publish delay referenced to global time | `arrival_system - global_ts` |
|
||||
| `_sdk_delay_from_system_us` | SDK publish delay referenced to system time | `arrival_system - sdk_system_ts` |
|
||||
@@ -49,11 +42,11 @@ The current CSV contains two sets of homogeneous fields with the prefixes `color
|
||||
- Plot `_sensor_ts_delta_us` as a line chart or scatter plot and look for obvious jumps.
|
||||
- For example, at 30 fps, the interval between adjacent frames should usually be close to 33333 us.
|
||||
|
||||
#### SDK Frame Drop Detection
|
||||
#### SDK / ROS Frame Drop Detection
|
||||
|
||||
- Check whether `_sdk_frame_index` is continuous.
|
||||
- Plot `_device_ts_delta_us`, `_global_ts_delta_us`, and `_system_ts_delta_us` to see whether any of them show abnormal jumps.
|
||||
- If the SDK frame index or the inter-frame deltas from multiple clock sources become abnormal, this can help locate frame loss at the SDK layer.
|
||||
- When `enable_frame_drop_log` is enabled, `stage=SDK_RECEIVE` means drops were detected at the SDK receive stage, and `stage=ROS_PUBLISH` means drops were detected at the ROS publish stage.
|
||||
|
||||
#### Latency Analysis
|
||||
|
||||
|
||||
Reference in New Issue
Block a user