Designing the robot is one of the most important parts of the project, failure to do so can certainly result in
a catastrophic explosion broken/burnt components, or at least failure to work properly.
Several components are required when building such a machine, as detailed in the next topics.
12 x Servos
In order to get 3 degrees of freedom in each of the four legs, three servos per leg are required. The ideal servos are slow and powerful, but, in my broke student reality, I got twelve two-dollar RC servos from hobbyking(four which are already broken due to stalling against the body).
A good servo for the task should be able to lift half of the robot's weight when walking(two legs up, two legs down, with the trotting gait). If the servo has 2kgf.cm , with a leg of 8cm, it means the force it can place on the leg is around 2/8 = 250g, which limits the robot's weight to around 500g, but lighter is always better.
I picked these at first:
After some of them failed, I ordered four of these ones:
These are sturdier metal gear servos, and sould handle stress a little better.
st Since I currently have access to a 3d printer on the University, I decided to design and print my own frame.
For the design I choose to use Autodesk Inventor, since they have a student version.
This is the preliminar design:
Quite ugly, huh? Upon realizing how bad it looked, I designed new legs:
The files are on my GitHub.
In order for everything to work and be controllable, some electronics are necessary:
Since I choose to use one of my quadcopter's Li-Po 3S batteries, I need something to get this voltage down to around 5.0V-6.0V, Since the 9g servos have a stall current of around 700mA, the total max current, on a catastrophic failure, would be around 12*0.7 = 8.4A
In the end I opted for a 5V 5A UBEC 2-5S Lipoly (7.2-21v), which should do just fine.
To control twelve servos, twelve PWMs are required, the cheapest way to generate these signals is by using an arduino pro mini, and talking with it through serial. It's also responsible for talking with the MPU6050 and estimating current orientation.
Being able to know the robot's body orientation is interesting so we know what's going on, can walk on uneven surfaces, and keep the robot's head up. This chip was choosen for being cheap and small, and for having the gyro+acc filter code opensource (MultiWii project)
High Level Controller
I opted for getting a more powerful board so I can code the higher level functions in Python, but so far I'm just using the computer connected through serial.
Good candidates are the Raspberry Pi and Odroid C3, but they are bigger than what I'm looking for.
As there were four unused pins on the Arduino Pro Mini, I plan to connect simple endpoint sensors on the feet, so I know when they are touching the ground. This is going to enable me to prevent moving the feet down further than needed(in case the robot steps on a rock, for instance).
Next: Inverse Kinematics (coming soon)