The following article will explain what a ROS2 package is and how you can use them to run programs in ROS2. Make sure you have a basic understanding of ROS2 by looking at the overview page.
What are ROS Packages?
As mentioned earlier, every program in ROS2 is delivered as a package. A package can contain various types of files where the most important files are the CMakeLists.txt file and the package.xml file. These two files are automatically generated when you create a package. These files contain information about the package so it can be built, which means the source code can be compiled so that you can run the programs. This means, that packages usually also contain the source code of the programs you want to run.
Now that you have an idea of what a package is, you can see how you can run them.
Running a ROS2 package
Before running a ROS program, you need to have ROS2 installed as explained in the installation tutorial.
When you just open a terminal, you can’t use ROS2 right away. You have to source the ROS2 installation first. This needs to be done for each terminal that you use. This is done with the following command:
$ source /opt/ros/foxy/setup.bash
In the installation tutorial, this has already been explained and also that you can add this line to the
.bashrc file. This file is executed each time you open a new terminal.
Note: this step is necessary as it is possible to have multiple ROS installations installed at the same time, such as ROS1 and ROS2. The computer needs to know which version you actually want to use.
Running a ROS2 program
Now, it is time to start a real ROS program. Therefore, you need to open a new terminal and then you can run a program with the following syntax:
$ ros2 run <ros2_package> <ros2_program>
Of course, the <ros2_package> and the <ros2_program> are placeholders and need to be replaced by an actual package and program name. For example, you can run the turtlesim program which is an animated 2D turtle that can be controlled with ROS commands just like a real robot.
$ ros2 run turtlesim turtlesim_node
Now, a little window should open on your screen and you should see a little turtle in the middle of a coloured canvas.
Next, you can interact with the turtle by starting another node by opening a new terminal and typing:
$ ros2 run turtlesim draw_square
The turtle will start moving in a square shape and it will draw a line on the canvas where it is moving:
At this point, you have two ROS programs running that interact with each other. As mentioned earlier, each ROS program is running as a node. These nodes can be visualized with a program called RQT. You can show these nodes with the following command in a new terminal:
$ ros2 run rqt_graph rqt_graph
The RQT graph will look as follows:
You have two nodes running and they communicate by using Topics. In the next article, you will learn how to create your own package and how you can simplify the process of starting multiple ROS2 programs at the same time.