suivant: Troisième étape
monter: Deuxième étape
précédent: Deuxième étape
  Table des matières
On va essayer d'améliorer les capacités de réaction autour de la zone critique
d'équilibre. Pour augmenter la perception de l'état du système, on va avoir besoin d'un nouveau
capteur lumineux,
braqué sur une autre face du disque, pourvue d'un dégradé de gris, noir dans
la zone d'équilibre et de plus en plus clair en s'écartant de cette zone. Ce
capteur servira à déterminer la vitesse à appliquer aux moteurs. La vitesse
des moteurs sera d'autant plus importante que la valeur lumineuse sera importante.
On aura ainsi une plus grande finesse autour de la zone d'équilibre, avec des
accélérations bien plus nuancées que précédemment, et un contrôle davantage
en souplesse.
s
Voici le code de la fonction chargée de calculer la vitesse du robot en fonction de la
valeur du capteur lumineux.
int vitesseGrad(int current, int dir){
//calcul de la vitesse, en fonction du disque colore
//et du capteur1
// "the brighter the faster"
//a priori lineaire....dans un premier temps
//
//mais pas necessairement symetrique a l'usage...
if (dir==-1){
speed=GRADFACT * current -70;
if (speed > 120) speed=255;
}
else{
speed=(GRADFACT-1) * current -30;
if (speed > 255) speed=255;
}
return speed;
}
Les paramètres ont été déterminés après de nombreux tests empiriques.
Ceci étant, la chute se produit toujours presque sûrement au bout
de quelques secondes, l'accélération maximale étant de toute façon limitée.
Avec cette nouvelle approche, les phénomènes d'oscillation apparaissent cependant
beaucoup moins fréquemment, vu qu'on passe plus en douceur d'une zone à l'autre.
suivant: Troisième étape
monter: Deuxième étape
précédent: Deuxième étape
  Table des matières
2001-01-11