CoDéfi

S’initier à la programmation

S’arrêter devant un obstacle

Accueil > Découvrir > S’initier à la programmation > S’arrêter devant un obstacle

Présentation

Lors de ses déplacements, un robot peut être amené à s’arrêter avant de toucher un obstacle (mur, piéton...).

Il faut donc détecter cette présence avant le choc, s’arrêter à bonne distance et éventuellement faire une manœuvre ou attendre un dégagement.

Le robot doit alors être équipé d’un système de détection : un système de mesure de distance.

Le matériel

Pour les déplacements

Le robot dispose d’un ou plusieurs moteurs pour se déplacer. Nous ne traiterons pas cette partie dans ce tutoriel.

Partons alors du principe que le robot sait "avancer" et "manœuvrer"

Pour détecter l’obstacle

Pour détecter un obstacle avant de le toucher, le robot doit être équipé d’un capteur qui mesure la distance entre lui et un objet placé devant.

Il existe 2 types de capteurs :
- les capteurs à ultrasons
- les capteurs à infrarouge

Ces capteurs sont équipés d’une partie émettrice et d’un récepteur (contrairement aux barrières infrarouges des portails dont les deux modules sont séparés et placés de chaque coté).




Le principe

Pour les déplacements

Partons du principe que le robot sait déjà se déplacer (fonction avancer).

Il y a 2 manières de programmer notre robot pour s’arrête à bonne distance de notre obstacle :

- La programmation événementielle
- La programmation séquentielle

La programmation événementielle

Le robot se déplace sans s’arrêter et analyse en permanence sa position par rapport à l’obstacle. Suivant la distance, le programme arrête ou non le déplacement.

Le programmation séquentielle

Le capteur mesure la distance entre le robot et l’obstacle. Si la distance est suffisamment grande, le robot avance d’un petit pas, si elle est trop petite, le robot s’arrête.




La programmation

Pour la programmation, nous allons utiliser la fonction avancer.

Pour un déplacement en ligne droite, c’est assez simple de remplacer cette fonction par un allumage des moteurs.
Dans le cas ou le robot suit une ligne, cette fonction avancer est un sous-programme qui permet au robot de suivre la ligne. Pour en savoir plus, vous pouvez vous référer au tutoriel suivre une ligne.

Attention : Dans un programme, il ne doit y avoir q’une seule boucle infinie. Elle se trouve donc dans notre programme principal que nous allons faire, et non dans le sous programme avancer.

La programmation événementielle

La fonction avancer ajuste la vitesse et la direction du robot. Le capteur arrête les moteurs si on est trop prêt. On attend que l’objet s’éloigne pour repartir.

Programmation événementielle

Le programmation séquentielle

A chaque boucle, si on est assez loin de l’obstacle, on avance d’un pas.

Programmation séquentielle




Pour aller plus loin

Lors de la détection d’un obstacle, il peut être demandé au robot d’effectuer une manœuvre d’évitement ou une manœuvre de demi-tour.

Cette fonction manœuvrer est donc un sous-programme qui pilote manuellement le robot.

Voici comment l’intégrer au programme

Programmation événementielle
Programmation séquentielle
Vous devez être identifés pour accéder aux ressources téléchargeables


Les défis associés

Il y a 8 défis associés au thème S’arrêter devant un obstacle.

Consulter les défis