S’initier à la programmation robotique
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.

Le programmation séquentielle
A chaque boucle, si on est assez loin de l’obstacle, on avance d’un pas.

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


Les défis associés
Il y a 6 défis associés au thème .
S’arrêter devant un obstacle
Le robot avance et doit s’arrêter dès qu’il se trouve face à un obstacle

Légo Spike s’arrête devant l’obstacle
Le robot avance puis s’arrête devant l’obstacle

Maqueen s’arrête devant l’obstacle
Le robot avance puis s’arrête devant l’obstacle

La voiture autonome
La voiture se déplace, évite les obstacles et indique son déplacement avec les LEDs

Déplacement aléatoire
Le robot effectue des mouvements aléatoires sans toucher les murs

Attrape-moi si tu peux !
Programmer le robot pour qu’il s’amuse avec la position de votre main.
