ChemLab-Assets Dataset Code
Open dataset · Release 1.1 · October 2026

ChemLab-Assets

198 simulation-ready chemistry laboratory instruments. Each one comes with part-level geometry, working joints, an executable behaviour model and a contract that records what every value means and where it came from.

Zirui SongJiadong ZhangJiahao ZhangXiaosong MaXiaojun ChangXiuying Chen
Mohamed bin Zayed University of Artificial Intelligence (MBZUAI)
Figure 1 198 instruments
Figure 1. The full release. Each row is one capability domain and each tile is one instrument, so a row's length shows how many instruments the domain has; the largest domain, with 23, continues on a second line. Point at a tile for the model; click it for the instrument's sheet and an interactive 3D view.
01 · Overview

Instruments a robot can operate, not only look at

Survey basis: 200 instruments and modules used in university chemistry teaching and research.

Agents that work in a chemistry lab need more than meshes. They need to know that a fume-hood sash travels 673 mm and stops at 457 mm, that moving a balance's draft-shield door restarts its stability check, and which quantities a policy may observe and which are hidden ground truth kept for evaluation. ChemLab-Assets ships that knowledge together with the geometry.

Every asset is one specific commercial model, built from published brochures, manuals and papers. The models reproduce documented behaviour; they are not manufacturer CAD and have not been calibrated against physical units. Each asset folder contains:

  • Geometry. A GLB for viewing, a URDF with primitive collision proxies for simulators, one OBJ mesh per functional part, and the Blender source file.
  • A contract (asset.contract.json). Components, joints, state slots with units and visibility, callable capabilities with JSON-Schema arguments and declared errors, physical mechanisms, interface points for manipulation, cited sources and the model's known limitations.
  • A runtime. A Python module that implements the contract: time-stepped process models behind describe, read, invoke and poll, separate agent and evaluator views, request-id idempotency and seeded noise.
  • Reference data. Output templates built from published measurements, such as DSC thermograms, Raman, IR and mass spectra, GC retention indices and isotope-ratio standards, each with its citation.

All 198 instruments have been converted to USD and stepped in NVIDIA Isaac Lab through the Matterix framework, with joints driven from runtime state and panel buttons pressed in the scene reaching the runtime. The integration code lives in Matterix and is not part of this release.

asset.contract.jsonCHEM-199 · excerpt
// a state slot: typed, with a unit, a visibility and a read binding
"sash.height_m": {
  "value_schema": { "type": "number", "x-unit": "m",
                    "minimum": 0.0, "maximum": 0.67 },
  "origin": "derived",
  "visibility": "agent",
  "access": "read_only",
  "read_binding": { "backend": "host", "artifact_id": "runtime" },
  "sampling": { "mode": "instant", "time_domain": "simulation" }
},

// a capability: JSON-Schema arguments, declared errors, effects
"sash.set": {
  "input_schema": {
    "properties": { "height_m": { "type": "number", "x-unit": "m",
                                  "minimum": 0.0, "maximum": 0.67 },
                    "hold": { "type": "boolean" } },
    "required": ["height_m"] },
  "errors": [ { "code": "PLANT_REQUIRED", … },
              { "code": "SASH_LOCKED", "side_effects": "none", … },
              { "code": "ABOVE_STOP_LOCKED", … }, … 3 more ],
  "state_effects": [ { "state_id": "sash.height_m",
                       "timing": "immediate", … }, … ],
  "implementation": { "process": "verified", "host": "verified",
                      "scene": "verified", "robot": "absent",
                      "hardware": "absent" }
}

Abridged: description fields (in Chinese), bindings and the remaining entries are omitted.

02 · Anatomy

One asset, read through its contract

Esco Frontier Acela EFA-5UDUVW-9 benchtop fume hood with Sentinel XL airflow monitor
Figure 2. Esco Frontier Acela EFA-5UDUVW-9 fume hood · CHEM-1991.60 × 0.91 × 1.52 m
  1. 1

    Exhaust collar

    Interface point exhaust_collar, Ø305 mm. The evaluator sets the building exhaust with exhaust.configure; its true state, exhaust.state, is evaluator-only, so an agent has to infer airflow.

  2. 2

    Sentinel XL airflow monitor

    Readouts velocity (m/s or fpm) and status. Its six keys are prismatic joints bound to monitor.press. Until it is field-calibrated with monitor.calibrate, its reading can sit below the true face velocity.

  3. 3

    Vertical sash

    Prismatic joint sash_joint, 0–673 mm along the 5° face. State slot sash.height_m; capability sash.set, with a stop at 457 mm and a key lock.

  4. 4

    Work zone

    Interface point work_zone, at least 150 mm behind the sash plane. source.place puts open liquids there from a 53-substance vapour library with NIOSH exposure limits.

  5. 5

    Water and gas cocks

    Revolute joints knob_water_joint and knob_gas_joint, 0–90°, driven through fixture.set.

This asset: 39 components · 11 joints · 32 state slots · 32 capabilities (27 implemented, 5 declared unsupported) · 6 readouts · 10 interface points · 14 cited sources · 30 recorded limitations

03 · Numbers

The release at a glance

Release totals

Where the numbers come from

3,382 sources cited across the 195 contracts, by kind

Raw third-party documents are not redistributed; contracts keep the citation and the derived values.

Show as table
04 · Quick start

Download an instrument and run it

Tested with Python 3.12 and NumPy 2.3. No simulator is needed to run the behaviour models.
# everything: models, contracts, runtimes and tests (about 1.5 GB)
pip install -U huggingface_hub
hf download MBZUAI/ChemLab-Assets --repo-type dataset --local-dir ChemLab-Assets
pip install -r ChemLab-Assets/requirements.txt

# or one instrument plus the code
hf download MBZUAI/ChemLab-Assets --repo-type dataset --local-dir ChemLab-Assets \
    --include "assets/expansion_batch05/t2_vacuum/esco_efa5uduvw/*" "scripts/*" "examples/*"

Each row of catalog/catalog.csv gives an instrument's folder, so any subset can be fetched the same way.

05 · Provenance & limits

What the models claim, and what they don't

Every capability records its verification level for process, host, scene, robot and hardware.

Each state slot and capability lists the sources it rests on. Manufacturer documents give dimensions, ranges and operating limits; papers, standards and open databases give the measurements behind instrument outputs; where neither exists, the contract states the assumption explicitly. Values a real operator cannot see, such as true exhaust flow or sample composition, are evaluator-only slots: 1,035 of the 6,282 state slots.

786 capabilities are declared but marked unsupported, so an agent can tell a missing feature from a failed call. No capability claims robot-contact or real-hardware validation. Treat the assets as documented, testable behaviour models for embodied-AI research, not as certified digital twins.

Two fume-hood instances rendered in Isaac Sim, one with the sash raised
Figure 3. The CHEM-199 fume hood as a USD articulation in Isaac Sim (RTX renderer), captured during the Matterix scene check.
06 · Cite

BibTeX

If you use the assets, please cite the release.
@misc{song2026chemlabassets,
  title        = {ChemLab-Assets: Simulation-Ready Chemistry Laboratory
                  Instruments with Executable Behaviour Contracts},
  author       = {Song, Zirui and Zhang, Jiadong and Zhang, Jiahao and
                  Ma, Xiaosong and Chang, Xiaojun and Chen, Xiuying},
  year         = {2026},
  howpublished = {\url{https://huggingface.co/datasets/MBZUAI/ChemLab-Assets}},
  note         = {Dataset, release 1.1}
}