ROBOT OPERATING SYSTEM (ROS)
This post is also available in the following languages: Euskara, Español
For some decades, robotics has been a well-known and socialized field. Consequently, it also has its presence in vocational training and it is an area that is addressed in different cycles. However, with the passage of time, robotics evolves and new technologies emerge, providing robots to have a higher level of autonomy. Therefore, it is important to incorporate knowledge about these new technologies in professional training.
In Tknika’s Autonomous Robotics specialization area, after analyzing the different and most used technologies nowdays, we consider that it would be a reasonable and enriching initiative to acquire knowledge about the free middleware called ROS (Robot Operating System). Therefore, one of the most important objectives of this project is the acquisition of knowledge about ROS environment and the subsequent transfer of this knowledge to professional training teachers.
But… What is ROS?
It is a set of free software libraries and tools that grows under the protection of a community and is used for robotics applications. In these libraries it is possible to find from low level of abstraction codes, to very high level algorithms: from drivers to different artificial intelligence algorithms. The most used programming languages in ROS are C++ and Python.
ROS is a distributed system and is made up of parallel processes called “nodes”, that is, a single ROS system can be made up of nodes running on different physical machines. For communication between nodes, the publisher/subscriber model is used and the communication channels are called ‘topics’. Therefore, a node can publish information in one or several topics and at the same time have subscriptions to other topics to receive information that other nodes publish. For the coordination of the entire system, a ‘Master’ node is needed.
As an example we could take the case of a remote control car:
This specific case could be solved with ROS as follows:
There are two versions of ROS, ROS1 and ROS2, and the latest stable distributions released in each of these versions are Noetic Ninjemys (May 2020) and Humble Hawksbill (May 2022) respectively. The main goal of the ROS Noetic release has been to provide support for the use of Python3, so that developers who are still working with the ROS1 version can continue working with ROS1 for a while. But the life expectancy of ROS Noetic is until May 2025.
And…Which are the main advantages of using ROS?
- The developer must only be in charge of developing the code linked to the application because ROS offers a very high level of abstraction with respect to the hardware. In addition, since the most common functionalities are developed, they can be used and there is no need to reinvent the wheel.
- Having different nodes running on different hardware platforms but in a single ROS system, offers great flexibility. The node developed for a specific application can be easily adapted for another application, and even directly reused without the need to modify anything in the code.
- Only the software packages required for the application should be installed. It is not necessary to install all the ROS packages.
- It is very scalable. As new needs appear, new nodes can be implemented with no need of any changes to what has been developed up to that point.
- It is open source, so it is free.
- It is possible to do simulations with digital twins and the programming code used in these simulations is used to operate with real robots. Therefore, there is the possibility of debugging the code without risk, before moving on to testing with real robots.
- There are many hardware platforms that are totally different in terms of hardware, but compatible with ROS, allowing the use os the most appropriate platform for each case: humanoids, bipeds, quadrupeds, cars, drones, robotic arms, etc.
And… Which are the use cases of ROS?
Since ROS can be implemented on different hardware platforms, the use cases are multiple. Here are some:
- Autonomous driving: by installing different sensors in the car (cameras, odometry, thermometers, etc.) and artificial intelligence algorithms that interpret the information captured by the sensors, cars can be capable of making the necessary decisions at all times and thus develop autonomy in driving. Although it uses private software, Tesla is a benchmark in this field.
- Industry: mobile platforms capable of transporting autonomously large weights are being used in the industrial field, avoiding exposing workers to dangerous or harmful tasks. As an example, intelligent logistics warehouses can be cited.
- Land surveillance: drones are used for fire detection, volcano tracking, tax controls, locating people who need help in rescue tasks and for other uses.
And…How could ROS contribute in the educational field?
In vocational training centers, the training of students in ROS would offer a series of benefits and facilities.
- As it is open source, it would not involve an economic cost and, in addition, it would allow students to exercise freely. They would have the opportunity to analyze their needs or those of the center, and create applications to respond to them, as well as to let their imagination run wild and develop the applications they want.
- The students would acquire the concept of distributed systems and the concept of the publication-subscription communication model, which are becoming more and more widespread. They could also put these concepts into practice in an agile way and perceive their potential.
- It would facilitate the implementation of cutting-edge technologies such as artificial intelligence.
- It would allow the creation of eye-catching and entertaining applications for students: car competitions, racing with humanoids or other competitions, etc.
- It would offer a good opportunity to work as a team. Being a distributed system, the solution can be divided in a very simple way (divide into nodes) and each member of the group would develop a part of the solution. Likewise, it would guarantee the commitment to work on coordination and communication between team members for the correct communication and integration of all nodes.
From the Autonomous Robotics specialization area we will analyze all these possibilities and others that will appear and we will transfer the derived knowledge to Euskadi FP teachers.