Robots With Legs; How to Walk or Run
July 12, 2011
Does your robot walk like this? http://www.youtube.com/watch?v=WTHI8o5ZOFk&feature=related Notice the heavy jarring to the machine and to the inhabitants inside. This jarring is not good for the machine, especially at the joints and may eventually break something.
While this is about robots, I want to ask you, "How do YOU run?" Do you come down on the ball of your foot, or on your heel? Professional runners, whether sprinters or distance runners tend to run on the balls of their feet. The sprinter gets better speed and the distance runner gets less tired in a long run. If you come down on your heel, your foot takes a load from one and a half to three times your body weight. This is like having someone smacking each heel bone with a mallet about a thousand times per mile with a force equal to one and a half to three times your weight. Special running shoes can take up some of this jarring, but only about 10% of it. With this extra compression to your ankle, knee and hip cartilage, you are much more likely to need surgery on those joints eventually. If you come down on the balls of your feet, there is essentially NO extra force than your own body weight.
Back to robots. Robots are the same in this respect. When you move your robot at full speed (a.k.a.running) whether your robot has ankle joints or not (and I know that most do not) before setting the leg down, extend the joints (ankle, knee and hip) to nearly full extention as the leg moves forward. As the leg comes down and takes on the weight of the body, allow the joints to contract* slightly. Besides removing the jarring effect and saving your servos from early death, there is a bonus. The body of the robot will tend to stay more even and level as it moves forward.
*[ A little side note on how you might easily make shock-absorbing feet: You do not really have to use servos to do this; you can use a rubber band or a spring. Think of the bone structure of a leg and foot made like a human's. There is a heel bone sticking out the back while the main part of the foot sticks forward. Now on your robot's foot bone structure, hook a rubber band from the back of the leg down to the heel bone. When the leg is lifted, the toes naturally extend and then when the foot is set back down, as it comes down the toes/ball-of-the-foot take up the weight of the robot as the rubber band stretches. You could play with different rubber bands to get the right tension for the weight of your own robot. This could also be done with actual springs which come in a multitude of weights and sizes. ]
In walking movement notice this quadruped (4 legs) and how much more fluid its movements look. http://www.youtube.com/watch?v=nUQsRPJ1dYw Note the flexing and fluid springiness the programmer has built into this robot's movements. And yes, proper walking versus poor jerky movement in a robot as we build them is mostly programming. Some of it can relate to using servos that are too small or driving them with too low of battery voltage (making them slip and chatter), but programming is the main thing. Keeping the body level while moving gives it a more animal-like appearance. Another key aspect is balance. You will need servos that allow the leg to move to left and right as well as the normal ones which give you front and back movement. As your robot moves forward and puts more weight onto a leg, the right/left servo should pull in towards the center of gravity so the weight of the robot moves over that foot. If this is done right, the robot could balance on that single foot. Everyone has probably noticed how a persons hips sway back and forth as they walk. This is the result of the person shifting his or her body weight to the left or right with each step.
As to learning more about how animals move here is a link that shows 2-legged, 4-legged and even 6-legged creatures movements. When you start programming your walking robot's movement, I think you may find this quite useful. http://www.3dcognition.com/theoryBiomech.php