Skip to main content
EmbodiK logo

EmbodiK

Python C++ Nanobind Build PyPI Docs License: Apache-2.0 GitHub stars

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.

Panda, ROBOTIS AI Worker, and Unitree G1 moving through distinct trajectories across 512 fully articulated CUDA worlds

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

Franka Panda collision-free IK preview

ROBOTIS AI Worker constraint teleop

ROBOTIS AI Worker constraint teleop preview

RB-Y1 bimanual whole-body IK

RB-Y1 bimanual whole-body IK preview

Unitree G1 retargeting IK

Unitree G1 retargeting IK preview

Spot full-body IK

Spot full-body IK preview

Spot locomanipulation mjviser

Spot locomanipulation mjviser preview

🧰 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

Star History Chart

📄 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)

Source distribution for embodik 0.23.1
File Size Uploaded
embodik-0.23.1.tar.gz 37.6 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for embodik 0.23.1
File
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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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

Release history Release notifications | RSS feed

This release

0.23.1 This release

7 release files

0.22.0

7 release files

0.21.1

7 release files

0.21.0

7 release files

0.20.13

1 release file

0.20.9

7 release files

0.20.8

1 release file

0.20.7

7 release files

0.20.6

1 release file

0.20.4

1 release file

0.20.3

1 release file

0.20.2

1 release file

0.20.1

1 release file

0.20.0

1 release file

0.19.0

1 release file

0.18.9

1 release file

0.18.8

1 release file

0.18.6

1 release file

0.18.5

1 release file

0.18.4

1 release file

0.18.3

1 release file

0.18.2

1 release file

0.18.1

1 release file

0.18.0

1 release file

0.17.0

1 release file

0.16.0

1 release file

0.15.6

1 release file

0.15.5

1 release file

0.15.4

1 release file

0.15.3

1 release file

0.15.2

1 release file

0.15.1

1 release file

0.15.0

1 release file

0.14.4

1 release file

0.14.3

1 release file

0.14.2

1 release file

0.14.1

1 release file

0.14.0

1 release file

0.13.2

1 release file

0.13.1

1 release file

0.13.0

1 release file

0.12.6

1 release file

0.12.5

1 release file

0.12.4

1 release file

0.12.3

1 release file

0.12.2

1 release file

0.12.1

1 release file

0.12.0

1 release file

0.11.0

1 release file

0.10.0

1 release file

0.9.0

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.1

1 release file

0.3.0

1 release file

0.1.1

1 release file

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