ROS Terminology
Node
A node in ROS is the fundamental unit of computation, representing a single executable program.
Nodes facilitate communication with others, even if written in different languages, through message exchange.
Best practice is to develop one node for a specific purpose, and a Master manages these nodes.
Nodes are created and communicate through the Master.
Package
A ROS package is the basic organizational unit, bundling one or more nodes along with necessary information for their execution.
When nodes are grouped together, they form a package; multiple packages bundled together are referred to as a metapackage.
Message
Messages in ROS serve as a means for nodes to exchange data.
Typically structured as variables or arrays containing messages.
Communication methods include topics and services, depending on the nature of transmission and reception.
Topic
Publisher:
Publishes information continuously, irrespective of whether a request is made.
Analogous to a YouTube streamer who broadcasts content regardless of viewership.
Subscriber:
Subscribes to specific content of interest.
Similar to a YouTube subscriber who watches content they find interesting.
The publisher continuously sends content (topic), and subscribers receive it if interested.
Topic:
Represents the subject or content on YouTube.
Establishes a connection between publishers and subscribers.
It’s a matter of mutual interest and enables one-way communication from the publisher to the subscriber.
Service
Service Client:
Requests a specific service from the service server.
Receives a response related to the service from the server.
Service Server:
Responds only when a service request is made from a client.
Immediately responds with content related to the request.
Service:
Connects the server and client, representing any requested service.
Involves two-way communication, consisting of a request and a response.
Action
Action Client:
Delivers actions (executions) to the server.
Involves a process where the client receives intermediate results and, finally, the complete result after a longer response time.
Action Server:
Receives actions from the client and takes corresponding actions.
Provides interim reports and delivers the final result to the client.
Action:
Serves as a link between the action client and server.
Represents the task that the server must perform when delivered by the client, typically a time-consuming task.
Like a service, it involves two-way communication.
Parameter
Parameters in ROS act similar to services, managing parameter-related information through communication between external parameter clients.
They enable easy setting or changing of parameters within or outside the node.
Parameters can be defined in the Parameter Server, and their values can be specified through various methods.
YAML syntax is commonly used for parameter configuration files.
Tools like Rosparam (command-line) and the Param API (programming language level) allow interaction with the ROS parameter server.