Club robotique de Sophia-Antipolis

Accueil > Découverte > Pédagogie et robotique > Etudier la robotique > La robotique au collège : découverte

La robotique au collège : découverte

lundi 24 janvier 2011, par Eric P., Julien H.

Il est tout à fait possible d’apprécier les robots dès le collège, en observant leur fonctionnement ou même en construisant son propre robot mobile.

La robotique recouvre plusieurs disciplines enseignées au collège :

  • les mathématiques : géométrie, algorithmique
  • les sciences physiques : mécanique et électricité
  • les technologies : circuits et composants électroniques, construction mécanique, informatique et programmation

Nous n’avons pas connaissance d’établissements ou de cursus spécialisés en robotique à ce niveau.

Les robots

Différentes plate-formes mécaniques ou électroniques sont particulièrement adaptées aux collèges :

Tous ceux-là sont présentés sur ce site et plusieurs collégiens faisant partie de notre association les utilisent régulièrement.

On peut apprendre beaucoup sur la mécanique et l’électronique en récupérant des pièces ou en réparant des parties cassés dans les objets de tous les jours (jouets obsolètes, machines en panne).

La récupération est pratique, surtout dans les imprimantes et les lecteurs CD-rom (pour le moteur du tiroir par exemple).

Cependant à cet âge, il faut gérer la déception et l’érosion de la motivation donc le recours à des pièces en kit permet petit à petit de construire un robot au fil de l’apprentissage, ce qui permet également de s’adapter aux besoins et au budget.

Nos sites de prédilection pour l’approvisionnement sont Easy Robotics pour la mécanique et Zartronic pour l’électronique (tous deux en France, donc adéquat pour des commandes par des établissements scolaires soumis à des contraintes réglementaires, comme pour les particuliers soucieux d’avoir des interlocuteurs disponibles pour leurs questions).

La pratique ludique

Chaque année plusieurs collèges participent à la Pobot Junior Cup que nous organisons. Il s’agit d’une compétition de robots autonomes programmés par les élèves de collège et lycée, avec un exposé sur le thème du progrès scientifique. Ces compétitions sont encadrées par un ou plusieurs professeurs mais les robots autonomes sont conçus, assemblés et programmés par les élèves eux-mêmes, et après quelques conseils élémentaires que nous leur prodiguons sur ce site ou par une intervention en classe, ils n’ont plus besoin d’aide et nous étonnent par leur imagination et leurs astuces.

La Pobot Junior Cup a l’avantage d’utiliser le même matériel pour les élèves entre 10 et 18 ans, avec des intérêts différents (astuces mécaniques pour les plus jeunes, apprentissage de l’informatique pour les plus grands).

Si vous souhaitez plus d’informations ou que vous souhaitez participer avec votre collège à notre concours annuel, contactez Eric vice-président de l’association en charge des relations pédagogiques.

Il existe d’autres événements ludiques accessibles aux collèges : les Défis Robots organisés dans les académies mais concernant uniquement des robots BEAM sans électronique programmable ou encore les Trophées Planète Sciences qui concernent des robots télécommandés donc aussi sans programmation. Il s’agit donc plus d’astuce, d’adresse et de construction mécanique fiable, ce qui fait moins appel aux connaissances scientifiques.

Quel âge pour quelles sciences

Dès 10 ans, la robotique fait figure de cadre d’observation pour les principes mécaniques et la découverte de l’électricité. Les concepts logiques (contrôle action / réaction et algèbre de Boole) sont accessibles dès 12 ans et la programmation par des paradigmes graphiques est accessible à partir de 14 ans.

 à partir de 10 ans, c’est le comportement autonome d’une machine qui est intéressant à apprendre : le trio fondamental "capteur / contrôleur
/ actionneur". Le kit NXT est bien adapté car sans ordinateur, le petit écran de la brique Lego permet en 5 cases de tester une mécanique faite
par l’enfant avec un comportement répétable (j’avance, j’attends de détecter, je recule, j’attends de détecter, je reviens au début).

 à partir de 12 ans, l’étape précédente va très vite et on peut ensuite intégrer des grandeurs mathématiques : intensité lumineuse, vitesse du moteur. L’interface graphique du logiciel Lego NXT permet de manipuler des "fils de données" qui passent de la brique capteur à la brique moteur, sans
saisie de code.

 à partir de 14 ans, on peut concevoir et tester des algorithmes.

L’utilisation des briques Lego devient complexe et on cherche un langage. Si on commence de zéro, Arduino est un bon candidat (l’anglais
des mots-clés n’est plus un problème à cet âge). L’abondance de documentation sur des sites francophones évite d’être bloqué.

