// the find
roboticslibrary/rl
The Robotics Library (RL) is a self-contained C++ library for rigid body kinematics and dynamics, motion planning, and control.
A self-contained C++ robotics library covering the full stack from spatial vector algebra and rigid-body dynamics through motion planning and hardware control, without requiring ROS. Academic in origin (IROS 2017), used in research and education. Targets engineers who need a standalone toolkit for kinematics, planning, and real robot interfacing.
No ROS dependency — you can run this on real-time OS targets (RTAI, Xenomai), embedded systems, or anywhere ROS doesn't belong, without fighting ROS's build tooling or lifecycle overhead. The hardware abstraction layer has clean typed interfaces (Device → CyclicDevice, separated analog/digital/force/camera channels) — adding a new driver means implementing a known contract, not reverse-engineering internals. Multiple collision detection backends (Bullet, ODE, FCL, PQP, CCD) selectable at build time, so you can trade off performance, license compatibility, or query type without changing your planning code. Both PRM and RRT planners ship with interactive visualization demos that render the configuration space — genuinely useful for debugging why a planner is failing, not just a demo for the README.
Visualization is built on Coin3D/SoQt — OpenInventor lineage from the late 90s, essentially unmaintained, and getting it to compile on a modern Ubuntu or macOS system requires hunting down packages that distributions have already dropped. Robot models use custom XML schemas (rlmdl, rlkin, rlsg), not URDF — the entire existing ecosystem of robot descriptions from ROS/ROS 2 is incompatible without manual conversion, which is a significant adoption tax. No Python bindings anywhere in the tree; modern robotics research integrates Python for scripting, sensor fusion, and ML, and a pure-C++ API without bindings makes RL a hard sell when libraries with Python-first interfaces exist. The cmake dependency list is a pile of custom FindXXX.cmake modules for obscure packages (cifX, ATIDAC, Comedi, solid3) — a clean build on a fresh machine routinely turns into a multi-hour dependency hunt before you write a line of application code.