mink
Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
License
Apache-2.0
Overview
mink (MuJoCo Inverse Kinematics) is a Python library for differential inverse kinematics built on top of MuJoCo. It solves the core robotics problem of computing joint velocities that satisfy task-space objectives while respecting physical constraints, by formulating the problem as a quadratic program (QP).
The library provides a composable task abstraction where multiple objectives — end-effector pose tracking, relative frame tracking, posture regulation, center of mass control, joint damping, and degree-of-freedom freezing — can be combined in a single solve step. Physical constraints including joint position limits, velocity limits, and collision avoidance between any geometry pair are enforced automatically.
mink supports an extensive range of robot platforms: single and dual arms (Franka Panda, UR5e, KUKA iiwa14, ALOHA 2), arm-hand combinations (iiwa14+Allegro, xArm+LEAP), dexterous hands (Shadow Hand), humanoids (Unitree G1, H1, Apptronik Apollo), quadrupeds (Unitree Go1, Boston Dynamics Spot), bipeds (Agility Cassie), and mobile manipulators (Stanford TidyBot, Hello Robot Stretch).
Created by Kevin Zakka (UC Berkeley PhD student, Google PhD Fellow) as a port of the Pink library (Pinocchio-based) to MuJoCo. Version 1.0.0 reached stable release in December 2025.
mink (MuJoCo Inverse Kinematics) is a Python library that brings production-quality differential inverse kinematics to the MuJoCo ecosystem. Created by Kevin Zakka, a UC Berkeley PhD student and Google PhD Fellow, it fills a critical gap — while MuJoCo has become the de facto standard simulator for robotics research, it lacked a native IK solver with constraint handling and collision avoidance.
The library formulates inverse kinematics as a quadratic program (QP), providing a mathematically clean and computationally efficient approach. Multiple task-space objectives — including end-effector tracking, relative frame control, posture regulation, center of mass positioning, and joint damping — can be composed and solved simultaneously. Physical constraints such as joint position limits, velocity limits, and collision avoidance between any geometry pair are enforced automatically.
mink supports over 20 robot platforms out of the box, spanning single and dual arms (Franka Panda, UR5e, KUKA iiwa14, ALOHA 2), arm-hand combinations (iiwa14+Allegro, xArm+LEAP), dexterous hands (Shadow Hand), humanoids (Unitree G1, H1, Apptronik Apollo), quadrupeds (Unitree Go1, Boston Dynamics Spot), bipeds (Agility Cassie), and mobile manipulators (Stanford TidyBot, Hello Robot Stretch).
mink is a port of the Pink library (originally built on Pinocchio) to MuJoCo, leveraging MuJoCo's fast collision detection and the daqp QP solver. Version 1.0.0 reached stable release in December 2025, marking its readiness for production robotics applications.
Why it matters
mink fills a critical gap in the MuJoCo ecosystem by providing a clean, well-designed inverse kinematics library with collision avoidance and constraint handling. As MuJoCo has become the de facto standard simulator for robotics research, having a production-quality IK library built natively on MuJoCo significantly simplifies robotics software stacks.
Problem it solves
The lack of a native, production-quality inverse kinematics library for MuJoCo that handles collision avoidance, joint limits, and multiple task-space objectives simultaneously
Key takeaways
- Differential IK formulated as quadratic programming with real-time performance
- Supports 20+ robot platforms from single arms to humanoids and quadrupeds
- Built-in collision avoidance between any geometry pair
- Composable task abstraction for combining multiple objectives in one solve step
Who it is for
- Robotics researchers using MuJoCo
- Robot manipulation developers
- Humanoid control researchers
- Motion planning engineers
Limitations
- MuJoCo-specific — cannot be used with other physics engines
- Differential IK is a local solver — may get stuck in local minima for large motions
- QP solver dependency (daqp) may have limitations for very high-DoF systems
- Python-only — no C++ bindings for real-time embedded applications