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_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.

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.6.tar.gz (773.7 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: embodik-0.20.6.tar.gz
  • Upload date:
  • Size: 773.7 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.6.tar.gz
Algorithm Hash digest
SHA256 42933ef880fb3408b4840edf98f11993d00ad3871752205bc148eddba291bb66
MD5 602ff3575e6a291cdb3d2a65ef09e6a4
BLAKE2b-256 3d7d974c022a92a65ca42fa24b60f43ee6075d8f8819444ee0e874e260cd91f3

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