CALVIN

← Lift and place the red block

CALVIN native replay

One source scene D, one Panda longer-finger robot, and two adjacent task annotations from the official debug validation data. The original 34-task inventory remains separate from the two phases executed here.

Source and rights

CALVIN source pins its calvin_env submodule. The project is MIT; its Franka subtree separately carries Apache-2.0. The official debug archive has no separate dataset licence. Original meshes and textures load from commit-pinned upstream URLs.

The official debug ZIP is 1,299,150,917 bytes; SHA256 c66d09147e2c806b244f18ea7d61e388d4dac11f828929779437f728d03e1204. Selected source files and archive members are bound in the source lock. Runtime: Python 3.10.20, CALVIN environment 0.0.1, PyBullet 3.2.7 and Gym 0.23.1.

Actions, timing and outcome

Actions 554046–554145 run once after restoring state 554046. The lift phase has 64 actions; placement has 36. Sample 64 is the placement reference and no reset occurs there. The original native predicates first succeed at steps 57 and 90. Two separate native executions have identical state, contact, task and camera-array records.

Commands are absolute TCP position, XYZ Euler orientation and gripper sign, interpreted by the source wrapper and IK controller. Physics runs at 240 Hz and control at 30 Hz. Sample 0 follows the native reset step; each later sample follows eight physics steps. Replay exposes 13 measured scalar joints and all 30 body/link frames. The browser renders these measurements and does not execute physics.

This is a selected 100-action source replay, not CALVIN’s official 1,000-sequence learned-policy evaluation with 360 actions per subtask. The native environment returns reward zero and done=False; task success is a separate predicate. The 100-action window is not an upstream environment horizon or a suite score.

The native repeat differs from the archived future trajectory: maximum TCP position error is 0.01743 m and orientation error 0.02676 rad; maximum object position error is 0.01576 m and orientation error 0.04507 rad. Future source states are never forced into the simulator. Goals are checked in the newly executed native trajectory.

Desktop scene checks

All 105,119 source OBJ faces retain their vertex, normal and texture-coordinate values through the browser parser. PyBullet ignores three isolated line declarations in two Panda OBJ files; the browser applies the same rule to those explicitly identified meshes. Native single-texture and light-state behavior follows the exact PyBullet source audit.

All 12,120 body-origin and unit-axis comparisons across 101 desktop frames pass, with maximum error 2.36e-7 m. One PyBullet visual query for a repeated fingertip STL is malformed; the original URDF/STL supplies that visual and the query gap remains disclosed. The source camera retains its 0.01 m near and 10 m far planes. Browser lighting is a viewing adaptation; pixel-identical rendering is not claimed.

Native static and gripper RGB/depth arrays were independently checked locally. This 3D replay does not claim synchronized camera-video playback. Tactile capture was explicitly omitted through the source observation-space option. The remaining 32 atomic tasks and RLBench are not implemented by this example.