The following article will explain what a ROS package is and how you can use them to run programs in ROS, the Robot Operating System.
What are ROS Packages?
As mentioned earlier, every program in ROS 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 build, 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 what a package is, you can see how you can run them.
Running a ROS package
Before running a ROS program, you need to do a couple of extra steps in advance. These steps are to build the catkin workspace, start the roscore and then starting the actual program.
The catkin workspace
A catkin workspace is a directory on your computer that follows some specific guidelines. These make it easier for the software using the directory and its files to find what it needs, in this case, the source code of your software.
To build your catkin workspace which you have created during the installation of ROS, you type the following two commands, assuming you called your catkin workspace also catkin_ws:
cd ~/catkin_ws catkin_make
After catkin has finished, you can now start a roscore and then run the software.
Before you can run any ROS program, you need to start a roscore. This can be done by opening a terminal and typing the following text and then hitting ENTER on the keyboard:
Starting the roscore in the terminal should output something similar to the following image:
Now, the roscore should be running and the computer is ready to run ROS programs. Note: only one single roscore can run in the same robotic system at the same time, so you only need to do this step once.
If the roscore dies, you need to restart it. You can also stop the roscore by pressing CTRL+c on your keyboard.
Running a ROS 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:
rosrun <ros_package> <ros_program>
Of course, the <ros_package> and the <ros_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.
rosrun turtlesim turtlesim_node
Now, a little window should open on your screen and you should see a little turtle in the middle of a colored canvas.
Next, you can interact with the turtle by starting another node by opening a new terminal and typing:
rosrun 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 will learn more about this software later, but here is the graph that this software will generate for your current setup:
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 ROS programs at the same time.