Tip:
Highlight text to annotate it
X
So, welcome to Module 2 of the course, Control of Mobile Robots. In Module 1, we
introduced control theory as a way of dealing with the systems in general. And
in this module, we're going to introduce mobile robots as the key target
application of the course. And what we're going to do is start with a very simple
question. How do I drive a robot from point A to point B, or in this case from a
blue ball to a yellow sun? And the first question we need to understand before we
can even answer how to drive it is what do we need? Well obviously, we need to
measure where the sun is or the goal point is, and somehow turn this into the control
actions. So, we've taken the information from the sun and we're feeding it into the
controller. So, one of the things we need is to design the controller which we kind
of know a little bit about already. We also need to understand what information
the robot actually has. So, we're going to have to discuss a little bit about how do
robots actually gain information about the world. And, of course, for that, we need
sensors. So, we need to discuss sensor models at the sufficient level of
abstraction so that we can reason about them, but they need to be rich enough so
that we can trust that the information that our controller is based on, is
actually something that the robot has. And then finally, in order for the controllers
to be useful, we need to be able to basically predict how they're going to
influence the robot. So, we're going to need models. So, what I'm going to do in
this module is to discuss robot models and, in particular, we're going to look at
differential drive robot mobile robots and we're going to discuss sensors. And we're
going to look at sensors that allow us to gain information about the world around us
and sensors that allow us to know something about our internal state. For
instance, where is the robot? what we will not do is any advanced perception. We're
just going to look at the abstracted sensor models that give us the type of, of
infor mation that we want. But before we even do that, whenever you try to design
controllers for robots that drive around in the world, there are two facts that you
really have to embrace. And the first is that the world is fundamentally unknown.
You're not going to know where every chair in the building is. You're not going to
know where every tree in the forest is when you're out driving in the forest. So,
there's no way you can plan in advance exactly what the robot should be doing.
The second is, people move chairs. People move around. The wind makes trees blow ,
or sway. So, the world is actually changing and
dynamic. And for that reason, it's also a bad idea to try to produce, in advance, a
very complicated monolithic controller for doing everything. So instead, what we do
in robotics, a lot of times, is we divide the control task into chunks and then
we'll design controllers for those individual chunks. So, for instance, if
I'm a robot trying to get to a goal, I may have some kind of controller that's taking
me to the goal and then when something shows up in the environment, I switch to
another controller that allows me to avoid that thing in the environment. And, in
fact these primitive building blocks that from our point of view are different
controllers, in robotics, they're called behaviors. So, behaviors are going to be
key concepts in this course and we're going to design quite a few of them. And I
just want to mention a handful of very standard behaviors that we will indeed
see. Go-to-goal is the most basic one, which means drive to a, a waypoint or
target location. Avoid-obstacles is absolutely crucial meaning, don't slam
into things on the way over there. Then if you're in, you know, an office
environment, you know that the world is typically straight lines, walls, so
follow-wall is not a bad type of behavior to have. If the goal is moving, you may
want to track it instead of going to just static goal, and so forth, and so forth.
We'll see quite a few of these different beha viors.
And I would like to start with a video here of a robot that I was developing or
working on, that used camera information to build up a map of what the world looked
like and here is what the robot is doing when it's based on a planner. Here's, it's
seeing something and it's kind of putting it in the map and then it's thinking up a
new long plan to, for the robot to take. So basically, you saw the robot spending
a, a large amount of time dealing with new information because it had to re-plan. So
now, we're running to exact same thing with behaviors. So, we're following a plan
or just, in fact, follow plan behavior and then when something pops up, we're
switching to an avoid-obstacle behavior. So now, the same things which is up in
the, or shows up to the robot. Instead of the robot sitting around thinking for a
long time, it just avoids it. And once it's clear, it goes back to following the,
the, the plan. So, this would be an example of why behaviors are really
useful. Here is another example. This is actually a segway robot, so the dynamics
is very complicated. And never mind the, the moving graphs in the lower, lower part
of the picture. What I want you to see is that this robot is actually, in this case,
switching between different arc behaviors. So, there are different arcs that the
robot can take and the behaviors, in this case, are follow various arcs. So now, you
can put behaviors that are not as simple as just go-to-goal and instead, the
behaviors would be arcs of various sizes and shapes. And we will become quite good
at understanding how to design these individual behaviors, and as well, how to
combine them.