Biped Howto: Inverse kinematics
March 3, 2014
+++ UPDATE (12-march-2014): Rename title as "Biped Howto".
Hi All, I would like to share with you the way I move feet of my robot POPSTAR. a in a target to a . and position of (at ). to determine as .
In case of POPSTAR_1 robot, of as .
In a , I to : , and , and I of (0,0,0) at hip .
placed in , and I to of 3 of (, and ), .
In case of POPSTAR_1 robot, X axis and Z axis. of . <GetSingleKinematicAction.cpp> C++ to place in a target .
Once, I , time to define in a to target position. In case, I to use line . determines in a to a line . And as in plotters to and , I be a .
The routine I adapted to generate Bresenham's line is attached in file <Bresenham.cpp>.
of variable <> of , , per (in case 50ms) . example, a =2 2mm 50ms,what in a of 40mm . So, variable I robot to ( more to
target , variable).
Once, and line , time to test . In a , to test a , I as a 2 line . P0 to P1 and P1 to P2.
And !!! I as I .
The whole process to carry out a complete movement then is formed by these operations:
- Establish a target destination for each foot and a speed of movement (setup stepDistance variable).
- Executes the Bresenham's line algorithm to obtain an array of points xyz for each foot.
- Executes the Inverse Kinematics model for each point in the array xyz, and store those values in an array of actions for each foot.
- Each 50ms sends a new actions value to the servo driver to move all joints a step.
- Repeat point 4 until target position is reached.
And that's all!! See you, guys.