dynibo
Fast · Lightweight · Reliable
Dynibo is a robot kinematics and dynamics library. It loads robot topology from URDF at runtime, keeps allocation outside repeated calculations through reusable workspaces, and exposes Rust, Python, C++, and C interfaces backed by the same Rust implementation.
Why dynibo
Fast
The core algorithms are written in Rust and designed to reuse memory. Once a
Workspace and the required output buffers have been created, the main
kinematics and dynamics routines do not allocate or resize memory inside the
calculation loop. In the benchmark set published with the project, the measured
core operations run 1.19–2.51× as fast as Pinocchio.
Lightweight
Dynibo focuses on a compact set of commonly used operations instead of a large
framework. Its API is built around a small vocabulary—Robot, Workspace,
LinkId, Frame, Twist, and Wrench—shared by all four language
interfaces.
Reliable
Tests cover finite-difference kinematics, dynamics regressions, branched robots, external loads, inverse kinematics, invalid input, workspace reuse, and allocation behavior. Core numerical results are also checked against an independent Pinocchio oracle.
What you can compute
| Area | Operations | Read next |
|---|---|---|
| Model | Load URDF models, look up links, configure fixed or floating bases | Robot model and URDF |
| Kinematics | Poses, Jacobians, Jacobian derivatives, spatial velocities and accelerations | Kinematics |
| Inverse kinematics | Damped least-squares target-pose solving | Kinematics |
| Dynamics | Mass matrix, velocity-product forces, gravity and inverse dynamics | Dynamics |
| Loads | Apply external wrenches to links | External loads |
Before interpreting numerical results, read Frames and spatial vectors for the shared conventions on ordering, matrix layout, units, and reference frames.
Choose an interface
| Interface | Best for | API style |
|---|---|---|
| Rust | Native Rust applications and explicit memory control | Robot methods with a reusable Workspace |
| Python | Research, scripting, and rapid prototyping | Robot methods with an internally owned workspace |
| C++ | C++ applications that want RAII and exceptions | Move-only dynibo::Robot wrapper |
| C | Stable ABI and integration with other languages | Opaque handles and dynibo_* functions |
The interfaces follow the conventions of their languages while preserving the same concepts and operations. API mapping shows the corresponding names, ownership rules, and error models side by side.
Explore the documentation
- Installation — choose and install a package.
- Quick start — run the same first calculation in Rust, Python, C++, or C.
- User Guide — learn the model, coordinate, frame, workspace, kinematics, and dynamics semantics shared by every binding.
- API mapping — translate an operation between languages.
- API reference — browse Python, C++, C, or Rust.
- GitHub source code — examples, issue tracking, benchmarks, and development information.