Skip to content

Add frame_id to ModelDetections, SotState and LaserDetection - #322

Merged
jp-pino merged 1 commit into
masterfrom
claude/frame-id-sync
Oct 28, 2026
Merged

jp-pino merged 1 commit into
masterfrom
claude/frame-id-sync

Conversation

@jp-pino

@jp-pino jp-pino commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds uint64 frame_id to ModelDetections (6), SotState (10) and LaserDetection (11): the id of the camera frame a computer vision result was computed from. The X3 Ultra video pipeline assigns it once per frame and also writes it into every recorded frame. Detections can then be joined with the exact frame of a recording, instead of being matched by time. The design is in BluEye-Robotics/BlueyeCV#33.

ModelDetections documents the SEI format the recordings use, once, for all three fields:

  • user_data_unregistered (payload type 5), one per access unit, before the first slice.
  • NAL type 6 in H.264, PREFIX_SEI_NUT (39) in H.265.
  • Payload: UUID 6b1e2f0c-935d-4a8e-b17a-52d40e3c91f6, then frame_id as uint64 BE, then the CLOCK_MONOTONIC capture time in ns as uint64 BE.

0 means unknown. The id stays below 2^53, so the TypeScript clients decode it exactly.

Testing

  • protolint.sh is clean.
  • The C++ build (cross-jetson-compile), Rust cargo test, the TypeScript generate step, dotnet pack, and the Kotlin build and smoke test all pass.
  • protoc-gen-doc, run as CI runs it, shows the SEI text and all three fields.
  • End to end on an X3 Ultra (results in BlueyeCV#33): the frame_id decoded from ObjectDetectionsTel on node_comm's telemetry socket matched recorded frames for all three detection models.

Related

Design and end-to-end results: BluEye-Robotics/BlueyeCV#33.

PR Part
#322 frame_id in blueye.protocol and the SEI format
BluEye-Robotics/p2_msgs#75 frame_id in the ROS messages
BluEye-Robotics/BlueyeCV#34 frame_id in becv results
BluEye-Robotics/gst_rtsp_record#384 stamping the id on each frame, and the SEI in recordings
BluEye-Robotics/p2_drone#1190 becv → ROS → protobuf

Merge order: ProtocolDefinitions and p2_msgs first, then BlueyeCV and gst_rtsp_record, then p2_drone. Deploy all five together.

🤖 Generated with Claude Code

The id of the camera frame a computer vision result was computed from,
as assigned once per frame by the X3 Ultra video pipeline. Recorded
video carries the same id in a user_data_unregistered SEI message per
access unit, so detections can be joined with the exact frame of a
recording instead of matched by time. ModelDetections documents the SEI
format; 0 means unknown, and the id stays below 2^53 so it is exact as
a JavaScript number.

Part of BluEye-Robotics/BlueyeCV#33.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jp-pino jp-pino added this to the Blunux v5.3 milestone Oct 28, 2026
@jp-pino jp-pino added the enhancement New feature or request label Oct 28, 2026
@jp-pino
jp-pino requested a review from follesoe October 28, 2026 10:29
@jp-pino jp-pino self-assigned this Oct 28, 2026
@jp-pino
jp-pino merged commit 296e61b into master Oct 28, 2026
14 checks passed
@jp-pino
jp-pino deleted the claude/frame-id-sync branch October 28, 2026 11:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants