Gemini

Cette page est en cours de réécriture depuis mon ancien site WordPress

Problématique

La réforme des collèges mise en place par l’Etat a demandé aux établissements scolaires d’intégrer l’apprentissage de l’informatique et des nouvelles technologies dans leurs programmes dès le mois de Septembre 2016.

L’implémentation de cette réforme n’est pas très suivi actuellement, il semble que des moyens simples et efficaces restent encore à mettre en place.

De même, de nombreuses formations auprès des enseignants restent encore à dispenser.

Bien que cette orientation du Gouvernement soit un très bon choix d’avenir, l’apprentissage de la programmation peut s’avérer être problématique dès lors que l’enfant a du mal à passer le cap des premières difficultés, qui plus est si la prise en charge par l’établissement scolaire n’est pas optimale par manque de moyens par exemple.

Ce premier cap difficile peut revêtir différentes formes: l’âge, la maîtrise du langage pour les plus jeunes, la faculté de pouvoir exprimer clairement ses idées, la possibilité de mener un raisonnement à terme et de l’argumenter, l’aptitude à travailler en groupe. De plus, les notions abstraites qu’il faut mettre en oeuvre peuvent être un frein certain à cette évolution. La grande quantité d’informations à assimiler peut également créer un bloquage important vers un apprentissage correct.

Les enseignants quant à eux n’ont pas toujours à leur disposition les outils adaptés à l’apprentissage de ces techniques qui peuvent être nouvelles pour eux mêmes, et les outils actuels sont très souvent peu adaptés aux débutants. Quelques exceptions sont tout de même présentes autour de nous, et des solutions existent déjà, avec chacune son lot d’avantages et d’inconvénients.

De grandes craintes peuvent être ressenties dans certains établissements sur le manque réel ou ressenti quant à l’accompagnement et la formation de ce nouvel enseignement.

Le projet Gemini et la solution addOne:

Le projet Gemini est issu de l’expérience de ses fondateurs en réponse à ces nombreux questionnements. Le concept qu’ils ont développé, et qui a pour nom de code addOne, permet de répondre simplement à cette problématique.

addOne est le nom actuel du projet, Gemini est les nom du robot. Les volontaires de tous bords sont les biens venus pour participer et faire connaitre le projet.

L’originalité du concept addOne réside dans un ensemble composé d’une plateforme robotique, d’un logiciel de programmation graphique, et de cartes d’algorithmes.

Ces cartes plastifiées permettent à l’enfant, ou plus généralement au débutant, de créer des algorithmes sans avoir besoin, dans un premier temps, de connaitre de langage de programmation. Cela permet d’aborder très rapidement et de façon très ludique la programmation en temps que telle, mais également d’échanger des idées de résolution de problèmes de façon collégiale et efficace lors d’un travail de groupe en milieu scolaire.

Ce concept a été déposé auprès de l’Institut National de la Propriété Intellectuelle (INPI) en Janvier 2016 par l’équipe du projet addOne.

L’intérêt de cette méthode tient également au fait que les débutants n’ont pas forcément besoin d’un ordinateur disponible pour chacun d’eux pour commencer à créer des algorithmes. Ces algorithmes peuvent être faits de manière collégiale par le groupe de travail à partir des cartes plastifiées, puis rentrés dans le logiciel pour la programmation du robot de façon ludique et déportée si besoin, même si un seul ordinateur est disponible.

La correction des exercices pourra alors se faire par l’enseignant en utilisant les mêmes cartes mais cette fois-ci magnétiques et de tailles adaptées, et qu’il pourra coller au tableau blanc. Ainsi, tous les élèves bénéficient en même temps de la correction, et la notion de réflexion en groupe reste intacte même pendant la correction. Chacun peut apporter ses remarques, la correction reste interactive et ouverte aux propositions des enfants.

Chacun peut ainsi confronter ses propres résultats à la correction de manière très visuelle. Les erreurs de chaque groupe peuvent être discutées ensemble, les solutions alternatives peuvent également être réétudiées de façon collégiale avec l’aide de l’enseignant.

La plateforme robotique quant à elle permet d’apporter un côté ludique à l’ensemble et la solution complète permet de créer un lien entre l’algorithme et la résolution concrète du problème. L’enfant, ou plus généralement le débutant, peut directement associer sa réflexion au monde réel en voyant le robot réagir à ses ordres (ou instructions au sens informatique) qui ne sont que le reflet de la solution qu’il a envisagée. L’enfant peut appréhender la programmation de façon ludique tout en travaillant ses repères spatiaux et en associant sa réflexion lors de la résolution du problèmes à ses conséquences directes par les actions du robot. Le repérage spatial est sollicité par les actions du robot par rapport à l’enfant: dans quelle direction va-t-il aller si je me mets à sa place ? Il vient vers moi, donc pour qu’il tourne à ma gauche, il faudra lui dire de tourner à droite ?? A sa droite ? A ma droite ?? Ou le contraire ???

