Skip to content

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.

pip install embodik

Documentation

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