EmbodiK
High-performance inverse kinematics solver optimized for cross-embodiment VLA/AI applications
EmbodiK is a modern C++ library with Python bindings designed for robust, high-performance IK behaviors in cross-embodiment scenarios. The name reflects its focus on embodied dynamics and constraint handling, making it ideal for humanoid robots and AI/VLA integrations. Built on top of Pinocchio and using Nanobind for seamless Python integration.
Features
- 🚀 High Performance: C++ core with optimized Eigen linear algebra
- 🐍 Python Integration: Seamless numpy array support via Nanobind
- 🎯 Multiple Solvers: Single-step and full multi-task velocity IK
- 🛡️ Singularity Robust: Advanced inverse methods for stable solutions
- 🔒 Constraint Support: Joint limits and operational space constraints
- 📊 Visualization: Optional Viser-based interactive visualization
Quick Start
import embodik
import numpy as np
# Create robot model
model = embodik.RobotModel.from_urdf("path/to/robot.urdf")
# Create kinematics solver
solver = embodik.KinematicsSolver(model)
# Solve IK for a target pose
target_pose = np.eye(4) # 4x4 transformation matrix
result = solver.solve_position_ik(target_pose)
if result.status == embodik.SolverStatus.SUCCESS:
print(f"Solution: {result.solution}")
Installation
See the Installation Guide for detailed instructions.
Documentation
- Installation Guide — How to install EmbodiK
- Quickstart — Get started in 5 minutes
- GPU Solvers — FI-PeSNS and PPH-SNS GPU-accelerated solvers
- API Reference — Complete API documentation
- Examples — Example code and tutorials
- Development Guide — Contributing and development
- Recovery robustness — Hardware seeds, limits, collision, stall recovery
Preview
Franka Panda collision-free IK
ROBOTIS AI Worker constraint teleop
License
Apache License 2.0 - see the LICENSE file for details. Source: robodreamer/embodik
Copyright (c) 2026 Andy Park andypark.purdue@gmail.com