TELEKING - the Robotic-puppet Chicken (3D PRINTER FREE)
by telekomor in Circuits > Arduino
2974 Views, 24 Favorites, 0 Comments
TELEKING - the Robotic-puppet Chicken (3D PRINTER FREE)
“TELEKING” is an Arduino-based Robotic Puppet that features a Steampunk-style caged chicken. "3D PRINTER FREE"
"the Automathematical Chicken - great-grandson of the Great Spanish Inventor D.Leonardo Torres Quevedo's electromechanical artimometer"
Like the best shows of the late 19th century, it can answer questions from anyone in the audience about the multiplication table, as well as liven up the evening with singing, dances, and jokes.
The goal is to make a “chicken” style puppet, which is one of the most fun and easy to build and operate. It's controled by servomotors that we fix on the "ceiling" of a structure that simulate that they are a "chicken-cage".
Some construction steps are outlined and I also assume that the person who wants to follow this instructable must already have some knowledge about arduino and some skills for DIY. The measurements of the elements are not detailed either because I think that if someone wants to do something similar they must make their own construction decisions or limitations.
You can see the full spanish version in the web site: http://telekomor.com/teleking?p=151
Supplies
ELECTRONIC
- 1x Arduino Nano
- 1x Nano terminal adapter
- 5x micro-servomotors SG90 or MG90
- 1x DFplayer MP3 module for arduino
- 1x External AC/DC power supply (2A - 5volts)
- 1x Speaker
- 2x arduino analogic mini joystick
- RS232 cable and connector
- cupper wires
- 1x (broken) PS4 controller
- 1x IR controller and receiver
- 1x PCB board
PUPPET
- 2x pingpong balls (head)
- 1x polyurethane ball (body)
- Wooden pieces: flat, slats, ...
- Brico materials: nails, pulleys or toy wheels, fishing line, wool, yellow feathers, felt, wire, glue, varnish, eva rubber, metalic decoration, toy eyes, velcro, nuts and bolts, milk bottle, (yes, milk bottle)...
TOOLS
- cutter
- ruler
- heat gun
- screwdriver
- hummer
- brush
- Soldering tool
- small hacksaw
- Augmented glasses (over 50')
- Courage and Patience
MECHANICAL PART
The stand for the puppet are two thin wooden board. The upper wooden panel
The SG90 (or MG90) micro-servomotors move different pulleys that, when rotating, raise the thread of each joint: vertical head, left leg, right leg, plus another servomotor for the lateral movement of the head. Basically it is a "crane" controlled by two servos for the head and two other servos to lift the legs.
The material chosen to fix the servos and pulleys is a thin wooden board or panel (flat) that allows ease of fixing the elements and cutting, while offering sufficient firmness. It is necessary to make a hole with a semicircular shape so that the wires of the "crane" can move to the sides. Small holes for the fishing line to the legs. The boom of the crane is built with a small plastic gutter of the kind used to fix electrical cables to the wall.
You can see in the images: First the pulley is fixed with a nail and measured. it is cut with a hacksaw allowing the servo to be fixed. A gear is attached to the servo. A fixation is placed for the metal support. Vertical image of the pulleys.
Due to the ideal type of movement to move a pulley, stepper motors could be used that allow continuous rotation without being limited to 180º, but I think that its control is quite complex and the synchronization of all motors is a major challenge. Putting a servo at angle 37 is very simple. Controlling the feedback of 5 stepper motors I suppose it is much more complex, but I don't know, it is the first time that I use a motor with arduino.
I had a hard time finding small "pulleys" that could be used to wind each thread, so I have used toy wheels without the "tires" attached to plastic gears. The servos have gears that act as pinions to transmit movement more turn than the 180º of a servo.
The red pulley for the vertical head is larger, it allows more travel for the head movement at higher speed. Since the motors put a lot of pressure on the pulleys, it is necessary to add a small metal sheet that serves as the upper support of the pulleys, and also acts as guides for the threads. Perhaps the pulleys are the part that has cost the most effort in the project. You have to find pulleys that are larger especially in the winding part of the thread and prevent the threads from coming out with relative ease if there are mismatches.
MOUTH MOVEMENT
The puppet is quite limited, so I decided to add more expressiveness: the movement of the mouth. Here I was faced with a challenge, because it is necessary to synchronize the movement of the thread of the mouth with that of the head.
I thought it wouldn't work, but it worked pretty much the first time, rookie luck!. The head is made of a pingpong ball, where a "beak" built with the plastic of a milk bottle is fixed, which allows it to be shaped if we apply hot air with a heat gun and that once cooled, maintains the applied shape stiffly. The bottom of the beak is a "rocker", with the shaft on a pair of pins. The rocker has a counterweight behind it, so that if we pull the thread upwards, the mouth opens and when the thread is released it closes due to the effect of the counterweight (nut). It is necessary that the head also has an additional weight so that gravity "pulls" the head downwards as it pulls up the thread of the mouth.
The mouth opens when the thread of the mouth "pulls" a little more than the thread of the head. The synchronization of the two threads could be done with separate pulleys, but it also works with the two threads on the same pulley and a independent servomotor for the mouth that, when rotating, “widens” the path of the thread from the mouth when we want to open it.
The head and mouth threads should be as far apart as possible during their travel from the pulley to the head, so I attached a small wheel to the end of the crane arm for two differents paths.
You have to make fine adjustments to get everything to work and calibrate the length of the strings carefully, perhaps the part that requires the most “puppeteer” effort.
PUPPET CONSTRUCTION
The puppet's main body is a polystyrene ball covered with feathers and with steampunk decoration. Two legs are attached that must end in hooves with a hidden weight.
For the head, the idea was to wear a steampunk hat made of eva rubber and some wire glasses. All the puppet parts must be removable so that they can be easily adjusted or modified. That's a challenge!. The pinpong head is cut off and should be able to open. A solution is a tube fixed to some plastic supports -again, using a piece of milk bottle, what a great material!- that allows the movement of the threads and the fixing of the wig and the hat. We used felt in another pingpong ball and eyes, like a mask, fixed with small velcro fasteners.
All puppets must have personality. In our case, we selected a SteamPunk chicken style, because the puppet pays tribute to the great Spanish inventor of the late 19th and early 20th centuries, D. Leonardo Torres Quevedo, who was the forerunner of computers (electromechanical arithmometer), of a controlled automaton remotely (telekino), and even from a robot playing chess.
My son Mario, a meritorious assistant in the creation process, was the one who gave it the definitive name: Teleking (fusion of King and the kickname Telekomor).
WOODEN CAGE
The wooden cage is easy, because we don't need a good wooden forniture, it's a rustic cage!
We make it with 4 wooden slats and a cover with two hinges on top, painted with varnish by Mario.
We use fine copper wire to simulate presidium bars without obstructing vision.
Finally, the advertising poster on the cover is based on a vintage Apple advertisement from the 70s, which fits very well with the spirit of the beginning of the last century's Steampunk aesthetic.
ELECTRONIC
The electronics is based on an Arduino Nano board, connected to the 5 servomotors, with a component (DFPlayer mini) to trigger the sounds in the speaker, and some jostick inputs and IR receiver. Simple and powerfull !!
At the beginning of the project I used a motherboard to test the components and connections.
After testing, I prefer to use a "Nano terminal adapter" for wiring to the arduino instead of soldering, but I use the PCB board to solder the DFPlayer module, resistor, and the connectors for the servo motors. Too many years without using a soldering iron take their toll, as you can see.
All the circuits and servo motors must be powered by a powerful enough external power supply. DON`T FORGET A CAPACITOR for Vcc and ground, because i had problems with servo inductances. It's really important.
I put a RS232 female conector on the cage for the RS232 cable to the jostick inside de PS4 controller (see below).
The diagram in Thinkercad is not perfect, but i think the connections are quite trivial.
Sorry for the terrible wiring, but I don't have time to make unseen things pretty.
Update: I forgot to say that I always use Thinkercad to simulate all Arduino projects, in this case the diagram is edited in that great tool. Teleking has not been simulated within Thinkercad because there were components such as the DF player that did not exist, and it was also necessary to test the behavior of the elements with real physics.
SINGING AND TALKING
HOW TO PLAY SOUND?
Teleking may appear that speaking by moving its mouth, but it is necessary to reproduce sounds simultaneously, of course.
The way to do it is by using a module for arduino MP3 player called DF-Player mini.
It is a cheap module, a few dollars, and connected by a resistor to the serial port of Arduino, it allows you to send commands that reproduce mp3 files from an SD memory. Its programming is not difficult and the possibilities it offers to arduino are endless. Here there is a tutorial for use it.
The files are organized in folders and named starting with a number (001, 002, 003…). The sound is reproduced by connecting a speaker to the audio output, but the noise from the servo motors is high, so I have decided to use the audio output of the DF-Player as auxiliary input of a 10W portable speaker with a battery.
HOW TO GENERATE SOUNDS?
To generate the sounds I have used the free AUDACITY open source software, which allows you to record phrases or modify songs. In addition, it allows you to modify the songs and add the voice of Teleking, and on top of it without paying a euro. What a hell of open source software!
It has a very useful function within “effects” which is “change tone”, which allows you to modify the voices to a higher type, "smurfing” (??). In this way we can speak or sing normally, and by processing it as 5 notes higher, we get the “chicken” effect.
HOW TO SYNCHRONICE SOUND AND MOVEMENT?
For the synchronization between the movement of the mouth and the sound, at first I used an algorithm that read the analog value of the audio output to move the servo of the mouth. It is very powerful. But I have simplified the algorithm, the movement starts at the same time as the music, but following a fixed pattern. Less impressive, but in this way it is easier to control the parts with music and voice, without a singer, etc.
Teleking only speak in Spanish. But he is allways learning English, as all spanish people, hahaha.
MANUAL CONTROL
Teleking can move autonomously because it is a robot. But, as we are manufacturing a puppet, not only a robot, it is essential to introduce the possibility of manual human control in real time.
I have used two input methods simultaneously: On the one hand, an infrared communication circuit, which allows entering commands with a small remote control, and on the other hand, a modified playstation jostick that is connected by cable.
At first, I had thought about using a bluetooth connection and a mobile phone as a control tool, even developing an application that uses the mobile's cinemometer to simulate the movement of a traditional “crosshead”. But I think it is a high effort and the control methods I have used have been simple and satisfactory enough.
The playstation-type controller is very suggestive, it is a kind of connection of the modern world of video games with the traditional world of puppets. I have used two analog mini jostick (10K resistors) connected to a wooden flat (of course!) and with a serial cable that connects to the back of the box to transmit the 7 control signals (Jos_x1, Jos_x2, Jos_y1, Jos_y2, button, Vcc and GND). The left jostick (1) moves the head up / down and left / right and the right jostick (2) moves the left foot, right foot, and mouth when pressed inward.
You can see a image with the terrific implementation of the ps4 jostick, but fast and effective. The telekomor style!!
The infrared remote control has the infrared receiver fixed under a lateral of the ceiling`s cage, allows you to move the head with the cursors and raise the legs. By pressing two numbers both values are read, multiplied and the multiplication voice sequence is played (“three times five is fifteen”), that is, teleking can recite the entire multiplication table. To launch the choreographies, click on the central button and select the corresponding number for each one.
SPOILER: The infrared remote control is discreet and it allows to launch commands without people noticing it. For example so that the puppet responds to a person's question about the multiplication table. It works in a “magical” way or as I prefer to say "with quasi-Artificial Intelligence". It's not a hoax, a puppet needs a person behind!.
PROGRAMING
Teleking arduino code is always under construction, and i have programmed it in a very fast (and creepy) way: A lot of "copy-paste-try-error-repeat" new agile programing method.
Controlling the motors with the jostick is quite trivial, there is a multitude of information on the Internet. Just comment that I use the “VarSpeedServo” library that allows us to modify the speed of the servos and their control asynchronously.
For the IR Receiver i have used the "TinyIRReceiver" library. Its simple and works great with cheap IR remote controller.
Perhaps the most important challenge was the programming of the "choreographies". Teleking had to sing and dance, which means the programming of tens or hundreds of positions of 5 servo motors synchronized with the music. The first approach was synchronizing the servos "by hand", with the MC-HUMMER song. The result is nice, but the synchronization effort based on milliseconds (millis) is enormous.
A song has a rhythm, that is, a few BPM (beat per minute). One way to simplify the movement is to synchronize the teleking movements with those beats of the compass. It does not make sense to do a choreography that the movements are not rhythmic, outside the beat. So to create the choreography, what you have to do is a table with Excell where each servo is located at each start of the measure you want. It may also seem very complex, but it is a much simpler way to imagine and program the movements. From the excel sheet we export a .csv file that is converted easilly into an array variable within the arduino code.
We generate an interrupt in arduino (MsTimer2.h library) with the same time as the beat of the song. When the interruption occurs, we read the variable array and we write the position in the servos. And that's all, ultra simple. In addition, the movement library of the servos is asynchronous, that is, it frees the arduino to perform other tasks while there is no change of compass.
Example:
int partiture1 [ ] [maxcompas]
{
{100,100,100,100,100,100,100,100},
{30,30,30,90,30,30,90,90},
{0,0,45,0,45,0,45,0},
{0,0,45,45,0,45,0,0},
{100,130,100,130,130,130,130,100},
};
...
...
if (compas != previus_compas){ // interrupt increment compas
servo1.write(partiture1[0][compas], head_lat_vel, false); // Head_lateral_servo
servo2.write(partiture1[1][compas], head_ver_vel, false); // Head_vertival_servo
servo3.write(partiture1[2][compas], left_leg_vel, false); // Left_leg_servo
servo4.write(partiture1[3][compas], right_leg_vel, false); // Right_leg_servo
servo5.write(partiture1[4][compas], mouth_vel, false); // Mouth_servo
Detail comments of all the arduino sketchs here can be a Hell. If you need the arduino code you can ask me (telekomor at sign gmail.com) and I will send it to you -WE ARE A GREAT COMMUNITY, OH YEAH!-.
I just ask that you have some prior knowledge of arduino and that you have actually started a project similar to this.
I'll be happy to help you for sure!
CONCLUSIONS
This is the first robot-puppet I've made. If I have to summarize this project, I think the trip has been very satisfying. Sometimes frustrating, many times times exciting! . The execution of the original idea has exceeded expectations. The project has been very creative both physically (puppet) and abstractly (design, programming).
I wanted to make an original robot with my son, other than just following someone else's instructions. I suppose it exists, but I have not found any information about robotic puppets on the internet, only animatronic stuff. All of this instructable was born out of my twisted mind. Perhaps you can follow the way: A Teleking cousing? A pianist robotic puppet? ( i have a primary design).
Now it remains to work so that Teleking has a life of its own...oh, s***, ... IT'S ALIVE!