ROS Terms

From robotics


ROS Indigo Logo

ROS Terms

This page gives the definitions of the most common ROS terms.

ROS Node
A ROS node is a simple program that publishes or subscribes to a topic or contains a program that enables a ROS service. It should be highly specialized and accomplish a single task. Nodes communicate with other nodes by sending messages, which will be discussed later. Examples of tasks which should be carried out in a specific node are:
  • Controlling motors
  • Interpreting commands from an input source
  • Planning a path to drive on
  • Reading a specific sensor.
ROS Package
A package is a container for closely related nodes and utilities used by those nodes. Include files, message definitions, resources, etc are stored along with nodes inside a package. As an example, imagine a robot with many different sensors, such as IR rangefinders, sonar, laser scanners, and encoders. Each of these types of sensors would ideally have their own node. Because these nodes are all for sensors, you might group them into a package called my_robots_sensor_drivers.
ROS Stack
A stack is a collection of closely related packages. You might name a stack after your robot, with individual packages for sensors, motors, and planning. These packages would contain more specific nodes that do specific tasks. You will often hear about the “Navigation stack” in ROS. This is a collection of packages used for helping robots navigate in the world and is very useful.

Important note: ROS is trying to get rid of the term Stack for Metapackage, but everyone still uses Stack.

ROS Workspace
All of the development you do for ROS must be done in your ROS workspace. This is so ROS knows where to look for all of the programs you write and their respective utilities and resources.
ROS Topic
ROS Topics are named buses that allow nodes to pass messages. A ROS topic can be published to, or subscribed to with many different message types. This setup allows the publishing and subscribing to happen completely independent of each other assuming they have matching message types.
ROS Publisher
A ROS Publisher is a program or portion of a program that "publishes" or sends data into a ROS topic.
ROS Subscriber
A ROS subscriber is a program or portion of a program that "subscribes to" a topic in order to receive the messages published to that topic.
ROS Service
A ROS service is an object that can be called similar to a function from other nodes. It allows a request and a reply. An example might be an "add two ints" service.
URDF File
ROS URDF files are used to define a robots physical characteristics. The URDF file describes the robot model, Robot sensors, scenery, and objects. These models are displayed in rviz and use the tf (transform) topics to define where the models are. If you are creating a robot you can/will be able to export the URDF file straight from Solidworks.
ROS Launch file
A ROS launch file is a file used to execute multiple nodes and allows for remapping of topics, setting of parameters, and will automatically start roscore if it is not already running.

See roslaunch or ROS Launch file type.

ROS Parameter
A ROS parameter is a name that has an associated value. A central [parameter server] keeps track of parameters in one place that can be updated. . As it is not designed for high-performance, it is best used for static, non-binary data such as configuration parameters.
ROS Messages
ROS Messages are the individual sets of data that are published to a topic. Messages can have many different types but the standard messages can be found here. The fields in messages can be any of the base types or another message. Common Message types can be found here.
Robot Web Tools
Robot Web Tools is a suite that allows most ROS information to be sent over the internet. Robot Web Tools allows you to build ROS webpages or pass the information directly through the internet.
ROS Serial
ROS Serial allows ROS to talk with any serial device, primarily embedded controllers such as Arduino's.