Template updates

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.

  1. 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.py and benchmark_cpu.py copy RoboTwin's LICENSE, envs/, env_cfg/, description/ and scripts/ from third_party/RoboTwin to /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 in third_party/RoboTwin to read; the eval reads none of it. third_party/README.md lists what goes into the images.
    • Everything else comes from /seq/frozen (.template_files("robotwin", version=8)), with no index: the base ubuntu:24.04 by digest, the system packages as .deb files, every Python package with its sha256 checked against requirements-benchmark.lock and requirements-benchmark_cpu.lock, and RoboTwin's two asset archives, each checked against the sha256 in robotwin_tasks.py and unpacked where they always were. frozen.toml says 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.zip and objects.zip of 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
    robotwin v8shell
    # 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
  2. v7

    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 commit ea8b21121ebb3cd201ff5b3fe361944ac94eda3f; 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.md names them with their sha256.
    • The images and what they install are as in v6.
    Use v7
    robotwin v7shell
    # 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
  3. 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_switch and 060_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_cabinet and turn_switch use 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
    robotwin v6shell
    # 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.

  4. v5

    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 on robotwin (ray-traced), 1 of 17 on the GPU version with only its cameras rasterised, 0 of 20 on robotwin-cpu. The physics and the success checks agree between the two versions; the pictures do not.
    • So compare a score on robotwin-cpu with another policy's on robotwin-cpu, not with robotwin's or RoboTwin's published numbers, above all on tasks that hinge on a precise placement.
    Use v5
    robotwin v5shell
    # 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
  5. v4

    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.py and benchmark_cpu.py install 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_OF forward in both files and check the benchmark again.
    Use v4
    robotwin v4shell
    # 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
  6. v3

    benchmark.py registers 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 validate and seq deploy import benchmark.py on your own machine to read its declaration. v2 imported numpy at the top, so with only sequence-ai installed they stopped with No module named 'numpy'; numpy is now used only on the platform, where the image installs it.
    • embodiments.zip and objects.zip come 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
    robotwin v3shell
    # 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
  7. v2

    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 adapter robotwin-openpi, the tasks and the seeds are v1's. Only comments and NOTICE differ, without those notes.
    Use v2
    robotwin v2shell
    # 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
  8. v1withdrawn

    The first version: RoboTwin 2.0's 50 bimanual tasks on the Aloha-AgileX as a benchmark, with robotwin-cpu on CPU machines (RoboTwin itself, every task), robotwin on one GPU (five tasks) and the adapter robotwin-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.py registers robotwin-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.py registers robotwin: stack_blocks_two, stack_blocks_three, stack_bowls_two, stack_bowls_three and handover_block as 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 own check_success.
    • seq deploy pi05_robotwin_adapter.py registers the adapter robotwin-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 on robotwin-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.