/*		glob_var.h

	definition of global variables on the system

*/
#include <pthread.h>

//constantes del robot
#define L1 11.5	//longitud rodilla-cadera
#define L2 10	//longitud rodilla-tobillo
#define pi 3.1416



//idefinicion de structuras de datos

enum STATE {STAND,START,WALK,STOP};
enum STATE_L {GROUND,DS_INI,AVANT,DS_END};

struct generacion_tray
{
        enum STATE R_STATE;
        enum STATE_L STATE_RL;
        enum STATE_L STATE_LL;

	float ROBOT_time;
	float time;

        //valores actuales de las posiciones tobillos y cadera
        float aVR[5];           //0-->X
        float aVL[5];           //1-->Y
        float aVC[3];		//2-->Z
				//3-->alfa
				//4-->Q

        //puntos definicion trayectoria
        //tobillo
        float XtR[5][3];        //0-->posicion
        float YtR[5][3];        //1-->tiempo
	float ZtR[5][3];
	float Alfa_R[5][3];
        float XtL[5][3];        //2-->aceleración
        float YtL[5][3];
	float ZtL[5][3];
	float Alfa_L[5][3];
        //cadera
        float Xc[3][3];
        float Yc[3][3];
	float Zc[3][3];
        //angulo pie-suelo
        float QtR[4][3];
	float QtL[4][3];

};

struct robot_state
{

        enum STATE R_STATE;//actual robot state
        enum STATE FR_STATE ;//final robot state

        enum STATE_L STATE_RL;
        enum STATE_L STATE_RL_1;
        enum STATE_L STATE_LL;
        enum STATE_L STATE_LL_1;

        //valores actuales de las posiciones de tobillos y cadera
        float aVR[5];           
        float aVL[5];           
        float aVC[3];           

	float ROBOT_time;

};

struct w_params
{

        float vel;
        float Ds;
	float Ls;
        float h;
        float hmin;
        float Qs;
        float Qf;
        float Hgs;
        float Hge;
        float Xsd;
        float Xed;
        float time;

	//puntos definicion trayectoria
	//tobillo
        float XtR[5][3];	//0-->posicion
        float YtR[5][3];	//1-->tiempo
	float ZtR[5][3];
	float Alfa_R[5][3];
        float XtL[5][3];	//2-->aceleración
        float YtL[5][3];
	float ZtL[5][3];
	float Alfa_L[5][3];
        //cadera
	float Xc[3][3];
        float Yc[3][3];
	float Zc[3][3];
	//angulo pie-suelo
        float QtR[4][3];
	float QtL[4][3];
};

struct joint_val
{

	float RLj[6];
	float LLj[6];
	float Tj[2];

};


