Metadata-Version: 2.4
Name: prpl_kinematics
Version: 0.0.1
Summary: Kinematics-only robot modeling, IK, motion planning, and manipulation primitives built on a general KinematicTree.
License-Expression: MIT AND Apache-2.0
Project-URL: Repository, https://github.com/Princeton-Robot-Planning-and-Learning/prpl-mono
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: src/prpl_kinematics/third_party/ikfast/LICENSE
Requires-Dist: numpy>=1.23.5
Requires-Dist: scipy>=1.10
Requires-Dist: prpl_utils>=0.0.1
Requires-Dist: spatialmath-python>=1.1.10
Requires-Dist: yourdfpy>=0.0.56
Requires-Dist: trimesh>=4.0
Requires-Dist: pybullet-arm64>=3.2.8
Requires-Dist: imageio>=2.30
Requires-Dist: eaik>=1.2.1
Provides-Extra: planning
Requires-Dist: ompl>=2.0.0; extra == "planning"
Provides-Extra: ssik
Requires-Dist: ssik[urdf]>=1.2; extra == "ssik"
Provides-Extra: develop
Requires-Dist: ompl>=2.0.0; extra == "develop"
Requires-Dist: black; extra == "develop"
Requires-Dist: docformatter; extra == "develop"
Requires-Dist: isort; extra == "develop"
Requires-Dist: mypy; extra == "develop"
Requires-Dist: pylint>=2.14.5; extra == "develop"
Requires-Dist: pytest-pylint>=0.18.0; extra == "develop"
Requires-Dist: pytest>=7.2.2; extra == "develop"
Dynamic: license-file

# prpl-kinematics

Kinematics-only robot modeling, IK, motion planning, and manipulation primitives
built on a general `KinematicTree`. A ground-up successor to `pybullet-helpers`:
engine-agnostic (PyBullet is a pluggable collision/render backend, not the source
of truth), with poses represented as `spatialmath` `SE3`/`SE2`.

See [`DESIGN.md`](DESIGN.md) for the architecture and roadmap.

## Status

Early, and the API may still change. The geometry layer and the `KinematicTree`
(joints, forward kinematics, grasp via re-parenting, state snapshots) are the
stable core. Built on top of them: URDF loading, PyBullet and Blender backends,
numerical and analytic IK (IKFast, EAIK, optionally SSIK), BiRRT and OMPL motion
planning, manipulation primitives, and robot models for the Franka Panda, Kinova
Gen3, TidyBot, and the bimanual Dexmate Vega.

Pin a version if you need stable behavior.

## Requirements

- Python 3.10+

## Installation

```
pip install prpl_kinematics
```

IKFast solvers are compiled from the bundled C++ sources on first use, which needs
a C++ toolchain and LAPACK/BLAS. The other IK backends have no such requirement.

### Optional extras

```
pip install "prpl_kinematics[planning]"   # OMPLPlanner and seed_ompl
pip install "prpl_kinematics[ssik]"       # the SSIK analytic IK backend
```

`ompl` publishes wheels for far fewer platforms than everything else here (none for
Windows, and macOS 15 or newer only), so it stays out of the base install. Importing
`OMPLPlanner` or `seed_ompl` without it raises an `ImportError` saying so; everything
else, including `BiRRTPlanner`, works untouched.

## Development

From the monorepo root, with [uv](https://docs.astral.sh/uv/):

```
uv pip install -e "./prpl-kinematics[develop]"
```

```
./run_ci_checks.sh   # autoformat, mypy, pylint, pytest
```
