Skip to main content

High-performance inverse kinematics solver optimized for cross-embodiment VLA/AI applications

Project description

EmbodiK

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

EmbodiK is a high-performance 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, 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-aware behavior and visualization.
  • connect the same stepping IK pattern to teleop input.
  • use richer clone-only examples for development and stress testing.

The detailed installation notes, API reference, and example walkthroughs live in the official documentation:

https://robodreamer.github.io/embodik/

Quick Start

Install from PyPI:

python -m pip install --only-binary=:all: embodik
python -c "import embodik; print(embodik.__version__)"

If that import works, the core package is installed.

If pip cannot find a compatible wheel, follow the platform-specific source-build setup in the Installation Guide.

Optional: follow the Installation Guide examples setup once, then run the basic IK demo from the copied example directory:

cd embodik_examples
python 01_basic_ik_simple.py

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.

Examples

The pip-facing examples are intentionally split by purpose:

Script Purpose
01_basic_ik_simple.py Minimal fixed-base IK bring-up for a robot preset or new URDF.
02_collision_aware_IK.py Collision-aware IK behavior demo and advanced tuning surface.
03_teleop_ik.py Small adapter showing how teleop input drives the same IK step.
08_com_constraint_example.py CoM support-polygon constraint visualization.
09_dual_arm_ects.py Dual-arm ECTS and orthogonal coordination modes.
12_bimanual_whole_body_ik.py Bimanual whole-body teleop, defaulting to AI Worker and optionally supporting RB-Y1, with CoM and collision handling.
13_unitree_g1_retargeting_ik.py Unitree G1 whole-body retargeting IK with CoM and optional collision handling.

Run them from a copied example directory:

python 02_collision_aware_IK.py
python 03_teleop_ik.py
python 12_bimanual_whole_body_ik.py
python 13_unitree_g1_retargeting_ik.py

Most examples default to the Panda preset. Use --robot <key> when a script supports alternate robot presets. See the Examples Guide for the full catalog, helper conventions, and clone-only development examples.

Preview

Franka Panda collision-free IK

Franka Panda collision-free IK preview

ROBOTIS AI Worker constraint teleop

Bimanual whole-body IK preview

RB-Y1 bimanual whole-body IK

RB-Y1 bimanual whole-body IK preview

Unitree G1 retargeting IK

Unitree G1 retargeting IK preview

Core Capabilities

  • C++ IK core with Nanobind Python bindings.
  • Hierarchical velocity IK tasks for frames, posture, CoM, and dual-arm coordination.
  • 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.
  • Experimental GPU batch IK and collision tooling for high-throughput research workflows.

Documentation

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

Clone-only advanced surfaces live under dev_examples/ and are not copied by embodik-examples --copy.

Repository Layout

embodik/
|-- README.md
|-- cpp_core/
|   |-- include/embodik/
|   `-- src/
|-- python_bindings/
|   `-- src/
|-- python/embodik/
|-- examples/
|-- dev_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.

Developer: Andy Park andypark.purdue@gmail.com

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

embodik-0.20.7.tar.gz (774.1 kB view details)

Uploaded Source

Built Distributions

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

embodik-0.20.7-cp312-cp312-manylinux_2_28_x86_64.whl (11.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

embodik-0.20.7-cp312-cp312-macosx_14_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

embodik-0.20.7-cp311-cp311-manylinux_2_28_x86_64.whl (11.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

embodik-0.20.7-cp311-cp311-macosx_14_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

embodik-0.20.7-cp310-cp310-manylinux_2_28_x86_64.whl (11.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

embodik-0.20.7-cp310-cp310-macosx_14_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file embodik-0.20.7.tar.gz.

File metadata

  • Download URL: embodik-0.20.7.tar.gz
  • Upload date:
  • Size: 774.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for embodik-0.20.7.tar.gz
Algorithm Hash digest
SHA256 7d02bf2d9bbcacd36ecd3776543d03b73a4378c133088c68d7887bb9548b373f
MD5 5b0bca9316173f63a277239dc109f1db
BLAKE2b-256 7ad9f0aff963fc9266c6de8c00ce08f697b8fdeaa6f997c09f2d85fce137c372

See more details on using hashes here.

File details

Details for the file embodik-0.20.7-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for embodik-0.20.7-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8e218ba94e04f52b9e350c40e718aabf33333370bb67567efd3c6b3687c658fe
MD5 9691395dbd6de86bbc732e859baf5710
BLAKE2b-256 37b3c5164abc322cef2ef94a432f99df02c5653ee4499f8e769175f352852a2e

See more details on using hashes here.

File details

Details for the file embodik-0.20.7-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for embodik-0.20.7-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5d92d1c96516192ac8a540f6ee3a096844da91a520def46a62547e90f2ad92a4
MD5 12e13a98ced147beaef99c473bb87dba
BLAKE2b-256 0cd57f9ea3315a1b1fa21e40b6f60ab39d92d2a0376f2865c4d2d6461668e400

See more details on using hashes here.

File details

Details for the file embodik-0.20.7-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for embodik-0.20.7-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 56a933b47c548114e2d4d2e7bbaf010c00c0bc98fa3ba34a1e5e0fe7abf77bcc
MD5 ccec25541c46f08c220a0eeb7a16ff79
BLAKE2b-256 4460d400345b0c82659466618d64cdcc6a0bd5f3c18d76046e698f98b9a25e71

See more details on using hashes here.

File details

Details for the file embodik-0.20.7-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for embodik-0.20.7-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1c6e0a5752101132d0975799fe300d04ba6a68ef8db571ff4ce448be82531735
MD5 f3c193d10a2846fa78ec389d8ae39c23
BLAKE2b-256 298eebc6c7cbf2e84e4f5ad3cbbff3e471fca4fa93f416d889bd00af120810bb

See more details on using hashes here.

File details

Details for the file embodik-0.20.7-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for embodik-0.20.7-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0176c913db07ee9d51d572048a8b01c276c4c694f5c1759c0d836f45752242d
MD5 663500395cbbe869fec3b401d7cc08ef
BLAKE2b-256 1e1e0b12f2cc1a4bba793c1172c3a3268b9ec6eeff1531bc4837239550df73d1

See more details on using hashes here.

File details

Details for the file embodik-0.20.7-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for embodik-0.20.7-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 16cd34131141c1afc395e378bc7491cfc04be1c08b1671d29fb55a66ec9d994f
MD5 3baa2850000f0f0c3fb30e9ffde6d54b
BLAKE2b-256 8be2b5deb30bb5f2249e0553f790c57081a47903c0667cc49912840c1e8409e5

See more details on using hashes here.

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