SE CONNECTER
1,2,3... codez ! | Le site de la Fondation La main à la pâte
Module 123 Codez | Programmer | Informatics and Digital Creation

Projet « Robotique » – Séance 3 Programmer un évitement d’obstacle

1, 2, 3, codez ! - Activités cycle 4 - Projet « Robotique » - Séance 3 : Programmer un évitement d'obstacle

Discipline dominante

Technologie

Résumé

Les élèves apprennent à manipuler des opérateurs logiques, et programment Thymio pour lui permettre d’éviter un obstacle.

Notions

Machines

  •  En combinant plusieurs instructions simples on peut effectuer une tâche complexe

Langages

  •  Un programme est un algorithme exprimé dans un langage de programmation.

Algorithmes

  •  Un "algorithme" est une méthode permettant de résoudre un problème
  •  Un test permet de choisir quelle action effectuer si une condition est vérifiée ou non
  •  Une condition est une expression qui est soit vraie, soit fausse
  •  On peut utiliser des opérateurs logiques comme ET, OU,  NON pour fabriquer des expressions logiques.

Matériel

Par groupe :

  •  Un robot Thymio
  •  Un ordinateur avec Aseba Studio installé
  •  Fiche 2

Situation déclenchante

Lors de la séance précédente, les élèves ont découvert Thymio, un robot qu’ils vont programmer pour reproduire une scène de circulation automobile. Ils ont commencé à programmer des comportements simples avec Blockly : le défi 3 rappelle une version très simplifiée du mode mauve.

Défi 4 : Thymio contourne les obstacles

Le professeur propose de reprendre leur dernier programme, et d’y incorporer des éléments caractéristiques du mode jaune, l’explorateur. Thymio doit contourner  les obstacles situés à sa droite ou à sa gauche, en tournant dans la direction opposée. La fonctionnalité d’arrêt face à un obstacle programmée au défi 3 est maintenue.

Pour relever le défi 4, il faut prévoir une porte de sortie (bloc inférieur) : si Thymio ne détecte explicitement rien devant lui, alors il peut aller tout droit (sinon il ne redémarrerait jamais). Dans ce cas, nous impliquons ici trois capteurs (avant-gauche, centre, avant-droite), par souci de lisibilité : un programme similaire mais plus robuste impliquerait les cinq capteurs avant.

Note pédagogique :
L’emploi de l’instruction « quand moteurs sont mis à jour » est nécessaire pour pouvoir imbriquer plusieurs conditions simultanément (cf bloc bleu, ci-dessous).

Que les élèves découvrent ou non la programmation par blocs, il peut être bénéfique d’utiliser les exercices de la Fiche 2 pour que les élèves s’approprient ou consolident les opérateurs logiques.

  •  Programme 1 : Thymio avance tout droit lorsqu’on appuie sur la flèche du haut ; SI les trois capteurs centraux détectent un obstacle simultanément, ALORS Thymio s’arrête.
  •  Programme 2 : Thymio avance tout droit lorsqu’on appuie sur la flèche du haut ; SI l’un des trois capteurs centraux détecte un obstacle, ALORS Thymio s’arrête.
  •  Programme 3 : ce programme donne un résultat identique au programme 2 !

Le programme 1 illustre une logique « ET » : il faut que les trois capteurs détectent un obstacle ; si un seul capteur est dans ce cas, alors Thymio continue tout droit. Les programmes 2 et 3 illustrent une logique « OU », une seule détection d’obstacle suffit à stopper Thymio (et 2 détections simultanées ou 3 détections simultanées l’arrêtent également).

Le professeur peut vouloir à ce moment introduire les logigrammes que nous utiliserons souvent dans le courant de cette séquence. Il construit avec la classe les logigrammes des deux algorithmes de la Fiche 2 :

Programme 1 (logique ET) Programmes 2 et 3(logique OU)

Conclusion

Les élèves élaborent une conclusion commune, comme celle-ci :

  •  Un "algorithme" est une méthode permettant de résoudre un problème.
  •  En combinant plusieurs instructions simples on peut effectuer une tâche complexe.
  •  Un test permet de choisir quelle action effectuer si une condition est vérifiée ou non.
  •  On peut utiliser des opérateurs logiques comme ET, OU,  NON pour fabriquer des expressions logiques.
  •  Un programme est un algorithme exprimé dans un langage de programmation.