Cours:MindstormEvitementObstacle : Différence entre versions
m (→Principe) |
m (→Principe) |
||
Ligne 7 : | Ligne 7 : | ||
==Principe== | ==Principe== | ||
− | On souhaite tout simplement réaliser un programme qui fait tourner le robot d'un angle de 90°. | + | On souhaite tout simplement réaliser un programme qui fait tourner le robot d'un angle de 90°. |
+ | |||
+ | '''Indication''': une rotation positive est une rotation vers la droite. | ||
L'algorithme sera le suivant : | L'algorithme sera le suivant : |
Version actuelle datée du 17 octobre 2018 à 09:20
Retour à la liste des Tps
Sommaire
Rotation à l'aide du gyroscope
On souhaite que le robot puisse faire des rotations d'un certain angle. Il est intéressant d'utiliser le gyroscope pour parvenir à ce résultat.
Principe
On souhaite tout simplement réaliser un programme qui fait tourner le robot d'un angle de 90°.
Indication: une rotation positive est une rotation vers la droite.
L'algorithme sera le suivant :
- arrêter moteurs
- attendre 10ms
- lire gyroscope (valeur entre -180 et 180 d'après la doc mais retourne en fait un angle pouvant dépasser ces limites)
- calculer l'angle souhaité (position du robot + 90° ...)
- faire tourner le robot sur lui même (roues en sens opposé)
- répéter
- lire gyroscope
- attendre 2ms
- tant que angleRobot != angleSouhaité (ou tant que angleRobot < angleSouhaité)
- arrêter les moteurs
création d'une fonction
Il peut être intéressant de faire tourner notre robot de 90° plusieurs fois dans un même programme.
Au lieu de faire un "copier coller", on va écrire une fonction qu'il suffira d'appeler chaque fois que l'on souhaite :
Exemple :
#include ....
void tourner90()
{
// copier ici les instructions nécessaires à la rotation à 90°
...
}
int main()
{
....
tourner90();
....
do {
....
tourner90();
....
} while (conditionPourContinuer);
....
return 0;
}
Ecrire un programme utilisant cette fonction tourne90 pour que le robot "dessine" un carré
Remarque : Vous pourrez :
- écrire une fonction ligne droite
- utiliser une boucle for
Pour les plus avancés :
On peut également faire une fonction plus évoluée dont le prototype serait :
void tourne(int angle)
La fonction doit alors tenir compte du paramètre passé (angle) pour calculer la valeur de l'angle désiré.
Ecrire cette fonction tourne et l'utiliser pour "dessiner" un triangle par exemple
Évitement d'obstacles
On place le robot dans un environnement avec des murs qu'il doit bien évidemment éviter. En temps normal le robot se déplace en ligne droite.
Vous allez utiliser le télémètre UltraSon pour détecter les obstacles (mesure de distance) et lorsque le robot se trouve trop près, le robot devra tourner de 90°.
Si jamais le robot touche un obstacle, le programme devra se terminer.
Faire un programme répondant au cahier des charges
Remarque :
- commencer par un robot qui se déplace en ligne droite et s'arrête s'il touche un obstacle