Robot Operating System(ROS) - HU-ICT-LAB/RobotWars GitHub Wiki

Purpose of this article

This wiki is intended for getting some basic knowledge about ROS and it's modules.

What is ROS?

ROS is a set of software libraries and tools for building robot applications. ROS has everything you need for almost any robotics project.

Nodes

In ROS a node represents a module, you can have a node for controlling the motors and another node for controlling a laser gun. Nodes communicate with each other via topics, services, actions and parameters.

ROS nodes

Topics

A topic is one of the main ways to move data from node to node. A topic has one or mulitple publisher nodes and one or multiple subscribers. Let's say a turret node wants to know when the laser gun node has shot: The laser gun node would be the publisher of the "shoot" topic and the other turret would be subscribed to the topic.

ROS topics

Services

Services are also a way to move data from node to node but it's structured differently. With a service a node can only receive data from another node when it first requests it. A service can only have one server but it can have multiple clients, kinda like a real server.

ROS services

Actions

Actions look like a combination between services and topics. They consist of three parts: a goal, feedback and a result. Since actions are designed for long running tasks, not for single tasks, they can be cancelled while they're running. The goal is sent via a service, When the server has received the goal it will start it's task and continuously send feedback via a topic. And in the end the result is requested via a service and the server sends it to the client.

ROS Actions

Sources

Open Robotics. (2021). ROS 2 Foxy Documentation. ROS 2 Foxy Documentation. Consulted on 5 november 2021, from https://docs.ros.org/en/foxy/index.html

Related issues

Issues: #92