De même, l’enfant aura un support visuel pour expliquer le cheminement de sa réflexion lors de sa collaboration dans le groupe de travail: pour faire telle action et résoudre tel problème, j’ai dû faire ceci et prendre telle décision. Ma décision est donc réfléchie et amène un résultat que je pense cohérent et que j’ai prévu. Je peux défendre mon point de vue avec une base palpable, les actions que j’envisage sont visibles telles que je les imagine.

But:

Le but du projet addOne est de poursuivre le développement de ce concept, et de soulever les fonds nécessaires à la création d’une entité permettant de mener ce projet à terme, mais aussi de rassembler une communauté d’utilisateurs et de formateurs pédagogiques.

Ormis le développement, la fabrication et la distribution de l’ensemble, la plateforme de formation reste à compléter, de même que l’ensemble des outils pédagogiques imaginés par l’équipe du projet addOne.

Les soutiens enseignants déjà obtenus sont encourageants, les présentations faites le sont plus encore.

Il existe une façon simple d’apprendre à programmer, une façon ludique et récréative, pour tous les âges et pour tous les niveaux. Le projet addOneamène cette simplicité, ainsi qu’une grande évolutivité.

Du plus petit au plus grand, seul ou en groupe, l’important est de ne pas se décourager devant ce nouvel apprentissage. Les plus petits y trouveront un compagnon idéal pour leurs premiers pas en programmation, les plus grands un terrain de bricolage aux possibilités infinies.

Le robot:

Le support proposé est constitué d’une petite plateforme robotique de 8 cm de diamètre entièrement développée par l’équipe du projet addOne, et équipée de divers capteurs et actionneurs, ainsi que d’une liaison Bluetooth.

Gemini peut également être programmé en Scratch avec mBlock, ce qui en fait une plate-forme vraiment très ouverte.

La version 1 de cette plateforme est fonctionnelle, la version 2 est développée au niveau schématique mais elle n’est pas encore prototypée.

De part sa petite taille, le robot décrit ici est très réactif, et peut évoluer aussi bien par terre, sur des tapis de jeux ou de parcours, que sur un bureau ou une table d’écolier.

Gemini: Plateforme robotique d’éducation

Description:

Il est entièrement programmable, avec plusieurs niveaux de complexité qui seront détaillés un peu plus loin. Disons pour l’instant que:

  1. Le premier niveau de programmation est entièrement graphique et utilise donc un logiciel développé pour le projet addOne. Il est accessible à tous et permet de faciliter la prise en main du système, et ainsi de démystifier la programmation auprès du débutant.

  2. Le niveau intermédiaire nommé MixCode est une passerelle: le but est d’amener l’enfant progressivement de l’environnement graphique à la programmation structurée.

  3. Le dernier niveau laisse la possibilité d’écrire ou réécrire entièrement toutes les fonctions en C/C++.

Le code généré par le logiciel graphique est compatible Arduino, et peut directement être compilé par l’IDE Arduino pour être ensuite téléchargé dans le robot en USB. Comme nous le verrons plus loin, ceci veut dire que les connaissances acquises au fur et à mesure de l’apprentissage sont capitalisées et déjà orientées vers le langage industriel de haut niveau qu’est le C/C++.

Pour plus de détail sur Arduino, il est important de regarder le site de la compagnie https://www.arduino.cc

Un autre mode de programmation permet de ne pas utiliser l’environnement Arduino pour programmer le robot. Dans ce mode, les séquences définies par le programmeur en herbe seront directement envoyées au robot par liaison Bluetooth.

Il s’agit de séquences qui s’enchainent et qui seront ensuite directement interprétées par le robot. Ce mode de fonctionnement est tout particulièrement adapté à l’iPad, car celui-ci ne peut pas compiler de code compatible Arduino, ni se brancher en USB sur cette plateforme.

De plus, le programme interne du robot reste intact, et le débutant ne peut donc pas le corrompre par des erreurs de programmation. Ainsi, le coeur du système reste intact et peut donc être utilisé par les plus jeunes qui y voient un intérêt immédiat. La programmation par l’iPad est simple et intuitive, et reproduit fidèlement l’algorithme défini avec les cartes plastifiées de premier niveau.

