Skip to content

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.

Get started Install dynibo

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.