Open Source RoboticsRobots, software & learning

PyRoki

Software

Python 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

Licenses & related hardware

Requirements · Research details and dates

On this page

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.

[1]

What you need

Languages / runtimes
  • Python

[2]

Dependencies
  • Python >=3.10
  • JAX >=0.4.0 and jaxlib
  • jaxls installed from an unpinned Git URL
  • yourdfpy, robot_descriptions and Viser

[2]

Host computer

CPU, GPU and TPU execution through JAX; no workload-specific RAM or accelerator minimum established in the inspected sources.

[1]

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.

[1] [2] [3]

Installation

Clone the source and install editable in Python 3.10 or newer.

[1] [2]

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.

[1] [3]

File formats
  • URDF

[1]

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.

LayerAvailability / license
softwareavailable · MIT
Repository materials only; external components retain their own terms. [7]
documentationavailable · 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.

Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5

Change history