I would like to share with you my progress on making a walking robot.
So far i have created a prototype that ... tries to walk. I have designed a circuit to control my robot, I have writen a program to make it do what i want and I created a simple skeleton to keep it all together.
It all seems great, except that the skeleton isn't steable enough in order for the robot to walk properly.
And here comes the infinite possibilities provided by 3D printers, but more on that leter.
Step 1: The Idea
I was making some projects with ATMEL AT89S52 and decided to create something that would fully use its potential. Then came the idea to construct a robot that would be able to walk like a human. It was all realy simple in my head, create a skeleton with the same movement passibilites as a human and then write a program that would make it do the right moves. It seems simple but as it turned out there are a lot of things to calculate and take into consideration.
Step 2: Brain
Like i said before i decided to use ATMEL AT89S52. In the past i have made my own circuit to program it with my computer but it was too big and ugly to even think about puting it in a robot. So i decided to design a new circuit that would only power my kontroler up, provide needed signals and make it possible to connect other devices. I have connected 16 controller bytes which can be used as inputs or outputs and provided each one of them with GND and VCC.
So far my robot uses only 6 servos. It makes it possible to connect some kind of sensors or devices or even more servos in the future.
Step 3: Muscles
After many experiments with motors and hydraulics i came to a conclusion that with my tools I'm not capable of making anything more efficient than a servo. Fortunately i had few of them in my injured RC glider (very beautiful and effective crush). Servos like these are very strong. Another thing that speaks in favor of servos is the way that they are controled. A typical servo needs a signal at about 50Hz and depending on a time in which it receives a logical "1" it rotates itself to a right angle. If the signal is constantly provided the servo will correct its position in case of any changes, which is perfect for my robot in order to maintain the right angles betwen its legs. It would seem that servos are perfect but unfortunately they have a few disadvantages. Since they are created to be universal they have to be put in a proper housing for them to work the way i want them to, which adds unnecessary weight. The other bad thing about them is that they only have one axis which resulted in very bad consequences, but more about that in the next steps.
A perfect solution would be to create my own "servos" designed specialy for this robot which would minimize weight and exclud other problems as well.
Having your own machine that would create shapes you design at huge precision sure would be nice.
Step 4: Bones
Creating the skeleton for my robot was the most dificult part. I had to connect my servos together. From the materials at my home i decided to use 4mm plexiglas. In order to achieve a satisfying level of precision I had to spend many hours perfecting each part. If the parts wouldn't match the robot would have uneven legs and wouldnt be able to stand straight. It became clear that continuing making parts this way is impossible because in order to provide casing for the servos to add a second axis and create stable feet it would take months . At this time my robot would not get proper feet and without second axis on each serwo his legs would not stand the presure. Fortunately the four parts that i made are enough to test the koncept of human-like movements.
Step 5: Program
To program my controler I used my old programing board. As you can see it's much bigger than the board I created for my robot.
When i was writing my program i made sure that it would be easy to change settings of the servos.
My program is writen in Assembly language.
The first thing you see is a table, each column is a move, thanks to special calculations in the program later on, the numbers next to s1(servo 1) s2(servo2).....are the exact degrees in which servos will lock themselves. Numbers next to TIME determinate how long each move will last, it's the number of periods program will do before it will move on to the next move, since servos are provided with a signal at 50Hz, one period lasts 0,02 seconds. The number of servos and moves can be easily changed.
The program takes the information out of the table and translate it so that each servo will receive a correct signal. The whole thing is pretty complicated and it would take some time to explain how it works but if anyone wants to I can explain it step by step.
Feel free to download the program, maybe you can use it to make your own servo based devices
Step 7: The Next Step
I don't want to stop at an "almost walking robot". In the future i'm thinking about adding an aditional servo with a special arm which will work as an counterweight so that the robot would not fall down when it's standing on one leg.
The main lesson from this project is that when constructing things like this the most important thing is low weight and stability. \\\those things can not be achieved with gluing a motor on to a piece of plastic.
I have created a full casing with 2 axis and arms that would fit perfectly on the next casing but it was too complicated and time consuming to make more (and it looked like it would weight too much). I decided to make a mold and cast it 6 times but it turned out that its not possible with materials that i have.
That is why my dream is to have a 3D printer. It would make creating stuff like these much easier and all my projects would become better, less time consuming and more complicated than it was possible before. The possibilities of what you can do with one of those are endless.