Three real robot classes. Pick a robot + tick: the two cards below show the concrete messages the proposed SDK would send — the control-plane layout (once) and the data-plane sample (this tick). Descriptor colour = provenance.
Describe (bidi Connect stream)Describe with one SourceDiscovered{RobotLayout} per source; re-sent verbatim on every reconnect.floating_base + an ordered list of groups; each group has a role and an ordered list of per-dimension channels (name·unit·dtype·rotation_type·range).values[] = groups in declared order × channels in declared order.Describe cycle, never per tick.StreamSamples)Sample{ timestamp_us, sequence, RobotPayload{ values[] } }.values[i] ↔ channel i of the layout. Nothing self-describing on the wire — decoded entirely through the layout.control_hz; slower signals are held or sent as their own source.| REAL · source data | CHANNEL DESCRIPTOR · colour = provenance | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| source field | idx | value @ tick | role | channel name | group | rotation | unit | range | |
Real episodes at product/recorder_data_samples/ (Franka, Vega = recorder parquet; G1 = LeRobot/GR00T).
Extracted by extract_real_examples.py. Messages are illustrative of the v2 proposal in
docs/spec_discrepancies.md §A — values are real; descriptor colour = source/inferred/none.