WEBVTT

00:00.080 --> 00:06.440
First of all, before we even go to the why, when and what, you have to know that Ros2 is the successor

00:06.470 --> 00:07.790
of Ros one.

00:07.790 --> 00:13.910
It's basically the next version, but with the same goals and the same core concepts, just better and

00:13.910 --> 00:15.320
with more functionalities.

00:15.320 --> 00:20.330
So when I talk about Ros2, I also talk about Ros in general and vice versa.

00:20.360 --> 00:20.900
All right.

00:20.900 --> 00:22.460
So why ros2.

00:22.490 --> 00:24.620
Let's start with those three robots.

00:24.620 --> 00:26.660
What is the common point between them?

00:26.660 --> 00:34.370
Well, all the robots you see here are or can be powered by Ros two Ros means robot operating system.

00:34.370 --> 00:40.400
It is something between a middleware and a framework built specially for robotics applications.

00:40.400 --> 00:46.970
Ros goal is to provide a standard for robotics applications that developers can use and reuse for any

00:46.970 --> 00:47.660
robot.

00:47.690 --> 00:53.810
Once you know how to use Ros two efficiently, you will be able to set up a new software for a new robot

00:53.840 --> 00:55.010
in no time.

00:55.010 --> 01:00.020
You first need to master the basics and core functionalities, which you will see in this course.

01:00.020 --> 01:05.980
And then for every new robot You program, you will gain more skills that can apply to other robots.

01:05.980 --> 01:11.830
The more you know about Ros2, the easier it will be for you to program and understand the code of any

01:11.830 --> 01:12.490
robot.

01:12.490 --> 01:13.720
But is that it?

01:13.750 --> 01:14.320
No.

01:14.320 --> 01:19.450
Another part of the philosophy behind Ros is don't reinvent the wheel.

01:19.480 --> 01:22.990
Reinventing the wheel is a very common problem in robotics.

01:22.990 --> 01:28.510
People always start building new software that is already existing, and thus they don't have the time

01:28.510 --> 01:30.550
to work on really valuable stuff.

01:30.550 --> 01:37.240
What if, instead, you could build on a strong software base to directly program high level functionalities

01:37.240 --> 01:42.370
and work on use cases instead of low level technical stuff that already exists?

01:42.370 --> 01:45.370
Anyway, so this is the why behind Ros.

01:45.400 --> 01:47.200
Now when to use Ros?

01:47.230 --> 01:53.110
Maybe you've already started to program robots with an Arduino board, or with a custom code on a computer,

01:53.110 --> 01:58.330
and what you will quickly experience is that the more sensors, actuators, and controllers you add

01:58.330 --> 02:03.670
on your application, the more complex it becomes until you reach a point where everything is mixed

02:03.670 --> 02:08.430
up and you can't add any code for a new sensor without a huge headache.

02:08.460 --> 02:13.470
Ros2 is here to help you develop powerful and scalable robotics applications.

02:13.470 --> 02:18.990
You can use it whenever you want to create a robot software, which needs a lot of communication between

02:18.990 --> 02:24.390
its subprograms, or if it has some functionalities that go beyond a very simple use case.

02:24.390 --> 02:30.750
So for a robot that will just open a door with a servo motor when it detects movement, maybe you don't

02:30.750 --> 02:36.600
need ros2, but for a mobile robot, which you want to control with a GPS and a camera, in this case,

02:36.600 --> 02:38.280
Ros2 might really help you.

02:38.310 --> 02:42.210
All right, you have just seen the why behind Ros2 and when to use it.

02:42.240 --> 02:44.280
Now what is Ros2?

02:44.310 --> 02:49.920
Well, it would be hard to describe exactly what Ros2 is in about two minutes, even an hour.

02:49.920 --> 02:54.840
But here are the two main points that will give you an idea of the big picture.

02:54.840 --> 03:01.230
First of all, Ros2 provides you with a way of separating your code into reusable blocks, along with

03:01.260 --> 03:06.480
a set of communication tools to easily communicate between all your subprograms.

03:06.480 --> 03:08.910
So let's say you are programming a mobile robot.

03:08.940 --> 03:13.080
You can create a subprogram called node for your camera.

03:13.110 --> 03:15.720
Another node for the navigation algorithm.

03:15.750 --> 03:20.460
Another one for the hardware driver, another one for the joystick, and so on.

03:20.460 --> 03:26.580
And each of those independent blocks will be able to communicate between each other thanks to the ros2

03:26.580 --> 03:27.570
communications.

03:27.570 --> 03:33.840
The second main point is that Ros2 provides you with many tools and plug and play libraries that will

03:33.840 --> 03:39.840
save you huge amount of time, and most importantly, that will prevent you from reinventing the wheel.

03:39.840 --> 03:46.080
If we come back to the mobile robot, imagine how difficult it can be to compute a trajectory which

03:46.080 --> 03:52.080
will make the robot move smoothly, avoid any obstacles on the way, and also work with other robots

03:52.080 --> 03:53.160
at the same time.

03:53.160 --> 03:59.310
Impossible, you might think, unless you spend two years studying mathematics, path planning, algorithms,

03:59.310 --> 04:02.850
etc. but what if I tell you this you don't need two years.

04:02.850 --> 04:07.620
You need maybe two days to install a library and figure out how to use it.

04:07.620 --> 04:12.060
So with Ros, you have great communication tools and great libraries.

04:12.060 --> 04:13.470
But that's not all.

04:13.470 --> 04:16.700
Ros is said to be language agnostic.

04:16.700 --> 04:21.920
It means that you can program some parts of your application in a language, for example Python and

04:21.920 --> 04:27.860
another part in another language, for example C plus plus simply because the communication tools don't

04:27.860 --> 04:30.290
rely on any specific language.

04:30.290 --> 04:36.170
So in this course we will focus on the ros2 basics, the core functionalities, and the tools that will

04:36.170 --> 04:42.080
allow you to easily start any robot application powered by Ros2 using Python and C plus.

04:42.080 --> 04:48.740
Plus Ros2 is also open source with an active and growing community, so you can directly see what's

04:48.740 --> 04:49.340
going on.

04:49.340 --> 04:54.800
You can easily get help, you can share your project and even contribute if you want to.

04:54.830 --> 05:01.310
All right, so with this quick introduction, you should have a better idea about what Ros2 is and why

05:01.310 --> 05:02.450
it is useful.

05:02.450 --> 05:06.110
Don't panic though, if you haven't understood everything right now.

05:06.110 --> 05:11.690
The big picture behind Ros2 is pretty hard to get at the beginning, but after some practice you will

05:11.690 --> 05:17.180
start to get it and I can guarantee you that you will quickly think that Ros2 is going to be a great

05:17.180 --> 05:20.210
asset for all your future robotics projects.
