Making a walking robot is still a challenge. Scientist and makers proposed robots based on static walking (the center of mass is always above the center of pressure), but this type of walking is very slow.
Dynamic walking could be obtained using the “ZMP criterion”, it means that the robot has to maintain the ZMP (the zero moment point) inside the base of his support to maintain dynamic balance.
The control of the ZMP is difficult to control. It can be measured with force sensors on the feet or computed with simulations.
Asimo is one of the most beautiful example of what we can achieve using the ZMP approach, but it’s maybe hard for makers. Lastly, the energy consumption of Asimo is very high compared to humans
An other approach is called the “passive dynamic walking”. You can find very nice examples on the web. These “robots” are able to walk down a small slope. These robots are walking like two inverted pendulum (on each leg), but they loss some energy at each step to step transition. They can walk downslope because the slope gave them some potential energy to recover the energy lost during the step to step transition.
You can find here a nice example of a 3D printable robot named “wobbly”(http://www.thingiverse.com/thing:170932) (). These passive walkers have some common points : They have curved feet, free hips and they do not use electronics to walk! (http://youtu.be/DtdJB49f4Yk)
Since few years, some researchers tried to make them to walk on level ground by adding just the power they need to recover the energy they loose during step to step transition. These kind of robots are called “actuated passive dynamic walker”.
This instructable will explain you how to build one. The original mechanical design was inspired from wobbly. I just resized it to have enough place to include servos. This kind of robots was firstly described by Russ Tedrake during his PhD thesis at the MIT. As you can see, Russ Tedrake is now the director of the center for robotics at MIT (https://groups.csail.mit.edu/locomotion/russt.html). That’s why it could be interresting to look at his first projects ! His PhD is quite impressive concerning the mathematical aspects, but the robot he used is relatively easy to buid.
This robot has curved feet and a free hip. 4 servos are controling the Mediolateral and the sagittal positions of the ankles. A MPU 6050 is used to drive the Medio Lateral servos at the correct time to achieve the balancing mouvement on level ground. By driving the position of the Antero Posterior servos, we can modifie the position of the center of mass of the robot. When it pass in front of the center of curvature of the feet, the robot begin to walk.
Are you ready?
Step 1: Part List
- threaded rod 3mm
- 8 Plastic rod end balls
- 4 servos
- 1 arduino pro mini
- 1 MPU 6050 (3 axis accelero and 3 axis gyroscope)
- 1 voltage regulator L7805 for the power supply
- 1 9V battery
- 1 resistor 1K
- 1 resistor 2K
- Some M3 and M2 screws
- Head (1X)
- Body (1X)
- Battery holder (1X)
- Leg (Right and left)
- Foot (Right and Left)
- Hip stop (2X)
- Ankle axis (2X)
- Gimbal ring (2X)
- Servo arm (4X)
Step 2: Assembly
The printed parts were inspired from the one of cevinius http://www.thingiverse.com/thing:170932. I just resized it to have enough space in the leg to add the servos. These servos are controlling the ankle in the frontal plane and in the sagittal plane. The ankle has 2 degrees of freedom done with a gimbal joint, the first axis of this joint is printed, and the second one is a M2 screw. The servos control these DOF using links with rod end balls (APLink and MLLink, see notes on pictures).
The hip is free, the leg must turn around his axis freely inside the body to allow +/-10° of flexion extension. When it’s done, add the hip stop to maintain the leg in his place.
You may have to “re-drill” the holes, and taping the holes were you have to srcew something.
Step 3: Electronics
You will find a lot of example how to
wire the MPU6050 and the HC06 to an arduino on the web.
Just be carrefull to the power is this instructable :
The power is given by a 9V battery.
This 9V goes to the raw pin of the arduino mini which provides VCC at 5V to the HC06 BT module and to the MPU6050.
The 9V goes also to a L7805 voltage regulator to give power to the servos.
You could also connect the output of the L7805 to the VCC pin of the arduino, but when the servos ask for power when the battery is closed to be empty the arduino board and the BT module will reset… I made the mistake…
Step 4: Balancing
To balance, we have to maintain a stable cycle. It’s like when pushing a child on a swing. You have to push at the good time with a good impulse. This robot use the to servos which are controlling the MedioLateral positions of the ankles. The cycle is divided by 4 steps (see picture). We push during steps 2 and 4. During steps 1 and 3, we can adjust the servos to facilitate the balancing movements.
Ok just one word to obtain the angle and the angular speed. You may use complex math, but I just used a complementary filter to mix the accelero and the gyro. This filter is also called the “balancing filter”. This is a good example to use it…. It’s also frequently used for controling a segway or other balancing robots!
Step 5: Walking !!!
In the sagittal plane, if the center of mass of the robot is just above the center of curvature of the feet, the robot will balance without moving. But if you adjust the 2 servos which are controlling the AP positions of the ankles, the robot will begin to walk.
Yes, but you will see if you try it, that’s not so easy to achieve… See the conclusion section!
Step 6: Conclusion
After few hours of testing, my robot was able to walk!
This robot was firstly described by Russ Tedrake. During his PhD he work on machine learning to obtain a stable walk able to resist to small perturbations. Google it, it's very interresting!
I’m now planning to design a controller based on mechanical energy. Each time the robot goes back at the beginning of step 1 or 3, it should be possible to compute the good impulse to maintain a correct cycle. I hope….
Other aspects concern how to control a fully actuated biped with this kind of approach. The goal is to mimic the natural balancing of the dynamics. You may have a look to this one :
I promise, you will see future testing! Maybe a pocket oscilloscope could help me to design my controller….