In the last lecture, we saw that one way of overcoming this inherent or seeming
tension between x.+u was a way of generating, references,
and the actual robot dynamics was to introduce a layered architecture,
where you had a planner that planned reference directories, and a tracker that
tracked these reference directories. What I want to do today, in today's
lecture is, see how do we make, this, architecture concrete for the particular
example of a differential drive wheeled mobile robot.
And if you recall, going back in time to module 2,
a differential drive mobile robot has 2 wheels,
and the wheel velocities can be independently controlled.
So we have v sub l for the left wheel, and v sub r for the right wheel.
And if, this robot is located at x,y and in this
case it's heading straight up. So this is the angel Phi then we saw that
the dynamic for the differential drive mobile robot was given by this
expression. We also quickly realize that there was
something. Rather unintuitive about this.
It's hard to feel real velocities. It's much easier to feel what' happening
if you're, assuming that you can control the speed of the robot directly and the
angler velocity meaning how quickly you're turning.
If you're doing that you instead get a unicycle model.
The differencial drive mobile robot, dynamics is not the unicycle dynamics but
it's close, and infact module 2 part of the the things we did in that module was
connection these 2 and we actually derived, derived this expression where
the right and the left wheel volocities could be related to VE anomia directly
meaning, the control signals we produce under the unicycle assumption can be
directly mapped onto v sub r and v sub l. And that's nice.
Because v and [INAUDIBLE] are intuitively clear about v sub r and v sub l are not.
So, the way we think about differential drive mobile robots is really in terms of
unicycles. And then, we make this final
transformation onto the actual real velocities before resending the, the com
the actuation commands. So that's the model we have to deal with.
Well, if we now buy that we can use unicycles then, we really have already
seen how to make the unicycle go in a desired direction.
So here is the unicycle model again. Well I would like it to go in the
direction phi sub d or phi desired. Well, we actually saw early on that, why
not use a PID regulator? Well, if I let the error Between the desired angle and
the actual angle, be given by E, and in particular, if you don't do E but you use
arc tan 2 of sine phi [UNKNOWN] minus phi comma Cosine, the same thing.
Then you get something that's between -pi and pi,
then you don't have to worry about the angles being, poorly behaved.
Well, if you use a PID regulator. Then we've seen that this actually allows
us to track this, reference direction, theta or phi sub d, rather elegantly.
And, as a recap, this is what the PID
regulator looks like. It looks rather hairy, but, we also saw
how to implement it in a rather direct way.
So we know, already, how to track angles. Well, all we need to do then is add in
the speed component. So, let's assume that the low level
planner has given us a desired velocity, u, where we have assumed then, that x
does equal to u. Well, we have, actually, the unicycle,
right? And now, this vector, is actually the desired direction and magnitude, we
want to move in, and, why not simply set that equal to u? U is the desired
velocity. Well, if we do that, then we can start
seeing, okay, how do we get, desired headings out, and what should our
velocity be? Well, it's very simple. If we simply take arc tangents of u2 over
u1, where u2 is the y component of u, and u1 is the x component, then that is the
angle. So phi desired, we get for free.
All that remains to be designed, then, is the velocity component, but hey check
this out. If I take the unicycle model and I take X
dot squared plus Y dot squared and then I take the square root of this, I get This
square root here. Well, that is the square root of v^2
cosine squared phi plus sin^2 phi. Well, this is one of the well-known
trigonometric identities. This is exactly equal to 1, so all I get
is square root of v ^ 2. Which is v itself.
So what I noticed is that, if I'm moving the unicycle around.
The magnitude of this vector in the direction I'm going with.
Well, that's v. Well, but I know what the magnitude is of
the u vector. It's just the absolute value, or the, the
norm of u. So what this simply means, is.
You know what? V should be equal to the norm of u.
Well, the norm of u is the square root of v1^2+u2^2.
So, I immediately know, not only which direction I would like to go in but how
quickly I should go in that direction. So, the way to build a tracker for the
unicycle robot is simply to take arc tangents of u2 over u1 as the desired
heading, and then let omega be equal to PID of e, where e is phi desired minus
phi, and v be the magnitude of the u vector itself.
That's good news, because this gives us all we need.
Before, as before, we plan using our navigation algorithm.
Out of the navigation algorithm comes u1 and u2, the direction in which we would
like to move. Well, at the end of the day, the tracker
needs to spit out V sub R and V sub L, which is derived from the left wheel
velocities for the differential drive mobile robot, and now we know what to put
inside a tracker block. If I desire, the desired heading is the
arc tangents of U2 over U1 Then we use a PID regulator, for instance, or some
other regulator, for regulating the angle.
So omega = PID of phi desired - phi. The velocity is simply the magnitude of
the u vector, which we know how to compute now.
So, this gives us omega and v for the unicycle.
And then we take this and map it onto the left and right wheel velocities of the
actual robot. So this means that we can actually
successfully use this layered arcitecture for our differential drive mobile robots,
and this is the way we did it in the experiments that we saw In the previous
module. Now, for the unicycle.
There is an even more clever trick that is not involving layered architecture,
but it's letting the unicycle really Act like x dot = u.
And in the next lecture, we will not use this PID based tracker, but this clever
trick as a way of being eeven more elegant when handling differential drive
mobile robots.