Content outline
Review ROS2 concepts: networking, DDS, micro-ROS, nodes, topics, bags
Do ROS2 CLI Tools tutorials:
Do Nodes & topics tutorials
CLI, gui tools and terminator
Launching nodes
Logging and bags, bag recording and playback
The video of the first half of Workshop 3 is here
The video of the second half of Workshop 3 is here
In this segment we discuss the concepts ROS2 is built around, using these pages for reference: https://docs.ros.org/en/humble/Concepts/Basic.html and also tf2 at https://docs.ros.org/en/humble/Concepts/Intermediate/About-Tf2.html
What is a node? It's a process that communicates with other ROS2 nodes.
The collection of nodes and their communication channels is called the ROS graph: nodes are the vertices, communication channels are the edges that connect vertices. There's a tool to display the graph
Look at nodes graphic in Nodes Tutorial here
DDS over UDP provides the communication channels. We can configure DDS on a per-channel basis for best effort (like UDP) or guaranteed delivery (like TCP)
What is pub-sub? One or more nodes publish data to one or more topics. Other nodes subscribe to topics, and receive all the messages via a callback mechanism. Look at Topics tutorial graphic here
Topics have a name and a defined message format (type). One message-type per topic. Message types are typically some collection of ints, floats, and strings
/rosout: the ROS console output, similar to output of a collection of backgrounded processes in Unix
Node architecture is shown below:
Micro-ROS architecture, and how it relates to ROS2 nodes and topics: https://micro.ros.org/docs/overview/features/
Dark blue is specific code for micro-ROS. Light blue is standard code from ROS2
ROS bags: a file with a record of all the messages that were sent on some collection of topics
bags can be replayed
bags are typically inspected using tools like rqt and plotjuggler
Note: <Tab> completion is everywhere!
ros2 <command> -h # display help for the command
ros2 run <package> <node>
ros2 node list # list the running nodes
ros2 node info <node_name> # show info (pubs, subs, services etc) for a running node
ros2 topic list # list the topics that exist
ros2 topic [echo | info | hz | pub | type] <topic> # for a topic, echo, display info, display frequency, publish a msg, report msg type
ros2 interface list # list all messages
ros2 interface show nav_msgs/msg/Odometry # show the structure of a specific message
rosclean - a .bashrc alias that cleans the build out of ros2_ws
rqt
ros2 run swri_console swri_console
ros2 run rqt_topic rqt_topic
ros2 run rqt_<plugin> rqt_plugin # Run an rqt plugin standalone. <plugin> can be topic, graph, msg, publisher reconfig, or others. Use tab-complete to discover them
rviz2
ros2 run swri_console swri_console
ros2 run plotjuggler plotjuggler
In this segment we do several of the ROS2 beginner-level CLI tools tutorials found here: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools.html
Do the Configuring the ROS2 Environment tutorial - 5 min
Do the Using Turtlesim, ros2 and rqt tutorial - 15 min
Do the Understanding Nodes tutorial - 10 min
Do the Understanding Topics tutorial - 20 min
Do the Using rqt_console to view console logs except use swri_console - 5 min
Do the Launching Nodes tutorial - 5 min
Do the Recording and Playing-back Data tutorial. Use rqt_topic to look at important topics while running, and swri-console to monitor console messages. - 10 min
List all the supported interfaces with ros2 interface list
Inspect the Odometry message: run ros2 interface show nav_msgs/msg/Odometry
Plot the X-Y path, and heading and distance to waypoints in Plotjuggler from the bag.
Future: Inspect the data on critical topics when near a waypoint using rqt_bag