Thriving Thriving C++ C+
โ†‘ 65 ?
Articulated-Rigid-Body wbyates777/Articulated-Rigid-Body

Compact implementation of spatial algebra, and Featherstone's articulated-body algorithm (ABA), composite rigid body algorithm (CRBA), and the recursive Newton-Euler algorithm (RNEA) with end-to-end automatic differentiability (AD). Depends on STL, GLM and autodiff libraries.

HEALTH ? 89 / Healthy
// solo builder// hidden gem glmrbdlrigid-body-dynamicsautodiffautomatic-differentiationcomputer-graphicskinematic-treesurdffeatherstonecpp23 ?

// readme

icon Articulated Rigid Body (ARB)

Compact C++ articulated rigid body simulation library implementing:

  • Articulated-body algorithm (ABA) - $O(N_B)$ forward dynamics for kinematic trees,
  • Composite Rigid-Body Algorithm (CRBA) - $O(N_B^2)$ joint-space inertia matrix $M(q)$ for kinematic trees.
  • Recursive Newton-Euler algorithm (RNEA) - $O(N_B)$ inverse dynamics for kinematic trees,
  • Spatial algebra implementation (header-only),
  • End-to-end automatic differentiability using autodiff (header-only),
  • Collision Resolution โ€“ spatial impulses, GJK/EPA, and 4-point persistent contact manifolds,
  • Unified Robot Description Format (URDF) import and export.

End-to-end automatic differentiation enables derivatives to propagate through the physics pipeline supporting system identification, gradient based optimisation, and machine learning applications.

Minimal dependencies: STL, glm, (autodiff, openGJK, and libccd optional).


Visual Demos

Simulating a simple real-world robot - the UR5:

https://youtu.be/mSGq3sTns7I

**Rigid bodyโ€ฆ