Ce mode est particulièrement intéressant et utilise un outil très familier des enfants, avec un accès et une prise en main très aisés.

La première version qui est actuellement fonctionnelle comprend:

  • 6 capteurs de proximité à infrarouge (3 à l’arrière et 3 à l’avant)

  • 3 capteur de suivi de ligne infrarouges sous le robot

  • 1 capteur de mesure de distance à infrarouge en option

  • 2 capteurs de lumière ambiante

  • 2 moteurs électriques à courant continu

  • 4 Leds bicolores: 2 à l’avant et 2 à l’arrière

  • 2 Leds multicolores pour création d’ambiances (65535 couleurs possibles)

  • 1 buzzer sonore

  • 1 connecteur d’extension

  • Programmation par liaison USB

  • Alimentation pile 9V

  • Connection Bluetooth s’il n’y a pas l’option de mesure de distance

L’alimentation du robot se fait par l’intermédiaire de piles classiques 9V. Ainsi, il n’y a pas de risques liés à la gestion des piles rechargeables de type Lipo (surchauffe, risque d’incendie en cas de surcharge ou de blessure de la batterie, etc…)

La version 2 dont le schéma et le routage sont terminés comprend:

  • 6 capteurs de proximité à infrarouge (3AV – 3AR)

  • 3 capteur de suivi de ligne infrarouges

  • 1 capteur de mesure de distance à infrarouge

  • 2 capteurs de lumière ambiante

  • 2 moteurs DC

  • 4 Leds bicolores: 2 à l’avant et 2 à l’arrière

  • 1 Led multicolore pour création d’ambiances (65535 couleurs possibles)

  • 1 buzzer sonore

  • 1 boussole 3 axes

  • 2 microphones de type MEMS pour localisation des sons droite/gauche

  • 4 connecteurs d’extension

  • Programmation par liaison USB

  • Alimentation piles 1,5V

  • Connections pour carte d’extension Bluetooth, batteries, etc…

L’ensemble est prévu pour recevoir des cartes d’extensions enfichables sur les connecteurs.

Les cartes développées actuellement en V2 sont:

  • 1 carte d’extension de batteries avec zone pastillée pour développer ses propres circuits.

  • 1 carte de connexion Bluetooth

Licence:

Le but du projet addOne étant de diffuser des outils de programmation et d’apprentissage de l’électronique au plus grand nombre, la licence attribuée à l’ensemble sera à terme une licence Creative Commons http://creativecommons.fr/licences/ de type Open Source. Ainsi, le logiciel du robot pourra être réutilisé et amélioré par tous afin d’avoir une base de plus en plus développée et reposant sur une communauté grandissante.

Cartes d’algorithmie et logiciel de programmation

Comme décrit précédemment, la programmation du robot s’appuie sur deux éléments fondamentaux: les cartes de programmation et d’étude des algorithmes addOne, et le logiciel de programmation graphique pour iPad, Mac ou PC.

Les cartes de programmation sont divisées en deux niveaux de difficultés qui sont: Premier niveau et MixCode.

L’ensemble des cartes de programmation est nommé addOne pour »Ajoute en une à la suite de l’autre… ». Il s’agit bien du nom du projet…

De plus, les cartes Enseignant possèdent un verso magnétique afin qu’il puisse, s’il le désire, les coller au tableau blanc de la classe afin de faire des corrections ou des exercices de groupe.

Premier niveau:

Le premier niveau est entièrement visuel et s’adresse aux plus petits ou aux débutants dans l’apprentissage de l’algorithmie. Les cartes utilisées ne comportent que des icônes représentant l’action à exécuter dans le programme.

On voit ici que l’action décrite est »Avance ».

Une autre action est par exemple « Stop« :

Ou bien encore « Allume la Led bicolore avant droite en vert« :

Le système de cartes comprend un grand nombre de cartes Action comme celles décrites ci-dessus, ainsi qu’un grand nombre de cartes Choix, associées aux capteurs du robot.

Par exemple, le choix est ici « Est-ce que le capteur infrarouges arrière-centre a détecté quelquechose ?« :

Si oui (il fait beau), une action sera engagée, sinon (il fait gris et nuageux) une autre le sera.

On peut donc faire réagir le robot en fonction du monde extérieur par l’intermédiaire de ses capteurs.

Second niveau Mix-Code:

Le second niveau –MixCode– associe les lignes de code C aux icônes visuelles, ce qui permettra de commencer à regarder comment l’action peut s’écrire dans un vrai langage informatique.

Par exemple:

