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)
- Cross-platform support (CPU, GPU, TPU).
Please refer to the documentation for more details, features, and usage examples.
You can install pyroki
with pip
, on Python 3.12+:
git clone https://github.com/chungmin99/pyroki.git
cd pyroki
pip install -e .
Python 3.10-3.11 should also work, but support may be dropped in the future.
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+
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:
@misc{pyroki2025,
title={PyRoki: A Modular Toolkit for Robot Kinematic Optimization},
author={Chung Min Kim* and Brent Yi* and Hongsuk Choi and Yi Ma and Ken Goldberg and Angjoo Kanazawa},
year={2025},
eprint={2505.03728},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2505.03728},
}
Thanks!