1 00:00:00,000 --> 00:00:05,077 My spiel is that if you look at limbed motor control, 2 00:00:05,077 --> 00:00:07,410 if you measure our level of understanding by what we can 3 00:00:07,410 --> 00:00:12,030 make a robot do, then walking is by far a harder task and less 4 00:00:12,030 --> 00:00:13,990 understood than reaching units. 5 00:00:13,990 --> 00:00:17,020 So in that sense, it's very interesting. 6 00:00:17,020 --> 00:00:19,950 So there's a trend, especially at MIT 7 00:00:19,950 --> 00:00:23,190 here, to try to make the robots a little bit more like biology. 8 00:00:23,190 --> 00:00:26,818 You'll see this today because each of the motors on Troody 9 00:00:26,818 --> 00:00:28,110 actually has a spring attached. 10 00:00:28,110 --> 00:00:31,447 Right, so that's the first step in kind of taking-- 11 00:00:31,447 --> 00:00:33,280 I'll show you maybe some rigid robots later. 12 00:00:33,280 --> 00:00:36,838 But if I'm going to a very rigid type of robot 13 00:00:36,838 --> 00:00:38,880 to one that's more fluid, maybe a little bit more 14 00:00:38,880 --> 00:00:40,440 like what biology's doing. 15 00:00:40,440 --> 00:00:43,930 And that brings up a lot of challenging control questions. 16 00:00:43,930 --> 00:00:46,920 And I think that Troody is an excellent example 17 00:00:46,920 --> 00:00:51,125 of a bipedal robot that actually works despite the fact 18 00:00:51,125 --> 00:00:51,750 it has springs. 19 00:00:51,750 --> 00:00:52,250 Right. 20 00:00:52,250 --> 00:00:55,320 21 00:00:55,320 --> 00:00:59,130 So this is a proof of concept and hopefully the spring idea 22 00:00:59,130 --> 00:01:03,900 will lead to some very exciting and floppy robots 23 00:01:03,900 --> 00:01:04,599 in the future. 24 00:01:04,599 --> 00:01:07,360 So Pete, take it away. 25 00:01:07,360 --> 00:01:07,860 All right. 26 00:01:07,860 --> 00:01:12,840 So everybody, I want to begin by-- 27 00:01:12,840 --> 00:01:16,290 I was talking a little bit earlier with Russ about a way 28 00:01:16,290 --> 00:01:18,915 to explain the whole idea of using springs 29 00:01:18,915 --> 00:01:20,790 that could motivate this a little bit better, 30 00:01:20,790 --> 00:01:22,450 maybe for all of you. 31 00:01:22,450 --> 00:01:24,330 And there's just three main reasons 32 00:01:24,330 --> 00:01:26,970 why I think springs are really a good way 33 00:01:26,970 --> 00:01:29,940 to go with this particular type of technology. 34 00:01:29,940 --> 00:01:32,700 And before I go on, I should certainly 35 00:01:32,700 --> 00:01:34,680 give credit where credit's due. 36 00:01:34,680 --> 00:01:37,920 The originator of the idea of using springs in series 37 00:01:37,920 --> 00:01:41,900 with a motor, which is called a series elastic actuator, 38 00:01:41,900 --> 00:01:43,770 was done by Professor Gill Pratt, 39 00:01:43,770 --> 00:01:47,203 or he's previously a professor, he's now at Olin College. 40 00:01:47,203 --> 00:01:48,870 He's one of the people who's starting up 41 00:01:48,870 --> 00:01:52,180 Olin College, which is a pretty interesting story, [INAUDIBLE].. 42 00:01:52,180 --> 00:01:55,840 So Gill kind of just came up with the idea 43 00:01:55,840 --> 00:01:59,217 of putting a spring in series with a motor 44 00:01:59,217 --> 00:02:00,800 and taking advantage of the properties 45 00:02:00,800 --> 00:02:03,020 of the spring and that whole control movement. 46 00:02:03,020 --> 00:02:05,103 He has kind of a electrical engineering background 47 00:02:05,103 --> 00:02:07,880 and he thought of it in those terms, the springs [INAUDIBLE] 48 00:02:07,880 --> 00:02:10,160 capacitor or whatever. 49 00:02:10,160 --> 00:02:13,700 The basic idea is that you have a position controlled 50 00:02:13,700 --> 00:02:16,385 robot, which I'm certain you're all familiar with. 51 00:02:16,385 --> 00:02:21,260 You have a motor connected directly either to the joint 52 00:02:21,260 --> 00:02:25,700 or to a small transmission gear reduction to the joint. 53 00:02:25,700 --> 00:02:28,340 And if you grab the end of the robot 54 00:02:28,340 --> 00:02:30,990 when the motor's turned off and move it, 55 00:02:30,990 --> 00:02:33,290 you'll find that the motor will spin, 56 00:02:33,290 --> 00:02:36,740 and you'll back drive the motor or if the gear ratio is very 57 00:02:36,740 --> 00:02:40,110 high, nothing will happen because you can't back 58 00:02:40,110 --> 00:02:40,940 drive the motor. 59 00:02:40,940 --> 00:02:43,700 You might even break the gears if you move it. 60 00:02:43,700 --> 00:02:47,750 That's sort of the way the position control joint feels. 61 00:02:47,750 --> 00:02:51,320 The way this joint feels is entirely different. 62 00:02:51,320 --> 00:02:56,510 If you turn it off and move the joint, 63 00:02:56,510 --> 00:03:00,290 the spring that you have in series with the motor 64 00:03:00,290 --> 00:03:03,022 will stretch if you wiggle the joint. 65 00:03:03,022 --> 00:03:05,480 So if you were to grab the motor and keep it from spinning, 66 00:03:05,480 --> 00:03:08,330 you could move the joint a fair distance 67 00:03:08,330 --> 00:03:11,000 because the spring is taking up a lot of the locomotion. 68 00:03:11,000 --> 00:03:14,210 And as you push it, you put energy to it. 69 00:03:14,210 --> 00:03:16,965 If you let it go, it'll bounce back to its zero set point 70 00:03:16,965 --> 00:03:18,590 and you can pull it back the other way. 71 00:03:18,590 --> 00:03:21,327 So it feels different, sort of feels fundamentally different. 72 00:03:21,327 --> 00:03:22,910 And again, if you let go of the motor, 73 00:03:22,910 --> 00:03:25,202 you could back drive the motor, but with a spring, kind 74 00:03:25,202 --> 00:03:26,150 of in there. 75 00:03:26,150 --> 00:03:28,173 And so it's everybody-- 76 00:03:28,173 --> 00:03:29,090 can never be imagined. 77 00:03:29,090 --> 00:03:29,590 OK. 78 00:03:29,590 --> 00:03:34,610 So now the three main points, the three main reasons why 79 00:03:34,610 --> 00:03:40,020 this is good are one, because the spring takes up 80 00:03:40,020 --> 00:03:45,410 shock, meaning that if you take the position-- remember how 81 00:03:45,410 --> 00:03:47,780 I said if you take the position controlled system 82 00:03:47,780 --> 00:03:50,783 and if the gear ratio was high enough and you move it, 83 00:03:50,783 --> 00:03:52,450 you try to move it, nothing will happen. 84 00:03:52,450 --> 00:03:54,540 It feels very, very stuck. 85 00:03:54,540 --> 00:03:57,740 Well, if you shock the end of a robot arm, 86 00:03:57,740 --> 00:03:59,930 if you hit it against the wall or if you're 87 00:03:59,930 --> 00:04:02,330 walking, if your foot lands on the ground, 88 00:04:02,330 --> 00:04:05,720 if that gear ratio is extremely high, 89 00:04:05,720 --> 00:04:11,808 or just if you have gears in series with the motor, OK, 90 00:04:11,808 --> 00:04:13,350 every time you hit the ground, you're 91 00:04:13,350 --> 00:04:15,683 going to be putting these large loads on the gear train. 92 00:04:15,683 --> 00:04:19,070 Sort of a very instantaneous spike. 93 00:04:19,070 --> 00:04:22,230 And over time, that will break your transmission. 94 00:04:22,230 --> 00:04:22,730 OK. 95 00:04:22,730 --> 00:04:24,020 And it may well break it right away 96 00:04:24,020 --> 00:04:25,603 or it may break it after a few months. 97 00:04:25,603 --> 00:04:28,160 But the point is that that's a very damaging thing 98 00:04:28,160 --> 00:04:30,630 to do to a mechanical system. 99 00:04:30,630 --> 00:04:32,928 So what the spring does is it acts 100 00:04:32,928 --> 00:04:34,220 like a shock absorber in a car. 101 00:04:34,220 --> 00:04:39,440 When you hit the ground, that initial huge spike 102 00:04:39,440 --> 00:04:42,470 is taken up by the spring, just like a capacitor takes up 103 00:04:42,470 --> 00:04:44,750 a voltage spike. 104 00:04:44,750 --> 00:04:49,490 So from a purely engineering perspective, 105 00:04:49,490 --> 00:04:54,590 you get an instant benefit in terms of mechanical robustness. 106 00:04:54,590 --> 00:04:55,352 OK. 107 00:04:55,352 --> 00:04:56,310 That's the first thing. 108 00:04:56,310 --> 00:04:58,330 The second thing is-- 109 00:04:58,330 --> 00:05:00,830 let me see if I remember this-- 110 00:05:00,830 --> 00:05:04,190 that the spring gives you a way to invert 111 00:05:04,190 --> 00:05:05,870 the dynamics of the robot. 112 00:05:05,870 --> 00:05:11,510 And so this is a little bit of subtlety here, not much, 113 00:05:11,510 --> 00:05:17,480 but the basic idea is if you have a position controlled 114 00:05:17,480 --> 00:05:20,510 system, if you move the arm to a certain angle, 115 00:05:20,510 --> 00:05:24,370 you typically have a feedback loop, a PD loop. 116 00:05:24,370 --> 00:05:25,160 OK. 117 00:05:25,160 --> 00:05:28,970 So you have a proportional gain and a derivative gain. 118 00:05:28,970 --> 00:05:31,400 Now, if you move that to a certain position 119 00:05:31,400 --> 00:05:33,930 and it's staying at that position, and you grab it, 120 00:05:33,930 --> 00:05:37,010 this is in the case of a position-- 121 00:05:37,010 --> 00:05:39,560 this is in the case of a position controlled robot. 122 00:05:39,560 --> 00:05:42,175 If you grab that arm and move it, [INAUDIBLE] move it 123 00:05:42,175 --> 00:05:43,550 a little bit because you're going 124 00:05:43,550 --> 00:05:47,810 to be introducing an error into that feedback loop, right? 125 00:05:47,810 --> 00:05:49,130 OK. 126 00:05:49,130 --> 00:05:52,700 So in order to reduce the amount of that error, 127 00:05:52,700 --> 00:05:56,030 you have to turn up the gain on that controller, right? 128 00:05:56,030 --> 00:05:58,310 And naturally, if you turn that gain up high enough, 129 00:05:58,310 --> 00:05:59,990 it'll go unstable. 130 00:05:59,990 --> 00:06:00,980 OK. 131 00:06:00,980 --> 00:06:03,380 So your goal in life as an engineer 132 00:06:03,380 --> 00:06:05,270 is to keep that gain as low as possible 133 00:06:05,270 --> 00:06:07,440 because you want the robot to be stable, 134 00:06:07,440 --> 00:06:08,970 but then make it as high as possible 135 00:06:08,970 --> 00:06:11,180 so that the robot does exactly the right thing. 136 00:06:11,180 --> 00:06:12,763 So there's always this tension, you're 137 00:06:12,763 --> 00:06:16,473 fighting between instability and the performance of the system. 138 00:06:16,473 --> 00:06:18,140 The spring gives you a really clever way 139 00:06:18,140 --> 00:06:20,310 to tackle that problem. 140 00:06:20,310 --> 00:06:22,760 If you look at position controlled robots that walk, 141 00:06:22,760 --> 00:06:25,400 OK, and I'm really dealing specifically 142 00:06:25,400 --> 00:06:27,290 with the domain of walking robots. 143 00:06:27,290 --> 00:06:31,028 One of the problems you have is that the robot has 144 00:06:31,028 --> 00:06:32,570 a fair amount of mass to it, you have 145 00:06:32,570 --> 00:06:34,850 to have all the motors, the batteries, the computers, 146 00:06:34,850 --> 00:06:35,690 you wind up with-- 147 00:06:35,690 --> 00:06:38,780 a tree weighs 10 pounds so it's holding up-- 148 00:06:38,780 --> 00:06:41,280 the body itself weighs five or six pounds, 149 00:06:41,280 --> 00:06:43,190 it has to hold up that weight. 150 00:06:43,190 --> 00:06:45,190 Now, if it was a position control robot-- 151 00:06:45,190 --> 00:06:48,140 and there are several position control robots out there-- 152 00:06:48,140 --> 00:06:51,460 quadrupeds, [INAUDIBLE],, the Honda robot. 153 00:06:51,460 --> 00:06:55,740 The position controllers need to have relatively high gains 154 00:06:55,740 --> 00:06:56,830 in order to function well. 155 00:06:56,830 --> 00:06:57,330 Right? 156 00:06:57,330 --> 00:06:59,550 Because there's all this mass that the joint's 157 00:06:59,550 --> 00:07:00,300 trying to hold up. 158 00:07:00,300 --> 00:07:02,580 So in order to keep the mass in the right place 159 00:07:02,580 --> 00:07:04,800 so that you can keep the dynamics right, 160 00:07:04,800 --> 00:07:07,560 all the mass and torque's in the right place, that [INAUDIBLE] 161 00:07:07,560 --> 00:07:08,977 these very high gains. 162 00:07:08,977 --> 00:07:10,560 And the only way to keep such a system 163 00:07:10,560 --> 00:07:16,062 stable in a purely position controlled domain 164 00:07:16,062 --> 00:07:20,080 is to have an extremely high performance actuator. 165 00:07:20,080 --> 00:07:22,290 So you need very, very good motors 166 00:07:22,290 --> 00:07:25,290 with very high gear train that's very well made. 167 00:07:25,290 --> 00:07:26,930 There's no backlash. 168 00:07:26,930 --> 00:07:29,800 Your components tend to wind up being somewhat expensive. 169 00:07:29,800 --> 00:07:32,940 And not only that, but if over time they wear 170 00:07:32,940 --> 00:07:35,190 and you get some play in the system or the gears start 171 00:07:35,190 --> 00:07:37,350 rattling, that can introduce some serious problems 172 00:07:37,350 --> 00:07:42,480 because all those things will naturally introduce instability 173 00:07:42,480 --> 00:07:46,950 into the position control loop in which you just 174 00:07:46,950 --> 00:07:48,023 set very high gains. 175 00:07:48,023 --> 00:07:48,870 OK. 176 00:07:48,870 --> 00:07:52,020 Now what the spring lets you do is 177 00:07:52,020 --> 00:07:54,360 invert the dynamics of the robot, which what I said 178 00:07:54,360 --> 00:07:55,770 I nee-- 179 00:07:55,770 --> 00:07:57,630 you're taking into account the mass 180 00:07:57,630 --> 00:08:01,050 of the robot in a separate controller 181 00:08:01,050 --> 00:08:07,500 from the one that actually performs the walking motion. 182 00:08:07,500 --> 00:08:11,790 So in a position control robot, you have one batch of software 183 00:08:11,790 --> 00:08:14,220 that says, make the robot stand like this 184 00:08:14,220 --> 00:08:18,473 or move the leg like this to walk. 185 00:08:18,473 --> 00:08:19,890 In the force control [INAUDIBLE],, 186 00:08:19,890 --> 00:08:24,220 which is Troody, or any of the robots in the LegLab, 187 00:08:24,220 --> 00:08:28,020 you have two parallel software modules. 188 00:08:28,020 --> 00:08:32,850 One software module says, just apply forces 189 00:08:32,850 --> 00:08:37,440 to counteract the masses of the robot. 190 00:08:37,440 --> 00:08:38,940 So in other words, make the robot 191 00:08:38,940 --> 00:08:43,169 feel as though it is floating in space, that there's no gravity. 192 00:08:43,169 --> 00:08:46,163 So that's sort of the inverting the dynamics part. 193 00:08:46,163 --> 00:08:47,580 And running in parallel with that, 194 00:08:47,580 --> 00:08:50,850 you have another control loop, which 195 00:08:50,850 --> 00:08:53,690 says, move the leg this far, move it forward that far, 196 00:08:53,690 --> 00:08:55,890 that kind of thing to do that actual walking. 197 00:08:55,890 --> 00:09:00,630 And the cool thing about that is that the major force that's 198 00:09:00,630 --> 00:09:02,250 applied to the robot-- 199 00:09:02,250 --> 00:09:07,680 if you look at the amount of a force being commanded 200 00:09:07,680 --> 00:09:10,140 to the joint, the software routine 201 00:09:10,140 --> 00:09:16,330 that takes care of the gravity of the masses has a large turn. 202 00:09:16,330 --> 00:09:18,513 Its turn's relatively large, and the one 203 00:09:18,513 --> 00:09:20,430 that's controlling the positions of the joints 204 00:09:20,430 --> 00:09:24,990 and making the robot walk has a relatively small addition 205 00:09:24,990 --> 00:09:25,490 to that. 206 00:09:25,490 --> 00:09:26,310 OK. 207 00:09:26,310 --> 00:09:28,380 And that's very important because the gain 208 00:09:28,380 --> 00:09:33,420 on the one that inverts the mass is a very low gain. 209 00:09:33,420 --> 00:09:36,990 You can make that gain extremely low because your joint angles 210 00:09:36,990 --> 00:09:39,060 can be off by large amounts and the system 211 00:09:39,060 --> 00:09:40,520 will still perform very well. 212 00:09:40,520 --> 00:09:43,154 213 00:09:43,154 --> 00:09:46,170 And the gain on the other one can be very low 214 00:09:46,170 --> 00:09:49,350 because you've already taken care of most of the forces 215 00:09:49,350 --> 00:09:54,160 with the conversion of the inverse dynamics. 216 00:09:54,160 --> 00:09:56,370 So what you wind up with is a system 217 00:09:56,370 --> 00:09:58,830 that can perform relatively well and do 218 00:09:58,830 --> 00:10:01,800 the right thing but that winds up being stable 219 00:10:01,800 --> 00:10:03,525 with the gains in the right place. 220 00:10:03,525 --> 00:10:04,650 So that's the second thing. 221 00:10:04,650 --> 00:10:09,710 And the third thing is that the-- 222 00:10:09,710 --> 00:10:13,339 [INAUDIBLE] 223 00:10:13,339 --> 00:10:19,910 The third thing is that when the robot is walking, what you'd 224 00:10:19,910 --> 00:10:26,280 like to do is typically have the motion be very quick and fluid. 225 00:10:26,280 --> 00:10:29,840 So if I'm walking kind of like a robot-- 226 00:10:29,840 --> 00:10:31,880 kind of go slowly like this, I'll 227 00:10:31,880 --> 00:10:35,090 slowly move my foot up and move it forward, slowly put it down. 228 00:10:35,090 --> 00:10:36,560 And I kind of have to move slowly 229 00:10:36,560 --> 00:10:40,610 because in a position controlled robot, 230 00:10:40,610 --> 00:10:43,032 if you move very quickly, you're liable to just smack 231 00:10:43,032 --> 00:10:45,860 the foot down on the ground and introduce this huge disturbance 232 00:10:45,860 --> 00:10:49,010 into the robot and it might keel over or something, very simple. 233 00:10:49,010 --> 00:10:52,940 But with a force control robot, when the foot's in the air, 234 00:10:52,940 --> 00:10:56,890 you can command a force, a very small force 235 00:10:56,890 --> 00:10:58,670 to push the foot down. 236 00:10:58,670 --> 00:11:00,530 And since it's in the air, it'll go down 237 00:11:00,530 --> 00:11:03,800 very quickly because there's nothing pushing against it. 238 00:11:03,800 --> 00:11:05,210 OK. 239 00:11:05,210 --> 00:11:07,460 So a very small force command can cause 240 00:11:07,460 --> 00:11:10,340 a rapid motion of the leg. 241 00:11:10,340 --> 00:11:12,150 But once the foot hits the ground, 242 00:11:12,150 --> 00:11:13,730 it hits it softly because it's being 243 00:11:13,730 --> 00:11:16,690 commanded with a low force. 244 00:11:16,690 --> 00:11:22,010 And so the basic idea is that in a position control system, 245 00:11:22,010 --> 00:11:26,480 it's sort of an oxymoron to say, hit something quickly 246 00:11:26,480 --> 00:11:27,680 but softly. 247 00:11:27,680 --> 00:11:30,265 Like, this is not a concept that makes any sense. 248 00:11:30,265 --> 00:11:32,390 But with a force controlled robot, you can do that. 249 00:11:32,390 --> 00:11:35,000 You can say, hit something quickly but then when you hit 250 00:11:35,000 --> 00:11:36,950 it, give it a soft touch. 251 00:11:36,950 --> 00:11:39,080 And that allows you-- 252 00:11:39,080 --> 00:11:41,690 You said depending on a low mass-- 253 00:11:41,690 --> 00:11:45,290 Yes, if the leg was extremely heavy-- 254 00:11:45,290 --> 00:11:46,460 it's not a perfect thing. 255 00:11:46,460 --> 00:11:47,030 OK. 256 00:11:47,030 --> 00:11:48,740 But by keeping the legs lightweight 257 00:11:48,740 --> 00:11:51,198 and keeping the bandwidth up, you can kind of achieve that. 258 00:11:51,198 --> 00:11:51,770 Yep. 259 00:11:51,770 --> 00:11:57,770 And so that last point is a critical one 260 00:11:57,770 --> 00:11:59,420 because it allows the robot to have 261 00:11:59,420 --> 00:12:03,950 a fluid and rapid smooth motion to it, which is necessary 262 00:12:03,950 --> 00:12:09,650 in order to kind of have biological realness to it. 263 00:12:09,650 --> 00:12:12,200 So those are the three main reasons 264 00:12:12,200 --> 00:12:15,680 kind of why I like how the springs and series would 265 00:12:15,680 --> 00:12:17,420 work, so. 266 00:12:17,420 --> 00:12:19,085 So let me say one thing that maybe-- 267 00:12:19,085 --> 00:12:19,790 to tie it in. 268 00:12:19,790 --> 00:12:22,820 269 00:12:22,820 --> 00:12:25,760 In robotic technology, things were always 270 00:12:25,760 --> 00:12:27,750 very precise movements. 271 00:12:27,750 --> 00:12:28,250 Right. 272 00:12:28,250 --> 00:12:31,190 So position control made a lot of sense in that case. 273 00:12:31,190 --> 00:12:34,640 Robotic arms, you want high precision. 274 00:12:34,640 --> 00:12:37,740 And walking, it seems like high precision is not the way to go. 275 00:12:37,740 --> 00:12:40,940 So what Pete's saying is instead of having very stiff, very 276 00:12:40,940 --> 00:12:43,428 accurate motors, we're putting springs in, right, 277 00:12:43,428 --> 00:12:45,470 and it changes the way we have to think about it. 278 00:12:45,470 --> 00:12:47,810 It's more like a muscle activation or some-- 279 00:12:47,810 --> 00:12:50,600 loosely, it's more like a muscle activation 280 00:12:50,600 --> 00:12:54,200 than a particular servo command. 281 00:12:54,200 --> 00:12:55,940 And it allows you to kind of-- 282 00:12:55,940 --> 00:12:59,270 when I'm pushing against things, it's more of a force command 283 00:12:59,270 --> 00:13:01,310 than just say, go to this position and stop. 284 00:13:01,310 --> 00:13:02,120 Right. 285 00:13:02,120 --> 00:13:05,060 So it's a different way to think about things. 286 00:13:05,060 --> 00:13:05,560 Yeah. 287 00:13:05,560 --> 00:13:06,060 Yeah. 288 00:13:06,060 --> 00:13:09,452 I mean, they're kind of duals of each other, you could say. 289 00:13:09,452 --> 00:13:10,910 Because in position control, you're 290 00:13:10,910 --> 00:13:14,083 more concerned with getting the angle just right. 291 00:13:14,083 --> 00:13:16,250 But you don't really know or care what the force is. 292 00:13:16,250 --> 00:13:18,170 In force control, you don't really 293 00:13:18,170 --> 00:13:20,503 need to know exactly what the angle is, you don't really 294 00:13:20,503 --> 00:13:22,010 care exactly what it is. 295 00:13:22,010 --> 00:13:24,380 But the force is important. 296 00:13:24,380 --> 00:13:28,068 You can say, hit it hard, hit it soft, that kind of thing. 297 00:13:28,068 --> 00:13:29,360 So there's that side to Troody. 298 00:13:29,360 --> 00:13:30,777 Another side of Troody, of course, 299 00:13:30,777 --> 00:13:33,110 is the walking on a limb itself. 300 00:13:33,110 --> 00:13:36,230 And for that, it uses a controller, 301 00:13:36,230 --> 00:13:38,570 which I call the PQ controller. 302 00:13:38,570 --> 00:13:41,600 So essentially, what the robot does 303 00:13:41,600 --> 00:13:47,540 is it has inside of its body a dual axis accelerometer 304 00:13:47,540 --> 00:13:49,580 and a dual axis rate gyro. 305 00:13:49,580 --> 00:13:53,180 And it takes those four pieces of information 306 00:13:53,180 --> 00:13:58,490 and does some processing on and it generates a vertical-- 307 00:13:58,490 --> 00:13:59,960 it's software vertical gyro, so it 308 00:13:59,960 --> 00:14:03,620 knows which way gravity's pointing, which way up is. 309 00:14:03,620 --> 00:14:05,375 It also knows its linear velocity, 310 00:14:05,375 --> 00:14:11,170 it's X and Y velocity, which of course, as Einstein observed, 311 00:14:11,170 --> 00:14:12,033 is relative. 312 00:14:12,033 --> 00:14:13,450 So it only gets to linear velocity 313 00:14:13,450 --> 00:14:16,195 for sort of a short time period, but it's 314 00:14:16,195 --> 00:14:18,070 short enough for the robot to make use of it. 315 00:14:18,070 --> 00:14:18,862 It's like a person. 316 00:14:18,862 --> 00:14:21,250 Like, if you get on a train, right, and close your eyes, 317 00:14:21,250 --> 00:14:23,180 you can feel the train speeding up, 318 00:14:23,180 --> 00:14:24,868 but once it reaches steady velocity, 319 00:14:24,868 --> 00:14:27,410 you no longer sense that you're moving at a certain velocity. 320 00:14:27,410 --> 00:14:28,820 So the robot has the same exact thing. 321 00:14:28,820 --> 00:14:30,320 In other words, Troody can get diz-- 322 00:14:30,320 --> 00:14:31,690 It was Galileo, not Einstein. 323 00:14:31,690 --> 00:14:32,303 Pardon? 324 00:14:32,303 --> 00:14:33,470 It was Galileo he's quoting. 325 00:14:33,470 --> 00:14:36,095 It's not Einstein. 326 00:14:36,095 --> 00:14:36,970 I'm sorry, I'm sorry. 327 00:14:36,970 --> 00:14:39,070 [LAUGHTER] 328 00:14:39,070 --> 00:14:42,720 [INTERPOSING VOICES] 329 00:14:42,720 --> 00:14:43,220 So-- 330 00:14:43,220 --> 00:14:44,900 Translate this. 331 00:14:44,900 --> 00:14:46,735 He said it's Galileo, not Einstein. 332 00:14:46,735 --> 00:14:47,860 Oh, Galileo would say that. 333 00:14:47,860 --> 00:14:48,402 He's Italian. 334 00:14:48,402 --> 00:14:50,465 Oh, my apologies. 335 00:14:50,465 --> 00:14:58,310 336 00:14:58,310 --> 00:15:05,490 So anyway, the-- 337 00:15:05,490 --> 00:15:05,990 Sorry. 338 00:15:05,990 --> 00:15:06,800 So it's OK. 339 00:15:06,800 --> 00:15:10,880 So the robot has X and Y velocity. 340 00:15:10,880 --> 00:15:14,360 And X being front, back, and Y being side to side. 341 00:15:14,360 --> 00:15:15,890 So it has XY velocity. 342 00:15:15,890 --> 00:15:20,900 And then it has XY rate of roll, XY acceleration, and then 343 00:15:20,900 --> 00:15:22,825 absolute roll and pitch. 344 00:15:22,825 --> 00:15:24,200 So it has a lot of different bits 345 00:15:24,200 --> 00:15:26,980 of kind of vestibular information inside of it. 346 00:15:26,980 --> 00:15:30,080 347 00:15:30,080 --> 00:15:31,848 And the velocity term, actually, turns out 348 00:15:31,848 --> 00:15:33,390 to be one of the most important ones. 349 00:15:33,390 --> 00:15:37,250 The X and Y velocity is-- 350 00:15:37,250 --> 00:15:40,280 once I got that working, that was 351 00:15:40,280 --> 00:15:43,280 kind of the last major hurdle to getting the robot 352 00:15:43,280 --> 00:15:47,890 to walk stably because by having those velocities, 353 00:15:47,890 --> 00:15:51,550 you can use them as a damper, as a damping turn, 354 00:15:51,550 --> 00:15:55,780 to control what the mass of the robot is doing. 355 00:15:55,780 --> 00:15:58,510 It turns out that dampers and hardware 356 00:15:58,510 --> 00:16:00,280 are much more difficult than they 357 00:16:00,280 --> 00:16:03,320 are in the world of simulation or theory. 358 00:16:03,320 --> 00:16:06,880 The problem is because the way you generate a velocity 359 00:16:06,880 --> 00:16:09,760 turn, typically is you make a success of subtraction 360 00:16:09,760 --> 00:16:11,870 of the value of the sensor. 361 00:16:11,870 --> 00:16:14,050 And if you ever have any noise or spikes on that, 362 00:16:14,050 --> 00:16:15,970 you're going to get all kinds of amazing noise 363 00:16:15,970 --> 00:16:20,370 and your velocity gets squared or cubed or something. 364 00:16:20,370 --> 00:16:24,580 So when you take that differentiation, 365 00:16:24,580 --> 00:16:26,530 you amplify your noise. 366 00:16:26,530 --> 00:16:28,510 So there's always a constant battle 367 00:16:28,510 --> 00:16:31,540 among people who do robotics to get 368 00:16:31,540 --> 00:16:36,490 smooth reliable damping turns so that their joints give 369 00:16:36,490 --> 00:16:40,125 this really weird humming and vibration. 370 00:16:40,125 --> 00:16:41,500 So I had that problem with Troody 371 00:16:41,500 --> 00:16:45,850 when I was using purely mechanical joint angles 372 00:16:45,850 --> 00:16:47,270 and things like that for damping. 373 00:16:47,270 --> 00:16:49,210 But once I got the damping from the gyroscope, 374 00:16:49,210 --> 00:16:51,280 the gyroscope is a separate system 375 00:16:51,280 --> 00:16:54,130 from the mechanical system of the robot. 376 00:16:54,130 --> 00:16:57,400 It's a solid state device so it's relatively smooth. 377 00:16:57,400 --> 00:16:58,900 And the other nice thing is that I'm 378 00:16:58,900 --> 00:17:00,130 integrating to get velocity. 379 00:17:00,130 --> 00:17:02,088 I have an accelerometer and I'm integrating it. 380 00:17:02,088 --> 00:17:04,599 So therefore, I'm actually reducing the noise. 381 00:17:04,599 --> 00:17:07,930 And so I have this incredibly smooth velocity signal now. 382 00:17:07,930 --> 00:17:11,020 And that means I can crank up a lot of gains 383 00:17:11,020 --> 00:17:15,069 on other parts of the robot and use that as my damping turns 384 00:17:15,069 --> 00:17:16,760 to stabilize the robot. 385 00:17:16,760 --> 00:17:19,750 So that's a very important part of it. 386 00:17:19,750 --> 00:17:22,720 Troody has all of its masses in joint angles. 387 00:17:22,720 --> 00:17:24,040 So every sensor has-- 388 00:17:24,040 --> 00:17:25,720 every joint, rather, there's 16 joints 389 00:17:25,720 --> 00:17:28,970 and every joint has a force sensor and a position sensor. 390 00:17:28,970 --> 00:17:33,685 So the robot has a kinematic model of itself inside. 391 00:17:33,685 --> 00:17:36,274 392 00:17:36,274 --> 00:17:38,290 It has all this mass as-- 393 00:17:38,290 --> 00:17:41,800 it knows the mass of each link and kind 394 00:17:41,800 --> 00:17:45,670 of roughly where the center of mass is of each one. 395 00:17:45,670 --> 00:17:49,120 So it computes from that various things, 396 00:17:49,120 --> 00:17:52,840 like center of mass, center of pressure. 397 00:17:52,840 --> 00:17:54,560 Could you just point out all the joints? 398 00:17:54,560 --> 00:17:55,060 Yep. 399 00:17:55,060 --> 00:17:57,690 Sure, I can do that if you don't mind. 400 00:17:57,690 --> 00:18:00,280 401 00:18:00,280 --> 00:18:03,280 So the joints are a tail, which goes up and down 402 00:18:03,280 --> 00:18:05,290 and side to side. 403 00:18:05,290 --> 00:18:07,510 And just two of these springs here that 404 00:18:07,510 --> 00:18:09,880 serve as the force sensor. 405 00:18:09,880 --> 00:18:14,440 The legs can go in and out and they can twist a little bit-- 406 00:18:14,440 --> 00:18:15,672 Like that. 407 00:18:15,672 --> 00:18:18,480 Like that. 408 00:18:18,480 --> 00:18:25,650 And the main motors, these are little Futaba airplane 409 00:18:25,650 --> 00:18:28,717 servos that I just kind of cut away the electronics 410 00:18:28,717 --> 00:18:30,300 and just using them as gearhead motors 411 00:18:30,300 --> 00:18:31,992 because they're very nice, the gearheads 412 00:18:31,992 --> 00:18:34,200 are very smooth and everything and they're cheap, so. 413 00:18:34,200 --> 00:18:35,283 So you took out the servo? 414 00:18:35,283 --> 00:18:36,283 So I took out the servo. 415 00:18:36,283 --> 00:18:36,870 All right. 416 00:18:36,870 --> 00:18:37,050 Thanks. 417 00:18:37,050 --> 00:18:38,383 Because you have your own servo? 418 00:18:38,383 --> 00:18:39,970 Own servo [INAUDIBLE]. 419 00:18:39,970 --> 00:18:43,050 And so the main power, there's three big motors here. 420 00:18:43,050 --> 00:18:47,010 So this is pitch for the hip, this is the knee, 421 00:18:47,010 --> 00:18:48,817 this is ankle. 422 00:18:48,817 --> 00:18:51,150 And so there's a redundant degree of freedom in the leg, 423 00:18:51,150 --> 00:18:52,630 in this case. 424 00:18:52,630 --> 00:18:58,218 And the foot is two feet-- one, you have pitch and roll. 425 00:18:58,218 --> 00:18:58,760 [INAUDIBLE]-- 426 00:18:58,760 --> 00:19:00,750 And there's sensors, force sensors, springs. 427 00:19:00,750 --> 00:19:01,990 Every joint has a spring. 428 00:19:01,990 --> 00:19:05,190 So this cable drive for the main leg joints with compression 429 00:19:05,190 --> 00:19:07,800 springs and the other joints use sort 430 00:19:07,800 --> 00:19:11,490 of beam springs with a little potentiometer 431 00:19:11,490 --> 00:19:13,630 hooked up next to the spring [INAUDIBLE].. 432 00:19:13,630 --> 00:19:15,270 So is the [INAUDIBLE] actuated? 433 00:19:15,270 --> 00:19:16,650 Yes. 434 00:19:16,650 --> 00:19:17,850 There's two motors-- 435 00:19:17,850 --> 00:19:21,000 What kind of motor are you using there? 436 00:19:21,000 --> 00:19:22,120 These, for the feet? 437 00:19:22,120 --> 00:19:22,620 Yeah. 438 00:19:22,620 --> 00:19:22,860 Yeah. 439 00:19:22,860 --> 00:19:23,943 They're the same, Futabas. 440 00:19:23,943 --> 00:19:24,776 They're all Futabas? 441 00:19:24,776 --> 00:19:25,985 Do you want to know the kind? 442 00:19:25,985 --> 00:19:26,718 It's like, S-- 443 00:19:26,718 --> 00:19:30,210 No, just curious. 444 00:19:30,210 --> 00:19:32,790 And then they're, like, cordless motors. 445 00:19:32,790 --> 00:19:34,170 There-- 446 00:19:34,170 --> 00:19:34,850 Hobbyist motors. 447 00:19:34,850 --> 00:19:35,350 Yeah. 448 00:19:35,350 --> 00:19:37,740 They're not all like the RC cars, remote control cars. 449 00:19:37,740 --> 00:19:38,150 They are, actually. 450 00:19:38,150 --> 00:19:39,067 Remote control planes. 451 00:19:39,067 --> 00:19:39,900 They have those too. 452 00:19:39,900 --> 00:19:40,567 I know all the-- 453 00:19:40,567 --> 00:19:41,130 The big ones. 454 00:19:41,130 --> 00:19:41,760 The big ones. 455 00:19:41,760 --> 00:19:43,710 The big ones are Pittman-- 456 00:19:43,710 --> 00:19:44,520 standard Pittman. 457 00:19:44,520 --> 00:19:46,690 They're all PC brush motors. 458 00:19:46,690 --> 00:19:47,820 Pretty ordinary. 459 00:19:47,820 --> 00:19:50,400 But [INAUDIBLE] of the robotics use, they know cheap, 460 00:19:50,400 --> 00:19:51,900 off-the-shelf components. 461 00:19:51,900 --> 00:19:56,220 And so like these Pittman's are $40 bucks a pop. 462 00:19:56,220 --> 00:19:58,163 So how much did the whole thing cost to make? 463 00:19:58,163 --> 00:20:00,330 If I had to make a new one and I can make a new one, 464 00:20:00,330 --> 00:20:02,387 I can do this for probably $4,000. 465 00:20:02,387 --> 00:20:03,440 Wow. 466 00:20:03,440 --> 00:20:03,940 So. 467 00:20:03,940 --> 00:20:06,090 And what's the major-- so the motors 468 00:20:06,090 --> 00:20:08,610 are about what, a hundred, two hundred each, or? 469 00:20:08,610 --> 00:20:09,210 Yeah. 470 00:20:09,210 --> 00:20:10,710 Call it like, a hundred or two each. 471 00:20:10,710 --> 00:20:11,610 Yeah. 472 00:20:11,610 --> 00:20:14,745 And I mean the computer's going to be about $1,000 bucks. 473 00:20:14,745 --> 00:20:18,450 Data acquisition, $1,000. 474 00:20:18,450 --> 00:20:20,210 But that's still very cheap for a robot 475 00:20:20,210 --> 00:20:21,350 that does what this does. 476 00:20:21,350 --> 00:20:23,426 The Honda robot is-- 477 00:20:23,426 --> 00:20:24,140 $350 grand. 478 00:20:24,140 --> 00:20:25,223 Yeah, something like that. 479 00:20:25,223 --> 00:20:26,370 Yeah. 480 00:20:26,370 --> 00:20:27,170 And-- 481 00:20:27,170 --> 00:20:29,050 So what about the computer? 482 00:20:29,050 --> 00:20:30,110 And the spring. 483 00:20:30,110 --> 00:20:32,210 The computer is not very interesting. 484 00:20:32,210 --> 00:20:34,610 It's a TIC32. 485 00:20:34,610 --> 00:20:37,160 It's an old computer. 486 00:20:37,160 --> 00:20:39,980 For this day, it's very slow and awful. 487 00:20:39,980 --> 00:20:41,170 But it's [INAUDIBLE]. 488 00:20:41,170 --> 00:20:43,760 So is it all that on board? 489 00:20:43,760 --> 00:20:45,180 Yeah, everything is on board. 490 00:20:45,180 --> 00:20:46,940 So we don't have any power? 491 00:20:46,940 --> 00:20:48,698 So yeah, it has batteries. 492 00:20:48,698 --> 00:20:50,240 And I've run the robot off batteries. 493 00:20:50,240 --> 00:20:53,495 The batteries right now are damaged. 494 00:20:53,495 --> 00:20:54,870 They won't work, for some reason. 495 00:20:54,870 --> 00:20:59,000 But typically, when I was working on Troody, 496 00:20:59,000 --> 00:21:03,350 the way I would use it is I would have a serial cable, 497 00:21:03,350 --> 00:21:05,970 there's an for a serial cable that would go to a PC 498 00:21:05,970 --> 00:21:08,690 and I'd write what the [INAUDIBLE],, compile it, 499 00:21:08,690 --> 00:21:12,350 download it to the robot, and it's a flash [INAUDIBLE].. 500 00:21:12,350 --> 00:21:13,700 And then you can-- 501 00:21:13,700 --> 00:21:16,956 So when's your initial [INAUDIBLE]?? 502 00:21:16,956 --> 00:21:17,810 An IPO? 503 00:21:17,810 --> 00:21:19,010 Well, I-- 504 00:21:19,010 --> 00:21:22,335 Sure enough [INAUDIBLE]. 505 00:21:22,335 --> 00:21:24,890 [INAUDIBLE],, on that topic, I mean, 506 00:21:24,890 --> 00:21:26,680 right now, Troody's retired. 507 00:21:26,680 --> 00:21:29,828 And I'm going to [INAUDIBLE] until it just gives up 508 00:21:29,828 --> 00:21:30,620 the ghost, I guess. 509 00:21:30,620 --> 00:21:32,620 I mean, I might try to maintain it a little bit. 510 00:21:32,620 --> 00:21:37,730 But I goofed on building a quadruped and a biped, 511 00:21:37,730 --> 00:21:40,820 which are going to be covered in a covering 512 00:21:40,820 --> 00:21:42,950 to make them look like real dinosaurs. 513 00:21:42,950 --> 00:21:46,493 And the goal is to start a business that sells 514 00:21:46,493 --> 00:21:47,660 walking dinosaur robots, so. 515 00:21:47,660 --> 00:21:49,550 All different kinds of robots. 516 00:21:49,550 --> 00:21:51,140 Not going to be 40 feet tall? 517 00:21:51,140 --> 00:21:53,590 Well, we'd like to build big ones and small ones. 518 00:21:53,590 --> 00:21:54,090 I see. 519 00:21:54,090 --> 00:21:54,950 Yeah. 520 00:21:54,950 --> 00:22:00,500 So we'll see what happens, but I'm 521 00:22:00,500 --> 00:22:02,750 right in the beginning stages of that, so. 522 00:22:02,750 --> 00:22:04,910 But this one currently lives in a museum. 523 00:22:04,910 --> 00:22:08,430 This one lives in the Museum of Science in an acrylic case. 524 00:22:08,430 --> 00:22:11,720 I give a demo at the museum about once every month. 525 00:22:11,720 --> 00:22:14,990 And they have had a robotics exhibit there for a while 526 00:22:14,990 --> 00:22:17,600 and that exhibit is shutting down. 527 00:22:17,600 --> 00:22:20,790 But they've asked me to give them Troody, 528 00:22:20,790 --> 00:22:22,760 so Troody might become a permanent part 529 00:22:22,760 --> 00:22:24,552 of the collection of the Museum of Science, 530 00:22:24,552 --> 00:22:25,460 which would be cool. 531 00:22:25,460 --> 00:22:28,490 I used to go there when I was a kid. 532 00:22:28,490 --> 00:22:31,110 So I can try and give you a demo. 533 00:22:31,110 --> 00:22:31,610 Do it. 534 00:22:31,610 --> 00:22:33,568 I can't make any promises. 535 00:22:33,568 --> 00:22:36,110 The robot worked yesterday but it didn't work the day before, 536 00:22:36,110 --> 00:22:36,610 so. 537 00:22:36,610 --> 00:22:38,980 538 00:22:38,980 --> 00:22:44,262 So you just got to hope, and-- 539 00:22:44,262 --> 00:22:46,720 If it's going to take a couple minutes to warm up, I mean-- 540 00:22:46,720 --> 00:22:49,070 It's going to take a couple minutes to warm up, yeah. 541 00:22:49,070 --> 00:22:50,445 So maybe some videos or something 542 00:22:50,445 --> 00:22:51,748 to keep people [INAUDIBLE]. 543 00:22:51,748 --> 00:22:54,680 544 00:22:54,680 --> 00:22:56,550 So figure out [INAUDIBLE]. 545 00:22:56,550 --> 00:23:04,300 546 00:23:04,300 --> 00:23:06,370 So I just brought up a couple of videos 547 00:23:06,370 --> 00:23:10,150 that can help you put things in perspective. 548 00:23:10,150 --> 00:23:15,610 LegLab springy robots versus Honda-style mission control 549 00:23:15,610 --> 00:23:17,118 robots that'll help you understand 550 00:23:17,118 --> 00:23:18,410 what Pete's been talking about. 551 00:23:18,410 --> 00:23:25,760 552 00:23:25,760 --> 00:23:31,890 Can I ask one thing about the design, with the motor off, 553 00:23:31,890 --> 00:23:33,980 I mean, it's amazingly much closer 554 00:23:33,980 --> 00:23:36,500 to any biological system than a truly position 555 00:23:36,500 --> 00:23:38,450 control [INAUDIBLE]. 556 00:23:38,450 --> 00:23:43,820 But if you think of a biological leg or eye, 557 00:23:43,820 --> 00:23:47,690 can see that the more compliant [INAUDIBLE] actuating the mass 558 00:23:47,690 --> 00:23:53,420 it'll stay straight but have a relaxed program brought in, is 559 00:23:53,420 --> 00:23:54,110 even-- 560 00:23:54,110 --> 00:23:55,310 It's even more compliant. 561 00:23:55,310 --> 00:23:55,810 Yes. 562 00:23:55,810 --> 00:23:56,490 Right, right. 563 00:23:56,490 --> 00:23:58,390 And in a sense, we know all right, 564 00:23:58,390 --> 00:24:01,883 that there's a lot of national dynamics 565 00:24:01,883 --> 00:24:03,175 to get the support [INAUDIBLE]. 566 00:24:03,175 --> 00:24:04,630 Like, [INAUDIBLE]. 567 00:24:04,630 --> 00:24:06,730 So this doesn't look much like [INAUDIBLE].. 568 00:24:06,730 --> 00:24:07,420 Right. 569 00:24:07,420 --> 00:24:08,562 I mean, this is kind of [INAUDIBLE]---- 570 00:24:08,562 --> 00:24:10,330 Is there any specific [INAUDIBLE]---- 571 00:24:10,330 --> 00:24:13,750 This is a pathway between a truly biological system 572 00:24:13,750 --> 00:24:15,940 and a purely kind of [INAUDIBLE]---- 573 00:24:15,940 --> 00:24:18,160 Isn't there [INAUDIBLE] development 574 00:24:18,160 --> 00:24:21,100 in doing actually quite a lot of passing dynamics? 575 00:24:21,100 --> 00:24:22,520 Yes, absolutely. 576 00:24:22,520 --> 00:24:24,490 I mean, the springs in these robots 577 00:24:24,490 --> 00:24:28,450 can already function as [INAUDIBLE] 578 00:24:28,450 --> 00:24:31,102 so we can always take advantage of that. 579 00:24:31,102 --> 00:24:34,053 In order to do that really well, [INAUDIBLE] to the springs-- 580 00:24:34,053 --> 00:24:34,553 Right. 581 00:24:34,553 --> 00:24:35,053 [INAUDIBLE] 582 00:24:35,053 --> 00:24:37,245 And then the optimal thing, I mean, 583 00:24:37,245 --> 00:24:38,620 one of the main drawbacks of this 584 00:24:38,620 --> 00:24:41,710 is that this the spring's like a fixed spring constant, 585 00:24:41,710 --> 00:24:44,240 and of course in the muscles, we can change that. 586 00:24:44,240 --> 00:24:46,560 So if there was some way to vary that, 587 00:24:46,560 --> 00:24:49,190 that could potentially add a lot of [INAUDIBLE].. 588 00:24:49,190 --> 00:24:51,280 We'd have to add a whole new kind of [INAUDIBLE] 589 00:24:51,280 --> 00:24:52,400 to change that. 590 00:24:52,400 --> 00:24:54,770 One thing that I would love to do some day 591 00:24:54,770 --> 00:24:58,230 is find someone who's built like an artificial muscle. 592 00:24:58,230 --> 00:25:00,200 They had another case based on a-- 593 00:25:00,200 --> 00:25:00,700 Right. 594 00:25:00,700 --> 00:25:02,850 There's some [INAUDIBLE] trying to do that, yeah. 595 00:25:02,850 --> 00:25:04,600 If they can give me, like, [INAUDIBLE]---- 596 00:25:04,600 --> 00:25:05,425 Just the science. 597 00:25:05,425 --> 00:25:07,800 Just, like, plug it in and it works, that would be great. 598 00:25:07,800 --> 00:25:11,200 I mean, I'd love to do that because that would be almost 599 00:25:11,200 --> 00:25:12,625 identical to the biological. 600 00:25:12,625 --> 00:25:14,750 And I think we already have the control systems now 601 00:25:14,750 --> 00:25:17,824 to handle that, so. 602 00:25:17,824 --> 00:25:19,310 Another thing that this can do, you 603 00:25:19,310 --> 00:25:23,370 can actually tell the motor to observe zero [INAUDIBLE].. 604 00:25:23,370 --> 00:25:23,870 Right. 605 00:25:23,870 --> 00:25:26,040 So that's something you can [INAUDIBLE] for. 606 00:25:26,040 --> 00:25:27,120 So some of the-- 607 00:25:27,120 --> 00:25:27,850 Yeah, yeah. 608 00:25:27,850 --> 00:25:28,630 You can make it-- 609 00:25:28,630 --> 00:25:29,630 It can simulate. 610 00:25:29,630 --> 00:25:30,660 It can simulate, right. 611 00:25:30,660 --> 00:25:31,160 [INAUDIBLE] 612 00:25:31,160 --> 00:25:31,740 Yeah, yeah. 613 00:25:31,740 --> 00:25:34,020 And actually, Jerry Pratt wrote a thesis 614 00:25:34,020 --> 00:25:37,645 called, exploiting natural dynamics in bipedal walking, 615 00:25:37,645 --> 00:25:38,910 which [INAUDIBLE]. 616 00:25:38,910 --> 00:25:41,233 617 00:25:41,233 --> 00:25:42,900 I won't take much away from you, but you 618 00:25:42,900 --> 00:25:46,045 can see this guy swings his leg forward passively, actually. 619 00:25:46,045 --> 00:25:47,920 So this is another one of the LegLand robots. 620 00:25:47,920 --> 00:25:51,248 And as soon as the leg gets about halfway 621 00:25:51,248 --> 00:25:53,040 through the swing phase, it just turns off. 622 00:25:53,040 --> 00:25:55,687 It exerts zero torques and swings forward. 623 00:25:55,687 --> 00:25:57,770 Is this person having to simulate the controllers? 624 00:25:57,770 --> 00:25:58,530 If you turn off-- 625 00:25:58,530 --> 00:25:58,750 Yes. 626 00:25:58,750 --> 00:26:00,060 --the motor, is it stiff like this? 627 00:26:00,060 --> 00:26:00,530 That's right. 628 00:26:00,530 --> 00:26:01,030 OK. 629 00:26:01,030 --> 00:26:03,820 630 00:26:03,820 --> 00:26:04,760 So. 631 00:26:04,760 --> 00:26:08,110 So might as well give it a shot. 632 00:26:08,110 --> 00:26:08,610 All right. 633 00:26:08,610 --> 00:26:12,061 634 00:26:12,061 --> 00:26:13,540 [INAUDIBLE] 635 00:26:13,540 --> 00:26:16,005 [INAUDIBLE] 636 00:26:16,005 --> 00:26:18,963 [INAUDIBLE] 637 00:26:18,963 --> 00:26:21,240 So now that-- so there's no-- 638 00:26:21,240 --> 00:26:27,490 are you controlling or is it just he has to-- 639 00:26:27,490 --> 00:26:28,870 This is a joy stick on top. 640 00:26:28,870 --> 00:26:29,730 OK. 641 00:26:29,730 --> 00:26:30,560 And a kill switch. 642 00:26:30,560 --> 00:26:32,024 It's one of the safety aspects. 643 00:26:32,024 --> 00:26:33,488 Kill switch. 644 00:26:33,488 --> 00:26:38,380 [INAUDIBLE] 645 00:26:38,380 --> 00:26:39,900 This side's about ready to begin. 646 00:26:39,900 --> 00:26:43,820 647 00:26:43,820 --> 00:26:44,800 Transmitting. 648 00:26:44,800 --> 00:26:56,080 649 00:26:56,080 --> 00:26:57,760 So there's just a slight-- 650 00:26:57,760 --> 00:27:00,600 funny that foot's still [INAUDIBLE].. 651 00:27:00,600 --> 00:27:06,045 652 00:27:06,045 --> 00:27:10,550 Yeah, Troody's once again a little [INAUDIBLE].. 653 00:27:10,550 --> 00:27:13,822 Let me just let it warm up for another minute or two. 654 00:27:13,822 --> 00:27:16,768 Maybe it needs to warm up. 655 00:27:16,768 --> 00:27:19,654 [INTERPOSING VOICES] 656 00:27:19,654 --> 00:27:20,696 That's what I'm here for. 657 00:27:20,696 --> 00:27:22,970 Yeah. 658 00:27:22,970 --> 00:27:24,970 Just gyroscope's kind of warming up a little bit 659 00:27:24,970 --> 00:27:27,162 and there's some component on one 660 00:27:27,162 --> 00:27:28,870 of the feet I think it's starting to fail 661 00:27:28,870 --> 00:27:33,128 and maybe a thermal [INAUDIBLE],, but I'm not sure, so. 662 00:27:33,128 --> 00:27:35,270 Yeah. 663 00:27:35,270 --> 00:27:36,900 What results do you have? 664 00:27:36,900 --> 00:27:37,400 Pardon? 665 00:27:37,400 --> 00:27:39,730 What kind of diagnostic do you have to [INAUDIBLE].. 666 00:27:39,730 --> 00:27:41,202 Oh, well, just-- 667 00:27:41,202 --> 00:27:42,535 You can look at the raw sensors? 668 00:27:42,535 --> 00:27:44,702 Yeah, you can look at the raw data from the sensors. 669 00:27:44,702 --> 00:27:47,020 You don't have anything like, more [INAUDIBLE].. 670 00:27:47,020 --> 00:27:49,385 I mean, all you-- 671 00:27:49,385 --> 00:27:50,770 Your brain is the diagnostics. 672 00:27:50,770 --> 00:27:53,816 My brain is the diagnostics, yeah. 673 00:27:53,816 --> 00:27:54,814 Exactly. 674 00:27:54,814 --> 00:27:56,810 So we'll give this another whirl. 675 00:27:56,810 --> 00:28:15,273 676 00:28:15,273 --> 00:28:16,770 Come on, Troody. 677 00:28:16,770 --> 00:28:20,800 678 00:28:20,800 --> 00:28:24,305 [INAUDIBLE] 679 00:28:24,305 --> 00:28:27,160 680 00:28:27,160 --> 00:28:29,050 So now it's immediately on the-- 681 00:28:29,050 --> 00:28:34,180 682 00:28:34,180 --> 00:28:35,080 There it is. 683 00:28:35,080 --> 00:28:36,634 A couple of [INAUDIBLE] steps. 684 00:28:36,634 --> 00:28:41,260 [APPLAUSE] 685 00:28:41,260 --> 00:28:44,245 See if you can make the table [INAUDIBLE].. 686 00:28:44,245 --> 00:28:45,870 Well, Troody, Troody when it's working, 687 00:28:45,870 --> 00:28:46,620 it's pretty good, actually. 688 00:28:46,620 --> 00:28:47,995 That's another advantage to force 689 00:28:47,995 --> 00:28:51,842 control, since you don't care what the joint angles are, 690 00:28:51,842 --> 00:28:53,550 doesn't matter what the terrain is doing. 691 00:28:53,550 --> 00:28:55,800 The terrain can go up and down and the foot, 692 00:28:55,800 --> 00:28:59,480 once it hits that terrain, it'll just kind of 693 00:28:59,480 --> 00:29:02,390 sense an issue, so. 694 00:29:02,390 --> 00:29:07,325 And I might as well just show you another trick, just 695 00:29:07,325 --> 00:29:09,568 [INAUDIBLE]. 696 00:29:09,568 --> 00:29:11,472 [LAUGHTER] 697 00:29:11,472 --> 00:29:12,737 Apparently, [INAUDIBLE]. 698 00:29:12,737 --> 00:29:14,320 You're going to try to get a reaction? 699 00:29:14,320 --> 00:29:16,675 We'll try it this way. 700 00:29:16,675 --> 00:29:17,175 There. 701 00:29:17,175 --> 00:29:18,350 Cool. 702 00:29:18,350 --> 00:29:23,070 [APPLAUSE] 703 00:29:23,070 --> 00:29:24,600 I can't do that sometimes. 704 00:29:24,600 --> 00:29:28,260 705 00:29:28,260 --> 00:29:29,940 We got a demo on the robot so I'm 706 00:29:29,940 --> 00:29:32,610 going to go turn it off now and not push my luck. 707 00:29:32,610 --> 00:29:38,790 This robot was completed about a year and a half ago. 708 00:29:38,790 --> 00:29:42,090 709 00:29:42,090 --> 00:29:44,130 I've kind of left the lab and I'm now 710 00:29:44,130 --> 00:29:46,410 in the process of kind of finding all the software 711 00:29:46,410 --> 00:29:49,350 because I want to have the ability to maintain it and kind 712 00:29:49,350 --> 00:29:50,310 of keep demoable. 713 00:29:50,310 --> 00:29:55,970 So I'm kind of refiguring out how to do that, so. 714 00:29:55,970 --> 00:29:58,680 715 00:29:58,680 --> 00:30:01,503 Typically, there's two ways that it fails. 716 00:30:01,503 --> 00:30:03,420 The first way it fails is if something breaks. 717 00:30:03,420 --> 00:30:06,180 And you have to kind of track down which joint is broken 718 00:30:06,180 --> 00:30:07,950 and you diagnose that. 719 00:30:07,950 --> 00:30:10,200 So in this case, there's something wrong with the foot 720 00:30:10,200 --> 00:30:12,120 and I need to find out where it is. 721 00:30:12,120 --> 00:30:16,020 More commonly, one of the springs will stretch 722 00:30:16,020 --> 00:30:17,850 or something and you'll lose calibration. 723 00:30:17,850 --> 00:30:21,750 So the robot needs to know kind of when it's at rest, 724 00:30:21,750 --> 00:30:24,990 it needs to know what zero is, the zero force. 725 00:30:24,990 --> 00:30:27,690 So the good way-- way to to this, you'll hang up the robot, 726 00:30:27,690 --> 00:30:31,110 read all the joint sensors with the motors turned off, 727 00:30:31,110 --> 00:30:33,930 and then put those numbers in for zero 728 00:30:33,930 --> 00:30:36,450 to help calibrate the robot, and that's something 729 00:30:36,450 --> 00:30:39,060 that you'll be doing once every few weeks 730 00:30:39,060 --> 00:30:40,830 with the typical robot, I think. 731 00:30:40,830 --> 00:30:44,460 Because parts kind of stretch and change over time. 732 00:30:44,460 --> 00:30:49,152 But once you have that zero point, the scaling from that 733 00:30:49,152 --> 00:30:50,360 is usually pretty consistent. 734 00:30:50,360 --> 00:30:51,360 You don't have to worry about that. 735 00:30:51,360 --> 00:30:53,310 Again, because the force control doesn't 736 00:30:53,310 --> 00:30:55,323 require very exact values. 737 00:30:55,323 --> 00:30:57,490 So if the scales are off by a little bit from spring 738 00:30:57,490 --> 00:30:59,157 to spring or whatever, it doesn't affect 739 00:30:59,157 --> 00:31:01,627 the stability of the robot. 740 00:31:01,627 --> 00:31:03,960 And if this thing was sitting in a glass case for a year 741 00:31:03,960 --> 00:31:06,127 and a half, and you took it out last week and it got 742 00:31:06,127 --> 00:31:08,122 [INAUDIBLE],, right, and that's sort of-- 743 00:31:08,122 --> 00:31:08,872 That's impressive. 744 00:31:08,872 --> 00:31:10,080 It still works. 745 00:31:10,080 --> 00:31:10,580 Yeah. 746 00:31:10,580 --> 00:31:12,000 Awesome. 747 00:31:12,000 --> 00:31:13,913 What is the power emission? 748 00:31:13,913 --> 00:31:14,580 What's the what? 749 00:31:14,580 --> 00:31:16,680 How much power does it require? 750 00:31:16,680 --> 00:31:17,750 How many parts? 751 00:31:17,750 --> 00:31:18,250 No, power. 752 00:31:18,250 --> 00:31:19,028 Power. 753 00:31:19,028 --> 00:31:19,820 Oh, how much power? 754 00:31:19,820 --> 00:31:24,203 Oh well, the supply needle-- 755 00:31:24,203 --> 00:31:25,620 I haven't really measured exactly, 756 00:31:25,620 --> 00:31:27,780 but I mean, just going by the supply, 757 00:31:27,780 --> 00:31:34,164 I think it uses somewhere around 75 to 100 watts. 758 00:31:34,164 --> 00:31:35,550 Something like that. 759 00:31:35,550 --> 00:31:37,740 And I would say the vast majority of that 760 00:31:37,740 --> 00:31:40,660 is actually wasted in heat. 761 00:31:40,660 --> 00:31:43,140 Because the [INAUDIBLE] parts and the electronics 762 00:31:43,140 --> 00:31:45,920 get very hot. 763 00:31:45,920 --> 00:31:48,063 In fact, I'm working on some new electronics. 764 00:31:48,063 --> 00:31:49,480 The actual walking itself probably 765 00:31:49,480 --> 00:31:51,862 takes like 15 watts or something. 766 00:31:51,862 --> 00:31:54,180 Wait, so humans about 100 watts also? 767 00:31:54,180 --> 00:31:55,080 [INAUDIBLE] 768 00:31:55,080 --> 00:31:56,880 Yeah, I don't even know what it is. 769 00:31:56,880 --> 00:31:59,400 If it [INAUDIBLE]. 770 00:31:59,400 --> 00:32:00,238 Troody hardware is-- 771 00:32:00,238 --> 00:32:00,780 --comparison. 772 00:32:00,780 --> 00:32:02,697 Troody's electronics is very, very different-- 773 00:32:02,697 --> 00:32:03,955 Different technology. 774 00:32:03,955 --> 00:32:04,455 Yeah. 775 00:32:04,455 --> 00:32:08,360 [INAUDIBLE] 776 00:32:08,360 --> 00:32:09,708 So. 777 00:32:09,708 --> 00:32:11,500 The motors themselves are pretty efficient, 778 00:32:11,500 --> 00:32:13,510 like an electric motor can [INAUDIBLE] 779 00:32:13,510 --> 00:32:16,060 in the 80% efficiency rating. 780 00:32:16,060 --> 00:32:17,420 Geartrain, same thing. 781 00:32:17,420 --> 00:32:22,188 So most of the loss is just the electronics. 782 00:32:22,188 --> 00:32:25,120 783 00:32:25,120 --> 00:32:26,380 Any other-- 784 00:32:26,380 --> 00:32:28,270 Man. 785 00:32:28,270 --> 00:32:30,510 It's very, very beautiful. 786 00:32:30,510 --> 00:32:32,010 Think it is special whether you want 787 00:32:32,010 --> 00:32:37,230 to do become more sort of investment product 788 00:32:37,230 --> 00:32:37,980 or something? 789 00:32:37,980 --> 00:32:39,170 Well, yeah, I-- 790 00:32:39,170 --> 00:32:42,000 So maybe even there could be more things to get inspiration 791 00:32:42,000 --> 00:32:42,730 from biology. 792 00:32:42,730 --> 00:32:46,950 Like this issue of sensors, if you have to have redundancy. 793 00:32:46,950 --> 00:32:48,580 Yeah, I'd love to have redundancy. 794 00:32:48,580 --> 00:32:51,560 So maybe having much, much less accurate sensors 795 00:32:51,560 --> 00:32:53,120 but maybe more of the-- 796 00:32:53,120 --> 00:32:55,240 Yeah, if there was a way to package that. 797 00:32:55,240 --> 00:32:55,740 Right. 798 00:32:55,740 --> 00:32:57,970 But then it could be different technologies-- 799 00:32:57,970 --> 00:32:58,470 Right. 800 00:32:58,470 --> 00:32:58,970 Yeah. 801 00:32:58,970 --> 00:33:02,790 But instead of having precise force measurement, 802 00:33:02,790 --> 00:33:05,895 having a hundred fibers that'd give you a rough measurement 803 00:33:05,895 --> 00:33:06,520 and different-- 804 00:33:06,520 --> 00:33:06,930 [INTERPOSING VOICES] 805 00:33:06,930 --> 00:33:07,920 And then you do some [INAUDIBLE]---- 806 00:33:07,920 --> 00:33:08,220 Right, right. 807 00:33:08,220 --> 00:33:09,137 That would be perfect. 808 00:33:09,137 --> 00:33:12,780 Yeah, because one of the problems is potentiometers 809 00:33:12,780 --> 00:33:15,180 will fail and then you're toast, so. 810 00:33:15,180 --> 00:33:15,680 Yes. 811 00:33:15,680 --> 00:33:18,176 Plus, you can have some sort of built in diagnostics and pain 812 00:33:18,176 --> 00:33:18,676 receptor. 813 00:33:18,676 --> 00:33:19,400 Yeah. 814 00:33:19,400 --> 00:33:20,360 Yeah, yeah, yeah. 815 00:33:20,360 --> 00:33:23,468 Something that tells you that the sensors on [INAUDIBLE].. 816 00:33:23,468 --> 00:33:24,510 Right, I mean like it's-- 817 00:33:24,510 --> 00:33:25,440 [INTERPOSING VOICES] 818 00:33:25,440 --> 00:33:27,815 Especially if you start having 1,000 channels because you 819 00:33:27,815 --> 00:33:31,440 have sort of distributed sort of information gathering. 820 00:33:31,440 --> 00:33:34,350 You want to have some sparse information about it all. 821 00:33:34,350 --> 00:33:35,000 Right, right. 822 00:33:35,000 --> 00:33:37,500 Well, there's a lot of issues. 823 00:33:37,500 --> 00:33:39,712 I mean, if you have hundreds or thousands of sensors, 824 00:33:39,712 --> 00:33:41,920 then you need to have data acquisition for all those, 825 00:33:41,920 --> 00:33:44,370 which I mean, I could barely cram like, 826 00:33:44,370 --> 00:33:46,473 32 analog channels in Troody. 827 00:33:46,473 --> 00:33:47,400 Right. 828 00:33:47,400 --> 00:33:49,620 So I mean a lot of technology I think 829 00:33:49,620 --> 00:33:53,550 needs to change before we can really do 830 00:33:53,550 --> 00:33:55,500 what we all kind of dream of. 831 00:33:55,500 --> 00:33:57,400 So Troody's kind of a hack in a way, 832 00:33:57,400 --> 00:34:00,150 it's kind of using old technology 833 00:34:00,150 --> 00:34:02,310 to try to solve these problems. 834 00:34:02,310 --> 00:34:05,110 And you know, we need fuel cells, 835 00:34:05,110 --> 00:34:09,270 we need just many forces of magnitude, 836 00:34:09,270 --> 00:34:11,940 more inputs for data. 837 00:34:11,940 --> 00:34:13,449 Like I said, redundant sensors. 838 00:34:13,449 --> 00:34:16,063 We need muscle actuators. 839 00:34:16,063 --> 00:34:17,480 We need all these new technologies 840 00:34:17,480 --> 00:34:20,679 that just don't exist yet. 841 00:34:20,679 --> 00:34:23,730 In terms of not existing, in terms the parallel processing 842 00:34:23,730 --> 00:34:28,170 chips [INAUDIBLE] different sort of thing, are there any-- 843 00:34:28,170 --> 00:34:30,318 obviously, parallel processing is 844 00:34:30,318 --> 00:34:34,870 how we do it, are there any parallel chips that 845 00:34:34,870 --> 00:34:40,820 can be adapted to a multisensor processor, or are they done? 846 00:34:40,820 --> 00:34:41,739 I don't know. 847 00:34:41,739 --> 00:34:42,469 I mean-- 848 00:34:42,469 --> 00:34:43,940 They should advance the [INAUDIBLE] 849 00:34:43,940 --> 00:34:47,540 there because the frequency of the computational rate 850 00:34:47,540 --> 00:34:50,239 and the processor is completely [INAUDIBLE] 851 00:34:50,239 --> 00:34:54,380 faster times [INAUDIBLE] so you simulate [INAUDIBLE],, right. 852 00:34:54,380 --> 00:35:01,410 So if you go with any [INAUDIBLE] plus the speed, 853 00:35:01,410 --> 00:35:04,683 you need the fuel one hundred cycles for [INAUDIBLE].. 854 00:35:04,683 --> 00:35:06,260 The problem is effective cycles, you 855 00:35:06,260 --> 00:35:08,000 can have thousands of parallel [INAUDIBLE].. 856 00:35:08,000 --> 00:35:08,500 Right. 857 00:35:08,500 --> 00:35:11,180 Well, I guess-- sorry, maybe I guess 858 00:35:11,180 --> 00:35:13,230 that the computation that you didn't have, 859 00:35:13,230 --> 00:35:14,600 I was just wondering why. 860 00:35:14,600 --> 00:35:17,600 861 00:35:17,600 --> 00:35:22,910 On that onboard unit there, that seemed to be a limitation 862 00:35:22,910 --> 00:35:25,090 but the computational power doesn't 863 00:35:25,090 --> 00:35:29,570 seem to be a problem handling multiple sensors. 864 00:35:29,570 --> 00:35:31,610 The computer in Troody is loaded. 865 00:35:31,610 --> 00:35:34,940 I mean, like I literally couldn't put any more 866 00:35:34,940 --> 00:35:36,230 computation on the robot. 867 00:35:36,230 --> 00:35:37,920 I'd have to slow down its control loop. 868 00:35:37,920 --> 00:35:38,420 Right. 869 00:35:38,420 --> 00:35:41,660 So you'd need another chip of a series, right, 870 00:35:41,660 --> 00:35:45,200 or there's nothing wrong with putting a parallel machine. 871 00:35:45,200 --> 00:35:46,490 [INTERPOSING VOICES] 872 00:35:46,490 --> 00:35:48,810 --relatively all the [INAUDIBLE] processing, it's old. 873 00:35:48,810 --> 00:35:50,310 I mean, for the new robots, somebody 874 00:35:50,310 --> 00:35:53,260 buying a PC/104 Pentium III or whatever, 875 00:35:53,260 --> 00:35:55,130 I'll have more than enough horsepower 876 00:35:55,130 --> 00:35:58,050 for the type of programming I'm doing. 877 00:35:58,050 --> 00:36:00,560 But you know, I mean, one thing that I 878 00:36:00,560 --> 00:36:05,690 would love to have someone work on is some kind of a learning 879 00:36:05,690 --> 00:36:07,440 and adaptive system. 880 00:36:07,440 --> 00:36:09,230 And for that-- 881 00:36:09,230 --> 00:36:10,580 Russ was talking about that. 882 00:36:10,580 --> 00:36:12,290 I mean, that's actually not my field. 883 00:36:12,290 --> 00:36:16,780 And one problem with the robot is 884 00:36:16,780 --> 00:36:19,310 that I do all of its learning and its adaption 885 00:36:19,310 --> 00:36:21,600 and once I'm done, it can never get any better. 886 00:36:21,600 --> 00:36:23,240 So I would really like the robot to be 887 00:36:23,240 --> 00:36:25,855 able to work for months and months 888 00:36:25,855 --> 00:36:27,230 and slowly get better and better. 889 00:36:27,230 --> 00:36:30,383 I mean, that would be great, so. 890 00:36:30,383 --> 00:36:33,540 [INTERPOSING VOICES] 891 00:36:33,540 --> 00:36:36,830 I mean, just as much as all the other things I mentioned, 892 00:36:36,830 --> 00:36:39,020 that's another critical technology, which is needed. 893 00:36:39,020 --> 00:36:40,460 And fortunately, that's one which 894 00:36:40,460 --> 00:36:42,560 we can do because we don't have to make anything. 895 00:36:42,560 --> 00:36:46,220 It's purely conceptual. 896 00:36:46,220 --> 00:36:49,730 And another aspect of the learning 897 00:36:49,730 --> 00:36:52,880 is that each robot will be the same as when it's first 898 00:36:52,880 --> 00:36:55,700 manufactured but they'll all kind of, over time, 899 00:36:55,700 --> 00:36:58,010 tend to diverge because different robots will wear out 900 00:36:58,010 --> 00:36:58,580 in different ways. 901 00:36:58,580 --> 00:37:00,122 They'll be in different environments. 902 00:37:00,122 --> 00:37:01,910 So again, having an adaptive system 903 00:37:01,910 --> 00:37:06,050 enables each robot to adapt to its own particular foibles 904 00:37:06,050 --> 00:37:08,120 and optimize itself. 905 00:37:08,120 --> 00:37:10,640 So that is an extremely critical area. 906 00:37:10,640 --> 00:37:13,010 And for a large neural network, perhaps, you 907 00:37:13,010 --> 00:37:15,360 need some kind of custom-- 908 00:37:15,360 --> 00:37:17,470 a parallel processor or something like that. 909 00:37:17,470 --> 00:37:20,940 910 00:37:20,940 --> 00:37:23,850 I came in late but did you-- the control that you're using, 911 00:37:23,850 --> 00:37:27,600 are you using a regular kind of state machine? 912 00:37:27,600 --> 00:37:29,750 | mean it's a event cycle loop. 913 00:37:29,750 --> 00:37:32,860 I think it runs at like 500 hertz. 914 00:37:32,860 --> 00:37:37,810 It's a state machine, and I have a controller 915 00:37:37,810 --> 00:37:41,770 in there, which looks at the ZMP and kind of does 916 00:37:41,770 --> 00:37:44,670 some funky geometry on the ZMP. 917 00:37:44,670 --> 00:37:45,743 ZMP is how it works? 918 00:37:45,743 --> 00:37:46,660 The zero moment point. 919 00:37:46,660 --> 00:37:49,330 So essentially, the robot knows the point 920 00:37:49,330 --> 00:37:52,780 on the ground at which it's angle of momentum is zero. 921 00:37:52,780 --> 00:37:53,878 Above [INAUDIBLE]? 922 00:37:53,878 --> 00:37:54,670 Center of pressure. 923 00:37:54,670 --> 00:37:55,462 Center of pressure. 924 00:37:55,462 --> 00:37:58,740 So physically, it's center of mass plus the velocity. 925 00:37:58,740 --> 00:37:59,740 So think of it that way. 926 00:37:59,740 --> 00:38:03,288 927 00:38:03,288 --> 00:38:04,830 So it's a very simply control system. 928 00:38:04,830 --> 00:38:08,320 It's a simple linear, kind of hacked together control system. 929 00:38:08,320 --> 00:38:10,193 And it seems to work pretty well. 930 00:38:10,193 --> 00:38:11,860 We actually got Troody on a forced plate 931 00:38:11,860 --> 00:38:14,970 last week over at Spaulding Rehab 932 00:38:14,970 --> 00:38:17,333 and the center of pressure-- 933 00:38:17,333 --> 00:38:19,750 we put little golf balls on it, the little reflective golf 934 00:38:19,750 --> 00:38:20,950 balls-- 935 00:38:20,950 --> 00:38:24,320 took like an hour. 936 00:38:24,320 --> 00:38:27,160 We graphed the center of mass of the robot 937 00:38:27,160 --> 00:38:28,420 and it looked very biological. 938 00:38:28,420 --> 00:38:30,670 This little sort of side wave, right, and it 939 00:38:30,670 --> 00:38:33,610 never went all the way over to either side, to either foot. 940 00:38:33,610 --> 00:38:35,710 So Troody's definitely trying to be dynamic 941 00:38:35,710 --> 00:38:37,453 in the way it's walking, so. 942 00:38:37,453 --> 00:38:38,370 Which is kind of good. 943 00:38:38,370 --> 00:38:41,483 944 00:38:41,483 --> 00:38:42,150 Just very fast-- 945 00:38:42,150 --> 00:38:43,680 It's a very simple control system. 946 00:38:43,680 --> 00:38:47,880 But the controller is implementing a virtual control, 947 00:38:47,880 --> 00:38:49,148 which is this-- right? 948 00:38:49,148 --> 00:38:49,940 Virtual controller? 949 00:38:49,940 --> 00:38:51,550 Right, like [INAUDIBLE]-- 950 00:38:51,550 --> 00:38:52,050 Sure. 951 00:38:52,050 --> 00:38:53,410 Yeah, it's a virtual controller. 952 00:38:53,410 --> 00:38:53,930 Yeah. 953 00:38:53,930 --> 00:38:54,960 Yeah. 954 00:38:54,960 --> 00:38:57,900 So this control loop is actually transforming like this mass, 955 00:38:57,900 --> 00:39:00,700 like it's moving, while the other controller keeps it 956 00:39:00,700 --> 00:39:01,200 [INAUDIBLE]. 957 00:39:01,200 --> 00:39:02,810 Exactly, exactly, yeah. 958 00:39:02,810 --> 00:39:06,990 So the high level controller, it's 959 00:39:06,990 --> 00:39:08,728 a abstract cell kind of all the joints 960 00:39:08,728 --> 00:39:08,930 of the leg, that kind of thing. 961 00:39:08,930 --> 00:39:09,870 Right, right, right. 962 00:39:09,870 --> 00:39:10,370 Exactly. 963 00:39:10,370 --> 00:39:10,870 Yeah. 964 00:39:10,870 --> 00:39:13,270 965 00:39:13,270 --> 00:39:17,000 Have you tried giving it some kind of extra perturbation 966 00:39:17,000 --> 00:39:18,646 like-- 967 00:39:18,646 --> 00:39:19,530 Well, yeah. 968 00:39:19,530 --> 00:39:20,030 We-- 969 00:39:20,030 --> 00:39:21,070 What direction is that-- 970 00:39:21,070 --> 00:39:22,960 Somewhere at the lab we have some video, 971 00:39:22,960 --> 00:39:25,878 we put it on a board and kind of did this with a board, 972 00:39:25,878 --> 00:39:27,920 and we actually were able to move it pretty fast, 973 00:39:27,920 --> 00:39:29,780 and the robot could just stand there. 974 00:39:29,780 --> 00:39:31,960 So it's very good at balancing, kind of. 975 00:39:31,960 --> 00:39:33,730 It could stand on a boat, basically. 976 00:39:33,730 --> 00:39:38,440 How about an escalator kind of where the surface ground itself 977 00:39:38,440 --> 00:39:39,240 is moving? 978 00:39:39,240 --> 00:39:41,410 Moving sideways? 979 00:39:41,410 --> 00:39:43,040 I haven't tried that, actually. 980 00:39:43,040 --> 00:39:46,180 I mean, I don't know what would happen. 981 00:39:46,180 --> 00:39:50,290 I suspect that what you saw moving that the damper would 982 00:39:50,290 --> 00:39:54,160 tell the robot to lean over but I'm not sure 983 00:39:54,160 --> 00:39:55,540 how that would stabilize it. 984 00:39:55,540 --> 00:39:57,760 I mean, it's a relatively simple robot. 985 00:39:57,760 --> 00:39:59,530 I mean, you saw it balancing on one leg. 986 00:39:59,530 --> 00:40:02,500 So I wouldn't be surprised if it sort of 987 00:40:02,500 --> 00:40:05,830 tried to do the right thing, whatever that is. 988 00:40:05,830 --> 00:40:09,070 But I haven't pushed the robot too far because it's 989 00:40:09,070 --> 00:40:11,830 a very delicate machine. 990 00:40:11,830 --> 00:40:15,665 One experiment I did do was I made it walk across a desk 991 00:40:15,665 --> 00:40:18,040 and then I put a notebook, which was about a half an inch 992 00:40:18,040 --> 00:40:20,900 high, in front of it, and the robot had, of course, 993 00:40:20,900 --> 00:40:23,110 has no vision and no concept of where it is, 994 00:40:23,110 --> 00:40:25,310 but it was able to just stumble over the notebook. 995 00:40:25,310 --> 00:40:27,430 And it stumbled, it began to kind of walk funny 996 00:40:27,430 --> 00:40:32,320 but it made it over the notebook twice and didn't fall over, so. 997 00:40:32,320 --> 00:40:36,600 So again, that's one of the beauty of springiness 998 00:40:36,600 --> 00:40:40,300 and the floppiness of the robot is 999 00:40:40,300 --> 00:40:43,625 that it can withstand sudden changes in ground level 1000 00:40:43,625 --> 00:40:44,500 and things like that. 1001 00:40:44,500 --> 00:40:49,060 1002 00:40:49,060 --> 00:40:51,940 But the most I've done in terms of perturbing the robot is 1003 00:40:51,940 --> 00:40:54,280 making it [INAUDIBLE],, center it on a tilted thing, 1004 00:40:54,280 --> 00:40:54,970 the notebook. 1005 00:40:54,970 --> 00:40:58,990 And one day we had it sitting outside 1006 00:40:58,990 --> 00:41:02,410 and there was a pretty brisk wind, actually, like a 15, 1007 00:41:02,410 --> 00:41:07,023 20 mile an hour wind gusts, and it seemed to take that, so. 1008 00:41:07,023 --> 00:41:07,860 Cool. 1009 00:41:07,860 --> 00:41:08,360 Yeah, so. 1010 00:41:08,360 --> 00:41:12,100 1011 00:41:12,100 --> 00:41:14,245 We should be [INAUDIBLE],, if you have 1012 00:41:14,245 --> 00:41:17,070 anymore questions [INAUDIBLE]?