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:

pip install embodik

Install example dependencies, copy the examples into a local folder, and run the basic IK demo:

pip install "embodik[examples]"
embodik-examples --copy

cd embodik_examples
python 01_basic_ik_simple.py

If pip install needs to build from source on your platform, follow the platform-specific setup in the Installation Guide.

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_ai_worker_constraint_teleop.py ROBOTIS AI Worker dual-arm teleop 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_ai_worker_constraint_teleop.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

ROBOTIS AI Worker constraint teleop 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.
  • 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

  • Installation - platform setup, source builds, and troubleshooting.
  • Quickstart - first IK calls and solver concepts.
  • Examples - public scripts and development-only demos.
  • API Reference - Python API generated from docstrings.
  • GPU Solvers - FI-PeSNS and PPH-SNS batch solver notes.
  • 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

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.

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.5.tar.gz (18.6 MB 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.5-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.5-cp312-cp312-macosx_14_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

embodik-0.20.5-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.5-cp311-cp311-macosx_14_0_arm64.whl (7.6 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

embodik-0.20.5-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.5-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.5.tar.gz.

File metadata

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

File hashes

Hashes for embodik-0.20.5.tar.gz
Algorithm Hash digest
SHA256 05a9f725b6442f265dcca2d97f80be1eda655271ce03a08b237ce527aa777dea
MD5 910e72dd99f7c5fad568bfbf352b7c6b
BLAKE2b-256 0a55c44620cba7894636b5b0aa2f89d831f081fedc70854c947bfd441a94e275

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for embodik-0.20.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bfa1cc876ee45716f4ec647322e731704951effbbdd3a07449843c25accefe65
MD5 436c2c690ac44d24e99059cf3ce9d863
BLAKE2b-256 96e36ae3b15c09e699207e7a4076b02786a7d06e2f500e7d617cdcb8ce0dfc0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for embodik-0.20.5-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 511b4a4769cc3ece34e2bec6d1ad6c34c4755e57268a49f79cb0d2b54649fc6c
MD5 f5cf7e3c2813d85810af354e1da6fb5b
BLAKE2b-256 1d94498b8295f072846c013716006f29820d91153057a7d550d66090ce383909

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for embodik-0.20.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 97547a56cc059976f01e3136b95f2fbde0082b5f9dc0aa7d39be78d21aabd214
MD5 457fd4328a563e2e5220d1d9a0062ad6
BLAKE2b-256 83659833da32c8c2c74691d6a2983269ee36ac65d38ce5f3512598c535fb210d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for embodik-0.20.5-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 dd9272c44ff5ac1284c4680cd9c60975e511a6c2026437ae8a8b9644c8690f12
MD5 01bde478664394145a6a4703d31f44d5
BLAKE2b-256 33583620b95c45827101d77e287e92a532d6bc7dc6c4c81ec028380bf46245af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for embodik-0.20.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0e8ac371c34a0c3f6bcde83b6019da6d3007c316dc2da6ead9a70fd95069c80d
MD5 fac163c5a94f56d7c43e7115ddb82121
BLAKE2b-256 7c4b660ce2444ce25928037d346e531f218b0d4eab600e895116328991166db6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for embodik-0.20.5-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 310353310fcc5a8ad413629e953d5cc19f276d520a278a33e529ce1c1534f169
MD5 e03bf395f7216c39ea5d1cde2738bd50
BLAKE2b-256 6a3ae4748f3c2d5c7af6089cd9c454355c15fda78b50ce434c09adeaab1564ec

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