WEBVTT

00:00.000 --> 00:10.000
OK, so now, next talk, Francisco Martin Rico,

00:10.000 --> 00:13.000
on Francisco Miguel Moreno, the University of Rejoin Carlos,

00:13.000 --> 00:15.000
and I'm going to talk about isinab, which is a cool new,

00:15.000 --> 00:17.000
alternative to NAF2.

00:17.000 --> 00:18.000
Thank you.

00:18.000 --> 00:19.000
Thank you.

00:19.000 --> 00:20.000
Thank you.

00:20.000 --> 00:26.000
Hi everybody, we are very happy to be here

00:26.000 --> 00:28.000
and represent in a good war, isinab,

00:28.000 --> 00:31.000
in our first, first time we are here,

00:31.000 --> 00:33.000
and it's amazing, here.

00:33.000 --> 00:35.000
We are in the leading role of this lab,

00:35.000 --> 00:37.000
and we are going to talk about the University,

00:37.000 --> 00:40.000
and we will talk about the products we play with.

00:40.000 --> 00:44.000
Well, I'm going to talk about the University,

00:44.000 --> 00:46.000
and the leadership of the leading of this lab.

00:46.000 --> 00:48.000
I was curious, and I'm going to tell you,

00:48.000 --> 00:49.000
I'm going to talk about the first two,

00:49.000 --> 00:50.000
I'm going to talk about book,

00:50.000 --> 00:52.000
I'm going to talk about the first two,

00:52.000 --> 00:58.000
and I joined the lab like three years ago.

00:58.000 --> 01:01.000
I haven't done many things in my life,

01:01.000 --> 01:03.000
because it's been a bit shorter.

01:03.000 --> 01:06.000
Right now, I'm sorry.

01:06.000 --> 01:08.000
I am less experienced.

01:08.000 --> 01:11.000
Right now, I'm just trying to keep my kid

01:11.000 --> 01:14.000
have as green as his, which is a very, very difficult task.

01:14.000 --> 01:15.000
Yeah.

01:15.000 --> 01:17.000
I am also after off-road two-planning system,

01:17.000 --> 01:19.000
cascade-like cycle,

01:19.000 --> 01:24.000
spaces two, and many other packets in my.

01:24.000 --> 01:26.000
Some introductions.

01:26.000 --> 01:27.000
Okay.

01:27.000 --> 01:29.000
We are going to talk about robot navigation.

01:29.000 --> 01:32.000
It's a fundamental skill for mobile robots.

01:32.000 --> 01:40.000
I think it's more complex task that a robot has to do.

01:40.000 --> 01:41.000
It's not solved.

01:41.000 --> 01:44.000
So many people say of their navigation is solved,

01:44.000 --> 01:46.000
and the eighties, no, it's not true.

01:46.000 --> 01:49.000
And if you say that, you have never make a robot navigate.

01:49.000 --> 01:52.000
So, a great flag.

01:52.000 --> 01:59.000
And until the open-source framework appear,

01:59.000 --> 02:03.000
before that, every time you have to navigate with a robot,

02:03.000 --> 02:06.000
you have to develop your own navigation framework,

02:06.000 --> 02:07.000
navigation system.

02:07.000 --> 02:10.000
Probably it dies when the project finished,

02:10.000 --> 02:13.000
when you change the robot, you have to implement it

02:13.000 --> 02:16.000
until it rolls up here.

02:16.000 --> 02:20.000
Because we rolls.

02:20.000 --> 02:24.000
It was the first time a framework like movies.

02:24.000 --> 02:28.000
It was the navigation framework for, for, for, for,

02:28.000 --> 02:34.000
a make navigate thousand of robots in hundred of companies

02:34.000 --> 02:36.000
and universities around the world.

02:36.000 --> 02:42.000
This is the famous marathon that they did in 2010.

02:42.000 --> 02:46.000
And after that, when Ross Chu appear,

02:46.000 --> 02:50.000
Steve Masiski decided to do a really sign

02:50.000 --> 02:52.000
a representation of base called,

02:52.000 --> 02:55.000
that many of you know.

02:55.000 --> 02:59.000
With practice, in Ross Chu, many components,

02:59.000 --> 03:03.000
very reliable.

03:03.000 --> 03:06.000
And well, this is the famous marathon Chu.

03:06.000 --> 03:08.000
I am one of the author of the,

03:08.000 --> 03:11.000
I am one of the two reference paper,

03:11.000 --> 03:12.000
so I am a contributor.

03:12.000 --> 03:15.000
And actually the marathon was carried out by a laboratory

03:15.000 --> 03:19.000
in the world of universities that is Madrid in Spain.

03:19.000 --> 03:23.000
So this is like, not too looks like.

03:23.000 --> 03:26.000
No students were harmed during the experience.

03:26.000 --> 03:27.000
Yes.

03:27.000 --> 03:31.000
Yes, it was, uh, Ultramarathon is 22 hours navigating

03:31.000 --> 03:34.000
without stopping the robot with an emergency stop.

03:34.000 --> 03:40.000
And it was 80 kilometers in around three, three days.

03:40.000 --> 03:43.000
Okay. All that you see here at the point,

03:43.000 --> 03:47.000
that not part of the static map are students in the corridors

03:47.000 --> 03:51.000
of the university.

