Skip to main content

Robot-model conversion (URDF/MJCF/USD) you can trust — with a fidelity report of everything it changed.

Project description

TrueRig

Robot-model conversion you can trust. Convert robot descriptions between URDF ↔ MJCF ↔ USD through a lossless canonical IR — and get a fidelity report of everything that changed.

The thesis is the point: existing converters fail silently. TrueRig's product is knowing what you lost.

PyPI Python License CI

pip install truerig

Why

Every open-source URDF→MJCF converter today fails on real robots, silently. We reproduced this against the current urdf2mjcf (MuJoCo 3.10) on two standard models:

Defect Robot Existing tool behaviour
Off-diagonal inertia dropped on 32 links (up to 31.5% of the diagonal) Unitree G1 one buried "Warning" line
Closed-chain coupling (5 mimic joints → 0 constraints) Robotiq 2F-85 no warning at all
package:// mesh URIs passed through unresolved / doubled paths both hard load error
Invalid MJCF emitted (empty-name material) Robotiq MuJoCo refuses the file

Out of the box, neither converted model even loads in MuJoCo without manual fixing — and once you fix the plumbing, the physics is still silently wrong.

3 of the 4 defects are pure engineering diligence. The 4th (closed chains) is genuinely lossy — so TrueRig's job isn't to pretend loss doesn't happen, it's to preserve everything it can and report the rest honestly.

How it works

 URDF ─┐                          ┌─ MJCF
 MJCF ─┼─► frontend ─► IR ─► backend ─┼─ URDF      + validate(IR)  → physics checks
 USD  ─┘   (parse)   (lossless)  (emit) └─ USD      + report(loss_log) → what changed

The IR is frozen (truerig/ir.py) and is lossless by construction: frontends record all source data; backends drop only what the target can't express and log a LossEvent for each drop. See module docstrings for per-component contracts.

What works today

  • URDF ↔ MJCF — full bidirectional conversion
  • URDF / MJCF → USD — experimental (UsdPhysics articulation, inertia diagonalized losslessly); pip install truerig[usd]
  • validate · report · simcheck — physics sanity checks, a fidelity report you can gate CI on, and a behavioural round-trip check in simulation

Field-tested on 12 diverse robots — Unitree G1/H1/A1/B1/Go2, ANYmal C, Franka Panda, KUKA iiwa14, Allegro Hand, Cassie, Baxter, Fetch, Solo — plus the G1/Robotiq/Z1 golden set. All convert and load in MuJoCo with full inertia and closed-chain coupling preserved; degenerate source inertia is repaired and reported, never silently. 51 tests, CI on Python 3.10–3.12.

Usage

truerig convert robot.urdf robot.mjcf --report text --strict   # convert + fidelity report
truerig validate robot.urdf                                    # physics sanity checks
truerig simcheck robot.urdf robot.mjcf                          # behavioural round-trip in sim

Roadmap

Embedding USD mesh geometry (currently referenced by path) and a hosted demo at truerig.xyz. Early and open (MIT) — issues and PRs welcome.

Project details


Download files

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

Source Distribution

truerig-0.1.1.tar.gz (39.9 kB view details)

Uploaded Source

Built Distribution

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

truerig-0.1.1-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file truerig-0.1.1.tar.gz.

File metadata

  • Download URL: truerig-0.1.1.tar.gz
  • Upload date:
  • Size: 39.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for truerig-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b898cc7da1086db3f12077d77ae00fa03b8d13824725f61e8c017185279890ac
MD5 148cff4717acee462445a47953c11d63
BLAKE2b-256 6dbd02ea13205ae20313115d4433859050ec54ad1d0489782d1de82faced08bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for truerig-0.1.1.tar.gz:

Publisher: publish.yml on Sputnikboi/truerig

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

File details

Details for the file truerig-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: truerig-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 36.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for truerig-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0eda77ab7e67f0d4c8a827ec263414127a882f71b41faa526c12c6dd67c2d6e1
MD5 2993a0e4d2d81a90dd39df987fb1168f
BLAKE2b-256 ebf42c7f5dcf72b820fb11dee971db6df4d334df670c80668c19fc3fe2f717e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for truerig-0.1.1-py3-none-any.whl:

Publisher: publish.yml on Sputnikboi/truerig

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page