Passive dyanmic walking in python
Note: For Ubuntu 14.04, FFMPEG is not included in the PPA. For how to fix this problem, please refer to here
To run the code, simple by:
$ python ./robo/robo.py
A lot of credits goes to this csail master thesis It is worth notice that a negative sign is missing for h_233 in equation 3.2b of this paper.
physcial | variables | value |
---|---|---|
leg length | 1.0 | |
shank length | 0.375 | |
shank length | 0.125 | |
thigh length | 0.175 | |
thigh length | 0.325 | |
hip mass | 0.5 | |
thigh mass | 0.5 | |
shank mass | 0.05 | |
stance leg angle | 0.1877 | |
non-stance thigh angle | -0.2884 | |
non-stance shank angle | -0.2884 | |
stance leg velocity | -1.1014 | |
non-stance thigh velocity | -0.0399 | |
non-stance shank velocity | -0.0399 |
At the start of each step, the stance leg is modeled as a single link of length L, while the swing leg is modeled as two links connected by a frictionless joint. The system stays in its unlocked knee state until the swing legs comes forward and straightens out. When the leg is fully extended, knee strike event occurs. Knee strike event will change velocities instantly because of the energy loss in collision. Then the system transits into a two-link-chain state. The system will remain in this state until heel strike event occurs. It is when swing foot hits the ground. The system will return to its initial unlocked swing phase after this event. For now, one step cycle is complete and all state variables should remain the same as the beginning of the walking cycle. Since this system is cyclic, the amount of energy lost should be the decrease in potential energy after one step. This cyclic behaviour could be modeled using an unactuated hybrid system :
Pareto surface for multi-objective optimization, x-axisrelates to the stability, y-axis relates to speed. Higher number indicates more stable or faster.
plot out the energy curve