ROS 2 Control Architecture for beginners

I had been struggling to grasp ROS 2 control architecture for a while, as I didn’t really know all parts of ROS 2, including but not limited to pluginlib or YAML Parameter files. The ROS 2 control documentation and resources are great, but I was overwhelmed by all the new information and details presented in front of me at once.

Here is my attempt to describe its architecture for beginners like myself during the initial introduction (Hoping It’s correct). All the significant details of the Controller Manager and Resource Manager are encapsulated within ‘the framework’, instead, this only presents users with the following components:

  • Controllers (which you can use)
  • Hardware Components Plugin (which you have to write for your robot)
  • Various files for configuring various settings (if needed):
    • URDF <ros2_control> for your joints
    • plugin.xml for your hardware plugin
    • parameter YAML files for controllers

(One aspect I was unable to illustrate in this picture is that the Joint State Broadcaster takes joints under <ros2_control> rather than <robot>.)

I’m sure all of these obvious to people already familiar with ROS 2 Control, but I’m posting this here in the hopes that it can be useful to someone like me who is just getting started.

(feedbacks are as always very welcome)

ROS 2 Control.pdf (100.8 KB)

It might be great if the first tutorial of ROS 2 cotnrol is to extend non-ros2-controled RRbot with the ROS 2 control functionalirty step by step. Do maintainers take such pull-request?


Yes to all the above!

First of all, thank you for the feedback and constructive criticism.

I have one request though. Scientists have recently discovered that our projects are picky about naming. “ROS 2” prefers to be written with a space in between while “ros2_control” prefers to stick to how the framework ROS package is called :slight_smile:

In terms of docs, we’d be happy to iterate on this figure with you and see how we could make it part of the official lineup on
All the stuff we have over there was made with if that is a helpful pointer.


Hi @bmagyar,

Thanks for your feedback. Here is a revised version with It doesn’t seems to be able to post the orignal xml file.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.