I had a dream of developing an animated Christmas Holiday Season display, potentially as a fund raiser for the arts. My original idea was to use puppets as characters, but reading and investigating made me curious as to whether I could build an animatronic penguin.

This instructable concentrates on the torso, which has four degrees of freedom, allowing the figure to move about in many directions. As a goal, I wanted a penguin that could "dance".

For more information, go to www.djsfantasi.com 18+

Step 1: Parts and Tools

The body skeleton was made of model aircraft plywood, with homemade servo brackets of 1/2" square strip wood. I used the following items in the construction of the torso
  • 4 sheets of 12x24 3mm plywood
  • ? 24" lengths of 1/2" square poplar stripwood (I bought out the craft store's supply!)
  • 4 HITEC HS422 servos
  • 1 6" Servo extension cable
  • 2 10" Servo extension cables
  • 6" Ball 2/56 threaded rod
  • 4 pair Ball Link sets
  • 4 Aluminum servo horns
  • 8 3/4" RC aircraft Hinges
  • Scrap aluminum angle
  • Miscellaneous small screws, nuts and bolts.

The tools I used were:
  • Saber Saw
  • Flat head and Phillips screwdrivers
  • Cutoff Saw
  • Drill press
  • Portable drill
  • Gorilla glue
  • ACC glue (super glue)
  • small Spray bottle of water
  • Clothes pins

Step 2: Design Torso Pivot Points

I wanted the body to move left and right, front and back and to both lean as well as "shimmy". A shimmy motion would be a move to one side or the other, where the head remains up straight; a lean would be where the head would follow the direction of the torso.

I decided to divide the body into four sections. two sections would pivot front and back, while the remaining two would pivot left and right.

Step 3: Base Plate

There were five plates required to divide the torso into four sections. After some experimenting, measuring plastic penguin toys waist sizes (Rico is pretty broad) and some estimating/resizing/projecting in Excel, I came up with the following diameters for the plates (from the bottom up) 10", 12", 11", 10", 6".

The plates have a 1" outer diameter circle, joined by a cross of 1" wide radial arms. All of the cutout material have rounded corners, to make it easier and neater to cut.The picture shows this rounded corner in the center, but it was used at the outside corners as well. This allowed the corners to be drilled on a press with a 1" Forstner bit and the cutouts were made from these access holes with a saber saw.

Centered along one cross arm, a piece of 10" long stripwood was cut. I originally had a shorter piece specified for this support, but practical experience proved it did not provide enough support for the servo linkages added later.  This is called the riser mount. I use a cut off saw for square edges; this is critical in some steps, so be accurate. This piece is glued with Gorilla Glue so that one edge is just on the center line, centered on the cross braces. I like to apply the glue to one part and spray the other part with a fine water mist. I then align the parts and clamp. Clothespins make great inexpensive clamps for this purpose.

On the second sketch, I add a 5" piece of stripwood for strength. This was glued to the cross arm at right angles to the side of the riser mount strip closest to the centerline.Do not butt this piece against the riser mount, but space it with a scrap of plywood so that there is a 3mm space. This space will be needed to insert the Riser Plate in Step 5.

Step 4: Servo Mount

One of the cross arms will be at a right angle from the side of the riser mount wood strip that is not on the center line. (The sketches show the plate at each point in this step). On this arm we will glue another piece of stripwood at right angles. Use one of your servos to determine the length of this piece. Make a mark on the center line at the 3-1/2" mark. With a round servo horn in place, slide the servo mounting tabs along the center line, until the mark is halfway between the edge of the servo horn and its center. Mark both sides of the servo and extend these marks across the cross arm.

From the mark furthest from the center of the plate, add another 1/2". From the center to this mark is the length of this strip wood piece. This will be the servo mounting base. Glue it along the center line with Gorilla glue.

Cut two pieces of stripwood 1-1/4" long (Actually, you will need 8 of these). Place it upright at the end of the servo mounting base and trace it's outline. Drill a pilot hole in the center of the square that you have just drawn and glue the stripwood piece upright in the square. Use the pilot hole you drilled to screw in a small screw into the wood, to clamp it to the plate while the glue cures. Once it has cured, this screw can be removed.

For the second piece, place the servo on the mounting base so that its mounting tabs overlap the upright stripwood. Then slide a second upright piece up snug on the other side of the servo and trace the 1/2" square outline of its base on the cross arm. Mount with glue as you did the other piece,

Note these steps can be done together on each of the four large plates, to minimize construction time delays to to glue curing times.

Step 5: Riser Plate

The riser is a 4" wide by 3" high rectangle of plywood. It has two holes for small screws drilled along one long edge,

At the other long edge, two RC aircraft hinges will be mounted. I drilled a larger hole in the center of each hinge (on both sides/leaf of the hinges), for mounting with a nut and bolt on the riser plate. If you do this, may I suggest adding a flat washer as well to distribute the holding power and to use Loc-Tite on the nut and bolt (#6, 3/8").

Once the hinges have been attached, place the riser plate on the base plate, centering it on the cross arms and 8" riser mount on the cross arms, in the slot left during the construction of the base place in Step 3.

Screw the riser plate to the riser mount with small screws (#6 pan head, 3/8")

I have attached the Google SketchUp file of the base plate. Viewing it from all sides is instructional.

Step 6: Riser Step Update

UPDATE: After operating the torso, I was not satisfied because there was too much flexibility in the riser plates. I further engineered the design of the riser plate to increase its stiffness and this resulted in much smoother motion.

I measured a second piece of plywood not quite as tall as the original riser plates - less the depth of the hinges or about 3/4". I actually marked out two copies on the plywood piece, so that I could drill a 1-1/4" hole along the line between the two. This hole provided clearance for the plate strengthening braces already installed (see picture) Then, two sub-plates were cut along the line, splitting the clearance hole into two semi-circles. You need four such sub-plates.

On each sub-plate, a 1/2" piece of stripwood was glued along the long edge opposite the clearance hole. Two additional pieces of stripwood, 1/2" less than the remaining side length were cut and glued along the edge, butting the top brace and leaving 1/2" clearance along the bottom for the riser mount brace. (This clearance is on the same edge as the semicircle).

Once this subassembly has been clamped and the glue cured, two 1/8" holes along the bottom edge are drilled as mounting holes.

Glue is applied along the stripwood braces. The sub-assembly is then placed back to the the original riser plate, as shown in the picture and clamped until the glue cures. Once the glue has set, two screws are used to fasten this sub-plate to the riser mount as the original riser plate was fastened in the previous step.

This creates a box structure for the riser plate which is stable and does not shake as much when the torso is moving rapidly.

Step 7: Linkage Mounting Tab

In the sketch, this is shown as having been built up with two pieces of wood (so far my favorite material). This proved to not have sufficient strength, so these aluminum mounting tabs were built to replace them in a couple of critical locations.

Drill two holes approximately 1/4" from the end and 1/4" apart, on the aluminum angle, to accept a #6, 1/2" bolt. On the other face, drill a 1/16" hole to accept the ball joint of the ball link set. Insert, tighten and use Loc-Tite, the ball joint. Cut off this short section of the angle on the cut off saw.

Drill a hole, to accept a #6 bolt, in the cross arm with the riser plate that is counter-clockwise one position from the servo mount. You can do one position clockwise or three positions counter clockwise (never two positions), but all plates must be made the same. To keep it simple - follow the directions; one position counter clockwise. The holes should be positioned so that the following three criteria are met. 1) The angle corner is at the edge of the cross arm, 2) the holes are clear of the riser mount plate and 3) the ball link is 3-1/2" from the center of the plate.

Bolt the Linkage mounting tab to the plate's cross arm through the holes just drilled.

Step 8: Basic Plate Assembly

You should now have four assemblies that resemble (closely!) the picture.

The next step is to attach them together. This will require some agility, as the larger assembly is quite floppy without its "muscles" (servos and linkages)

Two holes in the plate above must be drilled to match the holes in the RC airplane hinges. If you have been careful with your measurements, you might be able to drill all the holes together. If you are like me, trace the holes from the hinges on the riser to the plate above.

Note the orientation of plates above each other. The risers of each subsequent plate should be at right angles. The servo mounting posts should be directly below a linkage mounting tab above.

Note that this assembly requires five plates; we have been working with four. The top plate is the 6" diameter one. It will require that a linkage mounting tab be mounted.

Also note: The second from the bottom plate should tilt to the left and right. (The bottom plate is static). This should result in the top plate tilting back and forth.

The full assembly will look like the second picture.

A Google SketchUp file has been attached to show how all of the sections would look assembled; view it from all angles and you may find it informative.

Step 9: Mount Servos

Place a servo on a plate so that the axle is to the outside edge of the plate. Secure it to the posts with two screws on each end of the servo motor.

Attach the circular servo horn to an aluminum bracket. I used a Lynxmotion ASB-19B, with the last hole on its narrow end trimmed off for clearance. I originally used the plastic arm servo horns (seen in the picture on the top servo; the aluminum horn is seen on the bottom servo), but these were not strong enough under use for the lower two plates, which bear the highest load.

While the horn is detached, tightly attach one of the ball joints to the end of the bracket, with Loc-Tite, so that the ball is on the opposite side of the bracket from the circular servo horn. The ball joint must be attached solidly, as it bears the brunt of the torso movement's load.

Temporarily snap this sub-assembly onto the servo axle. Hold the servo vertical, the axle facing you and on the top of the servo. Then, manually twist the horn as far right as it can go. At this point, take the horn off and replace it so the arm is facing right. Then, if you twist the servo as far right and left as it can, halfway should be pointing straight up.

Attach the servo horn in this position with the supplied screw. Be careful; these screws are s-m-a-l-l.

Place a servo on a plate' servo mount so that the axle is to the outside edge of the plate. Secure it to the posts with two screws on each end of the servo motor.

Step 10: Assemble Linkage

Cut a piece of the threaded rod approximately 2" in length. Screw on one of ball sockets to one end of the rod.

Snap this onto the ball joint attached to the servo.

Snap another ball sockets onto the ball joint attached to the linkage mounting tab above. Align the ball socket and rod while holding the two plates parallel to each other.

This is where you need good fingernails or a third hand. Carefully mark the point on the rod that corresponds to the end of the ball sockets threads for the threaded rod. The fingernail can be used to mark the thread where the cut should be made. The third hand can hold a Sharpie for the same purpose. Cut the threaded rod at this point.

Remove the ball socket from the linkage mounting tab and screw it onto the end of the linkage rod that was just cut. Snap it back onto the ball joint above.

Note that the servo motors will just (barely) hold the plates parallel, if they are not disturbed by a sneeze, careless brush of fingers or a nearby open window. This is to be expected with standard analog hobby servos. Higher quality servos may not display this behavior.

You have to do this four times.

Step 11: Route Servo Control Wires

Connect servo extension wires to each of the servos. The bottom servo will not have an extension. The second servo will have a 6" extension and the top two servos will have a 10" extension. For the quite obsessed, custom servo cables can be made. Important! Label all ends of the cables, at the servo and both ends of the extension. If you remember to do this, you will thank me later.

Dress the cables down the center of the torso with spiral cable wrap or split cable tubing. Both are available at Radio Shack and the split cable tubing can be found in automotive supply stores.

At the base, I attached the servo controller to the riser with some stand-offs. The servo cables are plugged here into the servo controller. Write down which channel to which each cable is attached. I had tested the torso and controller with the controller separate from the body and mounted it to the riser later. When the cables were plugged in, nothing worked! I had plugged the cables in upside down on the controller. Document all connections!

Also on the base, is a circuit which helps synchronize the mouth movement to audio. It is described in this Instructable: Audio Amplifier and Envelope Follower

Step 12: Connect to Servo Controller and Test

I use an SSC-32 (serial servo controller - 32 channel) from Lynxmotion (http://www.lynxmotion.com ) to control my servos. Lynxmotion has a USB to serial converter that works well with their products, if you don't have a serial port on your laptop, desktop or microprocessor.

Additionally, they have a downloadable free terminal program (LynxTerm) that you should use while testing the torso's motion.

Individually move each of the servos and watch the body motion. I recommend starting with the top servo and working your way down. There should be no interference and the servo should be able to move the entire length of its travel.

Once each servo is tested, try moving them in pairs to make the torso move in what I call a shimmy or to have the torso lean forward and back or left and right. Combinations of the forward/back and left right servos will make the torso rotate or dance...

I have written software to script the Penguin's actions. This software communicates via the serial cable to make the animatronic perform. A description of the software can be found at http://www.lynxmotion.net/viewtopic.php?f=28&t=6695 as well as in this Instructable

Awesome robot Penguin. I would like to have one to amuse my kids.
Nice! is it autonomous or remote controlled? also, how are you planing on doing to skin?
Right now it is tethered to my laptop. I have developed software that will run 'scripts' for actions which include the capability of randomly generating moves so that the script is non-deterministic. In fact, the video is running that software, and his motions are pseudo-randomly generated. <br> <br>He does 'talk' as well, with a circuit that synchronizes the mouth movements to audio input. <br> <br>It can be controlled via an Internet connection as well, giving some remote control xapabilities. In fact, a friend and I are developing an iPhone application that will serve as a remote control device. <br> <br>I have been in discussions with a Boston area puppeteer, who is planning on making the skin for me. This is supposed to be a cortoonish character. The skin will be foam-based with a cloth covering. <br>
I could supply the software, but I am not able to support it. <br> <br>It requires first a knowledge of the FreeBASIC (FB) programming language. It will only work on a Windows system, in its current incarnation. Also in order to compile it, the FB network library for Windows needs to be customized... <br> <br>Secondly, the actual program implements a new programming language in interpretive mode. This language is pre-processed into an intermediate token format. I call this language A-Code. So using the program would also entail learning A-code as well. There currently no documentation for A-Code, although I have not ruled out creating such in the future. <br> <br>So my answer is that I am not supplying the software at this time, since it is not in a form such that it could be used by anyone. <br> <br>My apologies, <br>dj
That is insanely creative and awesome!
<p>Wow. So impressed. Wondering if you ever sell these?</p>
<p>Your projects mostly on animatronics, really brainstorming. I have built a cyborg head, where mouth moves based on stored phrases. These phrases are called by Arduino mini , randomly from an APR9600 chip...Should look as if the cyborg is saying whatever comes to his head..the challenge was the 4 servos, 2 for neck and one for eye horizonal and one for eyelid...I never managed to get the code to move them in a random way that replicates human movement..I mean each one moves randomly idependent from the others..Have you worked on such an idea, maybe you can thanfully throw some tips ?</p>
My A-Code has commands for Random Move and Random Pause. They could easily be implemented in an Arduino sketch. Basically, what I do is pick randomly from a series of moves that also includes random pauses between moves. I had to experiment with the pauses to make it look semi-realistic. <br><br>Look at my code for those commands, as well as Play Move, to get an idea.
You are awesome!
One word: Awesome!
We need more people like you in the world.
Totally agree!
This is really innovative. Nice work have you done.
Thanks. There are more videos on my channel showing more development Check out the comments for more info.
You are Einstein!
This is AWESOME. How did you come by the idea?
This is really awesome robot.
Uhh,how many servos do thee need for the whole penguin including eyes,eye lids,flippers,etc...BTW,do thou think it is a good idea for thee to change it into RC?
Total, there are 11 servos. Four in the torso; two for the flippers; one for the neck rotating ; two for the eyes and one for the eyelid (instructions in a separate Instructable) ; one for the mouth. As far as controlling via RC, it is entirely possible and people have asked me that. One warning is that the torso has several ways of moving, that may be difficult to control via RC alone. On a smaller scale, the eyes are independent and will take at least 3 channels and some coordination to move. Have you thought of dedicated servo controller circuits to a tethered cable?
Amazing !
Thank you
Amazing piece of art!
Uh,can you please give me an idea on how to make it smaller in size? By the way,how many servos do you need? Please reply because i have a science fair on thursday
This Thursday! Like yesterday now? It took me close to six months to build. It could be made smaller and there are smaller servos that could be used.
do i need any microcontrollers to build this? Or just servos?
You will need something to control the servos. If you are not familiar with hobby servos, they are a little more complicated than motors and require electronics to control. I used a commercial controller that my laptop talks to in order to control the Penguin.
All I can say is AWESOME!
Any update on your progress? I would love to see if you finally got it skinned and how that turned out.
Awesome invention.
This is truly a masterpiece!
Awesome work. Great instructable! Trying to make it right now :)....
Good luck. I updated one step this week, so don't miss it.
Amazing work have you done. Creative and stunning.
Thank you
Cool use of daily tools to build amazing robot...er.. Peter.
What part of the penguin's body is the piece of plywood screwed onto his front supposed to be?
I am not sure which piece you are referring to. <br> <br>Do you mean the plywood tab I am using to mount the electronics? But that is contained within his body...
..or are you looking at the side-view picture above? That is one of his arms - the curved shape...
great now we can make it babble like a baby and pontificate on how it will one day take over the world. who needs the discovery channel?
awesome project! <br>Didn't see anything about how you did the head portion - eyes mouth
The eyes are covered in this Instructable: <a href="https://www.instructables.com/id/Eyes/ ">https://www.instructables.com/id/Eyes/ </a><br> <br> I am <u>thinking </u>about creating an instructable for the head, covering the mouth movements as well as the neck where his head turns from side to side. but with encouragement from people like you, perhaps I will have to do it!&nbsp;<br> <br> The arms are straightforward to me; I may edit the torso Instructable to include them.<br>
I did find the part about the eyes, creative idea. They look as though they came from a store in the pictures. This is way beyond what I could attempt but the eyes are more in my area...I think ;)
Thanks everyone for your kind and inspiring comments.<br> <br> I am working on an update, to stiffen up some of the movements. Motion on the lower plate 'wobbles' some. The outer skin will dampen the effect, but the lowest two plates are subject to the most stress and I am designing a retro-fit brace to the riser plates... More to come!
That is great!
Awesome! This is the best robot that i wil tri to buid!!! thanks to share it with us.

About This Instructable




Bio: I am an IT professional. When I am not working, I love to putter around - whether it be a household project or animatronics. The interest ... More »
More by djsfantasi:Wireless Lockout Game Show Circuit Introduction: Pinewood Derby Race Finish Line Animatron 8.3: An Animatronic Controller 
Add instructable to: