6.3. Other Tools
6.3.1. 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.
roslaunch orbbec_camera gemini_330_series.launch \
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.
6.3.1.1. Field Description
The current CSV contains two sets of homogeneous fields with the prefixes color_ and depth_, for example color_sdk_frame_index and depth_sdk_frame_index. The definitions are identical for both sets; only the data source differs.
| Field suffix | Description | Unit / Notes |
|---|---|---|
_sdk_frame_index |
SDK frame index | frame->index() |
_hardware_frame_number |
Hardware frame number | frame->getMetadataValue(OB_FRAME_METADATA_TYPE_FRAME_NUMBER) |
_sensor_ts_sec |
Sensor timestamp | Seconds, usually the midpoint of the exposure time |
_sensor_ts_delta_us |
Delta between adjacent sensor timestamps | us |
_device_ts_sec |
Device clock timestamp | Seconds |
_device_ts_delta_us |
Delta between adjacent device timestamps | us |
_global_ts_sec |
Global timestamp | Seconds |
_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 |
6.3.1.2. Analysis Method
6.3.1.2.1. Hardware Frame Drop Detection
Check whether
_hardware_frame_numberis continuous.Plot
_sensor_ts_delta_usas 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.
6.3.1.2.2. SDK Frame Drop Detection
Check whether
_sdk_frame_indexis continuous.Plot
_device_ts_delta_us,_global_ts_delta_us, and_system_ts_delta_usto 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.
6.3.1.2.3. Latency Analysis
SDK latency: inspect
_sdk_delay_from_global_usand_sdk_delay_from_system_uswith line charts or scatter plots to observe the delay from the underlying timestamp to frame arrival at the ROS node.ROS latency: inspect
_arrival_to_publish_steady_usto measure the time from receiving a frame in the SDK callback to publishing the image on the ROS side.If you want a metric closer to actual processing time, prefer fields based on the steady clock.
6.3.1.2.4. Synchronization Note
This CSV is mainly intended for analyzing continuity and latency of a single Color or Depth stream. It cannot be used directly to evaluate synchronization between Color and Depth.