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
- URDF
(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?