Jan. 22nd, 2022

Yo-yo robot part 1: concepts and machining first parts.

The key to happiness in life is simple — sandblast everything.


So I'm slightly surprised I haven't seen someone do this already (to my knowledge, will update if I find something) — a robot that can yo-yo a yo-yo. I got this idea after my friend Carolina Warneryd gifted me one of her 2.008 yoyo's designed to be a pi-pie yo-yo — so huge shoutout to her b/c she's the best :)!

The idea here is while we're waiting for parts for the Pixar Lamp to come in and while we're re-thinking some of the things we want to do with the lamp, with the spare parts we have from previous random projects and some spare metal lying around the lab no one's ever going to use, let's make a 1DoF arm that can yo-yo!

The design is super simple, take a high torque skateboard motor and connect it to an Odrive and get an Encoder for the Odrive so we can do field-oriented-control just like we did with the Pixar Lamp. A lot of the software will be very similar between the two projects which is why we think this will be short and fun. 

Mechanically, we will attach an arm to the motor and attach the motor to a base and make the arm move such that it yo-yo's the yo-yo.

We'll talk about control more in part 2 of this post, but for now we can think of the yo-yo'ing problem as a few parts.

  • The length of the string on the yo-yo is a parameter that determines how the system will function.

  • The length of the arm that yo's the yo-yo is also important and we think there's a ratio between these two lengths that we need to achieve. The string is variable in length so that makes this system easy to tune. 

  • The motion control of the arm is of course important but we will take some high-speed videos of us yo-ing the yo-yo in the next post.

Today we're going to machine most of the yo-yo robot not including the arm because we need a hub for the motor, that's the only thing we hope to buy for this project.


Here's our starting pile of parts, a few pieces of metal from lab, the motor, couple screws, drills, and taps. The plan is essentially to make a large L-bracket with side plates that has holes to mount the motor as well as the ODrive. We're going to do most of the machining by hand on the prototrak. Since this is a quick project the only CAD we'll have is what's necessary for the waterjet.


We started by fixturing one of the two metal 6x6x1/4" plates to the mill and drilling four M5 tap holes into the horizontal side. We zero-ed to one corner and came up with a hole pattern we could match on a second 6x6x1/4" plate's top face to bolt the two together at a right angle.

Then we fixtured the second plate to the mill flat with parallels, because we're drilling so close to the edge of the stock though, after clamping down we removed the second parallel and drilled an M5 clearance hole pattern into the face. We didn't take the time to face the parts to a nice surface finish because sandblasting later will take care of that.


The above image shows the matching hole pattern between the two pieces we're going to bolt together. We tapped the inner holes so we could screw the faces together with socket-head-cap screws we found in D-lab. We're going to make all of the pieces for the main L-bracket before drilling the holes to mount the motor, the hole for the shaft, and the mounting holes for the O-drive.

Because screwing two pieces together at right angles would make a somewhat flimsy bracket we water-jetted out some side support panels out of 1/8" 6061 aluminum with holes for the M5 screws into the side of the L-bracket. We put this assembly on the mill and marked out the holes for the side-tapped M5 screws. Drilled them out and tapped them using the mill's DRO to align them.


The next step was to mill out a 0.75" slot that allows the shaft of the motor to pass through the metal L-bracket. We then took the mechanical specs of the motor and used the mill to drill out the 44mm diameter M4 mounting hole pattern we'll use to hold the motor to the bracket. We then marked out the hole pattern from the ODrive mechanical documentation drilled them out and tapped some M3 holes for the standoffs.


We bolted together the whole assembly with the exception of the electronics to test the fit. We also added the stand-offs for the ODrive and ensured the mounting holes were correctly spaced and the holes lined up. We're happy with the assembly so far, it's amazing how well holes line up when you measure things with the mill.


We stuck the whole assembly in the sandblaster as one piece. We kept the bolts in as well as the standoffs because we were worried the sandblaster would ruin the threads we tapped into the faces of the part. Sandblasting took a half an hour or so because we wanted a smooth surface finish. 

A fun side effect of sandblasting the assembly as a unit was the black-oxide coated screws got sandblasted as well. Initially I was a little worried the black-oxide surface finish wouldn't hold up to the sandblasting. But it actually turned out to be this really nice space grey surface finish after we were done. Probably not great for the screws but it looks super slick.


After the assembly came out of the sandblaster we bolted the motor on and mounted the ODrive just to make sure all the holes lined up and there was no residual stress in the system. We noticed the standoffs were a little too low for the capacitors on the back of the ODrive and for our solder joints to not short against the metal so we replaced them for bigger standoffs.

We then migrated to the EE room and turned on the soldering iron and grabbed some copper wire off the rack as well as some heat shrink and motor bullet connectors. Ideally we would have used silicone wire but we didn't have any left over. We soldered the motor cables on and heat-shrunk over the ends. We also added an XT60 battery connector as well as header pins for the encoder. Data will come from the micro USB just like the Pixar Lamp.


We assembled the final system and cleaned up the wiring a little bit. There's still a few things we have left to do.

  • First, we need to wait for the encoder to come in so we can mount that to the motor and wire that into the ODrive.

  • We also are waiting for the 10mm hub to come and then we can make a mount that connects that to the carbon fiber tripod extension we're using for the arm.

  • We also still have to design the "hook" or the system that holds the yo-yo onto the end of the arm but we're going to wait until we make the arm (probably tomorrow because that's when the parts are going to come in).

That's all we're going to get to today! This will probably be a quick robot so we hope to finish the whole thing in two-three updates. We'll be finishing the hardware over the next few days and then working out the control after the encoders come in and then hopefully make a cute video at the end. But that's all for now, 'till next time.

#yo-yo #machining #hardware #electronics