ROS2 CLI and GUIs
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
Video of Workshop 3
The video of the first half of Workshop 3 is here
The video of the second half of Workshop 3 is here
ROS Concepts
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
CLI Cheat Sheet
Note: <Tab> completion is everywhere!
CLI only
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
GUI-related
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
Hands On
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
Beginner CLI Tutorials
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