As we have seen in the previous lesson, Ros stands for Robot Operating system.
Anyway, don't let the name mislead you since to be honest, Ros isn't a proper operating system, but
you can consider it more as a software that you can install on your PC and that simulates some functionalities
of a real operating system, but for robotics applications.
There are four main aspects of Ros that make it similar to an operating system.
Among them there is the hardware abstraction.
Let's start understanding the hardware abstraction with an analogy with the operating system running
on your PC.
Whether you are using Windows Linux or Mac OS, this operating system allows you to use the hardware
of your PC independently by the processor that you are using or by the amount of memory that you have.
For sure, the performance will be different if you have a better CPU or much memory available.
But anyway, you can use your computer the same way whether you have an Intel CPU or an AMD.
One to the point that very often you can use also a PC without even actually knowing which CPU it has.
To be honest, all the hardware components are very different from each other and very often they require
a different communication protocol and they also use a different logic in order to directly use the
hardware of your PC.
You will need to know exactly the brand of the device, its version and its communication protocol.
The operating system of your PC is in charge of managing all of these for you and also provides you
only a standard interface to use the hardware independently by its specifications.
The same way.
The operating system also offers a standard interface for the other applications that you use and that
you install on your PC.
To use its resources.
This way, the software developers don't have to worry about the hardware specification of the PC of
the users, and so they can develop a general purpose software that will work on any PC and rely on
the operating system to make it work with the available resources.
Likewise, Ross is in charge of managing the hardware of our robot, providing to the user a standard
interface for the usage of sensors or motors.
It also offers a standard interface for all the software developers of robotics applications that this
way you don't have to worry about the type of motors or which communication protocol are they using,
but they can only focus on the development of new functionalities for the robot and leave the interface
orchestration to Ross.