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 .
Arrêt autonome Thymio
Objectifs de la mission : allumer thymio en vert le faire avancer tout droit Quand il détecte (...)
2 S’arrêter devant un piéton
Contexte Le véhicule se déplace en ligne droite. Sur cette route, un piéton traverse. Le véhicule (...)
Se déplacer dans un couloir
Objectifs du défi Le robot se déplace dans un couloir sans toucher les murs.
Résultat attendu (...)
04 S’arrêter face à un piéton
Le véhicule se déplace sur la route en suivant les lignes de couleurs.
Sur cette route, un (...)
Déplacement dans un labyrinthe
Sortir d’un labyrinthe
Eviter un obstacle
Le robot doit être capable d’éviter un obstacle se trouvant sur sa route.