1 00:00:00,420 --> 00:00:05,910 [Music] 2 00:00:11,360 --> 00:00:14,799 That was a bit too loud this time. Can 3 00:00:12,719 --> 00:00:17,600 we get like a a quieter woo? Just like a 4 00:00:14,799 --> 00:00:19,359 woo. Nice. Nice. Well done. No, I'm just 5 00:00:17,600 --> 00:00:21,840 kidding. Get very excited for our next 6 00:00:19,359 --> 00:00:25,039 and final speaker of this afternoon in 7 00:00:21,840 --> 00:00:26,560 this room. Um, I'm very, very excited to 8 00:00:25,039 --> 00:00:28,560 hopefully see this thing move. Please 9 00:00:26,560 --> 00:00:31,359 give a very, very loud and warm welcome 10 00:00:28,560 --> 00:00:34,150 for the amazing Haley Bartlett and 11 00:00:31,359 --> 00:00:39,840 Kinchi, the bestest boy. 12 00:00:34,150 --> 00:00:42,800 [Applause] 13 00:00:39,840 --> 00:00:44,320 Hello everybody. Uh, 14 00:00:42,800 --> 00:00:45,840 welcome back to those who saw me present 15 00:00:44,320 --> 00:00:47,680 in the student showcase. I'm actually 16 00:00:45,840 --> 00:00:50,320 presenting my other project today called 17 00:00:47,680 --> 00:00:51,920 Pinchy the Bestest Boy. So, for those 18 00:00:50,320 --> 00:00:54,800 who don't know me, my name is Haley 19 00:00:51,920 --> 00:00:56,320 Bartlett. Uh, I took a gamble on what 20 00:00:54,800 --> 00:01:00,079 side of the stage I'd be standing on, 21 00:00:56,320 --> 00:01:02,559 and it looks like I lost. 22 00:01:00,079 --> 00:01:05,360 Yeah. So, I'm a year 12 student back in 23 00:01:02,559 --> 00:01:08,479 the ACT at Bergman Anglican School, and 24 00:01:05,360 --> 00:01:12,400 this is my first ever pyon. 25 00:01:08,479 --> 00:01:14,799 Thank you. Yeah. So, some a little bit 26 00:01:12,400 --> 00:01:16,720 of information about me. Uh, mandatory 27 00:01:14,799 --> 00:01:19,920 social plug. Uh, please hire me. I'm 28 00:01:16,720 --> 00:01:22,720 like really good at this stuff, I swear. 29 00:01:19,920 --> 00:01:24,640 Uh, second fun. Oh, fun fact number one. 30 00:01:22,720 --> 00:01:28,240 I think bugs are really cool. Like the 31 00:01:24,640 --> 00:01:29,920 insects. Yeah. Uh, like the insects, not 32 00:01:28,240 --> 00:01:32,799 the coding bugs. Those are just really 33 00:01:29,920 --> 00:01:34,000 annoying. Uh, they get a bad rap cuz 34 00:01:32,799 --> 00:01:35,360 like people think they're creepy and 35 00:01:34,000 --> 00:01:39,040 crawly, but I think those people are 36 00:01:35,360 --> 00:01:41,200 wrong. Uh, so second fun fact, I play a 37 00:01:39,040 --> 00:01:44,079 lot of D and D. Like a lot a lot of D 38 00:01:41,200 --> 00:01:46,159 and D. It's kind of a problem. Both of 39 00:01:44,079 --> 00:01:51,439 these are main contributors to our story 40 00:01:46,159 --> 00:01:53,920 today. So, what is Pinchy? Pinchy is a 41 00:01:51,439 --> 00:01:56,399 Pinchy is a six-legged walking robot 42 00:01:53,920 --> 00:01:58,240 based off of a scorpion. You might be 43 00:01:56,399 --> 00:02:00,560 asking, why did I go with a scorpion and 44 00:01:58,240 --> 00:02:02,399 not something like a dog? Uh, the real 45 00:02:00,560 --> 00:02:04,079 the answer is Boston Dynamics already 46 00:02:02,399 --> 00:02:07,200 took the dog and I don't want them to 47 00:02:04,079 --> 00:02:10,160 sue me. So 48 00:02:07,200 --> 00:02:12,400 uh today I will be talking about where I 49 00:02:10,160 --> 00:02:13,840 got the idea for Pinchy as well as the 50 00:02:12,400 --> 00:02:15,760 different iterations I've gone through 51 00:02:13,840 --> 00:02:17,920 over the years of working this project 52 00:02:15,760 --> 00:02:19,840 as well as the final build as well as 53 00:02:17,920 --> 00:02:21,760 the successes and failures throughout 54 00:02:19,840 --> 00:02:23,520 this process and a little bit of 55 00:02:21,760 --> 00:02:25,920 foreshadowing. There's a lot of failures 56 00:02:23,520 --> 00:02:27,599 and we'll cover them all. 57 00:02:25,920 --> 00:02:30,599 Yeah. 58 00:02:27,599 --> 00:02:30,599 So, 59 00:02:31,840 --> 00:02:35,360 here's the reason. There's a couple 60 00:02:33,440 --> 00:02:40,120 reasons I made Pinchy. The first and 61 00:02:35,360 --> 00:02:40,120 main reason is I wanted to. 62 00:02:40,160 --> 00:02:44,640 [Applause] 63 00:02:42,800 --> 00:02:46,480 Robots are cool. Everyone can agree on 64 00:02:44,640 --> 00:02:49,760 that. And I wanted a robot of my own. 65 00:02:46,480 --> 00:02:53,160 The second reason was people suck. And 66 00:02:49,760 --> 00:02:53,160 so, I wanted 67 00:02:53,920 --> 00:02:58,319 people suck. So, I wanted a robot to 68 00:02:56,560 --> 00:03:02,159 replace all my real life friends and 69 00:02:58,319 --> 00:03:04,959 family so I could 70 00:03:02,159 --> 00:03:07,040 Sorry, guys. 71 00:03:04,959 --> 00:03:09,599 So, I could ignore all that icky human 72 00:03:07,040 --> 00:03:11,599 social interaction. 73 00:03:09,599 --> 00:03:15,480 The third and the third reason, my 74 00:03:11,599 --> 00:03:15,480 teacher bet me I couldn't. 75 00:03:16,480 --> 00:03:20,720 Spite is an amazing motivator and it has 76 00:03:18,720 --> 00:03:22,480 carried 77 00:03:20,720 --> 00:03:25,519 it has carried me through the last 2 78 00:03:22,480 --> 00:03:27,360 years and 700 hours of working on this 79 00:03:25,519 --> 00:03:30,480 project. 80 00:03:27,360 --> 00:03:34,480 So picture this. This is kind of the 81 00:03:30,480 --> 00:03:38,080 start of Pinchy uh back in uh 20 uh 82 00:03:34,480 --> 00:03:40,000 2023. So picture then uh CO is still a 83 00:03:38,080 --> 00:03:41,519 big deal. Everyone's wearing masks. I'm 84 00:03:40,000 --> 00:03:44,400 about a foot shorter and have about a 85 00:03:41,519 --> 00:03:46,080 foot less hair. 86 00:03:44,400 --> 00:03:47,760 Uh, my friend comes up to me and goes, 87 00:03:46,080 --> 00:03:50,159 "Hey, Haley, you should join the IT 88 00:03:47,760 --> 00:03:51,760 class. The teacher is pretty cool and 89 00:03:50,159 --> 00:03:54,080 it's better than Indonesian, which is 90 00:03:51,760 --> 00:03:57,280 what you were doing before." 91 00:03:54,080 --> 00:03:59,120 So, I decided to move uh I decided to 92 00:03:57,280 --> 00:04:00,400 join the IT class and we were working 93 00:03:59,120 --> 00:04:03,680 with these little things called 94 00:04:00,400 --> 00:04:07,040 micro:bits. Uh, they and I thought to 95 00:04:03,680 --> 00:04:10,239 myself, hey, these are pretty cool. So I 96 00:04:07,040 --> 00:04:12,400 decided to com like because I joined in 97 00:04:10,239 --> 00:04:14,560 the middle of the year I decided to 98 00:04:12,400 --> 00:04:17,680 complete the entire previous semester's 99 00:04:14,560 --> 00:04:20,959 classwork in the first 3 weeks because 100 00:04:17,680 --> 00:04:23,680 that was the logical thing to do. 101 00:04:20,959 --> 00:04:26,320 Uh then after that we moved on to 102 00:04:23,680 --> 00:04:28,240 working on robotics with micro:bits 103 00:04:26,320 --> 00:04:29,919 plugging in different components uh 104 00:04:28,240 --> 00:04:32,160 making things interact with the real 105 00:04:29,919 --> 00:04:35,759 world and I thought huh this is even 106 00:04:32,160 --> 00:04:39,360 cooler. How does it keep getting cooler? 107 00:04:35,759 --> 00:04:42,320 So, at the end of our robotics um unit, 108 00:04:39,360 --> 00:04:44,080 we started doing a final project. So, I 109 00:04:42,320 --> 00:04:45,840 decided to make a walking robot cuz no 110 00:04:44,080 --> 00:04:49,120 one in the class had had made one yet, 111 00:04:45,840 --> 00:04:51,600 and I wanted to be the first. So, I 112 00:04:49,120 --> 00:04:53,360 plugged in 12 of those little 9 g servos 113 00:04:51,600 --> 00:04:55,520 as well as some foam core that I put 114 00:04:53,360 --> 00:04:56,800 together on the weekend and made a 115 00:04:55,520 --> 00:04:58,880 little walking robot. It didn't 116 00:04:56,800 --> 00:05:01,360 technically walk, but it crawled, which 117 00:04:58,880 --> 00:05:03,280 was I thought was the coolest thing. Uh, 118 00:05:01,360 --> 00:05:05,840 you may notice that the cable management 119 00:05:03,280 --> 00:05:09,840 isn't really good at all. Just a 120 00:05:05,840 --> 00:05:11,840 warning, that doesn't get better. 121 00:05:09,840 --> 00:05:13,840 So, moving forward to the start of year 122 00:05:11,840 --> 00:05:15,680 11. There's a bit of a time skip there 123 00:05:13,840 --> 00:05:19,919 because apparently there's stuff in the 124 00:05:15,680 --> 00:05:22,080 IT curriculum other than just robotics. 125 00:05:19,919 --> 00:05:24,320 So, uh, I made some really big 126 00:05:22,080 --> 00:05:26,400 advancements with this one. So, the 127 00:05:24,320 --> 00:05:28,560 first one is I actually downgraded from 128 00:05:26,400 --> 00:05:30,639 12 servos to eight. So, I only had four 129 00:05:28,560 --> 00:05:32,800 legs. Uh, this was still using the same 130 00:05:30,639 --> 00:05:36,080 kind of two servo design. So, I was able 131 00:05:32,800 --> 00:05:38,720 to get like a this motion and oh, I'll 132 00:05:36,080 --> 00:05:40,639 move over here. Like a this motion and 133 00:05:38,720 --> 00:05:44,360 like a this motion cuz that's all you 134 00:05:40,639 --> 00:05:44,360 need for a leg, right? 135 00:05:44,639 --> 00:05:50,160 So, with those four legs, I was able to, 136 00:05:47,840 --> 00:05:52,160 pardon me, I was able to like create 137 00:05:50,160 --> 00:05:54,080 another crawling robot, but I 138 00:05:52,160 --> 00:05:56,080 implemented 3D printing this time 139 00:05:54,080 --> 00:05:58,560 around. So, that was a really cool and 140 00:05:56,080 --> 00:06:00,400 big change for me because I was able to 141 00:05:58,560 --> 00:06:02,160 like create a thing that could possibly 142 00:06:00,400 --> 00:06:05,280 lift itself off the ground and support 143 00:06:02,160 --> 00:06:07,680 its own weight. Um, I also moved over to 144 00:06:05,280 --> 00:06:08,960 using an Arduino instead of a micro:bit. 145 00:06:07,680 --> 00:06:10,560 So, that allowed me to have better 146 00:06:08,960 --> 00:06:12,639 control of all the servos as well as 147 00:06:10,560 --> 00:06:15,039 like be able to use the joystick to 148 00:06:12,639 --> 00:06:16,800 control it instead of just importing new 149 00:06:15,039 --> 00:06:18,560 code every time I wanted it to move 150 00:06:16,800 --> 00:06:21,520 differently. 151 00:06:18,560 --> 00:06:23,280 At the end of year 11, I fined up 152 00:06:21,520 --> 00:06:26,400 getting some more IT budget and I was 153 00:06:23,280 --> 00:06:28,080 able to buy two more servos. So that was 154 00:06:26,400 --> 00:06:30,160 I was able to buy enough servos to build 155 00:06:28,080 --> 00:06:31,919 two more legs as well as a point lighter 156 00:06:30,160 --> 00:06:33,199 that's kind of on the front down there 157 00:06:31,919 --> 00:06:35,840 if you can see it beneath all the 158 00:06:33,199 --> 00:06:39,759 cables. I was still using Arduino at 159 00:06:35,840 --> 00:06:41,919 this point, but I was um I moved over to 160 00:06:39,759 --> 00:06:44,560 controlling it with an infrared sensor 161 00:06:41,919 --> 00:06:47,280 rather than just um using a joystick 162 00:06:44,560 --> 00:06:50,960 that was already built into it. Moving 163 00:06:47,280 --> 00:06:53,440 forward onto this year, I uh I made some 164 00:06:50,960 --> 00:06:55,840 major changes. I moved from like this 165 00:06:53,440 --> 00:06:59,120 six-legged little bug creature into an 166 00:06:55,840 --> 00:07:00,960 actual scorpion. So, I had uh two claws 167 00:06:59,120 --> 00:07:03,199 at the front as well as a tail, which 168 00:07:00,960 --> 00:07:06,000 I've kept forward into this new design. 169 00:07:03,199 --> 00:07:10,160 I was still using that two servo leg uh 170 00:07:06,000 --> 00:07:12,160 design, but uh 171 00:07:10,160 --> 00:07:14,080 yeah, but I actually did cutouts on 172 00:07:12,160 --> 00:07:16,240 this. I did cutouts in the main body of 173 00:07:14,080 --> 00:07:19,199 this one so that the legs would be a 174 00:07:16,240 --> 00:07:20,639 wouldn't contact uh the body while they 175 00:07:19,199 --> 00:07:22,160 were moving which is a main problem 176 00:07:20,639 --> 00:07:24,880 major problem I had in the previous 177 00:07:22,160 --> 00:07:26,800 iterations. And onto the final one which 178 00:07:24,880 --> 00:07:29,520 is the one I'm presenting to you today. 179 00:07:26,800 --> 00:07:31,120 I scrapped those old uh two servo leg 180 00:07:29,520 --> 00:07:33,520 designs and replaced them with a three 181 00:07:31,120 --> 00:07:36,160 servo one which allows it to better 182 00:07:33,520 --> 00:07:39,199 mimic the movement of a scorpion as well 183 00:07:36,160 --> 00:07:41,360 as I redid all the body so it's like um 184 00:07:39,199 --> 00:07:44,560 three segments instead of a two segment 185 00:07:41,360 --> 00:07:47,280 thing so that it's hopefully stronger as 186 00:07:44,560 --> 00:07:50,000 well as being able to like mount all of 187 00:07:47,280 --> 00:07:52,160 the things more efficiently. So when 188 00:07:50,000 --> 00:07:54,240 designing Pinchy there were four main 189 00:07:52,160 --> 00:07:56,560 sections that I considered. The first 190 00:07:54,240 --> 00:07:58,160 was the electronics of it all. So that 191 00:07:56,560 --> 00:07:59,840 was like the power system as well as 192 00:07:58,160 --> 00:08:02,000 like the I squared C that controlled all 193 00:07:59,840 --> 00:08:04,479 the servos. So electronics was basically 194 00:08:02,000 --> 00:08:06,879 just the servos and the sensors. The 195 00:08:04,479 --> 00:08:10,319 next thing was the programming. So I 196 00:08:06,879 --> 00:08:11,919 implemented ROSS 2 Jazzy so I could um 197 00:08:10,319 --> 00:08:13,840 get all of the different components to 198 00:08:11,919 --> 00:08:17,759 talk to each other and I did it all on a 199 00:08:13,840 --> 00:08:20,080 Raspberry Pi. The next thing was uh the 200 00:08:17,759 --> 00:08:21,599 actual body design of it all. So, the 3D 201 00:08:20,080 --> 00:08:23,199 models of everything, making sure 202 00:08:21,599 --> 00:08:24,479 everything fit together and that it was 203 00:08:23,199 --> 00:08:27,520 actually designed to look like a 204 00:08:24,479 --> 00:08:29,280 scorpion. The fourth and final one is 205 00:08:27,520 --> 00:08:31,440 the physics of it all. So, that's like 206 00:08:29,280 --> 00:08:33,760 the making sure the to the servos have 207 00:08:31,440 --> 00:08:35,279 enough torque for to lift the body as 208 00:08:33,760 --> 00:08:37,919 well as the different walking gates you 209 00:08:35,279 --> 00:08:40,560 can do with a six-legged robot. With the 210 00:08:37,919 --> 00:08:43,360 electronics, um you can see on the right 211 00:08:40,560 --> 00:08:44,959 there I have my servo diagram. The two 212 00:08:43,360 --> 00:08:48,560 microcontrollers are plugged into the 213 00:08:44,959 --> 00:08:50,800 Raspberry Pi using the I squed C um 214 00:08:48,560 --> 00:08:52,959 single line bus, which is basically you 215 00:08:50,800 --> 00:08:56,160 can connect a bunch of different um 216 00:08:52,959 --> 00:08:58,320 components all in a series line. And the 217 00:08:56,160 --> 00:08:59,920 way the Raspberry Pi like talks to each 218 00:08:58,320 --> 00:09:02,320 one of them is by using a different 219 00:08:59,920 --> 00:09:04,560 address for each one so that they only 220 00:09:02,320 --> 00:09:06,800 listen to the like commands sent to 221 00:09:04,560 --> 00:09:08,560 them. The reason I used these driver 222 00:09:06,800 --> 00:09:10,560 boards is so that I could actually 223 00:09:08,560 --> 00:09:13,279 control all of the different servos cuz 224 00:09:10,560 --> 00:09:17,279 I've got 25 servos on this thing, which 225 00:09:13,279 --> 00:09:20,080 is kind of a lot. So, 226 00:09:17,279 --> 00:09:21,920 yeah. So, even if I tried to plug that 227 00:09:20,080 --> 00:09:23,600 into a regular Raspberry Pi, I wouldn't 228 00:09:21,920 --> 00:09:25,040 be able to. There's simply not enough 229 00:09:23,600 --> 00:09:26,800 pins, and there's just not enough 230 00:09:25,040 --> 00:09:28,560 clocks. Even if there was, there's not 231 00:09:26,800 --> 00:09:31,360 enough clocks on the Raspberry Pi for me 232 00:09:28,560 --> 00:09:34,720 able to control them all. So, that's why 233 00:09:31,360 --> 00:09:36,720 I ended up using the driver boards. 234 00:09:34,720 --> 00:09:39,519 You can see at the bottom there, I've 235 00:09:36,720 --> 00:09:41,200 put in uh different power sources for 236 00:09:39,519 --> 00:09:44,320 each thing. So, I've basically got it 237 00:09:41,200 --> 00:09:47,279 set up. So, I have two of the little um 238 00:09:44,320 --> 00:09:50,240 no, sorry, I have one little power 239 00:09:47,279 --> 00:09:53,200 packet with four AA batteries in it. And 240 00:09:50,240 --> 00:09:56,800 I have one of those for every two legs 241 00:09:53,200 --> 00:09:58,880 or both the claws and the tail. So, I 242 00:09:56,800 --> 00:10:00,640 have this segmented design because that 243 00:09:58,880 --> 00:10:03,519 solves the previous problem I had where 244 00:10:00,640 --> 00:10:04,880 I only had one power system, but that 245 00:10:03,519 --> 00:10:07,200 would leave all of the different legs 246 00:10:04,880 --> 00:10:09,680 and things fighting for power. So, I 247 00:10:07,200 --> 00:10:12,399 ended up going with this one so that I 248 00:10:09,680 --> 00:10:14,560 could like avoid the problem where all 249 00:10:12,399 --> 00:10:16,640 the servos would just jitter out because 250 00:10:14,560 --> 00:10:20,720 they don't have enough like power 251 00:10:16,640 --> 00:10:23,680 individually. Uh, the next thing is the 252 00:10:20,720 --> 00:10:26,640 the next thing is the sensors. So on 253 00:10:23,680 --> 00:10:28,720 this new one, I have a LAR sensor, which 254 00:10:26,640 --> 00:10:30,959 is basically a distance sensor that uses 255 00:10:28,720 --> 00:10:33,120 light to tell how far things are away. 256 00:10:30,959 --> 00:10:35,040 By sending out a laser that contacts 257 00:10:33,120 --> 00:10:38,000 with a surface far away that reflects 258 00:10:35,040 --> 00:10:39,920 back into the lens, it's able to use the 259 00:10:38,000 --> 00:10:42,160 time taken for that divide by the 260 00:10:39,920 --> 00:10:43,839 distance of or the speed of light and 261 00:10:42,160 --> 00:10:46,880 that will give you the distance away 262 00:10:43,839 --> 00:10:50,160 from that object. So, in the previous 263 00:10:46,880 --> 00:10:52,399 one, I used a point lighter so that I 264 00:10:50,160 --> 00:10:54,240 was able to only tell the distance of 265 00:10:52,399 --> 00:10:55,839 the thing directly in front of me. But 266 00:10:54,240 --> 00:10:58,000 with this new version, I used a 267 00:10:55,839 --> 00:11:00,240 rotational lighter, which basically 268 00:10:58,000 --> 00:11:02,560 allows you to do the same thing, but it 269 00:11:00,240 --> 00:11:04,399 spins as well. So, you can sense all the 270 00:11:02,560 --> 00:11:06,240 things in the room around you. And that 271 00:11:04,399 --> 00:11:09,839 outputs a point cloud that looks a 272 00:11:06,240 --> 00:11:12,079 little something like this. So that is 273 00:11:09,839 --> 00:11:14,240 you can see over there you have the four 274 00:11:12,079 --> 00:11:16,000 room like walls of the room as well as 275 00:11:14,240 --> 00:11:18,320 like some different obstacles in front 276 00:11:16,000 --> 00:11:21,360 of the robot. So like a column or a 277 00:11:18,320 --> 00:11:24,560 chair or something. Uh moving on to the 278 00:11:21,360 --> 00:11:26,720 programming, I used Ross. 279 00:11:24,560 --> 00:11:29,040 So ROSS stands for robot operating 280 00:11:26,720 --> 00:11:31,120 system which is kind of misleading cuz 281 00:11:29,040 --> 00:11:33,839 it actually sits on top of the operating 282 00:11:31,120 --> 00:11:36,399 system you already have. Because so for 283 00:11:33,839 --> 00:11:39,519 my one, Ross is sitting on top of Abuntu 284 00:11:36,399 --> 00:11:41,200 Linux and what it does is it allows all 285 00:11:39,519 --> 00:11:43,600 of the different components to talk to 286 00:11:41,200 --> 00:11:45,839 each other and run in parallel rather 287 00:11:43,600 --> 00:11:49,519 than just having to work independently 288 00:11:45,839 --> 00:11:53,519 of one another. So the way Ross should 289 00:11:49,519 --> 00:11:55,600 work is you have the uh different nodes 290 00:11:53,519 --> 00:11:58,000 that all talk to each other. So each of 291 00:11:55,600 --> 00:12:00,160 these different nodes is what is 292 00:11:58,000 --> 00:12:02,399 something like the LAR sensor or the 293 00:12:00,160 --> 00:12:04,240 different or the servo drivers and then 294 00:12:02,399 --> 00:12:06,639 they come together to talk to each other 295 00:12:04,240 --> 00:12:08,959 about topics. And these topics are 296 00:12:06,639 --> 00:12:10,399 things like the uh a slam algorithm 297 00:12:08,959 --> 00:12:14,399 something where that takes multiple 298 00:12:10,399 --> 00:12:16,880 inputs and outputs a specific action. Uh 299 00:12:14,399 --> 00:12:20,639 this is what they're meant to look like. 300 00:12:16,880 --> 00:12:24,880 Uh mine looks like this. 301 00:12:20,639 --> 00:12:28,240 So this is the AI gener uh this is the 302 00:12:24,880 --> 00:12:30,639 automated generated output of what my uh 303 00:12:28,240 --> 00:12:32,399 node graph is meant to look like. You 304 00:12:30,639 --> 00:12:34,560 can see there it doesn't actually look 305 00:12:32,399 --> 00:12:37,680 very good. It also doesn't get much 306 00:12:34,560 --> 00:12:39,920 better if you zoom in at all. Like some 307 00:12:37,680 --> 00:12:42,560 of it is legible but most of it is 308 00:12:39,920 --> 00:12:45,120 definitely not. If anyone knows how this 309 00:12:42,560 --> 00:12:47,200 works, please come talk to me. I'm so 310 00:12:45,120 --> 00:12:49,839 confused. 311 00:12:47,200 --> 00:12:51,600 Uh, moving on to the actual SLAM. So, 312 00:12:49,839 --> 00:12:53,279 I've mentioned it a couple of times, but 313 00:12:51,600 --> 00:12:55,279 SLAM stands for simultaneous 314 00:12:53,279 --> 00:12:57,600 localization and mapping, which is 315 00:12:55,279 --> 00:13:00,399 basically where the the robot being able 316 00:12:57,600 --> 00:13:03,519 to scan the room and know where it is in 317 00:13:00,399 --> 00:13:05,360 the room at every given time. That's 318 00:13:03,519 --> 00:13:08,680 kind of really I'm going to have some 319 00:13:05,360 --> 00:13:08,680 water. Sorry. 320 00:13:11,839 --> 00:13:18,959 So, the way slam works is it's uh it's 321 00:13:16,959 --> 00:13:20,560 really easy to tell like where you are 322 00:13:18,959 --> 00:13:22,480 in a room if you only have one reference 323 00:13:20,560 --> 00:13:24,480 frame. Like, if your lighter only does 324 00:13:22,480 --> 00:13:26,000 one loop and the robot hasn't moved, 325 00:13:24,480 --> 00:13:27,519 you're kind of the robot's always going 326 00:13:26,000 --> 00:13:29,200 to be in the middle of the map. So, it's 327 00:13:27,519 --> 00:13:31,600 pretty accurate. But, as soon as the 328 00:13:29,200 --> 00:13:33,920 robot takes a step forward, all of that 329 00:13:31,600 --> 00:13:36,320 odome all of that data can kind of go 330 00:13:33,920 --> 00:13:38,399 into the garbage because none of it is 331 00:13:36,320 --> 00:13:40,399 in reference to where you are currently. 332 00:13:38,399 --> 00:13:42,079 So slam solves that problem creating 333 00:13:40,399 --> 00:13:43,920 like a bridge between the different 334 00:13:42,079 --> 00:13:47,600 reference frames and it does this using 335 00:13:43,920 --> 00:13:49,279 odometry data. So for a wheeled robot it 336 00:13:47,600 --> 00:13:52,720 might count the number of re wheel 337 00:13:49,279 --> 00:13:56,800 rotations and like use those to build 338 00:13:52,720 --> 00:14:01,519 different uh sorry and use those to 339 00:13:56,800 --> 00:14:03,600 build uh a map based on that. 340 00:14:01,519 --> 00:14:06,079 Now this would work really well in an 341 00:14:03,600 --> 00:14:08,240 ideal world but unfortunately we don't 342 00:14:06,079 --> 00:14:11,279 work in an ideal world. We live in a 343 00:14:08,240 --> 00:14:13,680 world where odometry and LAR sensor data 344 00:14:11,279 --> 00:14:15,920 isn't perfect. So the way SLAM solves 345 00:14:13,680 --> 00:14:18,320 this is by using a thing called loop 346 00:14:15,920 --> 00:14:22,720 closure, which is basically where the 347 00:14:18,320 --> 00:14:26,839 robot can tell where different um 348 00:14:22,720 --> 00:14:26,839 Sorry, my bad. Uh 349 00:14:27,519 --> 00:14:33,760 so for example, if the robot is on one 350 00:14:30,560 --> 00:14:35,519 side of the column and is on one side of 351 00:14:33,760 --> 00:14:37,680 a column, it can't see around the other 352 00:14:35,519 --> 00:14:39,839 side of it. But if it walks to the other 353 00:14:37,680 --> 00:14:42,720 side of that column, um it will then 354 00:14:39,839 --> 00:14:45,440 superimpose that pre that new data onto 355 00:14:42,720 --> 00:14:47,519 the old data to create a fuller map. The 356 00:14:45,440 --> 00:14:50,720 way these nodes work is they basically 357 00:14:47,519 --> 00:14:53,600 create um each node is a landmark or a 358 00:14:50,720 --> 00:14:55,120 feature within the map. So one might be 359 00:14:53,600 --> 00:14:56,639 on one side of the column and another 360 00:14:55,120 --> 00:14:58,800 node might be on the other side of the 361 00:14:56,639 --> 00:15:00,560 column. An edge is something that 362 00:14:58,800 --> 00:15:02,320 connects two of those columns. So an 363 00:15:00,560 --> 00:15:05,279 edge might be the value of the odometry 364 00:15:02,320 --> 00:15:07,440 data between those two locations. When 365 00:15:05,279 --> 00:15:09,600 you're working with loop closure, what 366 00:15:07,440 --> 00:15:11,839 it does is it tells if two nodes are 367 00:15:09,600 --> 00:15:13,839 actually at the same location. So if the 368 00:15:11,839 --> 00:15:16,240 robot walks around that column back to 369 00:15:13,839 --> 00:15:18,240 its original location, SLAM will notice 370 00:15:16,240 --> 00:15:20,480 that, hey, these two locations are in 371 00:15:18,240 --> 00:15:23,600 the same spot. So it will adjust the 372 00:15:20,480 --> 00:15:27,199 length of those edges, 373 00:15:23,600 --> 00:15:30,399 pardon me, so that the two places are in 374 00:15:27,199 --> 00:15:33,040 the same location on the map. 375 00:15:30,399 --> 00:15:36,160 So, I've talked before a little bit how 376 00:15:33,040 --> 00:15:40,880 this is where I got my start with using 377 00:15:36,160 --> 00:15:43,680 navigations, using a bit of um AAR to 378 00:15:40,880 --> 00:15:46,560 get my old project to navigate through 379 00:15:43,680 --> 00:15:48,880 the world around it. So, what this one 380 00:15:46,560 --> 00:15:51,199 did uh what this one did is it had a 381 00:15:48,880 --> 00:15:53,199 point lighter. So, instead of having a 382 00:15:51,199 --> 00:15:54,560 rotational one, it only had one at the 383 00:15:53,199 --> 00:15:56,560 front. So, it could only tell what was 384 00:15:54,560 --> 00:15:58,959 directly in front of it. To solve this, 385 00:15:56,560 --> 00:16:02,240 I basically made Pinchy spin in a 386 00:15:58,959 --> 00:16:03,920 circle. So it create it was its own uh 387 00:16:02,240 --> 00:16:06,880 lighter. 388 00:16:03,920 --> 00:16:08,480 So I'm going to show you a video where 389 00:16:06,880 --> 00:16:11,040 Pinchy has finished spinning in a 390 00:16:08,480 --> 00:16:13,279 circle. It then sends all of that data 391 00:16:11,040 --> 00:16:15,279 over to my laptop which creates a map 392 00:16:13,279 --> 00:16:17,279 and then you pick a location on that map 393 00:16:15,279 --> 00:16:20,800 which then sends the data back to Pinchy 394 00:16:17,279 --> 00:16:22,480 and it will walk to that location. 395 00:16:20,800 --> 00:16:24,959 So if you can see there it's just 396 00:16:22,480 --> 00:16:27,600 finishing up 397 00:16:24,959 --> 00:16:30,240 and then it has created a small map on 398 00:16:27,600 --> 00:16:32,959 my laptop. This was from like a year ago 399 00:16:30,240 --> 00:16:35,839 though, so I'm very proud of year 11 and 400 00:16:32,959 --> 00:16:38,240 me. 401 00:16:35,839 --> 00:16:40,720 Thank you. 402 00:16:38,240 --> 00:16:42,560 Uh, so on that map, it's kind of hard to 403 00:16:40,720 --> 00:16:44,160 see, but on the right side, you can kind 404 00:16:42,560 --> 00:16:45,680 of see the four walls of the room I was 405 00:16:44,160 --> 00:16:49,759 in. And on the left side, you see that 406 00:16:45,680 --> 00:16:52,399 denser cluster, which is um the hallway 407 00:16:49,759 --> 00:16:57,600 I was in when I recorded this. 408 00:16:52,399 --> 00:17:00,639 So moving moving along uh 409 00:16:57,600 --> 00:17:03,839 uh with this current version I've tried 410 00:17:00,639 --> 00:17:05,760 to implement a proper slam algorithm so 411 00:17:03,839 --> 00:17:07,919 it's able to actually reference 412 00:17:05,760 --> 00:17:10,799 different frames and be able to navigate 413 00:17:07,919 --> 00:17:12,640 between the two. Unfortunately it didn't 414 00:17:10,799 --> 00:17:16,400 work. 415 00:17:12,640 --> 00:17:19,439 So the slam toolbox which was the topic 416 00:17:16,400 --> 00:17:22,799 oh not the topic the actually sorry my 417 00:17:19,439 --> 00:17:25,280 bad it was the topic the topic that was 418 00:17:22,799 --> 00:17:28,000 being used to create the slam map um was 419 00:17:25,280 --> 00:17:29,760 failing to compute the odometry data. So 420 00:17:28,000 --> 00:17:31,760 this basically led to all of the 421 00:17:29,760 --> 00:17:34,880 different nodes being placed one on top 422 00:17:31,760 --> 00:17:36,960 of the other. So it ended up just uh 423 00:17:34,880 --> 00:17:38,880 failing to create a map cuz there was no 424 00:17:36,960 --> 00:17:41,360 edges. So there was no loop closure and 425 00:17:38,880 --> 00:17:42,720 it just failed to do like do anything 426 00:17:41,360 --> 00:17:45,440 from there. 427 00:17:42,720 --> 00:17:47,520 If anyone knows how Slam Toolbox works 428 00:17:45,440 --> 00:17:49,840 and how I can fix this, uh, please talk 429 00:17:47,520 --> 00:17:52,640 to me. That'd be great. I'd like to get 430 00:17:49,840 --> 00:17:55,039 this working at some point. So, moving 431 00:17:52,640 --> 00:17:57,360 on to the physical design of it. Uh, 432 00:17:55,039 --> 00:17:59,120 Pinchy is 3D printed in this newer 433 00:17:57,360 --> 00:18:02,160 version, like I mentioned before, that 434 00:17:59,120 --> 00:18:04,640 allows me to create uh complex pieces of 435 00:18:02,160 --> 00:18:08,000 my own design that have the ability to 436 00:18:04,640 --> 00:18:10,080 lift itself up. Uh, underneath that mess 437 00:18:08,000 --> 00:18:12,080 of cables, you can see the three 438 00:18:10,080 --> 00:18:14,400 segmented body. Uh those are all 439 00:18:12,080 --> 00:18:15,919 connected with biscuit joins uh which I 440 00:18:14,400 --> 00:18:18,720 thought would be structurally stable 441 00:18:15,919 --> 00:18:21,200 enough. Uh that comes up later by the 442 00:18:18,720 --> 00:18:23,760 way. So remember that. It's a tool 443 00:18:21,200 --> 00:18:26,960 that'll help us later. 444 00:18:23,760 --> 00:18:29,520 Moving on, we have the claws that I 445 00:18:26,960 --> 00:18:31,840 modeled after an actual scorpion claw. 446 00:18:29,520 --> 00:18:34,559 So they have one movable finger and one 447 00:18:31,840 --> 00:18:36,720 stationary finger. This allows the servo 448 00:18:34,559 --> 00:18:39,679 to output all of the force to one 449 00:18:36,720 --> 00:18:41,760 location rather than having to put like 450 00:18:39,679 --> 00:18:44,880 distribute it across multiple different 451 00:18:41,760 --> 00:18:46,720 pinches. Uh I designed the claws so that 452 00:18:44,880 --> 00:18:48,640 when they were perpendicular to the 453 00:18:46,720 --> 00:18:50,720 pinchie's body, they would meet in the 454 00:18:48,640 --> 00:18:52,320 middle and be parallel. So when at rest, 455 00:18:50,720 --> 00:18:54,080 it would kind of just sit like an actual 456 00:18:52,320 --> 00:18:56,240 scorpion. 457 00:18:54,080 --> 00:18:58,480 On the side there, you can see the legs 458 00:18:56,240 --> 00:19:01,120 that have like three kind of four 459 00:18:58,480 --> 00:19:03,280 segments. So, 460 00:19:01,120 --> 00:19:06,320 I've got with the leg design, I've got 461 00:19:03,280 --> 00:19:08,720 it so that um Pinchy can move pretty 462 00:19:06,320 --> 00:19:11,200 similarly to an actual scorpion. Uh the 463 00:19:08,720 --> 00:19:13,360 base one on the top left is actually the 464 00:19:11,200 --> 00:19:16,000 hip. So, that allows Pinchy to move in 465 00:19:13,360 --> 00:19:18,160 like this direction. So, the legs can 466 00:19:16,000 --> 00:19:19,760 move forward and backward. Then, I've 467 00:19:18,160 --> 00:19:22,080 got the middle one, which I call the 468 00:19:19,760 --> 00:19:24,559 feur, which allows Pinchy to move up and 469 00:19:22,080 --> 00:19:27,520 down, which is the same motion that it 470 00:19:24,559 --> 00:19:29,039 had uh back when it only had two servos. 471 00:19:27,520 --> 00:19:31,200 What I've added to this one is I've 472 00:19:29,039 --> 00:19:33,280 added the tibia, which basically allows 473 00:19:31,200 --> 00:19:35,360 Pinchy to have a knee, which is pretty 474 00:19:33,280 --> 00:19:37,200 similar to what an actual scorpion has. 475 00:19:35,360 --> 00:19:39,200 Even though they have like seven 476 00:19:37,200 --> 00:19:41,760 segments, I didn't have the weight 477 00:19:39,200 --> 00:19:44,720 management to put seven servos on a 478 00:19:41,760 --> 00:19:46,960 pinchy leg. So, I I thought three was 479 00:19:44,720 --> 00:19:49,679 enough. 480 00:19:46,960 --> 00:19:51,600 Moving on to the tail. The tail is 481 00:19:49,679 --> 00:19:54,480 designed after kind of a little bit like 482 00:19:51,600 --> 00:19:56,320 a human finger almost. So in your finger 483 00:19:54,480 --> 00:19:58,240 you have two tendons, one on the front 484 00:19:56,320 --> 00:20:00,080 and one on the back. The one on the 485 00:19:58,240 --> 00:20:02,080 front is contracted when you bend your 486 00:20:00,080 --> 00:20:04,400 finger down and is released when you 487 00:20:02,080 --> 00:20:06,559 bend your finger up. Uh the opposite is 488 00:20:04,400 --> 00:20:08,799 true for the one on the back. In the 489 00:20:06,559 --> 00:20:11,919 tail, it's got that same three segment 490 00:20:08,799 --> 00:20:14,880 design with a tendon on the front which 491 00:20:11,919 --> 00:20:17,520 is controlled by a spindle. So that gets 492 00:20:14,880 --> 00:20:19,760 pulled in contracting the tail. But what 493 00:20:17,520 --> 00:20:22,000 I have is I have elastic on the back of 494 00:20:19,760 --> 00:20:25,919 it. So, in its natural resting position, 495 00:20:22,000 --> 00:20:28,559 the tail ends up standing back upward. 496 00:20:25,919 --> 00:20:30,880 Actually, before I go on to that, I put 497 00:20:28,559 --> 00:20:33,600 I ended up choosing to put a claw on the 498 00:20:30,880 --> 00:20:35,200 end of Pinchie's tail rather than an 499 00:20:33,600 --> 00:20:38,600 actual stinger because I'm pretty sure 500 00:20:35,200 --> 00:20:38,600 that's illegal. 501 00:20:38,720 --> 00:20:44,000 And I didn't want to get arrested for 502 00:20:40,559 --> 00:20:46,080 doing cool robots. 503 00:20:44,000 --> 00:20:47,919 So, I mentioned this before, but these 504 00:20:46,080 --> 00:20:50,320 are kind of the physical changes that 505 00:20:47,919 --> 00:20:52,000 Pinchy has been through. So you can see 506 00:20:50,320 --> 00:20:54,480 there how I've gone from one single 507 00:20:52,000 --> 00:20:57,200 block design to a more elegant three 508 00:20:54,480 --> 00:20:59,600 segment design for the body. Uh then 509 00:20:57,200 --> 00:21:03,280 I've got the single leg segment moving 510 00:20:59,600 --> 00:21:05,840 on to the different uh the act the more 511 00:21:03,280 --> 00:21:07,919 complex leg segments. Then I've I didn't 512 00:21:05,840 --> 00:21:10,480 have a tail before so now I actually 513 00:21:07,919 --> 00:21:13,480 have one instead. 514 00:21:10,480 --> 00:21:13,480 So, 515 00:21:16,799 --> 00:21:21,840 where I want to go with Pinchy is more 516 00:21:18,799 --> 00:21:24,000 like the image on the left with Pinchy 517 00:21:21,840 --> 00:21:26,080 with there being an enclosure around all 518 00:21:24,000 --> 00:21:28,880 of the different components rather than 519 00:21:26,080 --> 00:21:31,840 just everything being free to air, which 520 00:21:28,880 --> 00:21:34,559 means that I'd at least be like hiding 521 00:21:31,840 --> 00:21:36,000 the poor cable management. 522 00:21:34,559 --> 00:21:39,720 I wouldn't be getting so much judgment 523 00:21:36,000 --> 00:21:39,720 right now if I did. 524 00:21:39,840 --> 00:21:44,480 No judgment. 525 00:21:41,919 --> 00:21:46,159 Uh the next thing I want to do even if I 526 00:21:44,480 --> 00:21:48,640 can't hide the poor cable management is 527 00:21:46,159 --> 00:21:51,120 I want to go to PCB so that I can at 528 00:21:48,640 --> 00:21:52,799 least um because we know that the cable 529 00:21:51,120 --> 00:21:55,360 management is not getting better. It 530 00:21:52,799 --> 00:21:56,960 hasn't for the last 2 years and it's not 531 00:21:55,360 --> 00:21:58,720 going to get better in future. So if I 532 00:21:56,960 --> 00:22:01,200 just move to a system with the least 533 00:21:58,720 --> 00:22:03,280 cables possible then I avoid the 534 00:22:01,200 --> 00:22:05,200 problem. Right? 535 00:22:03,280 --> 00:22:07,600 So that's where I want to go with 536 00:22:05,200 --> 00:22:09,840 Pinchi. But talking about the physics of 537 00:22:07,600 --> 00:22:13,200 it all, uh the way torque works with the 538 00:22:09,840 --> 00:22:15,280 servo is uh say you it's proportional to 539 00:22:13,200 --> 00:22:17,840 the length of the arm of the servo. So 540 00:22:15,280 --> 00:22:22,720 say you have a servo that can output 10 541 00:22:17,840 --> 00:22:26,400 kg of force at 1 cm at at 10 cm it will 542 00:22:22,720 --> 00:22:31,600 be able to output 1 kg of for uh did I 543 00:22:26,400 --> 00:22:35,200 say 10 at the 1 cm? So if you say um a 544 00:22:31,600 --> 00:22:38,720 servo can output 10 kg of force at 1 cm, 545 00:22:35,200 --> 00:22:40,159 it can output 1 kg at 10 cm. Because you 546 00:22:38,720 --> 00:22:43,679 have 10 times the distance, you have 547 00:22:40,159 --> 00:22:45,679 1/10th one/10enth the force. Then with 548 00:22:43,679 --> 00:22:48,400 the walking gate, I've based it off of 549 00:22:45,679 --> 00:22:50,559 actual uh insectile movement. So what 550 00:22:48,400 --> 00:22:52,559 Pinchi does is called an alternating 551 00:22:50,559 --> 00:22:54,480 tripod walking gate, which I like to 552 00:22:52,559 --> 00:22:56,000 picture as two different overlapping 553 00:22:54,480 --> 00:22:57,840 triangles 554 00:22:56,000 --> 00:23:00,559 with each point of the triangle being a 555 00:22:57,840 --> 00:23:02,799 different leg. So on one side you have 556 00:23:00,559 --> 00:23:05,039 the foremost and backmost leg on one 557 00:23:02,799 --> 00:23:07,360 side being the points of the triangle 558 00:23:05,039 --> 00:23:09,760 and the middle one on the and the middle 559 00:23:07,360 --> 00:23:13,039 leg on the other side being a triangle 560 00:23:09,760 --> 00:23:14,720 being the point of the triangle. So then 561 00:23:13,039 --> 00:23:18,559 and the opposite is true for the 562 00:23:14,720 --> 00:23:20,880 mirrored uh triangle. So these basically 563 00:23:18,559 --> 00:23:23,520 act as the two steps for Pinchy being 564 00:23:20,880 --> 00:23:25,840 able to all of those legs being moved in 565 00:23:23,520 --> 00:23:27,600 sequence. So three legs are always in 566 00:23:25,840 --> 00:23:30,960 contact with the ground at any given 567 00:23:27,600 --> 00:23:32,799 time. Meaning that Pinchy is able to 568 00:23:30,960 --> 00:23:34,880 Pinchy is a like Pinchi center of 569 00:23:32,799 --> 00:23:36,559 gravity is always supported within that 570 00:23:34,880 --> 00:23:38,720 triangle. 571 00:23:36,559 --> 00:23:41,360 Moving on to the problems we talked 572 00:23:38,720 --> 00:23:43,600 about before. This is where the biscuit 573 00:23:41,360 --> 00:23:46,880 join thing that I ca that I talked about 574 00:23:43,600 --> 00:23:48,880 came in. So, 575 00:23:46,880 --> 00:23:51,120 may or I may or may not have been 576 00:23:48,880 --> 00:23:53,840 transporting Pinchy. And there may or 577 00:23:51,120 --> 00:23:57,120 may not have been Pinchy in too small a 578 00:23:53,840 --> 00:24:00,080 box. They put Pinchy um that put too 579 00:23:57,120 --> 00:24:02,320 much force on a joint that was not meant 580 00:24:00,080 --> 00:24:04,559 to take force in that direction. And it 581 00:24:02,320 --> 00:24:06,559 may or may not have delaminated the 582 00:24:04,559 --> 00:24:10,159 joint. 583 00:24:06,559 --> 00:24:12,799 Yeah, unfortunate. Um but we are still 584 00:24:10,159 --> 00:24:15,520 going to do a live demo. And if Pinchi 585 00:24:12,799 --> 00:24:18,760 dies gloriously on this stage, then so 586 00:24:15,520 --> 00:24:18,760 be it. 587 00:24:22,000 --> 00:24:25,039 So, 588 00:24:23,600 --> 00:24:27,360 I'm going to move Pinchion onto the 589 00:24:25,039 --> 00:24:30,240 floor so it doesn't 590 00:24:27,360 --> 00:24:32,799 fall into the audience. 591 00:24:30,240 --> 00:24:35,799 There we go. 592 00:24:32,799 --> 00:24:35,799 Yes. 593 00:24:41,679 --> 00:24:45,720 very quietly. 594 00:24:46,080 --> 00:24:50,559 There we go. 595 00:24:49,039 --> 00:24:53,919 It wants me to log back into the 596 00:24:50,559 --> 00:24:56,919 Raspberry Pi. 597 00:24:53,919 --> 00:24:56,919 What? 598 00:24:58,559 --> 00:25:01,559 All right. 599 00:25:01,840 --> 00:25:05,799 Just turn everything on. 600 00:25:06,080 --> 00:25:09,480 Something moved. 601 00:25:14,880 --> 00:25:19,919 This is the moment. This is when it all 602 00:25:17,360 --> 00:25:22,240 either works perfectly or it dies 603 00:25:19,919 --> 00:25:26,640 gloriously. 604 00:25:22,240 --> 00:25:29,640 Three, two, one. 605 00:25:26,640 --> 00:25:29,640 Oh, 606 00:25:29,840 --> 00:25:33,600 we saw a move. 607 00:25:30,880 --> 00:25:35,560 We saw a move. 608 00:25:33,600 --> 00:25:38,010 Oops. 609 00:25:35,560 --> 00:25:40,400 [Music] 610 00:25:38,010 --> 00:25:44,840 [Applause] 611 00:25:40,400 --> 00:25:44,840 It did in fact die gloriously. 612 00:25:45,520 --> 00:25:48,520 Yeah. 613 00:25:50,320 --> 00:25:54,720 Thank you. 614 00:25:52,080 --> 00:25:57,760 To honor Pinchie's glorious sacrifice to 615 00:25:54,720 --> 00:26:00,000 the community of PyCon. Uh I do have some 616 00:25:57,760 --> 00:26:02,640 actual footage from a previous 617 00:26:00,000 --> 00:26:04,640 demonstration. 618 00:26:02,640 --> 00:26:06,640 So, we will get to see it like properly 619 00:26:04,640 --> 00:26:09,760 walk and things. But first, on the 620 00:26:06,640 --> 00:26:11,760 right, you can see my um the LAR scan of 621 00:26:09,760 --> 00:26:15,679 the Airbnb I'm staying at. So, if you 622 00:26:11,760 --> 00:26:20,559 want to try and dox me, go for it. 623 00:26:15,679 --> 00:26:22,720 But here is the video of Pinchy walking. 624 00:26:20,559 --> 00:26:26,660 Oo. 625 00:26:22,720 --> 00:26:29,999 And then got Thank you. 626 00:26:26,660 --> 00:26:29,999 [Applause] 627 00:26:30,159 --> 00:26:36,080 Uh, I've actually got some more videos. 628 00:26:33,679 --> 00:26:38,000 So, this is one of the claws working. 629 00:26:36,080 --> 00:26:40,880 Those claws are actually really strong. 630 00:26:38,000 --> 00:26:43,360 Like that servo can output 35 kg at 1 631 00:26:40,880 --> 00:26:45,120 cm. So, if you like stick your finger, 632 00:26:43,360 --> 00:26:48,080 if it wasn't made from PLA, it could 633 00:26:45,120 --> 00:26:52,400 probably break your finger. 634 00:26:48,080 --> 00:26:56,679 So, the third and final video 635 00:26:52,400 --> 00:26:56,679 is the tail mechanism. 636 00:27:02,000 --> 00:27:08,000 All right. 637 00:27:04,880 --> 00:27:11,159 Thank you for coming to my presentation. 638 00:27:08,000 --> 00:27:11,159 Thank you. 639 00:27:11,460 --> 00:27:18,190 [Music]