ROS Resources

This section gives you an overview of additional resources and tools you might need when working with ROS. This is by no means complete, and we encourage you to explore what’s out there on your own.

ROS Tutorials

If you’re interested in even more in-depth information on ROS2, the official ROS tutorials are a very good place to start.

There are C++ and Python versions for coding examples. Since we will be using Python in this class, you can skip C++ specific chapters.

ROS Concepts

If you don’t quite understand the underlying concepts of ROS yet: have a look here.

Visualization Tools

Once you start working with ROS and are writing your own nodes, you will want to be able to visualize data and analyze interaction between nodes.

Plotjuggler

We have a tutorial on this now! Go to Real-Time Plotting.

RViz

RViz is an awesome tool for 3D visualization, but can take some time getting used to it. RViz can visualize different robot coordinate frames, for coordinate transformations in ROS, look here: Coordinate Transformations

Recording and playing back data

ROSbags are an awesome functionality of ROS, trust me. Use them.

We are working on a tutorial in the section Bag File Plotting.

Coordinate Transformations

ROS uses the tf transformations tool to keep track of coordinate frames and their relationships over time. The second and newest generation of the transform library is tf2 .

The tf.transformations library also helps you deal with quaternions by providing various transformation options, for example to Euler angles.

Messages

There’s a pre-defined ROS message for almost everything, trust me. Standard messages representing primitive data types and other basic message constructs, such as multiarrays, can be found in std_msgs. The package common_interfaces includes the most common generic robot-specific message packages, such as geometry_msgs, sensor_msgs and nav_msgs. When you google a message name, you’ll easily find the API (example for a sensor_msgs/Imu.msg ).

However, if you do find yourself needing to define your own message type, there is a ROS tutorial on that, too.

ROS Logger

Of course you can use simple print() commands. However, ROS has a logger that you can (should) use for printing messages to your console if they are not for debugging purposes only.

Installing additional Packages

Released packages can be installed with aptitude and don’t have to be build from source. Use:

$ sudo apt install ros-iron-<package>

Additional Stuff

Unit and coordinate conventions used within ROS: REP 103