The punch line with last lecture was that we can, in fact, make the unicycle model or a differential drive mobile robot, act like a simple x dot equal to u. What this means is that if we have some desired direction we want to go in, direction and magnitude, we can come up with v's and omega's, speeds and angular velocities that make the differential drive robot execute this controller. And we did it in two ways. First, we saw that we can actually use some kind of tracking controller to follow this. But then, in last lecture, we came up with a rather clever transformation that allowed us to, to actually track this u vector more or less perfectly. And when I say more or less, what I mean is that we really ignored orientation. So, we only cared about where the robot actually was, not particularly which direction it was pointing. And we couldn't track or used the original point, we had to accept this small offset error. But it was rather elegant, because no longer did we have to design trackers. the question one should ask then, of course, is does this apply to other types of robots? Meaning, this idea of starting with a unicycle and then somehow making it behave well, how, how relevant is that to other kinds of robots? So, we have dealt with the differential drive robots. We know that it's super important in relevance to that but you know what, what if you have flying things? What if you have snake bots? What if you have, this is called a snake board, what if you have fixed-wing aircrafts or blimps or underwater robots? Does this even apply? Well, what I want to do today is basically see that it does supply but, it does supply if you squint your eyes a little bit and focus on what these types of robots have in common as opposed to what they don't have in common. So, what I want to do today is simply go through a smorgasbord of different robot classes and see how they actually are like unicycles or maybe not. We'll see. Okay. Here's the unicycle, right? We have, as always, position, x y, and it's pointing in some direction, phi, this is the standard robot model. So, the states are position and orientation. The inputs to this model, this abstraction, are angular and transalational velocitiies. Meaning, how quickly do you turn and how fast do you go. Well, let's start expanding this model to encompass slightly more elaborate systems. So, let's start with what's called a car-like robot. A car-like robot is not a unicycle because all of a sudden, we have more states. We have our old friends which is x and y, which is the position. We have phi which is the orientation, but then we also have a new angle known as the steering angle. So, here is the picture we should have in mind. Here's a car, here are the rear wheels. Well, the front wheels are going to be turned because we're turning the steering wheel. So, if I call this point here, x and y, as always, then this, of course, is, as before, the heading. And now, we also have this angle here, which is psi, known as the steering angle, how much are we actually steering it. And all I wanted to show here is that we have almost the same equation for x and y, the only difference is that we are now going in this direction, which is phi plus psi. and then, the orientation has its own dynamics that's a function of the velocity and the steering angle. And then, what we can do is we can control how quickly we're steering. So, psi dot is equal to u. So, this is the next level up in complexity where we no longer have a unicycle but a car-like robot, four wheels we can turn the front wheels. Well we've already seen the Segway robot. So, the Segway robot is really a unicycle or a differential drive robot at the base. And then, you know, this, this mess here. I drew it like this because it actually didn't fit in the box if I didn't make it small and sideways. The point is that, we had a rather complicated equation describing the pendulum part or the part that's sitting on top of the unicycle. So, we had a bunch of states, position, orientation, tilt, angle, and here, we actually had to deal with the tilt velocities and other kinds of velocities because we actually need to get into dynamics. Many accelerations of what's happening for this thing not to fall over and the inputs were the wheel torques to this model. The point now is that this still has a unicycle underneath and then this mass sitting on top of it. So, that would, would be the Segway robot that we actually already seen. Well, what about flying things? Well, a standard model for a fixed-wing aircraft is ta-da, a unicycle, right? Which means, it's moving. And then, it can change altitude. So now, no one in their right mind would actually say that this is what a, an aircraft is actually doing but from a high level obstruction point of view, it's not a bad idea. An aircraft can't go sideways but it can kind of move like a unicyle in, in the plane. And then, you can change altitude. now, you would actually have to couple this to the real dynamics of the aircraft if you wanted to do it for real. the one thing to note though is that there is something slightly fishy about this and that's the fact that the fixed wing aircraft cannot hover. When you can't have v=0, but there's really no constraint or no way of capturing this in, this model, we see later how to do it, but the point here is that there are ways of thinking about flying things as unicycles plus an altitude component. Now, let's look at another model. This is the standard model of an underwater glider, and, well, let's go back a slide. Aircraft, underwater glider, nothing changed, right? So, an underwater glider, people typically model as a unicycle. And then, you can go up and down. So, you can go down to a lower depth or you could climb up towards the surface. So, again, unicycle plus an altitude or a vertical component that describes how high up or high down the, the robot actually is. Well, all of these robots have some notion of where it is at least in the plane and where it's pointing. And if I call position plus heading for POSE, the punchline, at least based on the models I showed you, cars, segways, flying things, things on the water, and as we know, differential drive robots, they have this key thing to it known as POSE. And POSE is x, y, and phi. You know, that's just, that's just what's going on, where is it and which way is it pointing. It's pointing in the phi direction instead of the x and y. Well, you know what, if you ignore the dynamics, the actual dynamics and say at the certain high level abstraction, we already know how we should think about this, the unicycle. So, almost everything involves a POSE. And almost everything with POSE is almost a unicycle and I will make this more precise. But the point here is that whenever you start dealing with postion and heading, the unicycle model is applicable, maybe not perfectly, but fairly well. So, this model is still very, very rich. So, the punchline then becomes that we can almost use everything that we've already done and then possibly add another layer to to what's going on. So, what you have, is you have, let's say, your, your u plan, right, that comes into your unit cycle, and out of that comes our old friends, v and omega, and then, whatever actual robot you have is going to move like this. [SOUND] And the point is that, in here, we may be forced to somehow make the actual robot look like a unicycle a little bit. But it's just another layer to our already elegant and well-layered architecture that we've discussed. And, in fact, next time, what I want to do is exactly this for the car robot, to see how do you make a car act like a unicycle and this is something I had to do when I was dealing with the autonomous self-driving cars. We were reasoning about them at the level of position and orientation and speeds and angular velocities but then we have to map it back onto the, onto the, the car robot. Before we do that though, I need to talk a little bit about constraints. What I mean, mean by that is if you're flying, for instance, you can't hover. You're going to have a certain minimum velocity or a lot of times, it's convenient to assume a fixed velocity and then you can turn. But here's an aircraft. It can't immediately or very quickly just spin either. So, there are caps on how quickly you can actually turn. Well, the most famous of all constrained unicycle type models is known as Dubins vehicle. And all it is is a unicycle with the added caveat that we can only fly with v=1 or drive with v=1, meaning we're going to go with a constant velocity and we have a max and a minimum angular velocity. If you want, you can say, you know, v0 there and omega v max or omega max plus omega max instead of -1 and 1, but the point is that we're constraining the velocities. This means, that Dubins vehicle can basically execute straight lines, it can go along paths like this so, so it can go along angles, I mean, along circular arcs. Or it can go anything in between, right? But basically, you have, you cannot go arbitrarily tight with a Dubins vehicle. So, this is one way in which people incorporate constraints. And this makes the planning part significantly harder. We're not going to cover it, but I encourage you to look up Dubins vehicles, for instance, to see how people think about curvature constrained versions of unicycles, for instance. Well, another version or another standard constraint that people deal with is what's known as the Reeds-Shepp model, where omega again, is between -1 and 1, or negative omega max and omega max, and v can now be, well, the absolute value of v is 1, which means that v is either +1 or -1, meaning it's a Dubins vehicle that can also go backwards. That's all that this means. You can go forward along these arcs or you can actually pull back in in reverse. And Reeds-Shepp is also a standard type of model that people like to deal with when they're dealing with mobile robots. Now, aircrafts typically can't back so it's not a par, all that relevant of a model for fixed wind aircraft, for instance. But there are, for instance, robots, at the end of the day, we have a top speed, for instance, so we can't go faster than v=vmax, so, but we can indeed go backwards. So, the Reeds-Shepp model would not be a bad model if you actually want to take max velocities into account. So, remember that this may or may not come into play. The last thing I want to say though is that there are, of course, robots where POSE is not a reasonable way of describing them. You know, you have a humanoid, well, people will have maybe a position and orientation but there is so much more going on in a humanoid. A snake, you know, which way is the snake pointing, well, you know, if the snake looks like this, what's, what's the orientation of the snake? It's very unclear. What's the position of the snake? Who knows? It's not clear what we mean by that. same thing, we would like mobile manipulators like this robots that we have here at Georgia Tech, where, well, the base is a unicycle. So, if you only care about the base, fine. But if you want to do more things like carry things around or opening doors and so forth, we have to care about more than the just the POSE, more than just position and orientation. So, there are situations where we have to worry about more things, but in a surprising amount of situations, POSE is indeed the way to go. And like I said, the next lecture will be about cars and how to actually make a car behave like a unicycle.