1.5 KiB
1.5 KiB
MCAP ZED Body Tracking Contract
cvmmap-streamer records native cv-mmap ZED body-tracking packets into MCAP as a raw binary channel.
Channel
- default topic:
/camera/body messageEncoding:cvmmap.body_tracking.v1- schema: none (
schemaId = 0) - channel metadata:
packet_layout = cvmmap_body_tracking_v1payload_format = rawsource_transport = cv-mmap-body-pub
The channel is created lazily on the first valid body packet, so non-body inputs do not produce an empty /camera/body channel.
Payload
Each MCAP message payload is byte-for-byte identical to the cv-mmap ZED body PUB packet:
- 64-byte
body_tracking_message_header_t - followed by
body_countpackedbody_tracking_body_trecords
The intended parser contract is the existing cv-mmap body-tracking v1 layout:
cvmmap::parse_body_tracking_message(...)cv-mmap/docs/cvmmap_body_tracking_v1.ksy
This recording path does not remap joints, filter fields, or convert the packet into protobuf/JSON.
Timing And Alignment
logTimeandpublishTimeuseheader.timestamp_ns- if
header.timestamp_ns == 0, they fall back toheader.sdk_timestamp_ns - cross-topic alignment should use body
frame_countand timestamps, not MCAP file order
Configuration
MCAP body capture follows the normal MCAP recording switch:
- enable MCAP with
--mcaporrecord.mcap.enabled = true - override the body topic with
--mcap-body-topicorrecord.mcap.body_topic
There is no separate body-enable flag. If the input never emits body packets, no body channel is written.