RoboTwin 2.0
robotwin · benchmark template by RoboTwin · 50 dual-arm tasks · Aloha-AgileX · the clean setting: no clutter, a plain table, fixed light. Each version below is fixed once published, newest first.
seq init robotwin gives the stable version, seq init robotwin@beta the beta, and seq init robotwin@v<N> any version below that is not withdrawn. A benchmark registered from this template names the version it runs in seq benchmark ls; seq benchmark upgrade moves it to the newer stable one.
-
v8beta
Both images run RoboTwin from
third_party/RoboTwin, the copy in your folder, and install everything else only from this version's frozen files, which the platform keeps: v7's packages and RoboTwin's robots and objects, the same on any day.Needs sequence-ai 0.34.17 or later.
benchmark.pyandbenchmark_cpu.pycopy RoboTwin'sLICENSE,envs/,env_cfg/,description/andscripts/fromthird_party/RoboTwinto/opt/robotwin, where its eval reads them as before: change RoboTwin there and deploy again, and your benchmark runs your RoboTwin. The rest of RoboTwin (code_gen/,data/, the pictures its README shows) stays inthird_party/RoboTwinto read; the eval reads none of it.third_party/README.mdlists what goes into the images.- Everything else comes from
/seq/frozen(.template_files("robotwin", version=8)), with no index: the baseubuntu:24.04by digest, the system packages as.debfiles, every Python package with its sha256 checked againstrequirements-benchmark.lockandrequirements-benchmark_cpu.lock, and RoboTwin's two asset archives, each checked against the sha256 inrobotwin_tasks.pyand unpacked where they always were.frozen.tomlsays what is frozen. - The Python packages are the ones v7's images hold (
pins-*.txt): 119 on the GPU (torch 2.4.1 for CUDA 12.1) and 106 on the CPU (torch 2.4.1 for the CPU), SAPIEN 3.0.0b1 and mplib 0.2.1 in both. - The robots and objects are frozen too:
embodiments.zipandobjects.zipof the dataset at the commit v7 pinned, no longer fetched from it while the image builds. - The images no longer set
UV_EXCLUDE_NEWER: they resolve nothing, and a step you add after the template's installs from PyPI as any image does. - The Vulkan layer is compiled after the install, from the same source; SAPIEN's and mplib's patches, RoboTwin's patch, the seeds and the GPU version's episode export are v7's. Tasks, seeds, success and step limits are as in v7.
Use v8
# start a benchmark from this version, then register it seq init robotwin@v8 my-benchmark seq deploy my-benchmark/benchmark.py # its CPU version, on CPU machines seq deploy my-benchmark/benchmark_cpu.py # or move a benchmark registered from this template to it seq benchmark upgrade my-benchmark --to v8
-
The source the images build from comes with the template: RoboTwin at the commit they pin, in third_party/, with its license.
Needs sequence-ai 0.33.11 or later.
third_party/RoboTwin/: https://github.com/RoboTwin-Platform/RoboTwin at commitea8b21121ebb3cd201ff5b3fe361944ac94eda3f; its XPolicyLab submodule is left out (the images clone without it). The two asset archives the images download are not in it:third_party/README.mdnames them with their sha256.- The images and what they install are as in v6.
Use v7
# start a benchmark from this version, then register it seq init robotwin@v7 my-benchmark seq deploy my-benchmark/benchmark.py # its CPU version, on CPU machines seq deploy my-benchmark/benchmark_cpu.py # or move a benchmark registered from this template to it seq benchmark upgrade my-benchmark --to v7
-
v6stable
NOTICE only: 44 objects in objects.zip are PartNet-Mobility objects, licensed for non-commercial research and education only, not MIT as v5's NOTICE said. The benchmark is unchanged.
Needs sequence-ai 0.33.11 or later.
- The 44 articulated objects are in nine folders of objects.zip:
009_kettle,010_pen,015_laptop,016_oven,036_cabinet,037_box,044_microwave,056_switchand060_kitchenpot. PartNet-Mobility builds on ShapeNet; check its terms of use before you use these objects beyond non-commercial research and education. - The CPU version's tasks
move_can_pot,open_laptop,lift_pot,open_microwave,put_object_cabinetandturn_switchuse them; the GPU version's five tasks do not. - NOTICE names the RoboTwin 2.0 dataset revision both images download, the one v3 pinned.
- The images, the code and the README are v5's.
Use v6
# start a benchmark from this version, then register it seq init robotwin@v6 my-benchmark seq deploy my-benchmark/benchmark.py # its CPU version, on CPU machines seq deploy my-benchmark/benchmark_cpu.py # or move a benchmark registered from this template to it seq benchmark upgrade my-benchmark --to v6
In the console, New benchmark registers this version: the console registers the stable one.
- The 44 articulated objects are in nine folders of objects.zip:
-
The README says what the CPU version's rasterised cameras cost a policy trained on RoboTwin's ray-traced pictures. The benchmark is v4's.
Needs sequence-ai 0.33.11 or later.
- pi05-robotwin on
stack_blocks_three, seeds 0-19, measured on the platform: 9 of 20 onrobotwin(ray-traced), 1 of 17 on the GPU version with only its cameras rasterised, 0 of 20 onrobotwin-cpu. The physics and the success checks agree between the two versions; the pictures do not. - So compare a score on
robotwin-cpuwith another policy's onrobotwin-cpu, not withrobotwin's or RoboTwin's published numbers, above all on tasks that hinge on a precise placement.
Use v5
# start a benchmark from this version, then register it seq init robotwin@v5 my-benchmark seq deploy my-benchmark/benchmark.py # its CPU version, on CPU machines seq deploy my-benchmark/benchmark_cpu.py # or move a benchmark registered from this template to it seq benchmark upgrade my-benchmark --to v5
- pi05-robotwin on
-
Both images install their Python dependencies as PyPI had them at a fixed time, so a rebuild on any day installs exactly the same packages.
Needs sequence-ai 0.33.11 or later.
benchmark.pyandbenchmark_cpu.pyinstall the packages they leave open, and those packages' dependencies, as of 2026-10-05 00:24 UTC (UV_EXCLUDE_NEWER); the pinned ones stay as they were. Unpinned, a rebuild on 2026-10-09 took a newer platformdirs.- To take newer versions, move
_PYPI_AS_OFforward in both files and check the benchmark again.
Use v4
# start a benchmark from this version, then register it seq init robotwin@v4 my-benchmark seq deploy my-benchmark/benchmark.py # its CPU version, on CPU machines seq deploy my-benchmark/benchmark_cpu.py # or move a benchmark registered from this template to it seq benchmark upgrade my-benchmark --to v4
-
benchmark.pyregisters from a machine with nothing but sequence-ai installed, and both images download RoboTwin's robots and objects at one fixed dataset revision, checked by sha256.Needs sequence-ai 0.33.11 or later.
seq validateandseq deployimportbenchmark.pyon your own machine to read its declaration. v2 imported numpy at the top, so with only sequence-ai installed they stopped withNo module named 'numpy'; numpy is now used only on the platform, where the image installs it.embodiments.zipandobjects.zipcome from the RoboTwin 2.0 dataset at a pinned revision, and each is checked against its sha256 before it is unpacked; a mismatch fails the build. Before, a build took the dataset's latest files, so a change upstream could move a seed's scene.- To get the pinned files, register the benchmark again from this version.
Use v3
# start a benchmark from this version, then register it seq init robotwin@v3 my-benchmark seq deploy my-benchmark/benchmark.py # its CPU version, on CPU machines seq deploy my-benchmark/benchmark_cpu.py # or move a benchmark registered from this template to it seq benchmark upgrade my-benchmark --to v3
-
The same benchmark as v1, published again without the notes v1's files carried for our own records.
Needs sequence-ai 0.33.11 or later; to register
benchmark.py, numpy on your machine too.benchmark.py,benchmark_cpu.py, the adapterrobotwin-openpi, the tasks and the seeds are v1's. Only comments and NOTICE differ, without those notes.
Use v2
# start a benchmark from this version, then register it seq init robotwin@v2 my-benchmark seq deploy my-benchmark/benchmark.py # its CPU version, on CPU machines seq deploy my-benchmark/benchmark_cpu.py # or move a benchmark registered from this template to it seq benchmark upgrade my-benchmark --to v2
-
v1withdrawn
The first version: RoboTwin 2.0's 50 bimanual tasks on the Aloha-AgileX as a benchmark, with
robotwin-cpuon CPU machines (RoboTwin itself, every task),robotwinon one GPU (five tasks) and the adapterrobotwin-openpi.Withdrawn on 2026-10-08: its files carried notes written for our own records. v2 is the same template without them.
seq deploy benchmark_cpu.pyregistersrobotwin-cpu: RoboTwin's own environment and eval loop in the clean setting (demo_clean), one environment per core, 8 cores and 64 GB an instance. Its cameras are rasterised in software, where RoboTwin ray-traces them.seq deploy benchmark.pyregistersrobotwin:stack_blocks_two,stack_blocks_three,stack_bowls_two,stack_bowls_threeandhandover_blockas worlds of SAPIEN's GPU PhysX on one L4, 16 environments an instance by default, the cameras ray-traced as RoboTwin's eval draws them.- The episodes: for each task, the first 100 seeds from 100000 whose scene RoboTwin's expert solves, with the eval's instruction (
seeds/), each capped at RoboTwin's step limit (400-1,700 actions) and scored by RoboTwin's owncheck_success. seq deploy pi05_robotwin_adapter.pyregisters the adapterrobotwin-openpi: the head and wrist cameras at 320x240, losslessly, the 14-D joint state and the instruction, as RoboTwin's eval client sends them; the 14 joint targets go to the simulator unchanged. Recordings film the head camera at 10 fps.- pi05-robotwin scored 10 of 10 on
robotwin(five tasks, two seeds each) and 2 of 2 onrobotwin-cpu, measured on the platform; RoboTwin's leaderboard lists it at 70.7% in the clean setting. - The template's own code is Apache-2.0. NOTICE carries RoboTwin 2.0's MIT notice.