next up previous contents index
Next: Balance Functions Up: The Robot Previous: Motor Functions

Gesture Functions

This set of functions allow the execution of gestures  that move legs in a coordinated way. If the friction is active and three or more legs in contact with the ground are affected by gestures, the execution of a gesture results in keeping feet in the same position as they are (in the world reference frame) and displacing the body of the robot in the opposite direction of the executed gesture.



void gesture_effect (unsigned int leg,boolean effect,t_robot *r)
 

Allow to select the legs that are affected by gestures (effect=TRUE).



void exec_gesture (unsigned int dof_R3,double v,t_robot *r)
 

Executes a gesture. A gesture consist in applying the same homogeneous transformation to all legs affected by gestures. When leg friction is active and three or more legs in contact with the ground are affected by gestures, the inverse of the gesture transformation is applied to the body. The resulting effect is to move the body and to keep feet in the same position as they are. If the legs affected by gestures do not properly support the body or if legs slip over the ground then only the legs are moved and the robot's body remains stationary.

The parameters dof_R3 and v allow to select the transform to apply to legs (Tx(x), Ty(y), Tz(z), $Rx(\phi)$, $Ry(\theta)$ or $Rz(\psi)$)         and the size of its parameter (x, y, z, $\phi$, $\theta$, $\psi$). Again, the transformation can be named using the constants TX, TY, TZ, RX, RY, and RZ         defined in the file transform.h. 

If more than one gesture is issued in the same time slice, then they are executed in the following sequence

\begin{displaymath}
q^i= (Rz(\psi) Ry(\theta) Rx(\phi) Tz(z) Ty(y) Tx(x)) p^i\end{displaymath}

where qi is the new position of leg i and pi is its previous position. The effect on the robot's body is just the inverse:

\begin{displaymath}
(Rz(\psi) Ry(\theta) Rx(\phi) Tz(z) Ty(y) Tx(x))^{-1}=(Tx(-x) Ty(-y) Tz(-z) Rx(-\phi) Ry(-\theta) Rz(-\psi))\end{displaymath}

Taking into account this order is important since gestures are the only way to make the robot advance.


next up previous contents index
Next: Balance Functions Up: The Robot Previous: Motor Functions
Josep M. Porta Pleite
8/2/2000