The following content is provided under a Creative
Commons license.
Your support will help MIT OpenCourseWare
continue to offer high-quality educational resources for free.
To make a donation or view additional materials
from hundreds of MIT courses, visit MIT OpenCourseWare
at ocw.mit.edu.
RUSS TEDRAKE: OK.
Welcome to Underactuated Robotics.
I'm glad you're all here.
Can I get a quick show of hands, actually,
who considers themselves hardcore robotics types?
Don't be shy.
It's a good thing to do.
Who's here to see what this is all about?
OK.
Good, good.
So I've thought of course twice before.
This is the first time that it's a TQE course for Area 2.
So I'm hoping to excite a slightly more general audience.
And your responsibility, then, is
to ask me questions if I say things
that if I assume prior knowledge that people
don't have and make sure that everything is coming across.
The only real prereqs that I assume for the course
are basically some comfort with differential equations
and Ordinary Differential Equations, ODEs.
I assume some comfort with linear algebra.
And we use a lot of MATLAB, so it helps if you know MATLAB.
What I don't assume is that you're--
I mean, it's great if you have taken previous robotics
courses.
That's certainly a good thing.
But I'm not going to assume everybody
knows how to crank out the kinematics
or dynamics of rigid body manipulators
and things like that.
So hopefully, if you've got a background in here,
then everything else should follow.
And the course has got a set of course notes
that will be published on the website
just after the lectures.
And they should be pretty much contain
what you need to know, or at least have links
to the things you need to know.
OK.
So today is the warm-up.
I want to start with some motivation.
I want to make sure everybody leaves
understanding the title of the course, if nothing else.
So I want to tell you some motivation why
I think underactuated robotics is such
an important topic in robotics.
I'm going to give you some basic definitions, including
the definition of underactuated.
I'm going to go through an example
with working out the equations of motion for a simple system
to a review of dynamics.
And then I'm going to tell you quickly,
in the last minutes, everything else you're
going to learn in the course.
And then we'll go through that more slowly in the next 25
lectures.
OK.
So let me actually start with some motivation.
That involves plugging in this guy.
OK.
How many people have seen ASIMO before?
Good.
OK.
So ASIMO-- let's watch the little promotional video
for Honda's ASIMO.
This is a few years old now.
But ASIMO absolutely is the pinnacle
of robotics engineering over the last 20 years, I'd say, even.
So Honda, turns out, without telling anybody,
was working on walking robots from the early '80s
till they announced to the world in 1997
that they'd started building these walking robots.
And they started putting on these shows
where they'd kick soccer balls and walk up stairs.
It's absolutely, absolutely amazing.
I mean, this is it.
This is what we've been waiting for in robotics
for a very long time.
This is a humanoid robot absolutely doing
fantastic things.
It's a marvel of engineering.
The precision, the amount of computation going on in there--
it's something we've been waiting a long time for.
OK.
But let's watch it again and be a little more critical
this time.
So what's wrong with ASIMO when it's walking?
OK, it looks a little stiff.
It looks like a guy in a space suit.
If you look carefully, you'll notice
that it's always got one foot flat on the ground.
That doesn't look quite right.
OK, well, we'll forgive the goalie.
He's work in progress, I guess.
But the whole thing just looks a little bit
like a machine that's, let me say,
not comfortable with its own dynamics.
It's taking a very conservative approach.
The fact that it can go upstairs is really remarkable.
It does have to know exactly where those stairs are
and the geometry of the stairs.
But you see, it's taking a very, very conservative approach
to walking.
It's always walking with its knees bent,
its feet flat on the ground, and has this rigid astronaut
walk to it.
OK.
Why is that bad?
It's bad because it requires a lot of energy, first of all.
So just imagine walking around with your knees bent
all the time.
It turns out, ASIMO uses 20 times as much energy
if you scale out mass and everything
as a human does when it walks--
20 times.
And that makes a practical difference
because the batteries it's got in its belly
only last 26 minutes, and it's a lot of batteries.
It matters because it's walking--
because of this very conservative approach
to walking, it's walking a lot slower than you or I would.
They actually have top running speeds of ASIMO.
They're six kilometers an hour.
But that's a little bit below where
you are I would sort of comfortably transition
from walking to running if we were just going down
the street.
So it's considerably slower than a human when it runs.
And although there's some really amazing videos
of walking on stairs and things like that,
the videos you won't see are the ones
of it walking on terrain it doesn't know everything
about or even uneven terrain.
It doesn't do even train particularly well.
OK.
So in some ways, ASIMO is the very natural progression
of what robotic arm technology, which
started in factory room floors, matured into a walking robot.
OK.
It's a very high-gain--
we'll talk a lot about what that means.
It's a very high-gain system.
It's using a lot of energy and feedback
in order to try to rigidly follow some trajectory
that it's thought a lot about.
And it's doing that in a very conservative regime-- feet
flat on the ground, knees bent.
So there's a different approach to walking out there.
This one was built by Cornell.
It's called a passive dynamic walker.
It's almost not a robot whatsoever.
It's a bunch of sticks and hinges with ball bearings
at the joints.
But if you put this thing on a small ramp going down
and give it a little push, look what it can do.
That's just falling down a ramp--
completely passive machine powered only by gravity.
So these passive walkers are a fantastic demo.
I mean, it's unbelievable that they can
build these things that walk.
It's a glorified slinky.
But it's walking like you and me, right?
Probably more so.
Most people would say that looks a little bit more like the way
we walk than ASIMO does.
But what's really amazing about it
is it says that this really conservative, high-gain, feet
flat on the ground approach to walking,
it's certainly not a necessary one.
And it suggests that if you really
want to do some energy-efficient walking, maybe even
more robust walking, then what you need to do
is not cancel out your dynamics with high-gain feedback
and follow some trajectory.
You need to think a lot about the dynamics of your robot.
So this is just the dynamics of the robot doing all the work--
no control system, no computers, nothing.
OK.
So that's a story in talking about why
maybe dynamics matter a lot.
And we should really start by understanding the dynamics
before we do a whole bunch of robotic arm control.
It's actually true in a lot of different fields.
My other favorite story these days is flying things.
So if you look at state-of-the-art military
aircraft, this is an F-14 landing on an aircraft carrier.
Even in the most highly engineered control systems
we have, it tends to be that aircraft stay in a very, very
conservative flight envelope.
The same way that ASIMO stays with its feet
flat on the ground and does this really stiff control,
the airplane stays at a very low angle relative to the oncoming
flow and uses high-gain control in order to stabilize it.
So fighter jets-- you might know, the patent fighter
jets tend to be passively unstable, and control systems
are doing amazing things to make these guys work.
But they're not doing some basic things
that you can see every time you look out your window.
So here's a cardinal doing sort of the same thing--
landing on an aircraft carrier, landing on a branch--
about the same thing.
But unlike the airplane, the cardinal's
got his wings spread out way out to here.
And what that means, if you know anything about aerodynamics,
if you take a wing and the airflow is moving this way,
and you have it at a low angle relative to the oncoming flow,
then you have a very simple attached flow
on the back of the wings.
And it turns out that linear control and linear models
of the dynamics work pretty well in that regime.
If you go up to a small angle of attack,
like the fighter jet's doing, then the air
can bend around the wing.
Everything still stays attached, they say, to the wing.
And you can still do linear control ideas.
OK.
But if you go up and stall your wings out--
that's what's happening here.
If you go up to a higher angle of attack,
the air can no longer bend around the wing fast enough.
Something more dramatic happens.
You get a big vortex in this picture.
And what happens is the flow gets much more unsteady.
It starts shedding vortices.
And you start stalling your wing.
Now in these regimes so far, the dynamics
have proven very, very complicated
to even understand, even model, and considerably harder
to control.
The birds doing it every day of the week.
Somehow, we don't know exactly how,
but he does it all the time.
And he does it with gusty environments.
He does it when the branch is moving.
He probably misses every once in a while.
But he's doing a pretty darn good job.
There's a reason why he does it too, right?
It's not just to show off or something.
But if you are willing to go into this more complicated
flight regime by stalling your wings,
and if your goal is stopping, then, actually, you
get a huge benefit by going up to that high angle of attack.
Not only do you get more drag just because you
have more surface area exposed to the flow,
but when you start getting separation
on the back of your wing you leave
a pocket of low pressure behind the wing.
The air can't quite come in and fill in the space
right behind the wing.
And that acts like an air brake.
It's called pressure drag.
So the birds-- the planes are coming
into this conservative approach in order
to maintain control authority.
The birds are going [GRUNTS],, hitting the air brakes
and coming to still somehow doing enough control
to hit that perch, which is kinematically more difficult,
I think, than even hitting an aircraft carrier.
All right.
So In my group, we've been working
on trying to make planes do that kind of thing.
So this is our airplane that comes in and tries
to execute a very high angle of attack maneuver
in order to land on a perch.
It's a slow-motion shot, slowed down
so you can see what happens.
And actually, just to convince you that the flow
is complicated.
This isn't our best flow of visualization,
but it shows you what's going on here.
The airflow, as it comes in, this
is now that same plane with--
we're emitting smoke from the front of the wing, the leading
edge of the wing.
And it comes in at a low angle of attack.
And you can see the air is mostly--
it's actually already stalled because it's a flat plate.
But the air is on top of the wing in the same way I
showed you in that picture.
And as you go up to a high angle of attack,
you get this big tip vortex that rolls over.
Everything gets a lot more complicated.
So the point I'm trying to make with these two examples are
first of all, robots today are just really,
really conservative.
Dynamically, they're very, very conservative.
They're operating just a fraction
of the level of performance that they should already
expect given the same mechanical design.
With the same mechanical design, a simple little plane
but better control, we can start doing things
that look more like birds.
And the second point that I'm going to make more formally
in a minute is that the underactuated systems,
underactuated robotics is essentially
the art, the science of trying to build machines which
use their dynamics more cleverly instead of trying
to build control systems which use actuation motor
output in order to override the dynamics.
We're going to do an underactuated system that just
pushes and pulls the natural dynamics,
tries to do these more exciting dynamic things.
As a consequence, we need to do smarter control.
This is a computer science course.
So what have I said anything to do with computer science yet?
I believe that there's new techniques from computer
science, machine learning, motion planning that are
basically changing the game.
It's allowing us to solve some of these control problems
that haven't been solved before.
Just to throw a few more cool examples out--
so if more willing to do more clever things
with our dynamics, then there's just countless things
that we can do.
So if you just care about efficiency--
this is a wandering albatross.
If you just measure the energy in some metabolic estimate
of the energy it consumes versus the distance it travels,
then it's about the same as a 747, which is actually cool
because they're quite different sizes.
But if you just do some dimensional cost of transport,
it actually works out to be almost the same efficiency
as a 747.
So maybe we haven't gained anything.
But it turns out if you look more carefully,
the albatross uses the same amount of energy
when it's sitting on the beach as it does when
it's flying across the ocean.
So this guy can fly for hours, days
without ever flapping its wings.
Go across the entire ocean that way, into the wind,
out of the wind-- you name it--
because they're sitting there and they're just riding on
gradients due to the wind over the ocean.
So the energetic cost this guy's experiencing
is just digestion and things like that.
He's actually not doing hardly any mechanical work in order
to fly across the ocean.
OK.
If you care about maneuverability,
you know, so falcons have been recently clocked diving
at 240 miles an hour.
This one is pulling out of that 240-mile-an-hour dive to catch
a sparrow.
That's pretty good.
I mean, planes-- in terms of sheer speed,
planes are going to win every day of the week.
But if you look at some sort of dimensionless aspect
of maneuverability, then birds are still
the masters of the sky.
Bats can actually be flying full speed this way in two flaps,
which turns out to be just under half of the wingspan,
they can be flying full-speed the other way--
two to five flaps.
This guy's at Brown have been recording this.
Obviously, bats are actually some of the most maneuverable.
They can fly at high speeds through thick rain forests.
They can fly in caves with 1,000 other bats on top of them.
At least, that's what I get out of the movies.
[LAUGHTER] And they're doing all these just incredibly
dynamic things in ways that our control systems can't even
come close to right now.
And this is one of my favorite videos of all time.
Again, the story about efficiency.
This is a fish now, not a bird.
But it's almost the same thing.
They're both operating in a fluid.
This is a rainbow trout.
So the rainbow trout are the fish that
swim upstream at mating season.
So every year, they make their march up the streams.
It turns out if you watch these rainbow trout,
they tend to hang out behind rocks.
Someone thought, it seems like it's
tiring work going upstream maybe there's something clever going
on when they're hanging out behind these rocks.
So what they did is they took that rainbow trout out,
and they put it in a water tunnel.
And you're looking at a view from above
of the fish swimming in the water tunnel.
This is George Lauder's lab at Harvard.
And that's what it looks like when it's just
swimming in open water.
If you take that same fish, put it in the water tunnel
but put a rock in front of it--
now if you've looked at rocks in a river, behind a rock,
you'll get some swirling vortices, some eddies.
The fish behind the rock just completely
changes the kinematics of its gait.
So that's suggestive that there's
something clever going on here.
But this is the clincher here.
The dynamics matter if you're a fish.
This is now a dead fish.
It's a dead fish.
There's a piece of string making sure it doesn't go back and get
caught in the grates.
That would be messy.
But it's slack.
As it's moving around, you'll see
when the string is catching.
This is our rock now.
It's a half cylinder.
The water's going this way.
There's going to be swirling vortices
off the back of that rock.
Let's see what happens if you put
a dead fish behind the rock.
So the vortices are knocking the fish around.
That's not too surprising.
What's really cool is when the dead fish
starts swimming upstream.
That's pretty good.
So the water's going that way, and the fish just
went that way.
And it's dead.
So dynamics matter if you're a fish.
And if you care about birds--
mechanically, we're capable now of building robotic birds.
This is our best copy of a hobby ornithopter.
But we can build birds that fly around
with Derek at the controls.
But if you asked me how to control this bird
to make it land on a perch, pull energy out of the air,
we haven't got a clue.
We're working on it.
We haven't got a clue.
Yeah, that hit a tree.
And Derek recovered.
We've got the first flight of our big 2-meter wingspan.
This is an autonomous flight.
You can tell it's autonomous because it flies straight
into it about runs into the building
and then we hit the brakes, and it has
to go in and hit the trash can.
But mechanically, we're close to where
we want to be to replicate some of nature's machines.
We've got a long way to go.
But really, we're at the point where
we have to figure out how to take
these magnificent dynamical machines and control them.
And that's what the course is about.
OK.
So let's get a little bit more careful in what
I mean by underactuated.
Systems.
So we'll give you some motivation.
We're going to try to make robots that run like humans--
run like gazelles, swim like dead fish,
and fly like that falcon that comes down-- so not
a tall order at all, right?
So in order to start doing that, let's start
by just defining what it means to be underactuated.
Let me ground things in an example.
Let's take a two-link robotic arm.
I'm going to describe the state of this system with theta
1 and a relative angle here, theta 2.
And let me quickly draw that twice as big.
We'll parameterize it here with the--
that'll be L1 with the length.
This will be able L2 here.
So we call this mass 1, mass 2.
So we'll assume it's a massless rod with a point
mass at the end, just to keep the equations a little cleaner
for today.
And it's got two angles that I care about.
And there's a couple lengths at play.
So throughout the class, I'm going
to use the convention that q is a vector of the joint angles
or the coordinates of the robot.
In this case, it's going to be theta 1 and theta 2.
If I have motors on the robot, let's
say, I can apply a torque here because I
have a motor at the elbow, maybe a torque here.
So I'll call this torque 1, this torque 2.
I'm going to call that u, vector u.
There's all the inputs to the system.
So this is the joint coordinates.
These are the control inputs.
OK.
So it turns out if you want to write out
the dynamics of this system, if you
want to be able to, say, simulate
the way that this pendulum moves, well, most
of the robots we care about in this class are
our second-order.
So everything's based on their mechanical system.
So we've got F equals ma governing everything.
In this case, a is going to be the second derivative of q.
So what I really have--
I should also say that q-dot is going
to be the joint velocities.
And q-double-dot is the joint accelerations.
So if I want to describe the motion of these systems,
of this kind of a robot, then what I need
is to find an equation that tells me
the acceleration of that system based
on the current position, velocity of the robot,
and the current control inputs.
If we're living in second-order mechanical systems world,
then that means I'm looking for a governing equation--
equations of motion of the form f
is some nonlinear function of q, q-dot, u, potentially time too,
if it's a time-varying dynamics, if there's something else going
on clocked by time.
So basically, the entire class, we're
going to be looking at second-order systems governed
by some non-linear equations like them.
It turns out that actually most of the robots we care about,
there's even a simpler form.
Turns out we can almost always find--
it's not always-- but for many robots,
we find that the equations of motion
are actually linear in u.
If I'm going to put in torques or something to my robot,
that it turns out that the way that the torques affect
accelerations is linear in the input.
So let me write a second form, which takes
advantage of that observation.
OK.
So I've said almost nothing here.
I'm just saying there's some nonlinear
terms that depend on the current state, and velocity, and time.
There's some other nonlinear terms that get multiplied by u.
But the only power in this is that I'm
saying that the whole thing is linear in u.
And it turns out to be--
I'll convince you as we go forward that that's true.
OK.
So here's our-- we're finally grounding everything here.
Let me tell you what fully actuated means.
Just think about what this equation is too.
So q is a vector.
Q-double-dot is also a vector.
In this case, q was a 2 by 1 vector.
Q-dot then is also a 2 by 1 vector.
Q-double-dot is also a 2 by 1 vector.
So this is a vector equation of a 2 by 1 vector in this case.
This is some vector--
2 by 1 vector.
In my case, I had also two control inputs.
So this is also a 2 by 1 vector, which means
what is this thing going to be?
That's going to be a 2 by 2 matrix in that example.
What matters, what makes life dramatically easier,
and what most robots today have really assumed
is that they assume that F2 is full rank.
So a robot of this form is fully actuated if the rank of F2, q,
q-dot, and time is equal--
I'll write the dimension of q here--
its full rank.
OK.
Why does that matter?
What does that mean first?
What it means is that if I know F1 and F2,
then I can use u to do anything I want to q-double-dot.
OK.
I'll show you that.
I can say that right now pretty explicitly.
So let's say I know exactly what F1 and F2 are.
Let's say I choose a control law.
I want to choose u as some function--
I'll just call it pi--
of q, q-dot, and time.
So I want to come up with a controller which
looks at my positions, and my velocities, what time it
is, and comes up with a torque.
Let's say, I did F2 inverse q, q-dot, and time
times negative F1, q, q-dot, time plus, I don't know,
some other controller, but I want u-prime, let's call it.
So if the rank of F2--
if it's full rank, if it's got the same rank
as the dimension of q, then that means
that this F2 inverse exists.
And I think that if you plug this in for u
right there, what you're going to see
is that this cancels out this.
If I did it right, then, and this cancels out this.
And what I'm left with is a simple system now.
Q-double-dot equals u-prime.
AUDIENCE: Shouldn't that be q-double-dot [INAUDIBLE]??
RUSS TEDRAKE: Where do you want q-double-dot?
AUDIENCE: Is that u?
RUSS TEDRAKE: This is u-prime.
So just some other u.
So what I'm trying to do is now say
that I'm going to effectively change
the equations of motion of my system into this, u-prime.
I might have called that maybe q-double-dot desired
or something like that.
That would be fine too.
So what did we just do?
We did a trick called feedback linearization.
I took what was potentially a very complicated nonlinear
equations of motion, and because I
could, using my control input, command every q-double-dot,
I can essentially effectively replace the equations of motion
with a simpler equation.
This is actually a trivially simple equation.
For those of you that know, this is
what would be a series of single inputs, single outputs systems.
They're decoupled.
So q-double-dot 1 is equal to the first element of this.
It's just two vectors.
So that just looks like a trick.
I'm going to ground it in an example in a second here.
But first, let's finish defining what underactuated means.
So what is underactuated going to mean?
AUDIENCE: That the other two matrices is important.
RUSS TEDRAKE: That's right.
Good.
Yeah, a system of that form is underactuated
if the rank of F2, q, q-dot, and time is
less than the dimension of q.
In words, what underactuated means--
a system is under actuated if the control input cannot
accelerate the system in every direction.
That's what this equation says.
If the control input u cannot produce.
That's just what the equation said.
You could imagine if the form of the equations
wasn't linear in u, then we'd have
to adapt this rank condition to do this.
But this, I think, for today is a very good working definition
of underactuated.
And we'll improve it as we go through the class.
There's a couple of things to note about it.
First of all, as I've defined it here,
whether you're underactuated or not
actually depends on your state.
So you could say that a robot was fully
actuated in some states and underactuated in other states.
Now why would that happen?
Maybe there's a torque limit, or there's
an obstacle or something like this that prevents you
from producing accelerations when
you're in some configurations.
Intuitively, what's happening in ASIMO
is that it's trying to stay in this very conservative regime
because then those are the states where it can
act like it's fully actuated.
And if it was running like you or me, then it's underactuated.
But what I want to try to impress
on you is that this dichotomy between fully
actuated and underactuated systems, it's pervasive.
I mean, so robotics, for the last 30-some, easily, years,
has almost completely made this assumption
that F2 is full rank when designing controllers.
If you learn about adaptive control,
all these manipulated control ideas,
computer torque methods-- all these things--
you're implicitly making this assumption
that you can produce arbitrary torques.
You can use arbitrary control effort
to produce arbitrary accelerations.
What that does, that's why all these proofs
exist for adaptive control and the like
because you can then effectively turn
your system into a linear system that we
know how to think about.
And the reason that dichotomy is so strong
is because what happens if you're a control designer
and you don't have the ability to take your nonlinear system
and turn it into a linear system is
that you have no choice but to start reasoning
about the nonlinear dynamics of your system, reasoning
about the long-term nonlinear dynamics of the system.
And analytics break down pretty quick.
But computers can help.
That's why we're revisiting this kind of idea.
So factory room robotic arms tend
to be fully actuated, except for very exceptional cases.
Walking robots and things like that, as we'll see,
are underactuated.
So let's do that example.
AUDIENCE: So are you implying that in order
to have agile robots, we need to have underactuated robotics?
RUSS TEDRAKE: Absolutely.
I'm going to finish making that argument, but absolutely.
That's exactly what I'm saying.
The question was, am I implying that we
need to do underactuated robotics to have agile robots?
Yeah.
I would even say that I'm implying--
I'm a little biased-- but I'm implying
that every interesting problem in robotics
is interesting because it's underactuated.
If you think about the problems that are unsolved in robotics--
maybe manipulation, walking, cool flying things--
if you look closely, if the control
problem is considered unsolved, it's probably underactuated.
The things we know how to do really well--
picking and placing parts on a factory room floor--
that's fully actuated.
Now manipulation is hard for many other reasons.
You have to find the thing you're manipulating.
You have to think about it.
But there's something fundamental
in robotics research that happens
if your system suddenly-- if you don't have complete control
authority.
And all the interesting problems that are left
seem to be underactuated.
OK.
So instead of talking about abstract F's, let's
make it specific.
Let's write the equations of motion
for our two-link robotic arm.
So how many people have seen Lagrangian mechanics?
Cool.
So the class isn't going to depend on it.
I'm going to do it once, quickly.
And it's in the notes.
If you haven't seen Lagrangian mechanics,
it's a good thing to know.
And it's in the appendix of the course notes.
It'll be posted.
But I want you to see it once to just see
that there is actually-- if what you care about first is just
coming up with the equations of motion, then
there's actually a fairly procedural way to do
that for even pretty complicated systems.
So let's do it for this not-very-complicated system.
OK.
So let me do that in pieces.
So let's say, this is mass 1.
Let's say that it's that position x,1.
If I call this x,1 and x,2--
x and y-- that makes them a coordinate system there.
Let's say that the mass here is that x,1,
and the mass 2 is x,2.
So the first thing to do is just to think about the kinematics
of the robot.
And in this case, they're pretty simple.
So as I've written it, x,1 is--
what is it?
The x position in x,1 here is l times sine or cosine?
Sine of theta 1.
And the other one is negative L1 cosine theta 1.
Now we're going to get bored real quick
if I don't adopt a shorthand.
So let me just call that l,1, s,1.
So that'll be shorthand for sine of theta 1.
And this will be negative l,1 cosine, 1.
If I want to do the kinematics of x,2 here,
that's going to depend on theta 2.
It's actually also going to depend on theta 1
because I've got this in a relative frame.
That theta 2 is relative to the first link.
So it turns out the kinematics of x,2,
we can actually start with just x,1.
It's the position of x,1 plus another vector,
which is l,2 sine of theta 1 plus theta 2.
If you work it out, that's the right thing--
cosine theta 1 plus theta 2, which are shorthand as x,1 plus
l,2 s,1 plus 2 negative l,2 c,1 plus 2.
OK.
So the derivatives aren't too bad.
I can do those.
Let's see.
If I want the rate of change of x1,
intuitively, that's going to start depending
on the joint velocities, right?
So how does that work out?
The time derivative of x,1 is going to be l,1 cosine theta 1
times theta 1 dot.
And then l,1 sine theta 1 times theta 1 dot.
And x,2 dot is going to be x,1 dot plus l,2 c,1 plus 2 times
theta 1 dot plus theta 2 dot.
And l,2 s,1 plus 2 theta 1 dot plus theta 2 dot.
So we now have solved the kinematics of the machine.
To write the dynamics Lagrangian style
we need to think about the energy of the system.
So let's call T the total kinetic energy.
And in this case, it's pretty simple.
This is why I went with point masses.
It's 1/2 mv squared, which in vector form,
looks like 1/2x 1 dot transpose m,1 x,1 dot plus 1/2 x,2 dot
transpose m,2 x,2 dot.
OK.
And then we're going to define the total potential energy
as u.
And this it's just mg times the vertical position of the thing.
So it's just mass 1 times gravity times I'll call it--
I guess I'll just call it y,1, which is the second element
of that.
I want to even not introduce new symbol.
We'll just do l,1 c,1 negative.
And this is minus m,2 g, y,2, which is l,1 c,1 plus l,2 c,1
plus 2.
Sorry for going into the corner.
OK.
But you can all write the kinetic and potential energy
of the system.
So Lagrangian derivations of the equations of motion
just uses this Lagrangian, which is the difference
in the kinetic minus potential.
And I think a very good exercise is to understand the reason why
this works.
But for our class, we can actually just use it as a crank
that we can turn.
If we write this out, and then you do some simple math on it,
where this is called a generalized force,
it turns out if you plug these in to this equation,
turn your calculus crank, then you end up
with the equations of motion.
You end up with two equations that have the form--
they give you some equations in terms of F, q, q-dot,
q-double-dot, it's some function of q,
and this is actually where the u's come in.
So in the simplest form, it comes up like this.
And with a little work, let the call
that F-Lagrangian so it's not the same F. With a little work,
you can separate out the q-double-dots
and get it to the vector equations
we were talking about before.
OK.
If you take those equations that you get and you pop them
into MATLAB, and it's pretty simple
to start simulating the equations of motion
of the two-link arm.
This is with zero control input.
So this is just what happens if you take some two-link arm,
apply no torque, let it go.
Then you get this.
I put some damping in there extra so we didn't
have a demonstration of chaos.
But there's a pretty procedural way
to go from very simple kinematics,
doing some pretty simple energy calculations,
and getting yourself to a simulation of even very
complicated mechanical systems.
So the forward dynamics, we understand.
Now it turns out, there's actually very good algorithms
for this too.
If you have a 100-link robot, you certainly
wouldn't want to turn the crank by hand.
But you can download good software packages
that write recursive versions of this algorithm that
have very efficient computation of those dynamics.
OK.
Now let's start thinking about what it means
to have control in that system.
It turns out, if you enough of these equations, if you punch
in enough different robotic arms and walking robots
or whatever-- oh, John yeah?
AUDIENCE: I think maybe minus 3L/3q.
RUSS TEDRAKE: Yeah, OK.
Good catch.
OK.
So if you start punching these equations enough,
then and then you start noticing a pattern.
Turns out, even very complicated robotic arms
tend to have equations that fall into this stereotyped form.
OK.
This is almost just f equals ma.
This is the mass matrix, the inertial matrix.
The c here is the Coriolis terms.
The g here is the gravitational terms--
potential terms.
And then this is the torques.
These are called the manipulator equations.
We're going to revisit them.
You don't have to have complete intuition about them right now.
But what I want you to understand
is that if you take the Lagrangian dynamics
on some rigid body manipulator, then
you're going to get something out
in a form that looks like this.
Now this is actually a pretty powerful equation.
It tells you a lot of things.
So there's a q-double-dot term that's
multiplied linearly by something that only depends on q.
So by leaving q-dot here, I've already
strengthened my form by putting q-double-dot in linear here.
So arbitrary equations don't fit this.
This is a pretty special set of equations.
There's some terms that depend on q-dot.
And then there's some potential terms which only depend on q.
And then we have our joint torque king
of things over here.
And in fact, there's actually a lot of well-known structure
in these equations.
So it turns out, I could have written
the energy of the system as 1/2 q-dot transpose H, q, q-dot.
This inertial matrix analogous to mass
is related to the kinetic energy of the system.
And what that means actually, just
by thinking of it this way, it's well-known
that H is positive definite.
It's uniformly positive definite.
You can't have a negative kinetic energy.
And that manifests itself that this matrix H, which
appears all the time, turns out to be
equivalent to its transpose, its symmetric,
and its positive definite.
That's shorthand for positive definite.
It's a matrix greater than zero.
And in fact, if you look at the equations I punched in
for the robotic arm, it's exactly
just a matter of computing H, C, G,
and B, which is the matrix that maps your control
inputs into joint torques.
So H is a inertial matrix.
C is Coriolis.
G is gravity.
I think B was this because people were running out
of letters.
I don't know.
I don't know a reason to call it B.
But in general, B could be a function of q maybe.
But it's just some mapping between your control inputs
in the torques that you want to get.
OK.
So knowing that I've taken my simple manipulator,
I found equations of motion that take this form.
If I have torques to give--
torques at both the elbow and the shoulder,
then it turns out for that example, H and c
and G all just come from the Lagrangian.
And B-- what's B going to be in that example?
What size is it going to be first?
AUDIENCE: 2 by 2.
RUSS TEDRAKE: 2 by 2.
And if I'm assuming that my control inputs are exactly
the torques, then B is just the 2 by 2 identity matrix.
Is this system fully actuated?
AUDIENCE: Yes.
RUSS TEDRAKE: Why is it fully actuated?
AUDIENCE: Because the rank of the [INAUDIBLE] matrix is 2.
RUSS TEDRAKE: OK.
But there's one other term that was one other part
of that statement.
AUDIENCE: That's equal to the dimension of q-dot.
RUSS TEDRAKE: But I need to get the mapping
from q-double-dot u.
AUDIENCE: Oh, matrix is positive definite.
RUSS TEDRAKE: Yeah.
Because the inertial matrices are always also positive
definite, that if I actually write out q-double-dot that
for these systems, I get an H inverse q times all that
stuff--
B, q, u minus C--
oh leave the q-dot G. And we know H inverse exists.
I told you it's positive definite.
So as long as this thing is full rank, which as you said,
it is, then that system's fully actuated.
OK.
That means I can do anything I want to that system.
What should we do that system?
What should we do?
Let's replace the dynamics with something else.
Well, I can't do anything.
It's going to have to be two variables or less,
the system I want to simulate.
I can't make it simulate a whip if I've only got two.
But I can make it simulate any sort
of two-dimensional second-order system.
OK.
How about we take our two-link pendulum and make it
act like a one-link pendulum.
That's a simple enough thing to do.
So what I'd do is I'd find the equations of motion
for the one-link pendulum, and I just
do my feedback linearization trick.
I'd cancel it out, and I'd replace the dynamics
with the one-link pendulum.
All right.
So if you can see this, it's just a matter
of saying u is C times x-dot.
In my MATLAB code and in lecture,
I'll use x to mean the combination of q and q-dot.
I can just do my exact feedback linear trick--
u is C plus G.
Let's see if I can make this a little better.
And there's the equations of a simple pendulum
with a little damping.
In my control system, if I say, lecture1--
I think I put under simple pend, then suddenly, my two-link
pendulum-- the dynamics of my two-link pendulum,
when I'm simulating those entire dynamics,
work out to be the dynamics of my one-link pendulum.
So it's maybe not a useful trick.
If I really wanted a one-link pendulum,
I could have done a one-link pendulum.
Let's say I want to do something more clever maybe.
Let's invert gravity.
Let's take my inverted pendulum problem
and make it work by just replacing
the dynamics of my pendulum with an upside-down pendulum.
So maybe if I want to just get the pendulum to the top,
let's just make it act like an upside-down pendulum.
So we can do that too.
Woop.
When I say it the way I'm saying it,
I hope it sounds like, of course, if the system's
feedback linearizable, you can do whatever you want.
It's easy.
It's not worth thinking about these kind of things.
I mean, that's what I'm trying to communicate.
But almost every cool robot that works because
of these kind of tricks.
They're hidden, but they're there.
A lot of the reason robotic arms work as well as they
do is because you can do this.
Now there's limits, right?
You can only do this if you have unlimited torque.
In practice, a lot of robotic arms
have almost unlimited torque to give.
They've got big gearboxes, right?
You'd be surprised how pervasive this idea is.
So what this class is about is what
happens if you can't do that?
All right.
So let's take our hour two-link arm.
How are we going to break it?
How are we going to make it so we can't do that anymore?
What's a more interesting problem?
AUDIENCE: Get rid of one motor.
RUSS TEDRAKE: Get rid of a motor.
Let's get rid of the shoulder motor.
That seems like an important one.
Let's see what happens if we take that right out of there.
So the equations of motion actually
stay exactly the same, except for now, B of q
is going to have to be smaller if u is now
just one-dimensional.
I've got a single control input.
And B of q is just going to be what size?
AUDIENCE: 1 by 1?
RUSS TEDRAKE: It's going to be--
it's got to get to a two-dimensional thing.
So it's going to be a 2 by 1.
And let's say if as I drew it, that 2 by 1
is going to have nothing to do to the shoulder motor.
If I assume the first one is the shoulder,
it's going to have direct control of the elbow.
Suddenly, it's a whole different game.
Turns out, you can still solve that problem.
I wasn't thinking of showing this.
But let me preview something to come quickly here.
This is exactly that system.
It's a system we're going to talk about.
It's called the Acrobot.
It's got inertia in the links instead of the mass.
And if you take these computer science techniques
I'm going to tell you about, then
you can, for instance, find a solution for the torque
at the elbow to try to make this thing go to the top.
If you think about it, it's actually--
it's called the Acrobot because it's like an acrobat
on the high bar, where you don't have--
you can only give a little bit of torque at the wrist.
You can do a lot with your waist, potentially.
So this, if you do a clever job, you
can actually pump up energy and swing up and get to the top.
But that's a lot harder problem.
And I can't write that down in a single board here
at 72-point font.
But we're going to do that very, very soon.
So I hope you know what underactuated means now.
Why would I care about a system that's
missing its shoulder motor?
That seems pretty arbitrary.
If I'm building a robot, I might as well order enough motors
to put them everywhere.
It turns out if you care about walking robots,
one of the simplest models of a walking robot
is called the compass gait robot.
It's got a mass at the hip.
It's got two legs.
We can even assume it's got a pin joint here.
That's the connection to the-- that's the foot on the ground.
And it's got to torque to give here at the hip.
But it can't apply torque to the ground.
It's not because it's not an artificial.
If I had a foot, then suddenly, my toe--
somewhere, you're not bolted to the ground.
So you've got a bunch of interesting links,
and you can apply torque between your links.
But the place where you might want
it the most-- your shoulder motor,
your elbow motor, whatever it is--
the place that connects you to the ground,
you don't have a motor.
And you can't have a motor unless you're
willing to stick yourself to the ground.
Suction cups are a viable thing for walking robots, I guess.
But the more interesting problem is
how do you do control if you don't
have to be stuck to the ground?
So that two-link simple point mass thing
is actually exactly the dynamics of the compass gait walker
that we'll talk about fairly soon.
OK so I've got no torque here.
Torque equals 0 there.
Every walking robot is underactuated.
The same thing is true.
If I'm a humanoid, I'm trying to control
all of my state variable.
That's the question, right?
Do I have enough motors to instantaneously affect
every state variable?
That's the question.
If you count the number of motors on me, it's a lot.
They might not be as strong as they used to be.
But they're there.
There's a lot of them.
If you count the number of degrees of freedom,
that's hard too.
But no matter what your count, your tally
adds up to, if I jump, when I'm up in the air--
I'm not going to do that for you.
But when I'm up in the air, none of those motors,
no matter what I do, I could do something
with my arms, whatever, ignoring aerodynamic forces.
None of those motors are going to change the trajectory
of my center of mass.
There's nothing I can do to change the trajectory
of my center of mass.
I can move relative to my center mass,
change my angle of momentum.
I can serve angular momentum.
I can move things around.
But nothing I can do is going to move my center mass.
A walking robot-- a jumping robot,
for sure, is underactuated.
A flying machine is underactuated.
I mean, fighter jets are a good example.
You can go that way pretty well.
You know, they don't go backwards so well,
for instance.
All right, they don't go directly up so well.
Although, I can show you videos of that kind of thing.
birds-- you name it.
These systems tend to have control variables that you're
not in complete control of.
Manipulation-- if I'm throwing this chalk around,
I don't have complete control of that chalk.
If I form a force closure with it,
then you can maybe start thinking
I'm a fully actuated system.
I can move this thing around.
That's fine.
But I think the interesting part of manipulation
is before you get that force closure.
OK.
So every interesting problem in robotics is underactuated.
I'm going to give a quick sketch of what the rest of the term
has for you.
And then we're actually--
we're going to try something new on the website.
So the website's going to contain everything.
After today, we're a paperless existence.
The website will have your problem sets.
It'll have the lecture notes.
You can submit your problems that's on the website.
We're also going to try a new thing.
When I post the PDFs of the problem set,
you'll be able to download them and print it out if you like.
But you'll also be able to use this sort of interactive PDF
viewer where people, instead of having a forum or something
on the website, you could go right into the PDF
and mark, say, I don't understand what this means.
You can choose whether it's anonymous.
You can choose whether everybody knows who said it.
You can choose if it's just private.
In just a minute, I'll show us a demo of that.
We'll see if it works.
And it might be a cool way to communicate
outside of the room.
But let me tell you-- let me forecast what's coming here.
I haven't actually told you why this is a computer science
class yet.
So I can't let you leave without that.
Here's roughly what we're doing.
On Thursday, we're going to talk about the simple pendulum.
So we talked about a two-link pendulum just now.
We're going to take a step backwards on Thursday.
We're going to talk about the dynamics of a simple pendulum.
But we're going to talk about everything
there is to know about the simple pendulum.
And we're going to really think about the nonlinear dynamics
and how to think about that.
And then we're going to think about how to control
that simple pendulum.
But as we go in the class, we're going
to get to more and more interesting systems.
We're going to get to a cart pull system.
These are some of the model systems
in underactuated robotics.
We're going to get to the Acrobot system I just
showed you, a two-link thing with a torque here
and no torque there.
This one has a force here.
We're going to think about the toy systems
for underactuated robotics.
And then we're going to start splintering
into different domains.
If we care about walking, then we
can start thinking about these compass gait-type robots.
And we'll talk about more complicated robots.
And the key difference between here and here
is just we added a few extra degrees of freedom.
Here to here, the dimensionality of walking robots
isn't actually necessarily that high.
But what happens is you have to think
about systems with impacts.
And you have to think about limit cycles.
We'll develop some of those tools.
OK.
And then we're going to think about
how do you get away from these toy systems
by making higher-dimensional systems?
And it can come from walking too.
We'll have, for instance, multi-link robots.
And think about how to control the higher-dimensional systems,
more Degrees Of Freedom--
DOFs.
Then we're going to think about what
happens if I take these model systems
and add some uncertainty or stochasticity.
So a toy example for that might be a walking robot walking
on rough terrain, let's say.
And then we're going to think about how
to take these model systems and what happens
if we don't know the model.
And that's certainly the case if you've got a little perching
airplane, for instance, or a little robotic bird.
I have a two-year-old daughter.
And I've started being asked to cartoon everything I say.
So I'll subject you to some very bad but quick cartoons.
OK.
So that's the systems we're going to think about
and the reasons that they're interesting.
Turns out, we're going to take a very computational approach
to them.
So in this system, we're going to start
introducing optimal control.
We're going to say, let's say, I want
to get the pendulum to the top, but I want to do it,
for instance, by minimizing energy or minimizing
the time I get there.
So we're going to talk about optimal control.
And as much as we can, we're going
to talk about analytical optimal control.
But pretty quick, we're going to run out of things
we can do analytically.
And we're going to start looking at numerical optimal control--
computer science, again, based on dynamic programming.
And that's going to get us somewhere.
When we start taking these slightly more interesting
systems like this, we're going to develop some better tools.
We're going to do numerical optimal control with something
called policy search, which is a combination of tools
from reinforcement learning, machine learning,
and numerical optimization.
We'll be able to do some of our impact modeling
with that too, I guess.
When we start getting into higher and higher dimensional
systems, we're going have to give up on the opportunity
to completely solve an optimal control problem
numerically or analytically.
And we're going to start talking about approximate policy search
and motion planning.
And I'm drawing it like this because I
want you to see that we're taking a very spiral
course through the class.
We're going to develop tools that every time I
develop a new tool, we're going to make sure we understand what
the heck they do to the pendulum, the cart pull,
and things like that, and work back up.
So we're going to cover motion planning.
If you know randomized motion planning--
RRTs feedback motion planning-- you're going to see that here.
And then when you get into the really good stuff
here, when you've got uncertainty, stochasticity,
and unknown models, then we're going
to have to get into pure machine learning approaches
in some cases.
That looks just like my yellow one.
Control based on reinforcement learning, for instance.
And that's how we're going to address
some of these systems that are more complicated still.
OK.
So we're going to route everything
in mechanical systems because that's what I care about.
I want things to move.
But we're going to do it in a pretty computer science-y way
because I think the computer scientists have
turned a corner, and they're going
to solve all these problems.