yubi_mujoco
Arm-free YUBI gripper simulation in MuJoCo. Command two end-effector poses and
absolute gripper angles, test contact-based manipulation, and connect a local
Policy.infer(obs) implementation.
The black/red grippers use Toyota's actual robot-gripper CAD: 97 source solids, partitioned into 13 material meshes. Dynamic hands follow finite-stiffness mocap targets; objects are moved by contact, without grasp attachments or teleporting.
Independent, unofficial simulation. This is for interface checks, synthetic experiments, and regression tests. It is not a calibrated robot model or an UMI Arena benchmark. The bundled scripted demos use privileged object positions; their success is not a learned-policy result.
Install
With uv:
git clone https://github.com/k1000dai/yubi_mujoco.git
cd yubi_mujoco
uv sync
uv run yubi-mujoco --version
Or with pip, from the checkout: python -m pip install .
Python 3.10+ is supported. The only runtime dependencies are MuJoCo, NumPy, and SciPy; no GPU, ROS, FreeCAD, or robot is needed for physics. Images and the viewer need a working OpenGL backend; see rendering setup.
Quick start
Watch it in the MuJoCo viewer
uv run yubi-mujoco demo --viewer
uv run yubi-mujoco demo --viewer --task dual_pick_place --episodes 3
--viewer opens the interactive MuJoCo window and plays the rollout in real
time. It works for demo and evaluate; closing the window stops the run.
On macOS the CLI relaunches itself under mjpython automatically.
Run headless
# A contact-based pick-and-place demo; writes JSON results to yubi-output/demo
uv run yubi-mujoco demo
# Other tasks and repeatable seed batches
uv run yubi-mujoco demo --task dual_pick_place --episodes 5 --seed 0
uv run yubi-mujoco demo --task lift --hz 10 --output yubi-output/lift
uv run yubi-mujoco demo --task push --output yubi-output/push
# A scene image, and a portable MJCF bundle
uv run yubi-mujoco render --output scene.png --camera overview
uv run yubi-mujoco export-mjcf --output yubi-output/mjcf
Tasks are pick_place (default), dual_pick_place, lift, and push. See
uv run yubi-mujoco <command> --help for all options. After a pip install, call
yubi-mujoco directly.
For MP4 video, add the optional video extra:
uv run --extra video yubi-mujoco demo --task dual_pick_place --video --output yubi-output/video
Python API
from yubi_mujoco import SimConfig, YubiEnv
with YubiEnv(SimConfig(task="pick_place", control_hz=30)) as env:
obs, info = env.reset(seed=42)
target = env.eef_poses.copy() # (2, 7), left then right
target[0, 0] += 0.03 # world +X, in metres
motor = env.motor_for_jaw([0.4, 0.55])
obs, reward, terminated, truncated, info = env.step_absolute(target, motor)
Poses are hand-root [x, y, z, qx, qy, qz, qw], in metres and world coordinates.
Gripper commands are two absolute motor positions in radians, not normalized
openness, finger width, or deltas. Motor-to-jaw calibration is nominal. Image
observations are opt-in for direct API use; info contains privileged state.
See the complete API and policy contract.
Evaluate a local policy
# Interface smoke test; an idle hold policy is not expected to solve the task
uv run yubi-mujoco evaluate --policy hold --horizon 64 --output yubi-output/hold
uv run yubi-mujoco evaluate --policy /path/to/policy.py \
--checkpoint /path/to/checkpoint --hz 30 --adopt-rows 16 \
--output yubi-output/policy
Add --viewer to watch the policy act. Evaluation renders two wrist images,
even without --video, and needs OpenGL. Only load trusted Python policy files.
See examples/policy.py and the
UMI Arena submission contract.
Dataset/replay timing is 30 Hz; the published robot execution description uses
10 Hz. Select the intended rate explicitly. This package does not download
checkpoints or gated datasets, and does not replace the official checker.
Model, validation, and development
- Usage, controls, rendering, and policy timing
- Model assumptions and calibration limits
- Validation and reproducible checks
- CAD provenance and regeneration
- Contributing and releases · Changelog
Source geometry is pinned to Toyota/yubi-hw at dd8bd13.
The source STEP and regeneration tools are in cad/; they are not runtime
requirements. The installed package contains the active meshes and manifests.
Licenses
Original simulation software: MIT. Toyota-derived CAD, meshes, and transformation data: CERN-OHL-W-2.0, Copyright 2026 Toyota Motor Corporation. Upstream software references use Apache-2.0; see the attribution notice. Hardware-derived assets are not relicensed under MIT. Toyota and AIRoA do not endorse or certify this project.
Metadata
Release files for yubi-mujoco 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| yubi_mujoco-0.1.0.tar.gz | 3.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yubi_mujoco-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.4 MB
Release files / yubi_mujoco-0.1.0.tar.gz
| Download URL | yubi_mujoco-0.1.0.tar.gz |
|---|---|
| Size | 3.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d9144e8947af8d6794275b6c2592d0145f28d4b2c1f948c42ef773f9345e4739
|
|
BLAKE2b-256 checksum How to use checksums |
bc244ba133fc5fe1dcf5b938e162f3189e4fa477ebaad0b7c10df73973c22a3a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / yubi_mujoco-0.1.0-py3-none-any.whl
| Download URL | yubi_mujoco-0.1.0-py3-none-any.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
495087a22e8d5a351d54d463d5ef8475953cf3f8d3dc0dceb758c453aa8c4a08
|
|
BLAKE2b-256 checksum How to use checksums |
aaa40d8ba12abcd013e2678995ebf099e5a582400585651dffdc3e95efb91629
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|