feat(record): add raw ZED body MCAP capture
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
# 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_v1`
|
||||
- `payload_format = raw`
|
||||
- `source_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_count` packed `body_tracking_body_t` records
|
||||
|
||||
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
|
||||
|
||||
- `logTime` and `publishTime` use `header.timestamp_ns`
|
||||
- if `header.timestamp_ns == 0`, they fall back to `header.sdk_timestamp_ns`
|
||||
- cross-topic alignment should use body `frame_count` and timestamps, not MCAP file order
|
||||
|
||||
## Configuration
|
||||
|
||||
MCAP body capture follows the normal MCAP recording switch:
|
||||
|
||||
- enable MCAP with `--mcap` or `record.mcap.enabled = true`
|
||||
- override the body topic with `--mcap-body-topic` or `record.mcap.body_topic`
|
||||
|
||||
There is no separate body-enable flag. If the input never emits body packets, no body channel is written.
|
||||
Reference in New Issue
Block a user