by dlwight » Mon Nov 12, 2007 10:58 pm
by dlwight
Mon Nov 12, 2007 10:58 pm
Hi guys, I'm new to the forums, but I thought I would share some of my work:
http://www.youtube.com/watch?v=W29AVx3dzJE
This biped is basically just 2D to prove that the control algorithm I developed works (the boom just provides lateral support). It is walking on "point feet" to prove that the walking isn't the result of statically balancing.
This control algorithm basically works as follows: Imagine you take a very large step and when your foot hits the ground, you hold every joint in your body rigid. You will rock up on your lead foot, then fall back onto your trailing foot. If, under the same conditions, you took a very short step, you would rock right over your lead foot and fall on your face. There is a spot in between the two positions where you would rock up and become pefectly balanced with your center of mass balanced over your standing foot. I call this position the Foot Placement Estimator, or FPE. This robot is constantly calculating that position every 10ms and tries to always step just slightly further than that position so each step is stable.
This measure is combined with a state machine divided into push, lift, swing, and drop states. During the push state, it extends its leg until the FPE moves in front of the standing foot (meaning it now has to step further than where it is currently standing). It then lifts its leg to a set height, and swings it through maintaining the foot height at a constant (ideally) and aims to position it just further than the FPE. During the drop state, I make the swing leg more compliant to absorb the impact while still tracking the FPE until impact occurs then it switches to the push state for the other leg. There are no precalculated trajectories and it is very robust against external disturbances (the second half of the video).
I used the lynxmotion brackets for the legs, everything else was custom machined. The servos are standard ball-bearing types (~$30) but I replaced the control circuit with my own so I can change controller gains and get feedback from the servo about its current position. All the servos are on a single I2C network. All the data processing is done with the onboard dsPIC. Power is supplied externally (just so I didn't need to charge batteries). The key sensors are optical encoders mounted on the hub to provide the absolute position of the body. A full 3d version of this needs to estimate the position and velocity of the COM to make this work.
Cheers!
Derek.
Hi guys, I'm new to the forums, but I thought I would share some of my work:
http://www.youtube.com/watch?v=W29AVx3dzJE
This biped is basically just 2D to prove that the control algorithm I developed works (the boom just provides lateral support). It is walking on "point feet" to prove that the walking isn't the result of statically balancing.
This control algorithm basically works as follows: Imagine you take a very large step and when your foot hits the ground, you hold every joint in your body rigid. You will rock up on your lead foot, then fall back onto your trailing foot. If, under the same conditions, you took a very short step, you would rock right over your lead foot and fall on your face. There is a spot in between the two positions where you would rock up and become pefectly balanced with your center of mass balanced over your standing foot. I call this position the Foot Placement Estimator, or FPE. This robot is constantly calculating that position every 10ms and tries to always step just slightly further than that position so each step is stable.
This measure is combined with a state machine divided into push, lift, swing, and drop states. During the push state, it extends its leg until the FPE moves in front of the standing foot (meaning it now has to step further than where it is currently standing). It then lifts its leg to a set height, and swings it through maintaining the foot height at a constant (ideally) and aims to position it just further than the FPE. During the drop state, I make the swing leg more compliant to absorb the impact while still tracking the FPE until impact occurs then it switches to the push state for the other leg. There are no precalculated trajectories and it is very robust against external disturbances (the second half of the video).
I used the lynxmotion brackets for the legs, everything else was custom machined. The servos are standard ball-bearing types (~$30) but I replaced the control circuit with my own so I can change controller gains and get feedback from the servo about its current position. All the servos are on a single I2C network. All the data processing is done with the onboard dsPIC. Power is supplied externally (just so I didn't need to charge batteries). The key sensors are optical encoders mounted on the hub to provide the absolute position of the body. A full 3d version of this needs to estimate the position and velocity of the COM to make this work.
Cheers!
Derek.