Dataset
Accepted demonstrations land in a public, versioned dataset in LeRobot and RLDS format. Each episode carries the operator's address and a signature over its SHA-256, so provenance is checkable without trusting us.
2,812
Episodes
7.31M
Control frames
753
Signing wallets
Episode schema
{
"task_id": "orn-0001",
"seed": 918273645, // reproduces the exact scene layout
"hz": 30,
"seconds": 104.2,
"demo_hash": "<sha256 of this object without the proof block>",
"proof": {
"wallet": "<base58 pubkey>",
"signature": "<base58 ed25519 over the OPENROBOTICS-DEMO-v1 message>",
"memo_tx": "<solana signature>"
},
"samples": [
{
"t": 0.033,
"q": [j0, j1, j2, j3, j4, grip], // rad x5, then 0..1
"ee": [x, y, z], // fingertip, metres, world frame
"bodies": { "muffin": [x, y, z, yaw] },
"joints": { "microwave_door": 0.42 } // rad for hinges, metres for slides
}
]
}Verifying an episode
# 1. the hash is the hash of the trajectory sha256(canonical_json(episode_without_proof)) == episode.demo_hash # 2. the signature is that wallet's, over that hash ed25519_verify( message = "OPENROBOTICS-DEMO-v1\ntask:<id>\nhash:<demo_hash>\n...", signature = base58_decode(proof.signature), pubkey = base58_decode(proof.wallet), ) # 3. the physics agrees the task was completed replay(episode.samples) -> every checker latches, in order
Step three is the one that matters. The server does not read a success flag from the client. It walks the recorded body poses through the same checkers the simulator ran, and it rejects an end effector that teleports, a sample count that disagrees with the duration, or a hash that has already been paid.
Task families
- kitchen-tabletop3 tasks
- assembly-tabletop2 tasks
- office-tabletop1 tasks