And so what the robot does, is it plans what we call a minimum-snap trajectory. So to remind you of physics: You have position, derivative, velocity; then acceleration; and then comes jerk, and then comes snap. So this robot minimizes snap. So what that effectively does, is produce a smooth and graceful motion. And it does that avoiding obstacles. So these minimum-snap trajectories in this flat space are then transformed back into this complicated 12-dimensional space, which the robot must do for control and then execution.
So let me show you some examples of what these minimum-snap trajectories look like. And in the first video, you’ll see the robot going from point A to point B, through an intermediate point.
So the robot is obviously capable of executing any curve trajectory. So these are circular trajectories, where the robot pulls about two G’s. Here you have overhead motion capture cameras on the top that tell the robot where it is 100 times a second. It also tells the robot where these obstacles are. And the obstacles can be moving. And here, you’ll see Daniel throw this hoop into the air, while the robot is calculating the position of the hoop, and trying to figure out how to best go through the hoop. So as an academic, we’re always trained to be able to jump through hoops to raise funding for our labs, and we get our robots to do that.
So another thing the robot can do is it remembers pieces of trajectory that it learns or is pre-programmed. So here, you see the robot combining a motion that builds up momentum, and then changes its orientation and then recovers. So it has to do this because this gap in the window is only slightly larger than the width of the robot. So just like a diver stands on a springboard and then jumps off it to gain momentum, and then does this pirouette, this two and a half somersault through and then gracefully recovers, this robot is basically doing that. So it knows how to combine little bits and pieces of trajectories to do these fairly difficult tasks.
So I want to change gears. So one of the disadvantages of these small robots is its size. And I told you earlier that we may want to employ lots and lots of robots to overcome the limitations of size. So one difficulty is: How do you coordinate lots of these robots? And so here, we looked to nature. So I want to show you a clip of Aphaenogaster desert ants, in Professor Stephen Pratt’s lab, carrying an object. So this is actually a piece of fig. Actually you take any object coated with fig juice, and the ants will carry it back to the nest. So these ants don’t have any central coordinator. They sense their neighbors. There’s no explicit communication. But because they sense the neighbors and because they sense the object, they have implicit coordination across the group. So this is the kind of coordination we want our robots to have.
So when we have a robot which is surrounded by neighbors — and let’s look at robot I and robot J — what we want the robots to do, is to monitor the separation between them, as they fly in formation. And then you want to make sure that this separation is within acceptable levels. So again, the robots monitor this error and calculate the control commands 100 times a second, which then translates into motor commands, 600 times a second. So this also has to be done in a decentralized way.
Again, if you have lots and lots of robots, it’s impossible to coordinate all this information centrally fast enough in order for the robots to accomplish the task. Plus, the robots have to base their actions only on local information — what they sense from their neighbors. And then finally, we insist that the robots be agnostic to who their neighbors are. So this is what we call anonymity.
So what I want to show you next is a video of 20 of these little robots, flying in formation. They’re monitoring their neighbors’ positions. They’re maintaining formation. The formations can change. They can be planar formations, they can be three-dimensional formations. As you can see here, they collapse from a three-dimensional formation into planar formation. And to fly through obstacles, they can adapt the formations on the fly. So again, these robots come really close together. As you can see in this figure-eight flight, they come within inches of each other. And despite the aerodynamic interactions with these propeller blades, they’re able to maintain stable flight.
So once you know how to fly in formation, you can actually pick up objects cooperatively. So this just shows that we can double, triple, quadruple the robots’ strength, by just getting them to team with neighbors, as you can see here. One of the disadvantages of doing that is, as you scale things up — so if you have lots of robots carrying the same thing, you’re essentially effectively increasing the inertia, and therefore you pay a price; they’re not as agile. But you do gain in terms of payload-carrying capacity.
Another application I want to show you — again, this is in our lab. This is work done by Quentin Lindsey, who’s a graduate student. So his algorithm essentially tells these robots how to autonomously build cubic structures from truss-like elements. So his algorithm tells the robot what part to pick up, when, and where to place it. So in this video you see — and it’s sped up 10, 14 times — you see three different structures being built by these robots. And again, everything is autonomous, and all Quentin has to do is to give them a blueprint of the design that he wants to build.