Over the past couple weekends, I’ve managed to spend some time working on my animatronic Yoda head.
A couple years ago, we had a hack day at my previous job, and I built, with one other guy, a talking Yoda head with red or green glowing eyes that served as a build status monitor. That is, whenever our build (with all our automated tests) was passing, Yoda’s eyes would glow green. As soon as the build failed, the eyes would change to red, and he would say something. The jaw would move, and the speaker would play some kind of Yoda related sound effect. When the build was fixed again, Yoda’s eyes would go back to glowing green, and he would say something positive. Here’s a little video of him:
Unfortunately, Yoda wasn’t build to stand the tests of time. We moved offices, and he was damaged during the move, enough that he didn’t function any more. Considering he was built in only 16 hours, I think he did well.
Fast forward to now. There were tons of things I would have liked Yoda to be able to do, but that we obviously couldn’t get done in only 16 hours. So I’ve decided to build a new and improved Yoda, which I’m calling Yoda 2.0. My goal is to have him done (well, at least somewhat done, there will always be more to add) in time for Vancouver Mini Maker Faire 2012.
I decided that one of the first things to tackle was the thing I expected to be the hardest: the eyes. I want Yoda 2.0 to be able to look left and right, up and down, as well as near and far, which means independent horizontal control for the two eyes.
I figured I would use two micro servos for each eye, to look left and right, with a common frame for those servos, and a third servo to make him look up and down. With that plan in mind, I proceeded to construct this:
The metal is all from the frame of an old laptop screen, which has since been turned into a digital photo frame. It’s quite strong. I broke a few drill bits trying to drill only a couple holes in it. The idea was that the horizontal frame would rotate along the horizontal axis of the two ping pong balls used as eyes. To achieve this, on the left and right edges there is an upside-down L bracket coming from the rear horizontal bar, that comes up right beside the eyes. This bracket has holes in it in like with the horizontal axis of the eyes. My plan was to mount this to the head on pins of some sort, to allow it to rotate. The servo in the middle is also in-line with the axis, so by mounting that rigidly in the head, it should allow the eyes to look up and down.
A short aside:
A few weekends ago, I went antiquing with my girlfriend, and found a metal helmet:
I took one look at it and thought “Yoda”. Thankfully, it was only $12, so I bought it, took it home, and went straight to work with my Dremel, ending up with this:
Excellent! It fits perfectly inside the Yoda mask, and should serve as a perfect frame to attach everything to.
So, back to the eyes. I decided to use some of the PCL I have kicking around to make a prototype of a way of mounting the eyes to the head. I decided I better make it adjustable though, because it was very hard to figure out exactly where on the metal skull the eyes should be positioned. How far down, how far out, etc. I may have gotten a bit carried away though, because this is what I ended up with:
The bit on the left is where the pins should go to hold the eye frame, and allow it to rotate, and the slots on the right should mount on the side of the helmet. So, I got it all mounted, and this is what I ended up with:
The center servo isn’t yet attached, so I can rotate the eyes by hand to see how it works. And it worked great. Until I put the mask on it. The PCL mounts on the left and right stick out way too far sideways, and to far forward from the eyes, which either leaves them stretching the mask so badly that the PCL mounts are visible through the eye holes, or leaves the eyes sat back so far you can hardly see them. Well, back to the drawing board. I decided to call it a night.
Somewhere between calling it a night, and getting back to the workshop the next day, I dreamed up a better idea, and decided to start from scratch, rather than trying to refine the original frame. I decided to put the up-down swivel point between the eyes, instead of on the outside, and mount the servo away from the actual axis, and use a rod of some sort to actuate it. I didn’t have the idea perfectly worked out before I started, I just kind of trusted that I’d be able to work it out somehow. In the end, it paid off. Here is the new eye frame, from the back:
This new one is all made of copper and brass tubing, soldered together. (I managed to get a couple pounds worth of left-over small copper and brass tubing from a model railroader for $10 a few weeks ago, which just totally paid off.) The swivel is made from a hollow brass tube, with two slightly smaller diameter brass tubes inserted into it, and bent at a 90 degree angle, then slotted through holes drilled in the square copper bar, and soldered together. It rotates perfectly, so I went ahead with mounting it in the head. I did this by making a PCL mount in what I thought might be close to the right shape, and double-sided taping it into the helmet with the mask on it, to test:
It actually seems to fit pretty much perfectly, so I went ahead and drilled some holes to bolt it in solidly.
The next step was to make it look up and down. I spent quite a while playing with different bits of brass tube (best purchase ever) trying to find a way to actuate it through the range of motion I wanted, from a servo mounted somewhere in the skull. Eventually, after much trying, I got what I wanted, made a quick PCL mount (I love PCL so much) and came up with this contraption:
It works pretty well, as this video shows:
As you can see in the video and photo, I added a little bar to the back of the eye frame, and slotted a brass rod from the 3rd servo through it, to pull and push the eye frame back and forth. It works pretty well! Let’s see how it works with the mask:
Well, there’s a couple problems. One is that the vertical movement servo has too much flex in the way it’s mounted. When the movement of the eyes is obstructed or resisted at all by the mask, the servo flexes instead of moving the eyes. I think if I add 2nd mount to the back of the servo, this should largely prevent the flexing.
The bigger problem is that in order to look up, the servos below the eyes end up protruding forwards quite a bit. This means they end up hitting the mask, right in Yoda’s cheeks. I think the best way to fix this is to remove the servos from under the eyes, and put a small gear there instead, that rotates around a bolt that’s attached to a bar coming forward from the main horizontal copper bar. Then mounting the servo behind the eye, with a gear. As an alternative to the gears, since the eye only needs a range of motion of about 150 degrees, I may be able to fashion some sort of linkage. I’ll need to think about that a bit, and play around with some bits of wire before I commit to using some of my precious brass tubes.