Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,680 --> 00:00:03,600
In the example that we've been talking
about so far, what we want to do,
2
00:00:03,600 --> 00:00:06,610
is come up with a procedure
that the computer can use
3
00:00:06,610 --> 00:00:11,070
to guide the robot from its start
location to its end location,
4
00:00:11,070 --> 00:00:13,630
while minimizing the total number
of steps that are performed.
5
00:00:15,090 --> 00:00:16,530
For this particular problem,
6
00:00:16,530 --> 00:00:19,840
where we're planning paths on the grid,
it turns out that we can employ
7
00:00:19,840 --> 00:00:24,070
a particularly simple procedure known as
the grassfire, or brush fire, algorithm.
8
00:00:26,930 --> 00:00:29,870
Conceptually, we're going to
begin by marking the destination
9
00:00:29,870 --> 00:00:31,695
node with a distance value of 0.
10
00:00:32,970 --> 00:00:36,610
Then, we find all of the nodes that are 1
step away from the destination, and
11
00:00:36,610 --> 00:00:38,500
mark them with a 1.
12
00:00:38,500 --> 00:00:41,118
Then, all the nodes that are 2 steps away,
mark them with a 2..
13
00:00:41,118 --> 00:00:45,904
All of the nodes that are 3 steps away,
mark with a 3, etc, etc,
14
00:00:45,904 --> 00:00:48,910
etc, until we encounter the start node.
15
00:00:51,410 --> 00:00:52,987
For every cell in the grid,
16
00:00:52,987 --> 00:00:57,653
the distance value that it gets marked
with indicates the minimum number of steps
17
00:00:57,653 --> 00:01:01,378
that it would take to go from that
point to the destination node.
18
00:01:01,378 --> 00:01:06,097
Note how the numbers radiate outward
from the destination node, like a fire,
19
00:01:06,097 --> 00:01:07,107
hence the name.
20
00:01:08,971 --> 00:01:13,598
Practically speaking, one way that you
would actually run this procedure,
21
00:01:13,598 --> 00:01:15,671
is by maintaining a list of nodes.
22
00:01:15,671 --> 00:01:20,567
On every iteration of the algorithm, you
would take the first node off the list,
23
00:01:20,567 --> 00:01:25,607
mark all of its unvisited neighbors with
the current nodes distance value plus 1,
24
00:01:25,607 --> 00:01:27,984
and then add them to the end of the list.
25
00:01:29,528 --> 00:01:33,275
This slide outlines the basic
marketing algorithm in pseudo-code.
26
00:01:34,520 --> 00:01:38,640
For those of you that studied graph-based
algorithms before, you'll recognize that
27
00:01:38,640 --> 00:01:43,970
this is a simple example of a bread first
search algorithm applied to our graph,
28
00:01:43,970 --> 00:01:45,250
starting at the destination node.
29
00:01:46,910 --> 00:01:50,110
Let's see how this marking procedure
helps us to solve our original problem.
30
00:01:51,190 --> 00:01:54,310
In this example,
once our start node has been marked,
31
00:01:54,310 --> 00:01:56,860
we can construct the shortest
path to the goal
32
00:01:56,860 --> 00:02:00,790
by repeatedly moving into the adjacent
cell with the smallest distance value.
33
00:02:02,280 --> 00:02:05,700
This slide shows a path from the start
to the goal that is constructed
34
00:02:05,700 --> 00:02:06,210
in this manner.
35
00:02:07,360 --> 00:02:11,070
Note that if two neighbors
have the same distance value,
36
00:02:11,070 --> 00:02:12,640
you can choose one arbitrarily.
37
00:02:13,710 --> 00:02:16,540
This happens when the shortest
path to the goal is not unique.
38
00:02:16,540 --> 00:02:21,173
You could also reverse this algorithm
by starting at the start node and
39
00:02:21,173 --> 00:02:26,764
iterating towards the destination, and you
end up with a path with the same length.
40
00:02:26,764 --> 00:02:30,421
Here's another example of running
the grassfire algorithm on another grid.
41
00:02:30,421 --> 00:02:32,647
Once again,
we start at the destination and
42
00:02:32,647 --> 00:02:36,960
proceed to mark nodes in order,
based on their distance from the goal.
43
00:02:36,960 --> 00:02:39,900
In this case, however,
the algorithm terminates at this point,
44
00:02:39,900 --> 00:02:42,609
where there are no more nodes that
can be reached from the destination.
45
00:02:43,920 --> 00:02:48,080
At this point, we can conclude that since
the start node has not been marked,
46
00:02:48,080 --> 00:02:50,560
there is no path from
the start to the destination.
47
00:02:52,150 --> 00:02:56,060
So, we see that the grassfire algorithm
has the following desirable properties.
48
00:02:56,060 --> 00:02:58,000
If a path exist between the start and
49
00:02:58,000 --> 00:03:01,709
the destination node, it will find
one with the fewest number of edges.
50
00:03:03,310 --> 00:03:06,620
If no path exists,
the algorithm will discover that fact and
51
00:03:06,620 --> 00:03:07,410
report it to the user.
52
00:03:09,760 --> 00:03:13,070
In this sense, we say that
the grassfire algorithm is complete.
53
00:03:13,070 --> 00:03:15,900
It covers all of the possible cases.
54
00:03:15,900 --> 00:03:18,990
Another question that we might to
ask about the planning procedure
55
00:03:18,990 --> 00:03:20,589
is how much work does it require.
56
00:03:21,780 --> 00:03:25,570
If we think about running our
grassfire algorithm on a regular grid,
57
00:03:25,570 --> 00:03:27,270
as in our examples,
58
00:03:27,270 --> 00:03:31,100
we notice that every grid cell is marked
at most once during this procedure.
59
00:03:32,100 --> 00:03:34,920
More formally we can say that
the amount of computational effort
60
00:03:34,920 --> 00:03:39,360
that we'd need to expend in order to
run the grassfire algorithm on a grid
61
00:03:39,360 --> 00:03:41,759
grows linearly with the number of nodes.
62
00:03:43,450 --> 00:03:46,990
We can express this a little bit more
formally using big o notations as follows.
63
00:03:48,320 --> 00:03:53,381
Practically speaking all this means
is that if we consider two grids one
64
00:03:53,381 --> 00:03:58,850
10 by 10 and the other 20 by 20 we would
expect that it would take approximately
65
00:03:58,850 --> 00:04:03,030
four times as long to run the grassfire
algorithm on the second problem.
66
00:04:03,030 --> 00:04:06,336
Since it has four times as many
nodes as the first instance.
67
00:04:08,091 --> 00:04:12,720
It's also interesting to note that we can
use exactly the same kind of procedure to
68
00:04:12,720 --> 00:04:18,260
plan past for a robot that could move in
three dimensions, for example, quadrotor.
69
00:04:18,260 --> 00:04:21,775
Here we can imagine breaking
the work space of the robot into
70
00:04:21,775 --> 00:04:25,502
a three dimensional grid where
each cell is acute and then using
71
00:04:25,502 --> 00:04:30,299
the grassfire algorithm to plan a path
between two different cells in that grid.
72
00:04:32,571 --> 00:04:37,969
If we compare the work required to
run the grassfire algorithm on a 100
73
00:04:37,969 --> 00:04:43,720
by 100 grid in 2D and
a 100 by 100 by 100 grid in 3D.
74
00:04:43,720 --> 00:04:47,155
We see that the latter planning
problem should require about
75
00:04:47,155 --> 00:04:51,886
a 100 times more effort, or take 100
time longer to run on the same computer.
76
00:04:53,644 --> 00:04:55,520
We could actually take
this a little bit further.
77
00:04:56,680 --> 00:05:00,620
Imagine planning paths on
a grid in six dimension.
78
00:05:00,620 --> 00:05:03,860
Now I know that at first this
sounds like a bit of overkill.
79
00:05:03,860 --> 00:05:07,210
Planning paths in two dimensions and
three dimensions make sense.
80
00:05:07,210 --> 00:05:08,610
We can imagine robots that do that.
81
00:05:10,160 --> 00:05:13,110
But it seems a little bit odd to be
considering a robot that moves in
82
00:05:13,110 --> 00:05:13,900
six dimensions.
83
00:05:15,340 --> 00:05:19,849
However, as we will see when we start
to consider more complicated robotic
84
00:05:19,849 --> 00:05:24,287
platforms like robotic arms,
we're going to find systems that are going
85
00:05:24,287 --> 00:05:27,810
to have us planning paths in
six dimensions and even more.
86
00:05:27,810 --> 00:05:32,669
A six dimensional cube with 100 elements
on each side would contain a grand
87
00:05:32,669 --> 00:05:37,230
total of 10 to the 12 nodes
which is a very large number.
88
00:05:37,230 --> 00:05:40,950
Actually to put it into perspective that's
approximately equal to the number of fish
89
00:05:40,950 --> 00:05:43,820
in the ocean or the number of
stars in the Andromeda galaxy.
90
00:05:45,730 --> 00:05:49,130
At this point it becomes very
difficult to imagine running
91
00:05:49,130 --> 00:05:53,040
any computation that would involve
visiting all the nodes in such a grid.
92
00:05:54,680 --> 00:05:57,980
At this point we're probably going to need
a different kind of algorithm to solve
93
00:05:57,980 --> 00:06:00,130
these kinds of planning problems.
94
00:06:00,130 --> 00:06:04,270
It turns out that this behavior with the
amount of computational effort required to
95
00:06:04,270 --> 00:06:08,450
solve the problem grows exponentially as
we increase the number of dimensions or
96
00:06:08,450 --> 00:06:12,890
degrees of freedom is a characteristic
feature of motion planning problems and
97
00:06:12,890 --> 00:06:15,160
something that we're going
to see as we move forward.9254
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.