Skip to main content

mink-warp

Build Documentation License PyPI PyPI downloads

mink-warp is batched differential inverse kinematics on MuJoCo Warp, with a Mink-shaped API. Given a robot configuration and a stack of task-space objectives, it computes joint velocities for many parallel worlds on the GPU — the same control-loop niche as Mink, scaled to nworld.

Features include:

  • Mink-compatible tasks — FrameTask, RelativeFrameTask, PostureTask, ComTask, DampingTask, EqualityConstraintTask, soft JointLimitTask;
  • Hard limits — ConfigurationLimit, VelocityLimit, CollisionAvoidanceLimit, LinearInequalityLimit via GPU ADMM (ConstrainedSolver);
  • Device-native hot path — FK, Jacobians, residual assembly, and linear solves as Warp kernels on wp.array buffers;
  • Interchangeable solvers — damped least squares (default), Levenberg–Marquardt, L-BFGS, constrained ADMM;
  • Optional CUDA graph capture for fixed task sets in real-time loops;
  • Runnable mjviser demos — numbered examples/01_… through 05_… (Panda → UR5e → Cassie → dual iiwa → G1).

For usage, concepts, and API reference, see the documentation.

Installation

From PyPI:

uv add mink-warp

Or clone and run locally:

git clone https://github.com/simeon-ned/mink-warp.git && cd mink-warp
uv sync --extra dev --extra examples

Requires Python 3.10+, MuJoCo 3.8+, mujoco-warp, and NVIDIA Warp. A CUDA-capable GPU is recommended for batched workloads.

Usage

import mink_warp as mw

cfg = mw.Configuration(model, nworld=512, device="cuda")

frame = mw.FrameTask("ee", "site", position_cost=1.0, orientation_cost=1.0)
frame.set_target_from_configuration(cfg)
posture = mw.PostureTask(model, cost=1e-2)
posture.set_target_from_configuration(cfg)

solver = mw.IKSolver(cfg)
solver.solve_and_integrate([frame, posture], dt=0.01, use_graph=True)

# Hard joint limits (Mink limits=None equivalent):
v = mw.solve_ik(cfg, [frame, posture], dt=0.01, limits=None)

Examples

Examples are ordered by increasing complexity:

uv run examples/01_panda_ik.py                  # FrameTask + soft limits, CUDA graph
uv run examples/02_constrained_ur5e.py          # hard config / velocity / collision limits
uv run examples/03_equality_cassie.py           # closed-chain EqualityConstraintTask
uv run examples/04_self_collision_dual_iiwa.py  # dual Kuka, inter-arm collision
uv run examples/05_relative_frame_g1.py         # G1 RelativeFrameTask + collision

Assets are vendored under examples/ from Mink (Panda, UR5e, Cassie, Kuka iiwa14, Unitree G1). See examples and the examples guide in the docs.

Benchmarks

Batched throughput and CPU-vs-Mink parity (benchmarks/README.md):

uv run python benchmarks/bench_ik.py             # solves/sec vs batch size
uv run python benchmarks/bench_constrained.py    # hard limits vs mink daqp
uv run python benchmarks/bench_parity.py         # agreement with mink (oracle)

See benchmarks/RESULTS.md for sample numbers.

Acknowledgements

mink-warp mirrors the API and conventions of Mink, which is a MuJoCo port of Pink (Pinocchio). The Lie-group helpers and task Jacobian conventions follow the same lineage as Mink and Pink.

Implementation patterns also draw from GPU IK / physics stacks in the MuJoCo Warp ecosystem and from Newton (NVIDIA + Google DeepMind), though mink-warp is not a wrapper around Newton — it targets differential IK with a Mink-shaped API on mujoco.MjModel + mjwarp.

Citation

If you use mink-warp in your research, please cite it as follows:

@software{nedelchev2026minkwarp,
  author       = {Nedelchev, Simeon and Domrachev, Ivan},
  title        = {{mink-warp: Batched differential inverse kinematics on MuJoCo Warp}},
  year         = {2026},
  version      = {0.1.0},
  url          = {https://github.com/simeon-ned/mink-warp},
  repository   = {https://github.com/simeon-ned/mink-warp},
  license      = {Apache-2.0},
}

Also available as CITATION.cff and CITATION.bib. Method papers: docs/references.bib.

License

Apache-2.0 — see LICENSE.

Metadata

Release files for mink-warp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mink-warp 0.1.0
File Size Uploaded Provenance
mink_warp-0.1.0.tar.gz 43.7 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mink-warp 0.1.0
File Interpreter ABI Platform
mink_warp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 43.8 MB

Release files / mink_warp-0.1.0.tar.gz

Download URL mink_warp-0.1.0.tar.gz
Size 43.7 MB
Tags Source
SHA-256 checksum
How to use checksums
9e834ad6678c865c15f135ce0f53bcabd50089adaf72dc03423dceacaba455be
BLAKE2b-256 checksum
How to use checksums
4075992a7444032965c9c7d2b36c243978b8f9d316a9bdeaeffa826401b3934b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / mink_warp-0.1.0-py3-none-any.whl

Download URL mink_warp-0.1.0-py3-none-any.whl
Size 78.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
244d36321e315ceabf2229bc495bf070ee9d6179ac2ecd14612f4f996f7fcb53
BLAKE2b-256 checksum
How to use checksums
3591e49a13632c504acc39ea0269a7d3b0dfec0c120900ee9f050d50ff514298
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for mink-warp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page