03:51.000 --> 03:53.000
Okay.

03:53.000 --> 03:59.000
So, um, today we came here to share our new open source

03:59.000 --> 04:02.000
of the Asian framework, which we called,

04:02.000 --> 04:05.000
east navigation or a sorted east enough.

04:05.000 --> 04:08.000
And you may be asking, why?

04:08.000 --> 04:11.000
Why another navigation framework?

04:11.000 --> 04:12.000
Why?

04:12.000 --> 04:13.000
Is it needed?

04:13.000 --> 04:14.000
What?

04:14.000 --> 04:17.000
We have been working with some projects,

04:17.000 --> 04:20.000
some robots mainly outdoors.

04:20.000 --> 04:24.000
Maybe you can have, uh, go back for a second.

04:24.000 --> 04:27.000
Some scenarios where you have maybe stairs,

04:27.000 --> 04:31.000
maybe you have a golf course, and, you know,

04:31.000 --> 04:33.000
the air is not flat.

04:33.000 --> 04:37.000
And sometimes, and when you're using that too,

04:37.000 --> 04:41.000
you have restricted to using the cost map.

04:41.000 --> 04:45.000
You can use maybe the, the, the, the box alone,

04:45.000 --> 04:51.000
but if you want to make those applications work with

04:51.000 --> 04:52.000
enough too, you can.

04:52.000 --> 04:55.000
But sometimes you have to rely on some hacks.

04:55.000 --> 04:56.000
We've done it.

04:56.000 --> 04:58.000
We've done it before, but sometimes, you know,

04:58.000 --> 04:59.000
everybody does.

04:59.000 --> 05:00.000
Everybody does.

05:00.000 --> 05:05.000
So, uh, the idea was that we wanted to offer more options,

05:05.000 --> 05:09.000
and to have another framework to work on these projects easier.

05:09.000 --> 05:12.000
And we also wanted to provide a community,

05:12.000 --> 05:13.000
these options.

05:13.000 --> 05:16.000
You know, so being able to adapt to the different scenarios and so on,

05:16.000 --> 05:18.000
and we are hearing for them,

05:18.000 --> 05:21.000
we obviously believe in free and open source, right?

05:22.000 --> 05:27.000
And we believe that open source is also having the freedom to choose,

05:27.000 --> 05:28.000
okay?

05:28.000 --> 05:32.000
And some of us, well, some people use,

05:32.000 --> 05:35.000
or choose to use Ubuntu, or just don't.

05:35.000 --> 05:36.000
It's okay.

05:36.000 --> 05:37.000
We can all be happy.

05:37.000 --> 05:41.000
And we believe that having alternatives is a good thing.

05:41.000 --> 05:43.000
And that it was granted the whole ecosystem.

05:43.000 --> 05:44.000
Yeah, I don't know.

05:44.000 --> 05:47.000
Well, happened at Braille Stima Siski,

05:47.000 --> 05:50.000
things, oh, I get all these money,

05:50.000 --> 05:53.000
and I close enough to, maybe that can happen.

05:53.000 --> 05:54.000
I hope that happens.

05:54.000 --> 05:55.000
I hope that doesn't happen.

05:55.000 --> 05:57.000
So it's good to have more options.

05:57.000 --> 05:59.000
Uh, the key here, uh,

05:59.000 --> 06:03.000
we have never aimed to replace enough to, okay?

06:03.000 --> 06:05.000
We did, we do have my, uh,

06:05.000 --> 06:06.000
not to.

06:06.000 --> 06:09.000
It's been clear inspiration in, uh,

06:09.000 --> 06:11.000
in the design for isn't that.

06:11.000 --> 06:12.000
And we still continue to use,

06:12.000 --> 06:14.000
and even to teach enough to our students.

06:15.000 --> 06:18.000
So the, our goal was just to offer more flexibility,

06:18.000 --> 06:22.000
and to provide an alternative to those specific use cases,

06:22.000 --> 06:24.000
where not to, is maybe,

06:24.000 --> 06:27.000
not the most suitable thing.

06:27.000 --> 06:28.000
Okay.

06:28.000 --> 06:29.000
So now have our little demo time.

06:29.000 --> 06:30.000
Yes.

06:30.000 --> 06:31.000
Like demo.

06:33.000 --> 06:34.000
Yes.

06:34.000 --> 06:37.000
So I'm going to start, you know.

06:39.000 --> 06:42.000
I'm going to run the,

06:42.000 --> 06:44.000
the simulator about headless,

06:44.000 --> 06:46.000
because I don't want to waste, uh,

06:46.000 --> 06:48.000
uh, GPU here.

06:48.000 --> 06:50.000
And I'm going to run is enough.

06:50.000 --> 06:52.000
As scenario is, uh,

06:52.000 --> 06:55.000
Roast to run, only one, one five, one process,

06:55.000 --> 06:57.000
with only one configuration five.

06:57.000 --> 07:00.000
Single process, single parameter five.

07:00.000 --> 07:03.000
Um, this is how it looks like.

07:03.000 --> 07:05.000
And armies, which is open.

07:05.000 --> 07:07.000
Yes. Now, uh, in this scenario,

07:07.000 --> 07:08.000
you have several stacks.

07:08.000 --> 07:10.000
This is the cost map stack.

07:10.000 --> 07:12.000
It's only to demonstrate that at least,

07:12.000 --> 07:13.000
we can do the same.

07:13.000 --> 07:14.000
I've enough to.

07:14.000 --> 07:16.000
So the robot is here.

07:18.000 --> 07:20.000
You have the inflation inflation.

07:20.000 --> 07:22.000
You have a cost map.

07:22.000 --> 07:24.000
You can put here.

07:25.000 --> 07:29.000
I know, uh, goal and the robot go to the goal.

07:29.000 --> 07:31.000
So more or less the same.

07:31.000 --> 07:33.000
And enough to can do.

07:33.000 --> 07:36.000
You can, you see here,

07:36.000 --> 07:39.000
the map because it supports dynamic object.

07:39.000 --> 07:40.000
That's what it says.

07:40.000 --> 07:41.000
The apps that they run.

07:41.000 --> 07:42.000
So what? Okay.

07:42.000 --> 07:43.000
Let's close.

07:45.000 --> 07:47.000
This is our first demo.

07:48.000 --> 07:50.000
Let's return to the presentation.

07:56.000 --> 07:57.000
Great.

07:57.000 --> 08:00.000
So, uh,

08:00.000 --> 08:03.000
when we started this like almost a year ago,

08:03.000 --> 08:06.000
it's not been a long time.

08:06.000 --> 08:08.000
Uh, as I said before,

08:08.000 --> 08:09.000
obviously,

08:09.000 --> 08:11.000
not two was an inspiration.

08:11.000 --> 08:14.000
And not two is a complex piece of software.

08:14.000 --> 08:15.000
It's not a simple thing.

08:15.000 --> 08:17.000
It has a very well designed.

08:17.000 --> 08:19.000
So we also put, uh,

08:19.000 --> 08:21.000
some effort into having a,

08:21.000 --> 08:23.000
a good design as well.

08:23.000 --> 08:26.000
So, uh, these are the main four points.

08:26.000 --> 08:27.000
Uh,

08:27.000 --> 08:28.000
the, the,

08:28.000 --> 08:29.000
the,

08:29.000 --> 08:30.000
uh,

08:30.000 --> 08:32.000
that we follow when we design.

08:32.000 --> 08:34.000
The first one is probably the most important one,

08:34.000 --> 08:40.000
which is that the framework is not dependent from a map representation.

08:40.000 --> 08:41.000
As you know,

08:41.000 --> 08:43.000
you have used enough two every,

08:43.000 --> 08:45.000
the cause map is inside.

08:45.000 --> 08:46.000
The code,

08:46.000 --> 08:48.000
and it's very hard to change.

08:48.000 --> 08:49.000
Yes.

08:49.000 --> 08:50.000
We want you to be able to use

08:50.000 --> 08:52.000
optimal grid maps,

08:52.000 --> 08:53.000
one side,

08:53.000 --> 08:55.000
whatever map representation you want.

08:55.000 --> 08:57.000
A very important thing here,

08:57.000 --> 08:58.000
which is,

08:58.000 --> 08:59.000
I think it's been a,

08:59.000 --> 09:01.000
repeating topic today,

09:01.000 --> 09:03.000
which is determinism.

09:04.000 --> 09:07.000
Performance and so on.

09:07.000 --> 09:08.000
For us,

09:08.000 --> 09:11.000
this has been also a very important thing.

09:11.000 --> 09:14.000
We use Ross for inputs and outputs,

09:14.000 --> 09:16.000
but internally everything is monolithic.

09:16.000 --> 09:18.000
We have a single process.

09:18.000 --> 09:19.000
And now,

09:19.000 --> 09:21.000
Ross communication inside that.

09:21.000 --> 09:22.000
That's right.

09:22.000 --> 09:23.000
That components are,

09:23.000 --> 09:24.000
Ross two notes,

09:24.000 --> 09:28.000
but inside we have a blackboard to communicate everything.

09:28.000 --> 09:31.000
And we don't rely on the executors or

09:31.000 --> 09:33.000
timers or anything,

09:33.000 --> 09:35.000
the execution of the,

09:35.000 --> 09:36.000
of the loop.

09:36.000 --> 09:37.000
We have two threads,

09:37.000 --> 09:38.000
one real time,

09:38.000 --> 09:39.000
and not real time,

09:39.000 --> 09:41.000
that perform different things.

09:41.000 --> 09:42.000
Now fine.

09:42.000 --> 09:45.000
It should be light and easy to use.

09:45.000 --> 09:46.000
It's easy to use.

09:46.000 --> 09:49.000
It was not so easy to develop.

09:49.000 --> 09:52.000
We have one single binary executor,

09:52.000 --> 09:54.000
but you saw how to run it.

09:54.000 --> 09:56.000
And we have a single configuration file

09:56.000 --> 09:58.000
where you can define all the different modules

09:58.000 --> 10:00.000
and its parameters.

10:00.000 --> 10:05.000
And similar to what Napsu and other frameworks do.

10:05.000 --> 10:07.000
The system is modular.

10:07.000 --> 10:09.000
It's based on plugins.

10:09.000 --> 10:12.000
So all the different implementations for the localization,

10:12.000 --> 10:14.000
the mouse manager, the path planner,

10:14.000 --> 10:15.000
and contouring someone.

10:15.000 --> 10:17.000
It can be,

10:17.000 --> 10:18.000
it's smaller.

10:18.000 --> 10:20.000
It can be implemented in plugins.

10:20.000 --> 10:23.000
And you can change them for each application.

10:23.000 --> 10:27.000
This plugin composition is a bit

10:28.000 --> 10:29.000
trickier than usual.

10:29.000 --> 10:31.000
And for us, it's like a puzzle.

10:31.000 --> 10:32.000
Because if you have,

10:32.000 --> 10:35.000
if you allow different map representations,

10:35.000 --> 10:39.000
then you need to make sure that the plugins are compatible.

10:39.000 --> 10:41.000
If you are using, for example,

10:41.000 --> 10:43.000
a cosmap,

10:43.000 --> 10:44.000
to represent the world.

10:44.000 --> 10:46.000
But then you want to use a path planner

10:46.000 --> 10:48.000
that is meant to work with all the maps.

10:48.000 --> 10:50.000
That's not going to work.

10:50.000 --> 10:51.000
That doesn't.

10:51.000 --> 10:52.000
It doesn't match.

10:52.000 --> 10:54.000
So, one thing to have in mind

10:55.000 --> 10:58.000
is that when you're composing your plugins and building your

10:58.000 --> 10:59.000
your navigation stack,

10:59.000 --> 11:02.000
you have to choose compatible.

11:02.000 --> 11:03.000
Which makes sense?

11:03.000 --> 11:04.000
There.

11:04.000 --> 11:07.000
We can see a composition of a cosmap or a cosmap

11:07.000 --> 11:09.000
with the NCL that uses cosmap.

11:09.000 --> 11:10.000
I start for planner.

11:10.000 --> 11:12.000
Cosmap MPV contour.

11:12.000 --> 11:14.000
Here we have another representation.

11:14.000 --> 11:16.000
The over simple stack is more simple.

11:16.000 --> 11:18.000
Like we used for initial steps.

11:18.000 --> 11:20.000
With another,

11:20.000 --> 11:22.000
with another plugins.

11:23.000 --> 11:25.000
Of the grid map or the map,

11:25.000 --> 11:27.000
we will solve soon.

11:27.000 --> 11:29.000
Maybe the controller

11:29.000 --> 11:31.000
you can use in every configuration

11:31.000 --> 11:32.000
if the planner,

11:32.000 --> 11:34.000
the output, the planner are paths.

11:34.000 --> 11:38.000
A standard map message message path,

11:38.000 --> 11:39.000
as well.

11:39.000 --> 11:41.000
What happens if you don't want,

11:41.000 --> 11:43.000
or you don't need a map,

11:43.000 --> 11:45.000
or you don't need localization for your application?

11:45.000 --> 11:48.000
What is just one navigation stack,

11:48.000 --> 11:50.000
which is just purely reactive,

11:50.000 --> 11:52.000
like follow a person.

11:52.000 --> 11:54.000
Like the doctor.

11:54.000 --> 11:56.000
Then you may be to not need a map.

11:56.000 --> 11:58.000
You can put a dummy module,

11:58.000 --> 12:00.000
which does nothing.

12:00.000 --> 12:01.000
Yeah, in that way,

12:01.000 --> 12:03.000
you can provide your planner,

12:03.000 --> 12:05.000
for example, follow a person

12:05.000 --> 12:08.000
and reuse the BPA controller.

12:08.000 --> 12:09.000
For example, here,

12:09.000 --> 12:10.000
you don't need a map,

12:10.000 --> 12:13.000
but you have over GPS localizer.

12:13.000 --> 12:16.000
That is based on robot localization.

12:16.000 --> 12:19.000
And you have a plan error of a stray line

12:19.000 --> 12:21.000
to the robot.

12:21.000 --> 12:22.000
Yes.

12:22.000 --> 12:24.000
And all this,

12:24.000 --> 12:25.000
of that composition,

12:25.000 --> 12:28.000
is done in a single configuration file,

12:28.000 --> 12:29.000
which is a general file,

12:29.000 --> 12:32.000
but you just can put the plugin for each module,

12:32.000 --> 12:33.000
for the localizer.

12:33.000 --> 12:35.000
I'm going to use a simple localizer

12:35.000 --> 12:37.000
or an AMC localizer.

12:37.000 --> 12:41.000
And each plugin will have the parameters in that place.

12:41.000 --> 12:44.000
One important point is the sensor node,

12:44.000 --> 12:48.000
is the entry point for all the sensor information

12:48.000 --> 12:49.000
of the system.

12:49.000 --> 12:50.000
Okay, passed.

12:50.000 --> 12:52.000
And now, the tricky part,

12:52.000 --> 12:55.000
please don't get scared because of the arrows.

12:55.000 --> 12:57.000
It's a bit messy.

12:57.000 --> 12:59.000
The execution model,

12:59.000 --> 13:02.000
as we said before,

13:02.000 --> 13:04.000
everything is running in a single process.

13:04.000 --> 13:06.000
Okay, we have two main threads.

13:06.000 --> 13:09.000
One thread for the critical task,

13:09.000 --> 13:13.000
which has elevated real time priorities.

13:13.000 --> 13:16.000
Okay, which is where we run the processes

13:16.000 --> 13:17.000
for the sensor update,

13:17.000 --> 13:18.000
the post prediction,

13:18.000 --> 13:19.000
and the control.

13:19.000 --> 13:23.000
So it has a higher priority than the other tasks.

13:23.000 --> 13:25.000
And then we have another thread,

13:25.000 --> 13:26.000
which is normal thread,

13:26.000 --> 13:27.000
non-real time,

13:27.000 --> 13:29.000
because it is lower priority for the,

13:29.000 --> 13:30.000
well,

13:30.000 --> 13:31.000
also the logging,

13:31.000 --> 13:32.000
which is not here.

13:32.000 --> 13:33.000
Logging, maps update,

13:33.000 --> 13:35.000
the path planning,

13:35.000 --> 13:37.000
and the whole correction.

13:37.000 --> 13:41.000
So I think the red arrows are for the real time flow

13:41.000 --> 13:43.000
and the green arrows for the real time.

13:43.000 --> 13:44.000
We have another,

13:44.000 --> 13:46.000
you know the important of the DFs.

13:46.000 --> 13:48.000
So we have a TF buffer,

13:48.000 --> 13:49.000
say,

13:49.000 --> 13:51.000
you know the code is a single time.

13:51.000 --> 13:52.000
It's a real time,

13:52.000 --> 13:53.000
TF buffer,

13:53.000 --> 13:56.000
and you can access directly there from any place.

13:56.000 --> 14:00.000
Yeah, the idea here is that there is only one TF input

14:00.000 --> 14:01.000
for the system,

14:01.000 --> 14:03.000
which is also running in the real time buffer.

14:03.000 --> 14:06.000
So we can get the TF data as soon as possible.

14:06.000 --> 14:08.000
Because if you have the sensor data,

14:08.000 --> 14:10.000
but you have not received the TF yet,

14:10.000 --> 14:12.000
then you cannot use that sensor data,

14:12.000 --> 14:13.000
that's useless.

14:13.000 --> 14:17.000
You cannot transform data that is coming from the future.

14:17.000 --> 14:19.000
But there's more.

14:19.000 --> 14:20.000
Yeah,

14:20.000 --> 14:22.000
that's very nice,

14:22.000 --> 14:24.000
because when you configure the,

14:24.000 --> 14:26.000
the plugins of every model,

14:26.000 --> 14:27.000
you,

14:27.000 --> 14:30.000
you are all yellow to select one,

14:30.000 --> 14:31.000
except the,

14:31.000 --> 14:32.000
the mass manager.

14:32.000 --> 14:33.000
In the mass manager,

14:33.000 --> 14:36.000
you can select any representation you want,

14:36.000 --> 14:37.000
even more than one.

14:38.000 --> 14:40.000
And even some representation,

14:40.000 --> 14:42.000
because I execute it in order,

14:42.000 --> 14:45.000
can rely on the output of the previous one.

14:45.000 --> 14:46.000
For example,

14:46.000 --> 14:47.000
in that way,

14:47.000 --> 14:48.000
we have the cosmap,

14:48.000 --> 14:49.000
for example,

14:49.000 --> 14:50.000
after that,

14:50.000 --> 14:51.000
the rooted manager,

14:51.000 --> 14:52.000
the rooted maps manager,

14:52.000 --> 14:53.000
for rootest,

14:53.000 --> 14:55.000
based on the cosmap.

14:55.000 --> 14:56.000
Yes.

14:56.000 --> 14:58.000
You will see this in the next.

14:58.000 --> 14:59.000
Yeah,

14:59.000 --> 15:00.000
the moment,

15:00.000 --> 15:01.000
but you can have multiple,

15:01.000 --> 15:04.000
my representations working at the same time in the system.

15:04.000 --> 15:05.000
Yeah,

15:05.000 --> 15:06.000
we are going to use this,

15:06.000 --> 15:09.000
it's a bonsai representation for a special,

15:09.000 --> 15:10.000
obstacle,

15:10.000 --> 15:11.000
and the napma,

15:11.000 --> 15:12.000
is our representation,

15:12.000 --> 15:14.000
we made for suit faces,

15:14.000 --> 15:17.000
for aviation faces.

15:17.000 --> 15:18.000
Okay,

15:18.000 --> 15:20.000
let's see how it works.

15:20.000 --> 15:21.000
It's a good moment,

15:21.000 --> 15:22.000
because David,

15:22.000 --> 15:23.000
I just entered the room.

15:23.000 --> 15:25.000
Yeah,

15:25.000 --> 15:26.000
um,

15:26.000 --> 15:27.000
should meet.

15:31.000 --> 15:32.000
This is not headless,

15:32.000 --> 15:34.000
because I want to show you

15:34.000 --> 15:36.000
this scenario.

15:36.000 --> 15:39.000
This is a very cool scenario in our university.

15:39.000 --> 15:40.000
Yes.

15:40.000 --> 15:42.000
Over the university is there,

15:42.000 --> 15:44.000
and this is where it should be another building,

15:44.000 --> 15:46.000
but it's not.

15:46.000 --> 15:48.000
Oh.

15:48.000 --> 15:49.000
Okay,

15:49.000 --> 15:51.000
but it's not plan on the scenario.

15:51.000 --> 15:52.000
Okay.

15:54.000 --> 15:56.000
I'm going to run,

15:56.000 --> 15:57.000
to run,

16:00.000 --> 16:02.000
this is a different navigation start.

16:02.000 --> 16:04.000
Instead of using cost map,

16:04.000 --> 16:07.000
we will be using enough map for the navigation surfaces,

16:07.000 --> 16:09.000
and bonsai for the obstacles,

16:09.000 --> 16:11.000
and for the localization.

16:14.000 --> 16:16.000
Okay, I'm going to change to

16:16.000 --> 16:22.000
instead of inflate the obstacles to elevation.

16:22.000 --> 16:25.000
Let's see rainbow.

16:25.000 --> 16:27.000
Let's see,

16:27.000 --> 16:28.000
for example,

16:28.000 --> 16:30.000
how to navigate

16:30.000 --> 16:32.000
to this point.

16:34.000 --> 16:35.000
And you see,

16:35.000 --> 16:37.000
how the path,

16:37.000 --> 16:39.000
and the MCL.

16:39.000 --> 16:40.000
It is running forward,

16:40.000 --> 16:42.000
localization is running MCL,

16:42.000 --> 16:43.000
but in 3D.

16:43.000 --> 16:46.000
And this is the path in 3D dimensions,

16:46.000 --> 16:48.000
of how to navigate at different levels.

16:48.000 --> 16:52.000
At the lead support level on top of level.

16:52.000 --> 16:53.000
Okay.

16:53.000 --> 16:55.000
Can you show the,

16:55.000 --> 16:56.000
the water side?

16:56.000 --> 16:57.000
I don't shy.

16:57.000 --> 16:58.000
Yes.

16:59.000 --> 17:01.000
It would be a lot of points, but of course.

17:01.000 --> 17:02.000
Yes.

17:02.000 --> 17:03.000
It is also there.

17:06.000 --> 17:08.000
The percentage of that boxes.

17:08.000 --> 17:10.000
Yes. So here we're using the other map,

17:10.000 --> 17:12.000
the map map mesh for the navigation,

17:12.000 --> 17:13.000
for the surfaces,

17:13.000 --> 17:15.000
and we're using the bonsai for the MCL,

17:15.000 --> 17:16.000
for the localization, and for us.

17:16.000 --> 17:20.000
Yes, for the observation model of the MCL,

17:20.000 --> 17:23.000
we need the obstacle,

17:23.000 --> 17:24.000
all the obstacle.

17:24.000 --> 17:25.000
Okay.

17:25.000 --> 17:26.000
So,

17:27.000 --> 17:28.000
three minutes.

17:28.000 --> 17:29.000
Okay.

17:29.000 --> 17:30.000
We'll just start.

17:30.000 --> 17:31.000
The QI.

17:31.000 --> 17:32.000
Oh, the QI.

17:32.000 --> 17:33.000
Yes.

17:33.000 --> 17:35.000
Nowadays, if you don't have a QI,

17:35.000 --> 17:38.000
you're not cool, so we did one as well.

17:38.000 --> 17:41.000
Unfortunately, we are not using the ratatouille,

17:41.000 --> 17:44.000
so it's not very pretty.

17:44.000 --> 17:47.000
But it's been very, very useful,

17:47.000 --> 17:49.000
because we used it to,

17:49.000 --> 17:53.000
we have the window with the tracing information,

17:53.000 --> 17:56.000
taking the processing time for each.

17:56.000 --> 17:58.000
This is the blackboard for each part,

17:58.000 --> 18:02.000
and we have here the state of the whole system.

18:02.000 --> 18:04.000
It's the post of the robot.

18:04.000 --> 18:05.000
Yes.

18:05.000 --> 18:06.000
Yes.

18:08.000 --> 18:10.000
Okay. I'm going to close everything.

18:12.000 --> 18:15.000
On continue the presentation.

18:19.000 --> 18:22.000
So, the two in addition to the QI,

18:22.000 --> 18:25.000
we also have a combined line interface

18:25.000 --> 18:30.000
to query the states and symbols and do many more stuff.

18:30.000 --> 18:34.000
And regarding the code organization and so on,

18:34.000 --> 18:37.000
we have everything hosted on GitHub.

18:37.000 --> 18:39.000
Okay.

18:39.000 --> 18:42.000
The license is GPL D3,

18:42.000 --> 18:45.000
not everything except for the NAFMAP,

18:45.000 --> 18:47.000
which is Apache.

18:47.000 --> 18:48.000
Apache 2.

18:49.000 --> 18:53.000
And right now we're using GitHub actions for the CI.

18:53.000 --> 18:57.000
We have CI pipelines for all these distros

18:57.000 --> 18:59.000
for those who have just executed.

18:59.000 --> 19:00.000
And rolling,

19:00.000 --> 19:03.000
we are also generating the doc sheet and

19:03.000 --> 19:05.000
a class reference documentation,

19:05.000 --> 19:06.000
which is uploaded.

19:06.000 --> 19:08.000
It's nice seeing everything in the ring,

19:08.000 --> 19:13.000
although the states will have in some problems.

19:13.000 --> 19:15.000
And recently,

19:15.000 --> 19:16.000
yes.

19:16.000 --> 19:17.000
It's green.

19:18.000 --> 19:22.000
We just did releases for Ross to just see and killed it.

19:22.000 --> 19:24.000
But only for the code repository,

19:24.000 --> 19:29.000
we still have to release the plugins repository

19:29.000 --> 19:33.000
with all the plugin implementations for different stacks.

19:33.000 --> 19:34.000
Yeah.

19:34.000 --> 19:35.000
In this scenario, it's the core.

19:35.000 --> 19:36.000
They see plugins are,

19:36.000 --> 19:38.000
they usually call a really different plugin.

19:38.000 --> 19:41.000
And we also have some other repositories that are not here,

19:41.000 --> 19:43.000
which include the simulation playgrounds,

19:43.000 --> 19:46.000
in Casivo, which are the ones you saw in the demos.

19:46.000 --> 19:48.000
We have one with the top tabo,

19:48.000 --> 19:52.000
another one with the summits and so on.

19:52.000 --> 19:54.000
Regarding the documentation,

19:54.000 --> 19:58.000
we believe this is a very, very important thing.

19:58.000 --> 20:03.000
So we have released the doc sheet and reference,

20:03.000 --> 20:07.000
and we also have documentation based here on GitHub pages.

20:07.000 --> 20:10.000
With all the API tutorials,

20:11.000 --> 20:14.000
how to scan everything multi-robot,

20:14.000 --> 20:19.000
router, how to deploy in a real robot in a create free,

20:19.000 --> 20:20.000
for example.

20:20.000 --> 20:22.000
We have to update some parts.

20:22.000 --> 20:23.000
Yeah.

20:23.000 --> 20:27.000
And if you remember Ross won wiki,

20:27.000 --> 20:30.000
and Ross won wiki,

20:30.000 --> 20:35.000
you have a page template for the Ross packages.

20:35.000 --> 20:38.000
We have something very similar for the modules.

20:39.000 --> 20:41.000
So when you develop a plugin,

20:41.000 --> 20:42.000
over we do it,

20:42.000 --> 20:45.000
we have a template page, which is all the information,

20:45.000 --> 20:48.000
parameters, what the state does,

20:48.000 --> 20:49.000
does it need,

20:49.000 --> 20:52.000
the map representations that it's compatible with,

20:52.000 --> 20:56.000
the key that is added to all the plugins in the web.

20:56.000 --> 20:58.000
The case of the blah, blah, blah, blah.

20:58.000 --> 21:01.000
Everything you need to understand this.

21:01.000 --> 21:03.000
And if you develop your repository,

21:03.000 --> 21:05.000
your own plugin,

21:05.000 --> 21:07.000
you can create this page,

21:07.000 --> 21:09.000
and we can index in the official image.

21:09.000 --> 21:11.000
So where are we,

21:11.000 --> 21:13.000
and where are we going?

21:13.000 --> 21:15.000
With the develop,

21:15.000 --> 21:17.000
yet another navigation system,

21:17.000 --> 21:18.000
which is robust,

21:18.000 --> 21:21.000
and we believe it's easy to use on the design.

21:21.000 --> 21:25.000
This work hasn't been done in six or seven months,

21:25.000 --> 21:28.000
we still have a lot of things to do.

21:28.000 --> 21:29.000
It's light,

21:29.000 --> 21:32.000
and more or less the terminist,

21:32.000 --> 21:35.000
we try to have something as a terminist as possible.

21:36.000 --> 21:38.000
It's able to add up to problems,

21:38.000 --> 21:40.000
we're not sort of right some hacks,

21:40.000 --> 21:42.000
and we already have a lot of things,

21:42.000 --> 21:45.000
or platforms you saw in the demos.

21:45.000 --> 21:47.000
And right now we just want to build more community

21:47.000 --> 21:48.000
around it,

21:48.000 --> 21:50.000
that the people know it,

21:50.000 --> 21:52.000
and we still need some

21:52.000 --> 21:55.000
effective controllers,

21:55.000 --> 21:57.000
that work a bit better than what we have now.

21:57.000 --> 21:58.000
Yeah.

21:58.000 --> 21:59.000
And that's all.

21:59.000 --> 22:00.000
Thank you very much.

22:01.000 --> 22:02.000
Thank you.

22:07.000 --> 22:09.000
Anybody has any questions?

22:09.000 --> 22:12.000
We have time for some few questions.

22:16.000 --> 22:18.000
So I find this very interesting.

22:18.000 --> 22:21.000
How does this backport,

22:21.000 --> 22:22.000
or let's say,

22:22.000 --> 22:25.000
how does it backwards flow into existing architectures imagine?

22:25.000 --> 22:27.000
I have a robot already,

22:27.000 --> 22:29.000
and I'm running loss to humble.

22:29.000 --> 22:32.000
I have some whole bunch of behavior trees.

22:32.000 --> 22:33.000
I'm relying on a whole bunch of plugins,

22:33.000 --> 22:34.000
everything is natural.

22:34.000 --> 22:37.000
What's the workflow for me to migrate to easy enough?

22:37.000 --> 22:38.000
Is it,

22:38.000 --> 22:40.000
do I need to rely on certain,

22:40.000 --> 22:42.000
another build system?

22:42.000 --> 22:44.000
Because I don't think we spoke about the build system here?

22:44.000 --> 22:45.000
Is it still a call call,

22:45.000 --> 22:47.000
or do you have something custom?

22:47.000 --> 22:48.000
Yeah.

22:48.000 --> 22:49.000
It's a call call.

22:49.000 --> 22:51.000
So everything else stays the same.

22:51.000 --> 22:52.000
All the plugins,

22:52.000 --> 22:53.000
all my packages upstream,

22:53.000 --> 22:55.000
all come from the same sources,

22:55.000 --> 22:56.000
and I can just,

22:56.000 --> 22:58.000
or the next time, basically.

22:58.000 --> 22:59.000
Yeah.

22:59.000 --> 23:01.000
You have to,

23:01.000 --> 23:03.000
or install the binary package,

23:03.000 --> 23:06.000
so I put that in a single space build,

23:06.000 --> 23:07.000
and that's one.

23:07.000 --> 23:09.000
You have to do a parameter,

23:09.000 --> 23:11.000
a file of parameter for you,

23:11.000 --> 23:13.000
but probably it's only,

23:13.000 --> 23:15.000
we only one point,

23:15.000 --> 23:16.000
but are your sensors at us?

23:16.000 --> 23:17.000
Yes.

23:17.000 --> 23:20.000
There is one key difference from not two,

23:20.000 --> 23:22.000
which is that if you're using,

23:22.000 --> 23:25.000
you don't have use of the behaviors,

23:26.000 --> 23:27.000
we don't have that,

23:27.000 --> 23:29.000
because we believe that those kind of behaviors

23:29.000 --> 23:31.000
do not belong in an navigation style.

23:31.000 --> 23:35.000
Be long to an upper level of behaviors.

23:35.000 --> 23:38.000
But you can just use the existing navigator,

23:38.000 --> 23:40.000
but easy enough not.

23:40.000 --> 23:41.000
No, no, no, no.

23:41.000 --> 23:42.000
If you want, for example,

23:42.000 --> 23:46.000
instead of if you have to do a patrolling behavior,

23:46.000 --> 23:48.000
probably I can do it,

23:48.000 --> 23:51.000
changing the behavior between an navigation, for example.

23:51.000 --> 23:52.000
But I think it's,

23:53.000 --> 23:55.000
it's how it's belong to another level,

23:55.000 --> 23:57.000
to not a level of the skill,

23:57.000 --> 23:59.000
a level of the task, I think.

23:59.000 --> 24:00.000
It's a world opinion.

24:01.000 --> 24:04.000
There's one question from somebody online.

24:04.000 --> 24:07.000
How easy is it to make new plugins?

24:07.000 --> 24:09.000
It's very easy, it's very easy,

24:09.000 --> 24:13.000
because you have to inherit from the base class,

24:13.000 --> 24:16.000
and only feel update or update

24:16.000 --> 24:18.000
or update the function,

24:18.000 --> 24:21.000
and you receive the blackboard reference to the blackboard.

24:21.000 --> 24:25.000
You only have to check the plugin you are using,

24:25.000 --> 24:26.000
check what are the keys,

24:26.000 --> 24:28.000
so the blackboard extract,

24:28.000 --> 24:29.000
the information,

24:29.000 --> 24:30.000
and at the end,

24:30.000 --> 24:31.000
write the blackboard,

24:31.000 --> 24:32.000
the result,

24:32.000 --> 24:34.000
you're expecting another plugin.

24:34.000 --> 24:35.000
All right.

24:35.000 --> 24:38.000
Any more questions in the room?

24:38.000 --> 24:39.000
Okay.

24:39.000 --> 24:41.000
Are you at the right of way?

24:43.000 --> 24:45.000
So you mentioned,

24:47.000 --> 24:49.000
you don't need any of the hacks that you would need.

24:50.000 --> 24:51.000
What?

24:51.000 --> 24:53.000
I'm not using NF2 at the moment,

24:53.000 --> 24:57.000
but what kind of hacks does easy enough?

24:57.000 --> 25:00.000
Let me avoid that I would have to do enough too.

25:00.000 --> 25:02.000
Even in the last month we have told

25:02.000 --> 25:05.000
with many people that use NF2 for agriculture

25:05.000 --> 25:07.000
are robot, for example.

25:07.000 --> 25:09.000
All of them,

25:12.000 --> 25:13.000
think as they worry,

25:13.000 --> 25:15.000
it's flat, but it's not flat.

25:15.000 --> 25:17.000
And you have problem, for example,

25:17.000 --> 25:18.000
when the road moves,

25:18.000 --> 25:20.000
and the last set,

25:20.000 --> 25:22.000
start to appear some obstacles.

25:22.000 --> 25:25.000
For example, when you have to go in a ramp,

25:25.000 --> 25:27.000
and you have to do some hacks

25:27.000 --> 25:30.000
to don't mark the ramp as an obstacle.

25:30.000 --> 25:34.000
So if you choose a good representation,

25:34.000 --> 25:35.000
you don't have to do it.

25:35.000 --> 25:37.000
I make agricultural robots,

25:37.000 --> 25:39.000
so it's very relevant to me, thanks.

25:47.000 --> 25:49.000
All right, I think that's all, thank you.

25:49.000 --> 25:50.000
Thank you.

25:50.000 --> 25:51.000
Thank you.

25:51.000 --> 25:53.000
Thank you.

