Skip to content

EmbodiK

High-performance prioritized numerical inverse kinematics for cross-embodiment robotics and VLA/AI applications

EmbodiK is a modern C++ prioritized numerical IK library with Python bindings for robot bring-up, teleoperation, retargeting, and whole-body IK examples. It is built on Pinocchio, exposed to Python through Nanobind, and keeps task hierarchy, constraints, and recovery policy in the solver so examples can stay focused on targets and visualization.

Design Principles

Cross-EmbodimentApply one IK policy across arms, humanoids, quadrupeds, and mobile bases.
Solver IntelligenceKeep priority, recovery, diagnostics, and constraint policy in the solver.
Reliable & SafeRespect limits, collision constraints, CoM support, and contact feasibility.
ScalableUse the same solver surface for demos, stress tests, and policy rollout.

✨ Features

  • ⚙️ Fast C++ core: Eigen-based IK routines with Python bindings and numpy support.
  • 🎯 Prioritized task hierarchy: Register frame, posture, relative-pose, and CoM objectives with explicit priorities.
  • 🛡️ Solver-owned robustness: Elastic limits, adaptive dt, auto task layout, weighted fallback, stall recovery, and collision guards — in C++.
  • ⚡ Tunable collision stack: Speed / Balanced / Precise presets, conservative bounds, and post-step guards — often ~10–50× faster collision steps vs naive full scans.
  • 🔒 Hard-constraint handling: Joint limits, collision constraints, CoM support polygons, contact, and relative-pose checks stay in C++.
  • 📈 Diagnostics: Timing, condition numbers, recovery stage, task scaling, and solver status reporting.
  • 🎮 Examples and visualization: Viser and mjviser demos for Panda, AI Worker, RB-Y1, Unitree G1, and Spot workflows.

🚀 Quick Start

Install EmbodiK, run a maintained example, then adapt the registered-task API pattern from that script:

python -m pip install --only-binary=:all: "embodik[examples]"
python -c "import embodik; print(embodik.__version__)"
embodik-examples --copy
cd embodik_examples
python 01_basic_ik_simple.py

See the Quickstart and Examples pages for the current KinematicsSolver, add_frame_task(), and solve_position_step() workflow.

📦 Installation

See the Installation Guide for wheel, source-build, and troubleshooting instructions.

python -m pip install --only-binary=:all: embodik

📚 Documentation

Learn

  • Quickstart — Build a small prioritized IK example with registered tasks.
  • Examples — Run maintained public examples and clone-only development demos.
  • Guides overview — Pick a reading path (robustness, collision, GPU, transforms).

Configure the solver

Reference

🎬 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

📄 License

Apache License 2.0 - see the LICENSE file for details. Source: robodreamer/embodik

Copyright (c) 2026 Andy Park andypark.purdue@gmail.com