finds.dev← search

// the find

stephane-caron/pink

★ 791 · Python · Apache-2.0 · updated Apr 2026

Python inverse kinematics using Pinocchio and QP solvers

Pink is a Python library for differential inverse kinematics built on top of Pinocchio, the well-regarded C++ rigid-body dynamics library. It formulates IK as a weighted QP problem, letting you stack multiple frame tasks, posture tasks, and constraints, then solve them with your QP solver of choice. Aimed at robotics researchers and practitioners who have a URDF and want to control articulated bodies without writing their own Jacobian math.

The task abstraction is clean and composable — you define what you want (position, orientation, center of mass), assign a cost weight, and the library handles building and solving the QP each timestep. Support for Control Barrier Functions as inequality constraints is a real differentiator; self-collision avoidance as a CBF barrier rather than a post-hoc check is the right way to do this. The test suite has per-task unit tests and Jacobian tests, which matters a lot for a library where a sign error silently produces wrong robot motion. The example coverage across UR5, Panda, humanoids, quadrupeds, and wheeled bipeds means you can usually find something close to your morphology.

This is strictly differential (local) IK — if the initial configuration is in a local minimum or against a joint limit, you're stuck, and the FAQ acknowledges this without offering a practical escape hatch beyond 'try a different starting config'. Pinocchio installation is notoriously painful on anything that isn't conda; the pip path works but you'll hit binary compatibility issues on non-standard setups. The QP solver is pluggable in principle, but the examples all use quadprog, and there's no guidance on which solver to reach for when quadprog is slow or infeasible. Acceleration limits are in the code but listed separately from velocity limits, and it's not obvious from the README how they interact with the QP when both are active.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →