Chapitre 5 : rampe

La gestion de la vitesse, de l’accélération et du freinage

Avant de s’occuper de la régulation par PID des consignes de distance et d’angle, on va se pencher sur l’algorithme qui contrôlera la vitesse max et les accélérations/décélérations du robot.

L’algorithme est à utiliser deux fois (une fois pour la consigne d’avance et une fois pour la rotation), avec des constantes distinctes pour les deux cas (la vitesse de rotation n’aura rien à voir avec la vitesse linéaire). Comme l’algorithme est un peu plus complexe que les autres, je ne vais détailler ici qu’un des deux (la rampe pour l’avance dans l’exemple ci-dessous), mais c’est exactement le même algorithme à appliquer sur la consigne « Cap ».

L’idée de cette étape, va être de contrôler le profil de vitesse en fonction de la distance à parcourir et des constantes (vitesse max, accélération et freinage) de façon à obtenir la rampe suivante :

  • En bleu: c’est la distance qu’il reste à parcourir du chapitre précédent (l’erreur qu’on souhaite amener à 0)
  • En rouge: le profil de vitesse que l’on souhaite piloter et qui correspond à la dérivé de la position en bleu.
  • En abscisse, le temps en seconde.

On peut aussi représenter les phases d’accélération en dérivant la vitesse : on obtient un escalier (une phase 1 positive, une phase 2 à zéro, et une phase 3 négative.

Dans cet exemple on a initialement 1000mm à parcourir. Ils vont être parcourus en 2,7s :

  • Phase 1 : c’est la phase d’accélération qui correspond à la pente de la vitesse (la dérivée), dans l’exemple 600mm/s²
  • Phase 2 : représente le régime établi, avec une vitesse max de 500 mm/s. Si la distance est trop faible, cette phase peut ne pas apparaitre.
  • Phase 3 : on anticipe l’arrivée par un freinage, une décélération de 1000mm/s² dans l’exemple (toujours la dérivé de la vitesse)

Pour programmer ça, il faut distinguer ces 3 phases dans l’ordre suivant :

Phase 3, freinage :

En entrée de cette phase de freinage, on a besoin des informations suivantes :

  • Temp d’échantillonnage (une boucle d’aserv): dt = 0,005
  • La vitesse du robot : Vrob = (dist(t-1)-dist(t0))/dt
  • La décélération maximale (une constante) : Afrein = 1000

Avec ces informations, on peut calculer la distance de freinage nécessaire pour s’arrêter à cette vitesse :

  • Dfrein = (Vrob²) / (2 x Afrein)

Si dist < Dfrein alors on entre dans cette phase de freinage :

  • Vconsigne = Vrob – (Afrein x dt)

Phase 1, l’accélération :

En entrée de cette phase d’accélération, on a besoin des informations suivantes :

  • Temp d’échantillonnage (une boucle d’aserv): dt = 0,005
  • La vitesse du robot : Vrob = (dist(t-1)-dist(t0))/dt
  • La vitesse maximale (une constante) : Vmax = 500
  • L’accélération maximale (une constante) : Amax = 600

Si on n’est pas en phase de freinage et que V < Vmax, alors on est en phase d’accélération :

  • Vconsigne = Vrob + (Amax x dt)

Phase 2, vitesse max :

Une seule information est nécessaire pour cette phase :

  • La vitesse maximale (une constante) : Vmax = 500

Si on n’est pas en phase de freinage et ni en phase d’accélération, alors on est en régime établi :

  • Vconsigne = Vmax

L’Algorithme finale pour la rampe de vitesse d’avance est alors :

Et faire de même pour l’angle afin d’obtenir Vcap.


Pour vous aider à bien comprendre cet algorithme, on vous met à disposition ce fichier Excel qui réalise tous ces calculs :

Calcul Profil de Vitesse
Telecharger

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *