mink is a library for differential inverse kinematics in Python, based on the MuJoCo physics engine.
Features include:
- Task specification in configuration or operational space;
- Limits on joint positions and velocities;
- Collision avoidance between any geom pair;
- Support for closed-chain kinematics (loop closures) via equality constraints;
- Lie group interface for rigid body transformations.
For usage and API reference, see the documentation.
If you use mink in your research, please cite it as follows:
@software{Zakka_Mink_Python_inverse_2025,
author = {Zakka, Kevin},
title = {{Mink: Python inverse kinematics based on MuJoCo}},
year = {2025},
month = dec,
version = {1.0.0},
url = {https://github.com/kevinzakka/mink},
license = {Apache-2.0}
}Install from PyPI:
uv add minkOr clone and run locally:
git clone https://github.com/kevinzakka/mink.git && cd mink
uv syncTo run an example:
# Linux
uv run examples/arm_ur5e.py
# macOS
./fix_mjpython_macos.sh # So that mjpython works with uv.
uv run mjpython examples/arm_ur5e.pymink works with a variety of robots, including:
- Single arms: Franka Panda, UR5e, KUKA iiwa14, ALOHA 2
- Dual arms: Dual Panda, Dual iiwa14, Flying Dual UR5e
- Arm + hand: iiwa14 + Allegro, xArm + LEAP
- Dexterous hands: Shadow Hand
- Humanoids: Unitree G1, Unitree H1, Apptronik Apollo
- Legged robots: Unitree Go1, Boston Dynamics Spot, Agility Cassie
- Mobile manipulators: TidyBot, Hello Robot Stretch, Kinova Gen3 + LEAP
Check out the examples directory for more.
Install the library, use it and report any bugs in the issue tracker if you find any. If you're feeling adventurous, you can also check out the contributing guidelines and submit a pull request.
mink is a direct port of Pink which uses Pinocchio under the hood. Stéphane Caron, the author of Pink, is a role model for open-source software in robotics. This library would not have been possible without his work and assistance throughout this project.
mink also heavily adapts code from the following libraries:
- The lie algebra library that powers the transforms in mink is adapted from jaxlie.
- The collision avoidance constraint is adapted from dm_robotics's LSQP controller.
- The code implementing operations on matrix Lie groups contains references to numbered equations from the following paper: A micro lie theory for state estimation in robotics, Joan Solà, Jeremie Deray, and Dinesh Atchuthan, arXiv preprint arXiv:1812.01537 (2018).