LocksleyFox (Part 6): The Leg Is a Success

· J.D. Wisgo

In the last week or two, I've been doing a lot more things with the LocksleyFox project. I've been doing some design, a lot of simulations, printing a bunch of parts, and validating those as well. When I find issues, I give them back to Claude and redesign things, and we kind of iterate on that until we have parts that work. Then I put them together and do actual physical tests.

I've been making a bunch of videos, especially to show the live tests as well as a bunch of the simulations I did, and I've also been adding some logs to the main LocksleyFox page.

The leg

After going back and forth, I can pretty confidently say the leg has been a success. What I mean by that is that I've done a bunch of tests with a few different iterations of the leg.

The first one I printed was 1.0f, then I printed 2.0b, and I'm also printing 2.0c. With the 2.x versions, the biggest difference is a smoother, more organic look. But all of them perform similarly. Besides the visual difference there are some minor differences. The weight is very similar, not a huge difference, and there are some minor things to help with stress, in terms of strengthening, to reduce the chances of cracking if things ever fall or take a lot of force.

But even from the beginning, the first one I printed, the 1.0f, was actually able to move smoothly, do a little hop and even kick objects. I've been iterating on that, and with the latest one, the 2.0b, I was able to do an even higher hop, after raising the power supply limit.

The hops are tricky because I have to hold it with my hand. It's a little imbalanced, and it goes off to the side if I try to set it up in some static setup. So by turning it maybe about 20 degrees with my hand, I can get it to bounce relatively vertically. That's what I've been doing, and I cranked it up to about 1.1 meters per second. All the details are in my latest log.

I really do feel like the leg has been a success, even in terms of sturdiness. Although I've been using PLA with some basic settings that could be stronger, the pieces feel pretty strong. Even with these forces where I'm kicking objects, doing a lot of bounces and doing heat tests, they seem pretty solid. I'm sure they'll eventually break, and I'll see situations where they either break suddenly or gradually over time. Maybe things will get looser. But overall, I think they're pretty good.

The body and eight motors

The next step is to print out a bunch of these legs and attach them to the body. The body is something I'm still working on the design of. There's basically a top tub and a bottom tub. I guess the top part is now called the cover. I'm currently printing the front of the bottom tub, which will hopefully be finished tomorrow, and then I'll be doing the back part. Once I screw those two together, I'll have sort of a base for the four legs. Ideally, I can then put the motors in, wire it up and get it to walk.

There are still some minor things I need to figure out in terms of how to wire it up. I've already done some tentative things there. I haven't tested all the hardware, partially because I'm waiting for it to come in. The only tricky thing is that I've only been running two motors at a time. Now I need to run a total of eight, two times four, because of course there are four legs.

There are some minor challenges there, and I might run into issues. But the hardware I have, plus the hardware that's coming in the next week or so, really should work with eight motors without too much of a problem. I could run into some hang-ups, but I'm not expecting too many.

The Powerful Teensy

The other good news is that I did some research, and it looks like I can actually do a good amount of work with the Teensy, which is kind of like the mini CPU I've been using to drive the motors.

My tentative goal was to eventually get an NVIDIA Jetson, which is quite powerful. Although I'd still like to get one, they're quite expensive. I think they start at about $400. They would of course add more weight, and in addition to the cost, there would be the programming and a lot of extra work. I do want to play with those eventually, but I also want to keep the budget down and get to a minimum viable product, or at least a prototype that walks.

The good news is that after doing simulations and some real tests with the Teensy, I was able to determine that some of the policies I've been training using MuJoCo can actually go straight onto the Teensy. There are some memory concerns, flash versus regular memory, and some details I'm still working on.

But I think once I get the legs on and the wiring done, while continuing to use the Teensy I'm working with now, I can probably put a policy on there, a basic walking one, and have it walk. Maybe around my garage, with a padded ground in case it falls down. I want to be careful, because if it falls suddenly, it's actually a lot of weight and it could damage the leg. So there are some concerns there. I could use a sheet, a blanket or pillows, something like that. I could also put pads around it, like knee pads, to try to make sure it doesn't get damaged when it falls.

So I've got a lot of plans there, but I think I'm really on the right road to getting an actual walking robot, and I'm glad I can put the Jetson off into the future. When I do things like having a camera, understanding what it's looking at or following a person, I'll probably need to upgrade to either a Raspberry Pi or, like I said, the Jetson. But there are enough costs just figuring out how to print stuff, and all the motors, because again, there are eight, and that cost adds up.

I think I'm definitely on the right path. Hopefully in the next week or two I'll have everything I need, because I'm still waiting for the parts to come in, especially the remaining motors. Then it's just wiring it up and gradually doing baby steps, keeping it safe so it doesn't fall and get damaged.

Mistakes and a bigger nozzle

I went through a lot of iterations with the legs, a lot of back and forth. Of course, Claude makes mistakes and forgets things. That's kind of expected with Claude, so I've been doing a lot of verification. Once in a while, a print goes bad or there's something that's just wrong. The good news is that nobody's getting hurt and nothing's exploding. It's relatively safe.

It's also not that much extra cost. The good thing about a 3D printer is that if a print does fail, in the worst case you lose maybe a few dollars, or maybe a few cents. You might lose a bunch of time, though, since some of the big prints I'm doing can take 10 or 12 hours.

One thing I did do is buy a 0.6 nozzle for my printer, the QIDI Plus 5. That actually allows a pretty significant improvement in overall build time. Just to give a rough idea, something that would have taken maybe 12 hours with the 0.4, which is the one that comes with it, could take eight or nine hours with the 0.6. Again, it depends on the model. But it helps if you have big chunks like big walls and simple areas, because it actually lays down more filament at a time. The trade-off is that if you need fine detail, it's not going to work well. But it seems a lot faster so far, so that's a good improvement in the overall flow.

I think that's it for now. Thanks for reading, and hopefully I'll update in a few more days.

Videos and pictures

A seated person holding a wooden beam with the gray robot leg clamped to its end, the paw on a black mat, and a bench power supply reading 48 volts behind it
Holding the beam by hand during the 1.1 m/s run, with the supply behind it.
The gray 2.0b leg clamped under a wooden beam, with the knee bent and the paw resting on a black mat
The 2.0b leg on the rig, before its first powered move.
The gray front section of the robot's bottom tub with orange 3D printing supports under it and inside the motor bore
The front of the bottom tub as sliced, with the supports in orange.
The 1.0f leg kicking objects.
The 1.0f and 2.0 designs side by side, showing the more organic look.
Printing the 2.0c thigh, from first layer to first look.
A simulation of dropping the robot until it breaks.