// the find
ros-controls/ros2_controllers
Generic robotic controllers to accompany ros2_control
The official controller library for ros2_control — diff drive, joint trajectory, admittance, steering geometries, IMU/GPS/FT sensor broadcasters, and more. If you're building a ROS 2 robot and need standard motion controllers that work with MoveIt2 and Nav2 out of the box, this is what you reach for first.
Maintained across every active ROS 2 distro simultaneously (Humble through Rolling/Lyrical), with separate CI workflows and ABI compatibility checks per distro — that's real maintenance discipline, not just tagging releases. The joint_trajectory_controller includes documented spline interpolation modes (position, velocity, acceleration, full PVA) with diagrams showing exactly what each trajectory replacement behavior does. Parameters are defined in YAML with generate_parameter_library, which gives you typed, validated params and auto-generated documentation rather than raw node parameter lookups. Codecov integration with meaningful coverage suggests the test suite is actually exercised, not just present.
The admittance controller's force-torque coupling is real-time capable in theory but the implementation leans heavily on KDL, which means if your robot's kinematics are unusual or you want to swap solvers, you're in for a rewrite, not a config change. The chained controller support (composing controllers in a chain) is relatively new and the documentation for it is thin compared to the standalone controllers — you'll be reading test files to understand how it works. No simulation-first examples: all the testing infrastructure assumes a real or mocked hardware interface, so getting something running in Gazebo from scratch still requires external tutorials. The steering controllers (Ackermann, bicycle, tricycle) share a common base but the geometric assumptions are baked in — odd wheel configurations or non-standard axle layouts will require forking, not parameterizing.