Metadata-Version: 2.4
Name: pink_motions
Version: 1.0.0
Summary: Robot motions performed by inverse kinematics and predictive control.
Keywords: inverse,kinematics,pinocchio
Author-email: Stéphane Caron <stephane.caron@normalesup.org>
Maintainer-email: Stéphane Caron <stephane.caron@normalesup.org>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Robot Framework :: Library
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
License-File: LICENSE
Requires-Dist: clarabel
Requires-Dist: loop-rate-limiters >=0.1.0
Requires-Dist: matplotlib
Requires-Dist: meshcat >=0.3.2
Requires-Dist: meshcat-shapes >=0.3.0
Requires-Dist: pin-pink >=4.4.0
Requires-Dist: qpmpc >=2.6.3,<4
Requires-Dist: qpsolvers >=4.3.1
Requires-Dist: robot_descriptions >=3.0.0
Requires-Dist: xacrodoc
Project-URL: Changelog, https://github.com/pink-kinematics/pink_motions/blob/main/CHANGELOG.md
Project-URL: Documentation, https://pink-kinematics.github.io/pink_motions/
Project-URL: Homepage, https://pink-kinematics.github.io/pink_motions/
Project-URL: Source, https://github.com/pink-kinematics/pink_motions
Project-URL: Tracker, https://github.com/pink-kinematics/pink_motions/issues

# Pink motions

[![Build](https://img.shields.io/github/actions/workflow/status/pink-kinematics/pink_motions/ci.yml?branch=main)](https://github.com/pink-kinematics/pink_motions/actions)
[![PyPI version](https://img.shields.io/pypi/v/pink_motions)](https://pypi.org/project/pink_motions/)

A library of robot motions performed by inverse kinematics and model predictive control:

<p align="center">
    <img src="https://github.com/user-attachments/assets/5b169c2b-3c84-47b8-96d0-5b9095255f52" alt="Sample scenarios from pink motions" />
</p>

## Usage

You can try out a scenario from the library directly using [pixi](https://pixi.sh):

```console
pixi run scenario --robot ur5 --qpsolver quadprog
```

Or equivalently `uv run examples/play_scenario.py` with the same arguments. In Python, this example simply does:

```py
import pink_motions

pink_motions.play_scenario(
    name="ur5",
    dt=0.005,  # timestep in seconds
    qpsolver="quadprog",
)
```

This will open a MeshCat tab in your web browser playing the scenario for its prescribed duration.

## See also

Pink motions are specified using a combination of several open-source libraries:

- [MeshCat](https://github.com/meshcat-dev/meshcat-python) for (optional) visualization
- [Pink](https://github.com/pink-kinematics/pink) for differential inverse kinematics
- [Pinocchio](https://github.com/stack-of-tasks/pinocchio/) for forward kinematics functions: Jacobians, Jlog6, ...
- [qpmpc](https://github.com/stephane-caron/qpmpc) for linear model predictive control, used in biped and humanoid scenarios
- [robot\_descriptions.py](https://github.com/robot-descriptions/robot_descriptions.py) to load robot descriptions

The library is also related to the following projects:

- [ik\_qpbenchmark](https://github.com/qpsolvers/ik_qpbenchmark): Test set for QP solvers with differential IK problems generated from pink motions.
- [LoIK](https://github.com/Simple-Robotics/LoIK): Constrained differential inverse kinematics solver that was evaluated on pink motions.
- [Pinker](https://github.com/pink-kinematics/pinker): Next-generation differential inverse kinematics library, which was benchmarked using pink motions.