Dès 14 ans, la gamme Arduino malgré son langage de programmation textuel permet des expérimentations simples mais très évolutives. Une version particulière, la Romeo, intègre des connecteurs pour simplifier la connexion de capteurs et peut gérer deux moteurs à courant continu (type lecteur de CD rom) sans rien avoir à souder.

Pour les plus motivés, avec des interlocuteurs (parents, professeurs, clubs) pouvant expliquer les étapes complexes et résoudre les blocages, la construction d’un robot étape par étape à base d’Arduino comme le [Pobot Easy] peut être envisagée. C’est un bon candidat car il est vraiment modulable, tant mécaniquement (on en a fait un avec une pince, un avec une coque, un qui suit une ligne) que électroniquement (avec le sandwich de cartes d’extension Arduino).

Apprentissage de la programmation

Les nouvelles instructions ("Bulletin officiel spécial n°8 du 13 octobre 2011 - Enseignement de spécialité d’informatique et sciences du numérique de la série scientifique - classe terminale") incluent un module relatif à l’apprentissage de la programmation via des langages de haut niveau (par opposition aux langages graphiques, tel que celui du kit Mindstorms par exemple, ou au langage assembleur, totalement inaccessible à des novices).

Le choix du langage risque d’être influencé par les références prépondérantes dans la presse ou la littérature, et donc de s’orienter vers des langages tels que Java, C++,... Certes l’apprentissage de ces outils est important dans la mesure où ils sont largement utilisés dans le milieu professionnel, mais ce ne sont pas les meilleurs outils pour la découverte de la notion d’algorithme et de sa formalisation via un langage.

Pourquoi cela ?

Ces langages sont de types compilés [1], ce qui signifie qu’une partie non négligeable du formalisme porte sur des directives indiquant comment les données, instructions,... sont traduites en langage machine. De ce fait, ils comportent un certain nombre d’éléments syntaxiques (accolades, ponctuation, mots-clés tels que begin-end,...) qui n’ont d’autre rôle que de fournir au compilateur des indications quant à la structure du formalisme, et non de l’algorithme.

Cela peut avoir un effet contre-productif important lorsqu’on les met entre les mains de débutants complets, dans la mesure où ils vont devoir surmonter les obstacles de la compilation puis de l’édition de liens avant de voir leur programme commencer à vivre. Et lorsqu’on sait que même nous, pourtant professionnels chevronnés pour certains d’entre nous, avons parfois des difficultés à comprendre l’origine de certains messages d’erreur sibyllins, imaginez ce qu’il en sera pour des jeunes débutants. Essayez-vous par exemple à compiler du C ou du C++, et vous comprendrez :)

Le risque de découragement est donc facile à imaginer, sans parler de la perte de temps au niveau du déroulement du cours, puisqu’avant de pouvoir étudier avec les élèves les problèmes posés par l’algorithme qu’ils ont imaginé, il faudra déjà avoir résolu tous les problèmes liés à la chaîne de compilation du code source. Il y a donc de fortes chances d’en avoir perdu quelques un en cours de route, sans parler de celles de ne pas avoir eu le temps de mener la manip à terme.

Bon et alors ?

Il faut savoir qu’il existe des langages dits interprétés, qui n’ont donc pas besoin de cette phase de traduction en langage machine via le processus de compilation et d’édition de liens, et donc les instructions sont traduites au fur et à mesure par la machine [2].

Ce type de langage supprime donc l’écueil décourageant de devoir élaborer les commandes correctement paramétrées pour compiler et lier le programme. Ceci étant, il ne faut pas se leurrer : les erreurs ne disparaissent pas pour autant, et elles vous sauteront au visage au moment de l’exécution. Ceci étant, les tous premiers essais (du genre imprimer un message "Hello", ou énumérer les 10 premiers entiers), pour lesquels le risque d’erreurs est très faible, donneront un résultat très rapidement et sans douleur, ce qui est de nature à encourager les candidats à poursuivre le voyage.

Dans l’éventail des langages entrant dans cette catégorie, le plus célèbre étant certainement le langage Basic, notre prédilection va vers le langage Python. Nous n’allons pas présenter ici ce langage (un livre entier serait nécessaire pour cela), mais il faut savoir qu’il a été conçu avec les idées directrices suivantes en tête :
 permettre au programmeur de rester concentré sur son problème en retirant du langage toutes les exigences de spécifications de directives à l’attention de la machine
 intégrer au langage de manière native des structures de données complexes : listes, ensembles, tuples, dictionnaires (aka tables associatives),...
 intégrer au langage des opérateurs permettant d’exprimer des structures de données et de traitements sur la base de concepts mathématiques (range, ensemble en compréhension, lambda calcul,...)
 fournir en standard un "écosystème" de bibliothèques couvrant un éventail de fonctionnalités correspondant à la vaste majorité des problèmes rencontrés (communications, manipulation de formalismes tels que XML, JSON,..., calcul numérique,...)

