skillfed

pin-pink

Inverse kinematics for articulated robot models, based on Pinocchio.

pin-pink v4.3.0 264.0K downloads/30d#8,345 on PyPI817
Permissive license Active released

What it is and what it does

Pink is a Python inverse kinematics solver built on top of Pinocchio for controlling articulated robots. It formulates robot motion as a set of weighted tasks—such as positioning a foot, orienting a base, or maintaining a preferred posture—and solves a quadratic program to compute joint velocities that satisfy all tasks simultaneously while respecting joint limits. The solver handles task conflicts by normalizing objectives and weighting them relative to each other, making it suitable for complex multi-objective control problems on robots ranging from simple arms to humanoids and quadrupeds.

The package provides a task-based API where you define residual functions (e.g., desired frame position minus current position) and costs, then call solve_ik to get a velocity command. It integrates with Pinocchio's robot models and supports floating-base velocity limits for robots with free-flyer or planar bases. The solver outputs differential velocities that can be integrated over time to reach target configurations, or continuously tracked if targets change.

Use it for:

  • Control a multi-limb robot (humanoid, dual-arm, or quadruped) to simultaneously achieve multiple frame and posture objectives.
  • Solve inverse kinematics for a manipulator arm with end-effector position and orientation targets plus joint regularization.
  • Track moving targets in real-time by continuously updating task targets and integrating the solver's velocity output.
  • Enforce floating-base velocity limits on legged robots to clamp commanded linear and angular velocities.
  • Resolve conflicting task objectives (e.g., foot contact vs. base orientation) by weighting normalized costs.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Pink solves differential inverse kinematics for articulated robots by formulating task-based objectives as a quadratic program, computing joint velocities that drive the robot toward multiple weighted targets while respecting configuration and velocity limits.

Yes. Pink is actively maintained, has no known vulnerabilities, installs with low friction, and is licensed permissively. It is production-stable and well-suited for anyone building task-based inverse kinematics solvers for articulated robots. Install it if you need to control multi-objective robot motion; skip it if you only need forward kinematics or single-task IK.

Install

pin-pink on PyPI

pip

pip install pin-pink

uv

uv add pin-pink

poetry

poetry add pin-pink

Installing pin-pink

Before you install

Low install friction with a pure Python wheel. Active maintenance with a recent release 30 days ago and steady repository activity. Supports current Python versions (3.10–3.14).

License in practice

Licensed under Apache 2.0 (permissive), allowing commercial and private use with minimal restrictions.

Quickstart

pip install pin-pink

from pink.tasks import FrameTask, PostureTask
from pink import Configuration, solve_ik
import numpy as np

tasks = {
    "base": FrameTask("base", position_cost=1.0, orientation_cost=1.0),
    "posture": PostureTask(cost=1e-3),
}
dt = 6e-3
for t in np.arange(0.0, 10.0, dt):
    velocity = solve_ik(configuration, tasks.values(), dt, solver="quadprog")
    configuration.integrate_inplace(velocity, dt)

Requires a Pinocchio robot model and configuration object; the package expects numpy arrays and assumes familiarity with robot kinematics concepts (Jacobians, task residuals).

Verify before relying

  • Whether Pinocchio must be pre-installed or is handled as a transitive dependency through the listed runtime deps.
  • Performance characteristics when solving IK for robots with many degrees of freedom.
  • Compatibility with specific robot description formats beyond URDF.

Package facts

License not declared (permissive)
Python support supports the current Python release (>=3.10)
Install friction low — pure-Python wheel
Runtime dependencies 5 — loop-rate-limiters, numpy, pin, qpsolvers, typing-extensions
Maintenance actively maintained — 30 days since the last release
Last repo commit
First released
Downloads 264,025/month — #8,345 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pin_pink-4.3.0-py3-none-any.whl

Keywords: inverse, kinematics, pinocchio

Development Status :: 5 - Production/StableFramework :: Robot Framework :: LibraryIntended Audience :: DevelopersIntended Audience :: Science/ResearchLicense :: OSI Approved :: Apache Software LicenseProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Scientific/Engineering

Tags

inverse kinematics robotdifferential IK solvertask-based robot controlpinocchio inverse kinematicsrobot motion planningarticulated robot kinematicsweighted task optimization
roboticskinematicsoptimization

More Scientific/Engineering packages