prog robocup equip2

Dependencies:   nRF24L01P MX12 BSP_B-L475E-IOT01

Projet.cpp

Committer:
chedozeauclement
Date:
2021-04-23
Revision:
1:2bc2848b78d1
Parent:
0:7b8f377e2077

File content as of revision 1:2bc2848b78d1:

#include "Projet.h"

/* description de la fonction

    Entrée : vitesses dans le repère du terrain + vitesse angulaire robot
    Sortie : vitesse de rotation de chaque moteur

*/

#define PI 3.14159

void cmd_inverse(float Vx_m_s,float Vy_m_s,float Omega_rad_s,float Theta_rad, MX12 *pmx)

{
    
    float O1;
    float O2;
    float O3;
    

    float norme_vitesse = pow((pow(Vx_m_s,2)+pow(Vy_m_s,2)),0.5);
    float Alpha_rad;

    Alpha_rad = atan2(Vy_m_s,Vx_m_s);
    
        if(Alpha_rad<0) {
        Alpha_rad=2*PI+Alpha_rad;
        }

    float Vrx_m_s = norme_vitesse*cosf(Alpha_rad-Theta_rad);
    float Vry_m_s = norme_vitesse*sinf(Alpha_rad-Theta_rad);

    O1=-(Vrx_m_s*pow(3,0.5)/2+Vry_m_s*0.5)/0.019+Omega_rad_s*0.078/0.019;
    O3=(Vrx_m_s*pow(3,0.5)/2-Vry_m_s*0.5)/0.019+Omega_rad_s*0.078/0.019;
    O2=Vry_m_s/0.019+Omega_rad_s*0.078/0.019;

    float PO1=O1*1/(470*2*PI/60)/10/2;
    float PO2=O2*1/(470*2*PI/60)/10/2;
    float PO3=O3*1/(470*2*PI/60)/10/2;

    printf(" %d, %d, %d \n", int(O1*100*0.019),int(O2*100*0.019),int(O3*100*0.019));

    pmx->SetSpeed(1,PO1);
    pmx->SetSpeed(2,PO2);
    pmx->SetSpeed(3,PO3);

}