What is Robot Operating System (ROS)?
ROS (Robot Operating System ) is not really an operating system, but a collection of software frameworks to develop robot software. It offers services to a heterogeneous computer cluster, e.g. hardware abstraction, low-level device control, message-passing between processes, and handling packages. The fundamental objective of ROS is to facilitate reuse of codes in robotics and robot development where programmers can construct complex robot systems in a more efficient and effective manner due to a modular and distributed approach
It was originally created in 2007 at Stanford University and subsequently by Willow Garage and is the de facto standard robotics research platform; it is increasingly being used in commercial robotics products.
Core Concepts of ROS
ROS uses a publish-subscribe approach to messages that allows communication between various parts (nodes). Its design comprises some vital ideas to render it strong in the aspect of robotics development.
Nodes
Computation-performing processes. Every node has one particular task to accomplish and interacts with the other nodes through topic, services, or actions.
Topics
Named Buses between which nodes communicate messages. Topics receive messages sent by publishers and subscribers receive them.
Services
Node to node request/reply. Services Versus Topics, Unlike topics the services would be used when you require to receive a reply of the node you are addressing.
Packages
A chief unit partitioning to set up software in ROS. Packages may include nodes, configuration files, datasets and documentation.
Sensor Fusion in ROS
One of the most powerful features of ROS is that it facilitating sensor fusion- aggregating information of different sensors into a more detailed and precise representation of the surroundings compared to any individual sensor.
Sensor fusion in ROS can not only be applied to data integration but also on the algorithm and framework of all that data to be integrated. With the help of ROS, it is possible to create sophisticated robot structures capable of perceiving and analysing the environment. The decisive factor is the task of processing different sensor information and processing this information to become the justification of the actions of the robot.
Did you know? ROS offers dedicated tools such as Robot Localization package which detects a robot position and orientation based on IMU, GPS and odometry data and presenting 3D position and orientation estimates of the robot.
Getting Started with ROS
There are some steps that are significant in establishing a ROS environment. The simplified overview of process is the following:
Install ROS
You need to select ROS distribution (e.g. Noetic on Ubuntu 20.04), and proceed to its installation. ROS needs a linux system, usually Ubuntu.
Initialize Workspace
Make a catkin workspace the name of which you will build, modify and install ROS packages. Start it with catkin_make command.
Create a Package
With catkin_create_pkg create a new package in case of essential dependencies. From here you get the basic layout of your code for ROS.
Write Nodes
Write the publisher and subscriber node in C++ or in Python. Specify message types that are going to be exchanged between nodes.
Build and Run
The package used should be created with catkin_make and the nodes should be run using the rosrun or roslaunch commands.
Visualize with RVIZ
ROS has visualization tools such as RVIZ to be used to debug and visualize sensor data, models of robots, and algorithms.
ROS Applications
The ROS can be used in various industries to run different types of robots. It is flexible enough to go down to simple educational robots and up to complex industrial systems.
Industrial Automation
ROS-Industrial brings ROS to manufacturing robots, and allows deep automation, machine tending, and quality inspection.
Autonomous Vehicles
Major autonomous driving companies utilize ROS in self-driving vehicle sensor fusion, perception and navigation systems.
Medical Robotics
ROS is applied to surgical robots, where accuracy is needed to the extent of control systems and haptic feedback.
Research & Education
ROS is an AI, computer vision, and human-robot interaction research and robotics course at universities across the globe.
ROS Evolution Timeline
Since its inception, ROS has evolved very much. These are some of the main milestones of its development:
Birth of ROS
Originally developed at the AI Lab in Stanford University as Switchyard project, and later developed by Willow Garage.
ROS 1.0 Released
First stable release of core tools, libraries and conventions. Adoption in research community starts to increase at a rapid pace.
ROS Industrial
Creation of ROS-Industrial Consortium to support the ROS to manufacturing and industry uses.
ROS 2 Development
The addition of the ROS 2, which has better real-time performance, has multiple DDS implementations, and is more secure.
ROS vs. ROS 2 Comparison
| Feature | ROS 1 | ROS 2 |
|---|---|---|
| Communication Middleware | Custom TCPROS/UDPROS | DDS (Data Distribution Service) |
| Real-time Support | Limited | Real time built-in capabilities |
| Multi-Robot Systems | Challenging | Native support |
| Platform Support | Primarily Linux | Linux, Windows, macOS, RTOS |
| Security | Basic | Such reinforced security with DDS capability |
Why ROS Matters
The introduction of ROS has revolutionized the process of developing robots because it gives developers a platform with a common interface that speeds up the innovation process. It is open-source and, therefore, facilitates collaboration and knowledge sharing in both the academic and industry sectors.
The platform is already very robust, secure and commercial ready, but with the shift to ROS 2, it will become even more so. With robotics developing, ROS stands at the top and enables developers to create more and more advanced robotic systems that transform this world.
