fix frame timestamps to use a comparable epoch

steady_clock's epoch is unspecified and typically counts from process start or
boot, so the published timestamp_ns could not be compared against another
node's timestamps, wall clock or a recording — and it recorded when the node
processed the frame rather than when the camera captured it.

Publish two keys on every output instead: device_timestamp_ns from
sl::Camera::getTimestamp(TIME_REFERENCE::IMAGE), and host_timestamp_ns from
system_clock. Both are Unix-epoch nanoseconds, set as dora timestamp
parameters. The SDK clock source is pinned to SYSTEM_CLOCK at construction,
since it is process-wide and decides the epoch of the device value.

Both are kept because the wall clock can step when NTP synchronises after boot
on a Jetson, while the device timestamp is what two nodes reading the same
frame can agree on.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y7g2cBJ5e3r15ZbJ9WZn8c
This commit is contained in:
cesar
2026-09-08 09:15:47 -03:00
co-authored by Claude Opus 5
parent 126dbf4f32
commit dc7f9f5501
5 changed files with 70 additions and 21 deletions
+2
View File
@@ -1,6 +1,7 @@
#pragma once
#include <sl/Camera.hpp>
#include <cstdint>
#include <string>
#include <vector>
@@ -35,6 +36,7 @@ public:
void warmup();
bool grab();
Calibration calibration() const;
int64_t device_timestamp_ns();
sl::Mat& image();
sl::Mat& point_cloud();
sl::Camera& handle();