On retrouve l’action précédente « Avance » reprise en haut à droite de la carte, mais avec en plus le code informatique correspondant : « motor.Forward(); »

Le code a volontairement été écrit en anglais, mais on peut tout à fait envisager de le faire en français ou dans une autre langue.

De même pour les cartes de choix:

Au niveau de la saisie de l’algorithme dans le logiciel Mac ou PC, lorsque l’on clique sur une carte Action ou Choix, celle-ci va venir à la suite de l’autre dans l’organigramme qui se crée au fur et à mesure. Le programme correspondant s’écrit automatiquement.

Ce code qui s’écrit automatiquement lorsque les cartes sont sélectionnées est compatible Arduino, et peut donc être compilé et téléchargé sur le robot.

L’avantage qu’offre cette compatibilité est que les logiciels écrits peuvent s’appuyer sur et utiliser des bibliothèques existante. Pour rajouter de nouvelles fonctions au robot par l’intermédiaire de nouveaux composants comme un module GPS par exemple, il suffira d’utiliser les bibliothèques logicielles disponibles sur Internet pour ce module. Dans ce cas, il faudra veiller à bien respecter les licences utilisées et respecter les restrictions imposées par leurs créateurs. Bien souvent, ces bibliothèques sont Open Source, ce qui veut dire utilisables tant que l’on cite leur auteur (Voir le site Creative Commons pour plus de détails sur les licences).

Un autre avantage de cette solution est que la communauté des programmeurs Arduino est très grande et très active. Ainsi, le débutant pourra bénéficier de leur expérience, de leurs conseils et de leur aide sur les différents forums par exemple.

Dès le début, le nouveau programmeur pourra s’intégrer dans une communauté d’autres programmeurs expérimentés.

L’algorithme:

Pour créer l’organigramme correspondant au problème à résoudre, il suffira d’ajouter les carte les une après les autres (d’où le nom addOne …), afin de décrire le cheminement de la pensée.

Par exemple, supposons que le problème posé soit le suivant:

  • Demande au robot d’avancer lentement.

  • S’il trouver un obstacle, dis-lui de stopper.

  • Sinon, dis-lui de continuer son chemin ainsi pendant 8 seconde, puis de stopper.

Transcrit en addOne, cela donnerait:

On voit bien ici la représentation de la solution.

Il n’y a rien à taper sur le clavier de l’ordinateur, il n’y a que la réflexion et les solutions qui sont posées sur la table. La réflexion peut être collective, l’enseignant peut juger la solution d’un coup d’oeil et venir aider les enfants au besoin, de façon simple.

Lors de la correction, les même cartes sont collées au tableau magnétique. Ainsi, la correction, en termes visuels, correspond tout à fait aux outils que l’enfant a à sa disposition.

Lorsque la solution correcte est retenue, elle pourra être intégrée dans le logiciel afin de programmer le robot.

Le logiciel de programmation:

Il existe plusieurs version du logiciel de programmation graphique : Windows 10, macOS et iPad.

Version Windows 10:

Sur cette version tournant sur Windows 10, on retrouve bien sur la partie gauche les différentes icônes relatives aux différentes actions et aux différents capteurs du robot.

Sur la partie centrale, on voit l’algorithme tel qu’il a été saisi de façon graphique tandis que sur le partie droite on voit le code qui a été généré automatiquement.

On peut traduire cet exemple par:

  • Avance

  • Lentement

  • Pendant 5 secondes

  • Allume la Led multicolore gauche en vert et la Led multicolore droite en rouge

  • Fait un beep fort

  • Stoppe.

Le code qui s’écrit automatiquement est donc compatible Arduino et pourra alors être téléchargé dans le robot.

Pour le premier niveau qui utilise les cartes simplifiées destinées aux plus petits, la partie contenant le code C/C++ sera masquée afin de ne pas perdre l’enfant avec des notions trop complexes dans un premier temps.

Par la suite, cette fenêtre pourra lui être dévoilée, et il pourra progressivement apprendre les différentes syntaxes, puis écrire directement le code de son programme en C/C++.

Version macOS:

Cette version macOS est encore en développement, mais aura les mêmes fonctionnalités que la version Windows.

On voit sur cet exemple que le programme est en train de se construire avec des conditions if .. else. Si le capteur Avant est actif, alors …

Conclusion provisoire:

Cette nouvelle méthode permet une approche simplifiée de la programmation, tout en la rendant ludique et attrayante pour les plus jeunes, avec des résultats immédiats et progressifs.

Par la suite, le programmeur plus expérimenté pourra utiliser ce concept pour connecter ses propres montages électroniques au robot et développer de nouvelles applications.