The official ROS tutorials are very comprehensive, however I found the way they present ROS to a beginner results in a very steep learning curve. Here is our own set of tutorials, which are a work in progress. I may reference tutorials from other sites if I find them useful.
ROS is many things, it is primarily a communication framework, but it also has a huge set of useful tools, including viewing data, navigating the filesystem, and starting up processes.
Each process is called a node. Nodes are designed to do a specific task. We can create complex functionality (such as controlling a robot) by building multiple nodes and having them talk together.
There are several ways for nodes to talk to each other, the most common one is a topic. The basic idea is that a single node can “publish” data to a topic, and then one or more nodes can “subscribe” to the topic and receive the data.
Nodes are typically grouped together into a package. All of our software is in a single package called “robosub”. When you install ROS, several other packages are installed that provide some useful functionality, such as rqt_plot.
ROS provides many useful command-line tools. Your BASH environment gets access to these when you have the following line in your ~/.bashrc file:
Most ROS commands support tab autocompletion, so take advantage of it!
ROS has a few different commands that are useful for moving and looking around. They are typically in the form:
$ <command> <package_name> <...>
Most are based on the typical navigation functions:
While you can manually find the executable (or python script) and run it manually, ROS provides a tool for quickly finding and starting a node, the
$ rosrun <package_name> <node_name>
roslaunch command allows you to launch multiple nodes at the same time. The nodes are specified in a special file called a launch file.
$ rosrun <package_name> <launchfile_name>
More information about launch files can be found here
rosnode command shows information about nodes. You can view all currently running nodes by running
$ rosnode list
rostopic command shows information about topics. You can view all currently active topics by running
$ rostopic list