Activité 3 : Pilotage du robot avec asservissement

Déclaration des variables associéees aux consignes, vitesses mesurées, erreurs et correcteur

In [ ]:
// consignes, erreurs, terme integrale
int cG, cD; // consignes
int epsilon_D, epsilon_G; // erreurs calculées

float integrale_G=0, integrale_D=0; // termes integrale de l erreur

float Kp = 1.; // gain action proportionnelle
float Ki = 1.; // gain action integrale

Calcul des consignes

Il s'agit de calculer cG et cD à partir de potA et potD. L'unité est de l'incrément par seconde. Il faut que les valeurs soient écrétées aux vitesses maximale et minimale (ici 800 inc/s dans les deux sens).

In [ ]:
 // Calcul consignes de vitesse en inc/s ------------------
  cG = 
  cD = 
  if (cG>800) cG=800;
  if (cG<-800) cG=-800;
  if (cD>800) cD=800;
  if (cD<-800) cD=-800;

Correction = calcul des commandes

In [ ]:
// erreurs
  epsilon_G = cG - vitG;
  epsilon_D = cD - vitD;

  // integrale erreur
  integrale_G = integrale_G + epsilon_G * 0.1;
  integrale_D = integrale_D + epsilon_D * 0.1;

  // calcul commandes
  vG = int(Kp * epsilon_G + Ki * integrale_G);
  vD = int(Kp * epsilon_D + Ki * integrale_D);