next up previous contents
suivant: Troisième étape monter: Deuxième étape précédent: Deuxième étape   Table des matières

Amélioration de la perception

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.
second side views
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.


next up previous contents
suivant: Troisième étape monter: Deuxième étape précédent: Deuxième étape   Table des matières
2001-01-11