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
✨ 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.
📚 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
- Solver Robustness & Recovery — Adaptive dt, elastic limits, auto layout, weighted fallback, stall recovery.
- Collision Constraints & Tuning — Tuning presets, safety layers, and performance vs naive full-scan checks.
- GPU Batch Solvers — FI-PeSNS and PPH-SNS batch solver notes.
Reference
- KinematicsSolver API — Tasks, constraints, runtime policy, and diagnostics.
- RobotModel API — Load models, compute FK/Jacobians, and query collisions or CoM.
- Installation Guide — Install wheels, source builds, and optional example extras.
- Development Guide — Local builds, tests, and release workflow.
🎬 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