Skip to main content

riggen

CI PyPI

The blazingly fast, lightweight robot assembler for RL researchers. Drop meshes in, get a simulation-ready MJCF or URDF out.

The sample arm in riggen: the link tree, the viewport with joint glyphs, the Joints window

Install

uv tool install riggen      # or: uvx riggen  /  pip install riggen
riggen --example arm        # the bundled sample robot

One wheel per platform (Linux x86_64 / aarch64, macOS arm64 / x86_64, Windows x86_64), Python 3.10 or later, nothing else to install — the riggen command is a native executable, and there is no Rust toolchain on this path. On a platform without a wheel, pip install builds it from source with cargo on PATH.

The first minute

  1. riggen --example arm opens a four-part arm: link tree on the left, the viewport in the middle, Properties on the right. Orbit with the middle mouse button, zoom with the wheel, Home to frame everything.

  2. Drag the sliders in Window › Joints — the arm moves; that is the kinematic tree you will build for your own robot.

  3. File › Export…, pick MJCF, choose a directory. The dialog lists anything that would stop the export (a link with no mass, a joint with no axis) and writes arm.xml beside meshes/*.stl when there is nothing.

  4. Load it:

    python -c "import mujoco; m = mujoco.MjModel.from_xml_path('out/arm.xml'); print(m.nbody, 'bodies')"
    

    or python -m mujoco.viewer --mjcf out/arm.xml.

Then your robot: riggen base.stl upper.stl fore.stl drops each mesh as a link under the root (meters or millimetres — the import units are in the status bar). Reparent by dragging rows in the tree; Place joint puts a revolute joint on a bore by clicking its edge; Align snaps a part's bore concentric with its parent's; Properties computes the inertial from the mesh and a material, and fits a hull or primitives for collision.

What it does

  • Assembles: STL and OBJ meshes into a kinematic tree — fixed, revolute and prismatic joints, placed by clicking geometry, with limits.
  • Computes: mass, centre of mass and the inertia tensor from the mesh and a material density, or from a spec you type; convex hulls and fitted boxes / cylinders / spheres for collision.
  • Exports: MJCF and URDF from the same document, meshes baked to meters as STL, so MuJoCo loads it with zero warnings and its forward kinematics agree with riggen's (that is a CI job, not a hope).
  • Imports: an existing URDF, package:// paths resolved beside the file, to fix and convert it.
  • Stays out of the way: a native window through wgpu, a document that is plain JSON (.riggen), undo for everything, and a headless CLI.

Command line

usage:
  riggen [FILE...]        open a .riggen document, or drop meshes (.stl, .obj) as links
  riggen --example arm    open the bundled sample arm
  riggen --export mjcf|urdf|both --out DIR [--fk-samples] INPUT
                          write INPUT's export to DIR without opening a window

options:
  --example NAME          open a bundled example: arm (the five-link sample robot)
  --export FORMAT         headless export of INPUT (.riggen or .urdf): mjcf, urdf or both
  --out DIR               where --export writes; created if missing
  --fk-samples            with --export: also write <name>.fk.json, five sampled joint configurations
  --timing                print the time from launch to the first frame on stderr
  -h, --help              print this help
  -V, --version           print the version and the git commit it was built from

riggen --export needs no display, so it runs in CI and in scripts: give it a .riggen or a .urdf and it writes the model, the meshes and, with --fk-samples, five joint configurations with every body's world pose — the file python/tests/test_mjcf_load.py checks MuJoCo against.

python -m riggen is the same executable, for an environment whose bin/ is not on PATH.

Developing

Rust stable, then:

git clone https://github.com/Divelix/riggen && cd riggen
git config core.hooksPath .githooks   # fmt, clippy -D warnings, test before every commit
cargo run                             # the app
cargo test --workspace                # incl. the visual snapshot suite (needs a Vulkan driver;
                                      # lavapipe / mesa-vulkan-drivers is the reference)
RIGGEN_GIT_HASH=$(git rev-parse --short HEAD) uv build   # the wheel and the sdist

The Rust route to the binary is cargo install --git https://github.com/Divelix/riggen riggen-app; publishing the workspace to crates.io so that cargo install riggen works is a later release.

Read, in order: SEED.md (what and why), docs/01-architecture.md, docs/02-data-model.md, docs/03-roadmap.md, docs/adr/ — then AGENTS.md for the rules, agent or human. A Python SDK (riggen-py, the same core through PyO3) is v0.2.

Licence

MIT or Apache-2.0, at your option.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

riggen-0.1.0.tar.gz (296.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

riggen-0.1.0-py3-none-win_amd64.whl (7.3 MB view details)

Uploaded Python 3Windows x86-64

riggen-0.1.0-py3-none-manylinux_2_28_x86_64.whl (9.6 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

riggen-0.1.0-py3-none-manylinux_2_28_aarch64.whl (9.0 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

riggen-0.1.0-py3-none-macosx_11_0_arm64.whl (6.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

riggen-0.1.0-py3-none-macosx_10_12_x86_64.whl (6.5 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file riggen-0.1.0.tar.gz.

File metadata

  • Download URL: riggen-0.1.0.tar.gz
  • Upload date:
  • Size: 296.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for riggen-0.1.0.tar.gz
Algorithm Hash digest
SHA256 775786cec61bafc7012f00a920cd71d6651927b482751fafa80e499fa4bcce0b
MD5 bf4593415f6a60429a25b72037cd21b0
BLAKE2b-256 0cd3872503ba3d240bee90a7087446157df6988232e3d0ed8122628f2cdfe39c

See more details on using hashes here.

Provenance

The following attestation bundles were made for riggen-0.1.0.tar.gz:

Publisher: release.yml on Divelix/riggen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riggen-0.1.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: riggen-0.1.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for riggen-0.1.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 fb35b9ad4e4f11e78c19ae1b43a78a71779ff0476844b1f99f4d5d4599b954ae
MD5 f445ca348b5d72120f40c1dd46e9a264
BLAKE2b-256 dcbc1eafdc1bae950ef313389a73619fd5c3841216d04823b562d80f62d190d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for riggen-0.1.0-py3-none-win_amd64.whl:

Publisher: release.yml on Divelix/riggen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riggen-0.1.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for riggen-0.1.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2f3726e6228d124b8350ee0bd8bb43d4508cc7f18eb31e91be160fcacf2cb889
MD5 cd74f976d819bf1ef805803bea832fb2
BLAKE2b-256 a60637b6afb223fe0434781dc50ec478ccccaff76555056165c618c7732a70a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for riggen-0.1.0-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release.yml on Divelix/riggen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riggen-0.1.0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for riggen-0.1.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 89d5aa8585e29ff1364465911aa9790a6053129cf7384ce3e2c3fd8d8a2feaf7
MD5 20f45e6488ec36b8854920f49d4c156e
BLAKE2b-256 3dedd0fa88f126548ac8e899dae91243cd14232bb205f0f240997f0ec735ec5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for riggen-0.1.0-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release.yml on Divelix/riggen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riggen-0.1.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for riggen-0.1.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d22e96a2e3d0b40745f9d79c46ffb14ca611e3247219fba9fa99bf9fc7f7a2c
MD5 b5c2474ee5bb35b1b0dc92818c7d9a16
BLAKE2b-256 fc7970852231fb0f0f11a46422ef590dc2bf174400a4e0805d9f479e2701817a

See more details on using hashes here.

Provenance

The following attestation bundles were made for riggen-0.1.0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on Divelix/riggen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riggen-0.1.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for riggen-0.1.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 44c08b30e3eee2cff241286b89e3c2b34aaf1025e45caa68d3ba952ec8fdecba
MD5 28854fcc28d2e11ee6fc707c7a45965b
BLAKE2b-256 57d9f2acacb03d55bdb942c25583de9770bafab6cae5d4137a0e938ab7a4ed2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for riggen-0.1.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on Divelix/riggen

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.0

6 files

This release

0.1.0 This release

6 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page