finds.dev← search

// the find

ros-controls/ros2_controllers

★ 783 · C++ · Apache-2.0 · updated Jul 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →