🤖 AI Summary
This work addresses the tight coupling between reference signal processing and control law implementation in ROS 2 controllers, which leads to code redundancy and poor reusability. To resolve this, the authors propose a modular architecture that decouples reference generation logic from the controller for the first time in ROS 2, introducing a dedicated Reference Generator component. This component uniformly handles reference acquisition, validation, and interpolation in both joint and Cartesian spaces, and integrates seamlessly with downstream controllers via the ros2_control chainable controller mechanism. Leveraging this architecture, several novel controllers—including PD with gravity compensation, Cartesian pose, and admittance controllers—were developed. Experimental validation on Universal Robots and Franka Emika manipulators demonstrates stable and reliable reference tracking, significantly reduced code duplication, and enhanced controller reusability and development efficiency.
📝 Abstract
This paper introduces a novel modular architecture for ROS2 that decouples the logic required to acquire, validate, and interpolate references from the control laws that track them. The design includes a dedicated component, named Reference Generator, that receives references, in the form of either single points or trajectories, from external nodes (e.g., planners), and writes single-point references at the controller's sampling period via the existing ros2_control chaining mechanism to downstream controllers. This separation removes duplicated reference-handling code from controllers and improves reusability across robot platforms. We implement two reference generators: one for handling joint-space references and one for Cartesian references, along with a set of new controllers (PD with gravity compensation, Cartesian pose, and admittance controllers) and validate the approach on simulated and real Universal Robots and Franka Emika manipulators. Results show that (i) references are tracked reliably in all tested scenarios, (ii) reference generators reduce duplicated reference-handling code across chained controllers to favor the construction and reuse of complex controller pipelines, and (iii) controller implementations remain focused only on control laws.