EmbodiK
EmbodiK is a high-performance prioritized numerical inverse kinematics library for cross-embodiment robotics and VLA/AI applications. It pairs a C++ core with Python bindings, exposes robot-model utilities without requiring the Python pin package at runtime, and includes interactive examples for collision-aware IK, CoM constraints, teleop, whole-body robots, GPU batch solving, and dual-arm coordination.
✨ Overview
EmbodiK is designed for bringing up IK behavior across different robot bodies without rewriting the solver stack for each model. The public examples focus on a practical path:
- 🧭 start with the smallest fixed-base IK loop.
- 🛡️ add collision, joint-limit, and CoM constraints.
- 🎮 connect the same prioritized IK solver path to teleop input.
- 🤖 scale to bimanual, humanoid, and Spot whole-body examples.
- 🧪 use richer clone-only examples for development, stress testing, and policy rollout.
The intent is to keep Python examples lean: visualization and target plumbing stay in Python, while constraint handling and recovery policy stay in the C++ solver.
The detailed installation notes, API reference, and example walkthroughs live in the official documentation:
https://robodreamer.github.io/embodik/
🚀 Quick Start
Fastest path for most users is the wheel-only PyPI install inside a virtual environment:
python -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
python -m pip install --only-binary=:all: embodik
python -c "import embodik; print(embodik.__version__)"
If that import works, the core package is installed. Copy the examples and run the fixed-base loop:
python -m pip install "embodik[examples]"
embodik-examples --copy
cd embodik_examples
python 01_basic_ik_simple.py
If pip cannot find a compatible wheel, use the one-shot source installer for your platform from the Installation Guide. It creates the venv, installs native dependencies, builds EmbodiK, and runs an import smoke test.
Published repaired wheels do not require the Python pin package at runtime.
Source builds use pin or a system Pinocchio install as the native library
provider; keep that provider installed in the environment used to import
EmbodiK.
⚡ Experimental GPU whole-body IK
The animation is the default 512-world viewer. The measured reference scale is
1,024 worlds (--worlds 1024), which is a separate run from this preview.
embodik.gpu.wbc is experimental and opt-in. The CPU solver remains the stable
default. The GPU path derives joint and task dimensions from the loaded model,
including Panda, AI Worker, and G1. There is no silent CPU fallback.
From a source checkout:
pixi run setup-gpu-wbc
pixi run -e cuda demo-parallel-tracking
The viewer opens at http://localhost:8080. Device memory, model switches,
the 1,024-world latency table, and how those samples were measured are in the
GPU WBC guide. The
parallel example guide
covers headless profiling and RL integration.
🎮 Examples
01_basic_ik_simple.py is the minimal fixed-base bring-up for a robot preset
or a new URDF. Most scripts default to the Panda preset. Collision, teleop,
CoM, dual-arm coordination, bimanual and humanoid whole-body control, Spot,
and the GPU batch demo are listed in the
Examples Guide, including
Seer controller ports and the mjviser policy flags.
🎬 Preview
Franka Panda collision-free IK
ROBOTIS AI Worker constraint teleop
RB-Y1 bimanual whole-body IK
Unitree G1 retargeting IK
Spot full-body IK
Spot locomanipulation mjviser
🧰 Core Capabilities
- ⚙️ C++ IK core with Nanobind Python bindings.
- 🎯 Hierarchical velocity IK tasks for frames, posture, CoM, and dual-arm coordination.
- 🧮 Fixed-base acceleration eSNS with compatible position, velocity, acceleration, effort, contact-kinematics, and geometry constraints.
- 🛡️ Joint-limit, self-collision, and CoM support-polygon constraints.
- 📈 Solver diagnostics for timing, task scaling, and Jacobian condition-number logging.
- 🧭 Lie-group-aware configuration operations for floating-base, quaternion, and continuous joints.
- 🤖 Native Pinocchio-backed robot model utilities exposed through EmbodiK bindings.
- 👁️ Optional Viser visualization for interactive IK demos.
- ⚡ Model-derived Newton/Warp GPU WBC with device-resident multi-world state, CUDA graph execution, collision constraints, task priority, posture, torso, and centroidal features.
📚 Documentation
- Installation - platform setup, source builds, and troubleshooting.
- Quickstart - first IK calls and solver concepts.
- Acceleration Solver - fixed-base scope, state-box semantics, and collision certification boundaries.
- Working with Transforms - transform helpers and SE(3) operations.
- Examples - public scripts and development-only demos.
- API Reference - Python API generated from docstrings.
- GPU WBC - Newton/Warp setup, model compatibility, constraint coverage, batching, and performance methodology.
- Development - local build, tests, and contributor workflow.
🛠️ Development
Use Pixi from a repository clone:
pixi run build
pixi run test
pixi run docs-build
Run examples from the clone:
pixi run python examples/01_basic_ik_simple.py
pixi run python examples/02_collision_aware_IK.py
pixi run python examples/03_teleop_ik.py
🗂️ Repository Layout
embodik/
|-- README.md
|-- cpp_core/
| |-- include/embodik/
| `-- src/
|-- python_bindings/
| `-- src/
|-- python/embodik/
|-- examples/
|-- docs/
|-- scripts/
`-- test/
⭐ Star History
📄 License
EmbodiK is released under the Apache License 2.0. See LICENSE for details. Binary wheels may bundle permissively licensed native dependencies; see THIRD_PARTY_NOTICES.md. Cite the project with CITATION.cff.
Developer: Andy Park andypark.purdue@gmail.com
Release files for embodik 0.23.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| embodik-0.23.1.tar.gz | 37.6 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| embodik-0.23.1-cp312-cp312-manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64 | Details |
| embodik-0.23.1-cp312-cp312-macosx_14_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 14.0+ ARM64 | Details |
| embodik-0.23.1-cp311-cp311-manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64 | Details |
| embodik-0.23.1-cp311-cp311-macosx_14_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 14.0+ ARM64 | Details |
| embodik-0.23.1-cp310-cp310-manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64 | Details |
| embodik-0.23.1-cp310-cp310-macosx_14_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 14.0+ ARM64 | Details |
Total release size: 260.8 MB
Release files / embodik-0.23.1.tar.gz
| Download URL | embodik-0.23.1.tar.gz |
|---|---|
| Size | 37.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0b45739f57e1695408d1e00d975a8be1b9c5a88ce8ff89c0801aa35fd26a98ec
|
|
BLAKE2b-256 checksum How to use checksums |
06ef183dca4d3d869331c27188c0c07fe964fce1077f36666e11b913b7511099
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / embodik-0.23.1-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | embodik-0.23.1-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 29.0 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d8ca9cf24eaf8565d5ef37d142957fe69df4c5e9215a9098e4f7526a3154e638
|
|
BLAKE2b-256 checksum How to use checksums |
3f9b34a3c1758f394ec61d98a0d5005516700dc8b3af0821588ba87c91f5680f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / embodik-0.23.1-cp312-cp312-macosx_14_0_arm64.whl
| Download URL | embodik-0.23.1-cp312-cp312-macosx_14_0_arm64.whl |
|---|---|
| Size | 45.4 MB |
| Tags | CPython 3.12 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3a9e53d9ab0a2aa0e21f01e6fe3d1c7a6e29c9c837dd8e88c49ceb3d7fecf311
|
|
BLAKE2b-256 checksum How to use checksums |
7b270adcb58d3d1c68ace0b9ce0201df54fd01ccc5622479e3122386376864ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / embodik-0.23.1-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | embodik-0.23.1-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 29.0 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
817e3e6779152d90441c9d57457e0edbb32a8cc83a081205a1d86f2d625ad2b4
|
|
BLAKE2b-256 checksum How to use checksums |
50dfe172b4dbc5648258d882dcfae6d116b62c38528124356372831b8b57b9fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / embodik-0.23.1-cp311-cp311-macosx_14_0_arm64.whl
| Download URL | embodik-0.23.1-cp311-cp311-macosx_14_0_arm64.whl |
|---|---|
| Size | 45.4 MB |
| Tags | CPython 3.11 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b2abecfb0012682930463868d0561ad81df84c643f415a4ceb6b803dd4810499
|
|
BLAKE2b-256 checksum How to use checksums |
659d096d3da4a6f91dccc49905ebed4f02a0911e1e9910bd60d5df950bec9cfa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / embodik-0.23.1-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | embodik-0.23.1-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 29.0 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9605081fb7717c79f291b9086458a30396bfb6f03879f960af3ae43748b05b7f
|
|
BLAKE2b-256 checksum How to use checksums |
4d814b1a99b16f90e33b3cc9a95bb487a6c17764baf06b1e46cb79e66481daf3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / embodik-0.23.1-cp310-cp310-macosx_14_0_arm64.whl
| Download URL | embodik-0.23.1-cp310-cp310-macosx_14_0_arm64.whl |
|---|---|
| Size | 45.4 MB |
| Tags | CPython 3.10 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
364f6139ba33867f206233c06dcfac04e0fe5bdd502f7336c579b977a81eed90
|
|
BLAKE2b-256 checksum How to use checksums |
9b6b5d823b7130739185dab82f6ebbe175be61476b7444a08f0b1fe613e38a6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency log