Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:04,521 --> 00:00:09,380
In this lecture, I will continue
talking about occupancy grid mapping.
2
00:00:10,460 --> 00:00:15,251
We will see how to
incorporate range sensors.
3
00:00:15,251 --> 00:00:16,889
In the previous lecture,
4
00:00:16,889 --> 00:00:20,470
we had this example of two
sequential updates of the map.
5
00:00:21,930 --> 00:00:27,080
This example, you readily localize
the robot on the global map
6
00:00:27,080 --> 00:00:29,520
assuming the pose of the robot is known.
7
00:00:30,910 --> 00:00:36,030
We are going to keep the assumption in
order to focus on the mapping problem.
8
00:00:36,030 --> 00:00:39,580
However, we still need to
transform the sensor data
9
00:00:39,580 --> 00:00:42,570
measured in the body frame
into the global map frame.
10
00:00:43,800 --> 00:00:48,244
If you're familiar with coordinate
transformations between 2 different frames
11
00:00:48,244 --> 00:00:51,617
and dealing with 2D arrays,
then you may skip this lecture.
12
00:00:53,939 --> 00:00:56,310
Let me show what
coordinate frames we have.
13
00:00:57,590 --> 00:01:00,730
This is the map and
the coordinate frame is attached to it.
14
00:01:02,070 --> 00:01:05,458
The origin does not need
to be the top left corner.
15
00:01:05,458 --> 00:01:09,490
This follows the MATLAB convention
represent an image array.
16
00:01:11,930 --> 00:01:13,260
This is our mobile robot.
17
00:01:14,490 --> 00:01:17,820
We may assign a body fix
coordinate frame as shown.
18
00:01:19,870 --> 00:01:21,250
This example,
19
00:01:21,250 --> 00:01:26,180
the ray from the range sensor is emitted
along the first axis of the body frame.
20
00:01:27,530 --> 00:01:31,330
Let's imagine that we received
a distance measurements d.
21
00:01:32,730 --> 00:01:35,730
Then, how can we tell which
cell is hit by the ray, and
22
00:01:35,730 --> 00:01:37,740
which cells are observed to be free?
23
00:01:39,740 --> 00:01:45,030
To answer the questions, we will first
consider a continuous version of the map.
24
00:01:45,030 --> 00:01:48,164
And we turn to
the discretizedmap later.
25
00:01:50,243 --> 00:01:53,839
If we know where the robot
is located on the map, and
26
00:01:53,839 --> 00:01:59,460
which direction it is heading, then we
can place the robot on the map like this.
27
00:02:02,010 --> 00:02:05,130
To find the coordinates of
the obstructing point,
28
00:02:05,130 --> 00:02:08,840
we use the distance measurements
in the known pose of the robot.
29
00:02:10,720 --> 00:02:15,410
Up to this point, we use the continuous
representation for the position.
30
00:02:17,910 --> 00:02:22,510
However, the map we are going to
build should be represented as
31
00:02:22,510 --> 00:02:25,730
discretized cells of a certain resolution.
32
00:02:27,520 --> 00:02:31,614
Let's think about how to
express a location on the grid.
33
00:02:33,309 --> 00:02:39,140
Consider a 1D case and take the example where
the grid resolution is 10 centimeters.
34
00:02:41,000 --> 00:02:42,929
Any point between 0 and
35
00:02:42,929 --> 00:02:47,505
10 on the continuous domain
will be mapped to the index 1.
36
00:02:49,350 --> 00:02:54,624
In this example, we follow the MATLAB
convention where an index starts from 1.
37
00:02:56,830 --> 00:03:02,665
A point between 10 and 20 centimeters
will be mapped to the index 2.
38
00:03:05,230 --> 00:03:09,940
We can continue to obtain the index of
any point within the given line segment.
39
00:03:12,370 --> 00:03:16,750
Or another example,
the grid revolution can be 7 centimeters.
40
00:03:17,920 --> 00:03:22,863
In this case, any point between 0 and
7 centimeters on
41
00:03:22,863 --> 00:03:27,819
the continuous domain,
will be mapped to the index 1.
42
00:03:27,819 --> 00:03:33,170
A point between 7 and
14 will be mapped to the index 2.
43
00:03:33,170 --> 00:03:37,028
For a given r, the index of a point x is
44
00:03:37,028 --> 00:03:41,644
computed as the ceiling
integer of x over r.
45
00:03:44,361 --> 00:03:49,526
To generalize, if a line segment
starts from some other value than 0,
46
00:03:49,526 --> 00:03:55,380
then we just need to subtract the minimum
value from x, when we compute the index.
47
00:03:57,790 --> 00:04:02,270
Getting back to our 2D map, computing
the position of the grid map does
48
00:04:02,270 --> 00:04:06,850
not get more complicated than the 1D case.
49
00:04:06,850 --> 00:04:11,444
Each component, X1 and X2,
can be treated independently for
50
00:04:11,444 --> 00:04:14,941
the computation of the index pair,
I1 and I2.
51
00:04:17,600 --> 00:04:24,857
Let me summarize how to obtain the 2D
grid indices of the occupied cell.
52
00:04:24,857 --> 00:04:29,050
What is given is the distance measurement
d and the pose of the robot.
53
00:04:31,120 --> 00:04:34,840
From that,
we can first compute the location of
54
00:04:34,840 --> 00:04:37,680
the obstructing point on
the continuous domain.
55
00:04:39,250 --> 00:04:44,110
Then, we compute the indices of the point
on the discretized map of resolution R.
56
00:04:46,553 --> 00:04:51,880
Next, we will need to calculate
the indices of free empty cells.
57
00:04:53,390 --> 00:04:59,277
For each, we are going to use
Bresenham's line algorithm.
58
00:04:59,277 --> 00:05:02,110
We will now talk about
the algorithm itself here.
59
00:05:02,110 --> 00:05:07,900
An implementation of this algorithm
will be provided as a helper function.
60
00:05:10,350 --> 00:05:16,460
Basically the algorithm takes two points
as the input argument and returns a list of
61
00:05:16,460 --> 00:05:21,280
cells that forms an approximation for
a line segment between the two points.
62
00:05:24,610 --> 00:05:29,050
So far we have treated
a sensor as a single ray.
63
00:05:29,050 --> 00:05:31,140
But in more realistic settings,
64
00:05:31,140 --> 00:05:34,640
it has multiple rays emitted
in different directions.
65
00:05:36,110 --> 00:05:37,180
Let's look at those cases.
66
00:05:39,560 --> 00:05:46,230
Let's say the sensor emits five rays
in the indicated heading angles alphas.
67
00:05:46,230 --> 00:05:47,680
With respect to the body frame.
68
00:05:50,240 --> 00:05:52,750
Each ray gives the distance as shown.
69
00:05:55,270 --> 00:05:58,730
If the poles of the robot
is known as before,
70
00:05:58,730 --> 00:06:03,460
the position of the cells hit by the rays
can be computed in the same way.
71
00:06:05,150 --> 00:06:10,005
But in this case, the direction of each
ray is taken into the computation.
72
00:06:16,645 --> 00:06:23,520
You can use the Bresenham's algorithm for
individual ways to find free empty cells.
73
00:06:23,520 --> 00:06:24,860
And take the union of them.
74
00:06:26,630 --> 00:06:30,730
We have seen examples to learn how
to interpret range sensor readings.
75
00:06:31,900 --> 00:06:36,070
Now, I suppose you are ready to start
the programming assignment for this week.
76
00:06:37,120 --> 00:06:41,614
I will also continue to introduce
how 3D mapping differs from 2D
77
00:06:41,614 --> 00:06:43,667
mapping in the next lecture.7062
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.