PyRoki
SoftwarePython toolkit for differentiable robot kinematics, inverse kinematics and trajectory optimization, with JAX acceleration and explicit joint and collision-model limits. [1]
Installation & first result →Official websiteGetting started
- For
- Python robotics developers implementing custom kinematic objectives [1]
- Source rights
- Named licenses are documented by part. Review licenses
- Unknowns
- operating system, compute requirements not fully established. Review gaps
Source researched · Not tested by us
Sources checked · Research details
Overview
PyRoki is a Python library for finding robot joint configurations that satisfy pose and other geometric objectives. It builds a differentiable robot model from a URDF and lets developers combine costs for end-effector pose, collisions and manipulability. It fits work where you need to change the optimization problem itself. [1]
Is this for you?
- Known limitations
- Only kinematic trees; no closed-loop mechanisms or parallel manipulators.
- Unsupported URDF joint types are treated as fixed.
- Mesh collision is approximated with capsules.
- First-run and shape-change JAX compilation adds overhead; no sampling-based planners are included.
What you need
Installation & first result
Open the upstream getting-started guide [3] · Project documentation [1]
- Install the source in an isolated Python 3.10+ environment with pip install -e .
- Run python examples/01_basic_ik.py from the repository.
- Move the target in the Viser viewer and inspect the computed Panda joint configuration.
Hardware, models & data
- Inputs and outputs
URDF robot geometry and target poses or optimization costs produce joint configurations; the basic example displays them in Viser.
- File formats
- URDF
- Evaluation
Check target tracking and geometry in the basic IK viewer; visual convergence does not verify physical control or collision safety.
Editorial assessment from cited documentation; no runtime testing.
[3] · Editorial assessment
Project notes
Check the mechanism before choosing the solver
The implementation supports kinematic trees. Closed-loop mechanisms and parallel manipulators are outside the documented scope. Revolute, continuous, prismatic and fixed joints are supported; other URDF joint types are treated as fixed. Collision geometry is limited to spheres, capsules, halfspaces and heightmaps, with meshes approximated as capsules. These choices can change whether a robot model is suitable for the task. [1]
PyRoki also excludes sampling-based planners. The README says collision-heavy performance has not been extensively compared against other toolkits and may be slower. Avoid interpreting its differentiable collision costs as a complete collision-checking or motion-planning system. [1]
Start with the Panda target viewer
The source requires Python 3.10 or newer. Install it in an isolated environment with pip install -e ., then run python examples/01_basic_ik.py from the repository. The example loads a Panda model through robot_descriptions, opens a Viser viewer and solves for the panda_hand target as you move its controls. It displays the resulting joint configuration and a smoothed elapsed-time value. This is a useful first model-and-solver check; it does not send commands to a physical arm. [1] [2] [3]
JAX supports CPU, GPU and TPU execution, but its first call and changes in array shape can trigger compilation. Keep that overhead separate from steady-state solve time. The README suggests padding arrays when target or obstacle counts vary. A complete CPU/RAM/GPU minimum is not provided by the inspected setup sources. [1] [2]
Preserve the dependency versions too
This profile reviews commit 388e43e1fc0d0ee382968d3dd72970fd62a0450c; no GitHub release was listed at review. The package metadata labels itself 0.0.0 and pulls jaxls from an unpinned Git URL. Pinning PyRoki alone therefore does not freeze its dependency environment. Record resolved dependencies when building a repeatable experiment. [2] [6]
The project code and documentation use MIT terms. Robot descriptions loaded by the example and other dependencies retain their own licenses. We inspected source and license text but did not install the library, run the viewer or benchmark a solver. [7] [2] [3]
What we checked
Source researched only; no installation, training, benchmark or physical hardware test performed. No affiliate links or reused media.
Not yet established
- Requirements: operating system
- Version-specific hardware compatibility (ecosystem tags alone do not establish it)
Updates
- Upstream last updated
- Apr 1, 2026 [6]
- Latest release
- Not established
- Profile updated
- Oct 17, 2026
- Sources last checked
- Oct 17, 2026
- Next review
- Nov 17, 2026
- Reviewed revision
- commit snapshot; no GitHub releases listed / 388e43e1fc0d0ee382968d3dd72970fd62a0450c · software repository
Source files and licenses
Useful MIT kinematic optimization library; external robot descriptions and dependency licenses remain separate.
| Layer | Availability / license |
|---|---|
| software | available · MIT Repository materials only; external components retain their own terms. [7] |
| documentation | available · MIT Repository materials only; external components retain their own terms. [7] |
The reviewed kinematics solver does not require pretrained weights.
The basic IK workflow uses robot geometry and targets rather than a training dataset.
References
Each source links to the exact revision we read. “Used for” shows where this page relies on it.
- S001 Overview and implementation limits
Revision, date & where cited
chungmin99/pyroki contributors · github.com · revision
388e43e· Accessed Oct 17, 2026
Used for: Overview, Is this for you?, What you need, Installation & first result and 3 more - S002 Python requirements and dependencies
Revision, date & where cited
chungmin99/pyroki contributors · github.com · revision
388e43e· Accessed Oct 17, 2026
Used for: What you need, Installation & first result, Start with the Panda target viewer, Preserve the dependency versions too - S003 Basic inverse-kinematics example
Revision, date & where cited
chungmin99/pyroki contributors · github.com · revision
388e43e· Accessed Oct 17, 2026
Used for: Installation & first result, Hardware, models & data, Start with the Panda target viewer, Preserve the dependency versions too - S007 Project license
Revision, date & where cited
chungmin99/pyroki contributors · github.com · revision
388e43e· Accessed Oct 17, 2026
Used for: Preserve the dependency versions too, Source files and licenses - S006 Reviewed release and revision
Revision, date & where cited
chungmin99/pyroki / GitHub · github.com · revision
388e43e· commit snapshot; no GitHub releases listed / · Accessed Oct 17, 2026
Used for: Preserve the dependency versions too, What we checked
Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5