First of all, before we even go to the why, when and what, you have to know that Ros2 is the successor
of Ros one.
It's basically the next version, but with the same goals and the same core concepts, just better and
with more functionalities.
So when I talk about Ros2, I also talk about Ros in general and vice versa.
All right.
So why ros2.
Let's start with those three robots.
What is the common point between them?
Well, all the robots you see here are or can be powered by Ros two Ros means robot operating system.
It is something between a middleware and a framework built specially for robotics applications.
Ros goal is to provide a standard for robotics applications that developers can use and reuse for any
robot.
Once you know how to use Ros two efficiently, you will be able to set up a new software for a new robot
in no time.
You first need to master the basics and core functionalities, which you will see in this course.
And then for every new robot You program, you will gain more skills that can apply to other robots.
The more you know about Ros2, the easier it will be for you to program and understand the code of any
robot.
But is that it?
No.
Another part of the philosophy behind Ros is don't reinvent the wheel.
Reinventing the wheel is a very common problem in robotics.
People always start building new software that is already existing, and thus they don't have the time
to work on really valuable stuff.
What if, instead, you could build on a strong software base to directly program high level functionalities
and work on use cases instead of low level technical stuff that already exists?
Anyway, so this is the why behind Ros.
Now when to use Ros?
Maybe you've already started to program robots with an Arduino board, or with a custom code on a computer,
and what you will quickly experience is that the more sensors, actuators, and controllers you add
on your application, the more complex it becomes until you reach a point where everything is mixed
up and you can't add any code for a new sensor without a huge headache.
Ros2 is here to help you develop powerful and scalable robotics applications.
You can use it whenever you want to create a robot software, which needs a lot of communication between
its subprograms, or if it has some functionalities that go beyond a very simple use case.
So for a robot that will just open a door with a servo motor when it detects movement, maybe you don't
need ros2, but for a mobile robot, which you want to control with a GPS and a camera, in this case,
Ros2 might really help you.
All right, you have just seen the why behind Ros2 and when to use it.
Now what is Ros2?
Well, it would be hard to describe exactly what Ros2 is in about two minutes, even an hour.
But here are the two main points that will give you an idea of the big picture.
First of all, Ros2 provides you with a way of separating your code into reusable blocks, along with
a set of communication tools to easily communicate between all your subprograms.
So let's say you are programming a mobile robot.
You can create a subprogram called node for your camera.
Another node for the navigation algorithm.
Another one for the hardware driver, another one for the joystick, and so on.
And each of those independent blocks will be able to communicate between each other thanks to the ros2
communications.
The second main point is that Ros2 provides you with many tools and plug and play libraries that will
save you huge amount of time, and most importantly, that will prevent you from reinventing the wheel.
If we come back to the mobile robot, imagine how difficult it can be to compute a trajectory which
will make the robot move smoothly, avoid any obstacles on the way, and also work with other robots
at the same time.
Impossible, you might think, unless you spend two years studying mathematics, path planning, algorithms,
etc. but what if I tell you this you don't need two years.
You need maybe two days to install a library and figure out how to use it.
So with Ros, you have great communication tools and great libraries.
But that's not all.
Ros is said to be language agnostic.
It means that you can program some parts of your application in a language, for example Python and
another part in another language, for example C plus plus simply because the communication tools don't
rely on any specific language.
So in this course we will focus on the ros2 basics, the core functionalities, and the tools that will
allow you to easily start any robot application powered by Ros2 using Python and C plus.
Plus Ros2 is also open source with an active and growing community, so you can directly see what's
going on.
You can easily get help, you can share your project and even contribute if you want to.
All right, so with this quick introduction, you should have a better idea about what Ros2 is and why
it is useful.
Don't panic though, if you haven't understood everything right now.
The big picture behind Ros2 is pretty hard to get at the beginning, but after some practice you will
start to get it and I can guarantee you that you will quickly think that Ros2 is going to be a great
asset for all your future robotics projects.