Spec template
This template captures everything we need to deliver data that loads directly into your training code. Fill it out and send it back — we'll confirm we can match your schema.
What the spec covers
Embodiment type, platform, joint names, action space definition, control frequency. This tells us how to structure the action and state vectors.
Camera names, resolutions, and framerates. Proprioceptive state fields. Maps directly to observation.images.* and observation.state in LeRobot format.
What tasks to collect, success criteria for each, episode duration targets, language instruction format.
Required fields (episode_index, timestamp, done, success) plus optional annotations like step boundaries, object bounding boxes, failure reasons.
LeRobot (Parquet + MP4), RLDS (TFRecord), or HDF5. Delivery cadence, volume targets, storage destination.
Rejection rules for frame drops, timestamp jitter, occlusions. Replacement policy for rejected episodes.
Preview
Here's what the spec looks like. Download the full version for all fields and comments.
# ═══════════════════════════════════════════════════════════════════════════════
# MotionLedger Data Collection Spec
# ═══════════════════════════════════════════════════════════════════════════════
project:
company: ""
contact_name: ""
contact_email: ""
timeline: "sample_pack_first" # sample_pack_first | urgent | YYYY-MM-DD
robot:
embodiment: "" # single_arm | bimanual | mobile_manipulator | humanoid
platform: "" # e.g., "Franka Panda", "UR5e", "ALOHA"
joints:
names: [] # e.g., ["shoulder", "elbow", "wrist_1", "gripper"]
count: 7
action_space:
type: "" # ee_delta_pose | joint_position | joint_velocity
dims: 7
hz: 10
observations:
cameras:
- name: "top"
resolution: [640, 480]
fps: 30
- name: "wrist"
resolution: [640, 480]
fps: 30
state:
include_joint_positions: true
include_joint_velocities: false
include_gripper_state: true
hz: 50
episodes:
tasks:
- name: "pick_and_place"
description: "Pick object from A, place at B"
success_criteria: "Object at target within 2cm"
average_duration_sec: 15
instruction:
format: "text"
example: "Pick up the red block"
labels:
required:
- episode_index
- frame_index
- timestamp
- done
- success
optional:
- failure_reason
- step_boundaries
- object_bboxes
calibration:
camera_intrinsics: true
camera_extrinsics: true
extrinsics_frame: "robot_base"
delivery:
format: "lerobot" # lerobot | rlds | hdf5
cadence: "weekly"
volume_hours_per_week: 50
destination: "client_s3"
qa:
reject_if:
frame_drop_rate_exceeds: 0.01
timestamp_jitter_ms_exceeds: 20
camera_occlusion: true
replacement_policy: "recollect"Compatible formats
We deliver in the format your training code expects.
HuggingFace's standard format. Used by Physical Intelligence's π₀ models. Parquet files for state/action, MP4 for video streams. Streamable from HF Hub.
Google's format for Open X-Embodiment. TFRecord files with tf.train.Example protos. Compatible with RT-X and other TensorFlow-based policies.
Hierarchical data format. Common in research. Single file per episode with datasets for images, state, actions, and metadata.
Ready to send your spec?
Download the template, fill it out, and email it to hello@motionledger.com. We'll reply with confirmation and a sample pack timeline.