Skip to main content

PyRoki: Python Robot Kinematics Library

[!NOTE] This is Almond Bot's fork of chungmin99/pyroki, published to PyPI as almond-pyroki because upstream has no PyPI release. It installs the pyroki import name, depends on almond-jaxls instead of upstream's git-pinned jaxls, and is pinned to the revision the Almond Axol SDK is tested against (see the almond branch). If upstream publishes an official release, prefer it over this fork.

Project pagearXiv

PyRoki is a modular, extensible, and cross-platform toolkit for kinematic optimization, all in Python.

Core features include:

  • Differentiable robot forward kinematics model from a URDF.
  • Automatic generation of robot collision primitives (e.g., capsules).
  • Differentiable collision bodies with numpy broadcasting logic.
  • Common cost implementations (e.g., end effector pose, self/world-collision, manipulability).
  • Arbitrary costs, autodiff or analytical Jacobians.
  • Integration with a Levenberg-Marquardt Solver that supports optimization on manifolds (e.g., lie groups) and hard constraints via an Augmented Lagrangian solver.
  • Cross-platform support (CPU, GPU, TPU) via JAX.

Please refer to the documentation for more details, features, and usage examples.


Installation

You can install pyroki with pip, on Python 3.10+:

git clone https://github.com/chungmin99/pyroki.git
cd pyroki
pip install -e .

Status

May 6, 2025: Initial release

We are preparing and will release by May 16, 2025:

  • Examples + documentation for hand / humanoid motion retargeting
  • Documentation for using manually defined Jacobians
  • Support with Python 3.10+

Limitations

  • Static shapes & JIT overhead: JAX JIT compilation is triggered on first run and when input shapes change (e.g., number of targets, obstacles). Arrays can be pre-padded to vectorize over inputs with different shapes.
  • No sampling-based planners: We don't include sampling-based planners (e.g., graphs, trees).
  • Collision performance: Speed and accuracy comparisons against other robot toolkits such as CuRobo have not been extensively performed, and is likely slower than other toolkits for collision-heavy scenarios.

The following are current implementation limitations that could potentially be addressed in future versions:

  • Joint types: We only support revolute, continuous, prismatic, and fixed joints. Other URDF joint types are treated as fixed joints.
  • Collision geometry: We are limited to sphere, capsule, halfspace, and heightmap geometries. Mesh collision is approximated as capsules.
  • Kinematic structures: We only support kinematic trees; no closed-loop mechanisms or parallel manipulators.

Citation

This codebase is released with the following preprint.

Chung Min Kim*, Brent Yi*, Hongsuk Choi, Yi Ma, Ken Goldberg, Angjoo Kanazawa. PyRoki: A Modular Toolkit for Robot Kinematic Optimization arXiV, 2025.

*Equal Contribution, UC Berkeley.

Please cite PyRoki if you find this work useful for your research:

@inproceedings{kim2025pyroki,
  title={PyRoki: A Modular Toolkit for Robot Kinematic Optimization},
  author={Kim*, Chung Min and Yi*, Brent and Choi, Hongsuk and Ma, Yi and Goldberg, Ken and Kanazawa, Angjoo},
  booktitle={2025 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  year={2025},
  url={https://arxiv.org/abs/2505.03728},
}

Thanks!

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

almond_pyroki-0.1.0.tar.gz (41.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

almond_pyroki-0.1.0-py3-none-any.whl (45.4 kB view details)

Uploaded Python 3

File details

Details for the file almond_pyroki-0.1.0.tar.gz.

File metadata

  • Download URL: almond_pyroki-0.1.0.tar.gz
  • Upload date:
  • Size: 41.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for almond_pyroki-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e1ae10636554d32f17c90365d5caadd22c9e8864d86c96385d53c259d3eff508
MD5 535d8c45178f30f6ca6ff6e8b4a4fcba
BLAKE2b-256 62c7fc6d9b3e9468eed3e2f0bba698cff53fe707f67c6fff9c4daa6f97e80253

See more details on using hashes here.

Provenance

The following attestation bundles were made for almond_pyroki-0.1.0.tar.gz:

Publisher: publish.yml on almond-bot-research/pyroki

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file almond_pyroki-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: almond_pyroki-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 45.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for almond_pyroki-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 35720e87af788575c8c8fcfd586e84a0003a614bb92853f23f0de819514091aa
MD5 6e6df150dfc38d40687438df210ee780
BLAKE2b-256 03243b977247ca19366225244ab38194ee8ca2a14839f09a753a994f9c823189

See more details on using hashes here.

Provenance

The following attestation bundles were made for almond_pyroki-0.1.0-py3-none-any.whl:

Publisher: publish.yml on almond-bot-research/pyroki

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page