Le premier point est traité de plusieurs manières :

  • suppression des mots clé et ponctuation dont le rôle est de fournir au compilateur des informations quant à la structure du code :
    • une instruction par ligne => plus besoin de point-virgule ou similaire pour les séparer
    • définition des blocs par l’indentation de leur contenu => plus besoin d’accolades, de begin-end,... ou autre délimiteur de bloc
    • suppression du typage explicite des données => celui-ci est choisi par l’interprète lors de l’exécution en fonction des valeurs, et plus besoin pour le programmeur de savoir à l’avance s’il faudra utiliser un entier court ou long, signé ou pas, voire un flottant

Il est clair que l’absence de type fait hurler les défenseurs de C/C++ et consorts, car entre autres générateur de (mauvaises) surprises à l’exécution. Mais n’oublions pas qu’il n’est pas question ici de développer du code de supervision de centrales nucléaires, mais d’initier de jeunes élèves à la notion d’algorithme et à la programmation.

Ce n’est pas un hasard si Python est actuellement le langage de prédilection des utilisateurs de la Raspberry Pi, qui ne l’oublions pas a été créé par son concepteur de manière à fournir un outil accessible à tous (y compris financièrement) pour relancer l’intérêt des plus jeunes vis à vis de la programmation, comme l’ont fait en leur temps des produits comme le Sinclair ZX80 et ses frères.

Nous n’allons pas développer ici plus avant cette réflexion, car cela couvrirait des pages entières, et nous invitons fortement le lecteur intéressé à se procurer le hors série n°40 de la revue Linux Magazine France, de janvier-février 2009. Bien que vieux de plus de 3 ans, ce numéro est toujours actuel, tout particulièrement concernant les articles des pages 11 à 25 [3] consacrés à l’adéquation de Python à l’enseignement de l’informatique. L’ensemble du numéro traite de Python, et balaye de manière assez intéressante les applications du langages à des domaines aussi différents que la Web, le calcul numérique, l’interface avec des langages tels que C/C++,...

Conseils

Le conseil principal est de ne pas hésiter à expérimenter par soi-même, c’est la meilleure façon d’apprendre. La robotique est un domaine d’innovation, il n’y a donc pas de vérité définitive sur le meilleur capteur, le meilleur composant, la meilleure mécanique.

Il faut observer, comprendre et répéter soi-même. Ainsi le choix du mode de déplacement est une étape importante et on peut aisément tester sur un prototype rapide (un jouet, un bricolage en bois voire même en carton) comment tourne une roue (rapidement ou lentement, avec de la force - du couple - ou pas) pour savoir si elle est bien dimensionnée, si le moteur est suffisamment puissant. Pareil pour les capteurs : les plus simples sont souvent les plus efficaces. Un capteur tout ou rien (voit / ne voit pas)
fait de meilleurs évitements d’obstacles qu’une mesure de distance.

Voilà pour l’approche pédagogique. Pour une approche plus ludique, un système comme le Mavin ou le Pob-Bot avec son interface Risbee ou Orbee convient très bien pour une observation du comportement du robot : on maîtrise moins son fonctionnement (pas de manipulation des grandeurs physiques comme Lego avec les fils de données) et on joue plus sur les modifications du programme. Qu’est-ce qui se passe si j’ajoute telle brique, telle brique, etc...

Concernant les robots à construire, le robot Mousey est une bonne activité familiale, car elle permet de raccrocher avec des connaissances
plus classiques (électricité, relais, interrupteur) et nécessite du petit matériel de bricolage (dont un fer à souder). La phase de
récupération est très instructive, mais parfois décevante, car on peut récupérer des dizaines de machines et ne rien pouvoir utiliser. C’est
aussi vrai pour un club comme le notre : on accumule plein de matériel (de quoi remplir un garage) et pourtant parfois on n’a toujours pas la
bonne pièce. On a la chance de pouvoir la construire, mais sinon il faut l’acheter.


[1la compilation est l’opération qui consiste à traduire le source du programme, rédigé par le programmeur dans un langage de haut niveau compréhensible par un humain (formé à cela), en codification binaire directement exécutable par le ou les processeurs de la machine cible

[2ce n’est pas totalement vrai pour tous les langages, certains mémorisant une forme intermédiaire plus efficace lors de la première exécution, de manière à accélérer le processus pour les exécutions suivantes. C’est le cas de Python par exemple

[3quand on vous disait qu’on pouvait en écrire des pages ;)

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.