@miura: +100 for posting a response.
Tbh, I would not expand on your answer, unless the OP provides more context and shows some more effort.
Simply plonking a screenshot of rqt_graph
in a post and then demanding everything is explained is not what we consider a proper question here on ROS Answers.
To further clarify on the given example:
move_base
is publishing a "twist" message on the /cmd_vel
topic.
This is a Twist message: geometry_msgs/msg/Twist
How do I know this will be a Twist message? Simply put: that is just what the community has settled-upon. When you want to make a robot move you do it by sending a geometry_msgs/msg/Twist
message on the /cmd_vel
topic.
As you can see in the flowchart there is also a turtlebot3_teleop_keyboard
node publishing Twist
messages on the /cmd_vel
topic. This isn't a conflict; this is a feature of ROS. Multiple nodes can publish the same messages on a topic, and any number of nodes can subscribe to that topic.
That's not to say that there won't be a conflict. /cmd_vel
is telling the robot "You must travel at V m/s with a rotation of W r/s" so ...
Another important one to point out is that robot_state_publisher
on the right side. As you can see from the flowchart it is publishing a /tf_static
topic, but what might not be immediately obvious is that robot_state_publisher
is only publishing that topic.
I say this because there are three arrows originating from that node. If you look closely they are all given the same /tf_static
label. What this tells us is that there are three other nodes subscribing to that topic:
amcl
on the far left side, turtlebot3_slam_gmapping
also on the left, and move_base
in the center-bottom.
/tf_static
is a topic, but it is referring to a Static Transform. I'm running out of space here, but here are some links explaining Transforms in ROS2: