feature-image-cozmo-tutoriel-code-lab-5

Tutoriel Cozmo pour le cycle 4 : projet Cozmo Foot ! (partie 3)

Cette entrée a été publiée dans Education, Tutoriels en robotique, et marquée avec , , , , le par .

Dans ce tutoriel pédagogique, nous allons vous montrer comment faire vos premiers pas avec l’interface Code Lab de Anki, qui vous permettra de programmer Cozmo.

Au programme : repérage dans un plan (x, y), conditions, fonctions et variables !

Activité COZMO FOOT

  • Durée : 2-3 séances de 2h
  • Public : 4ème/3ème
  • Discipline : mathématiques, technologie, programmation
  • Thématique : programmation
  • Niveau : intermédiaire
  • Notions utilisées : repérage dans l’espace, repérage d’un point ou d’une ligne dans un plan (mathématiques), conditions (programmation), variables (programmation), utilisation de capteurs (robotique, programmation)

Une manière simple et très ludique d’apprendre à se servir du mode constructeur de Code Lab est de partir d’un jeu déjà existant et de le modifier. C’est ce que nous allons vous apprendre dans ce premier tutoriel, découpé en 3 parties :

Ce tutoriel est également disponible en PDF, téléchargez-le ici (attention, le PDF n’inclut pas les GIF) : Tutoriel Cozmo pour le cycle 4 : projet Cozmo Foot ! (complet)

PARTIE 3

4. Modification de l’événement déclencheur

Dans cette partie, nous allons faire un peu de programmation événementielle en abordant les conditions (‘si’… ‘alors’…) !

Pour rappel, l’action sous condition (‘si’… ‘alors’…), est l’un des piliers de la programmation, il est très important de bien comprendre ce concept qui peut être résumé ainsi :

SI (proposition-à-vérifier est vraie ou fausse) ALORS :

on fait ça

SINON

on fait ça

FINI

Pour l’instant, l’événement qui déclenche la réponse de Cozmo est : “si l’inclinaison de Cozmo est supérieure à 15° ou inférieure à -15°”.Nous souhaitons changer cela. Notre nouvel événement déclencheur sera “si l’utilisateur touche le cube 1”, alors Cozmo déclenche l’animation réponse.

Supprimez les blocs opérateurs/capteurs “Inclinaison de Cozmo °” mais conservez le bloc “attendre jusqu’à < >”.

Dans la catégorie “Opérateurs”, choisissez le bloc « ( [X] = [Y] ) ». Ce bloc est notre condition :

  • [X] sera remplacé par le bloc capteur “le cube [#] a-t-il été touché »
  • [Y] sera remplacé par le texte “True”

tuto-cozmo-bloc-condition

Ce bloc se traduit par ‘si’ le cube 1 est touché, ‘alors’…

Note : le cube 1 ressemble à un trombone, le cube 2 ressemble à une lampe ou à un cœur et le cube 3 ressemble à un bébé dans son siège.

5. Peaufinage des interactions homme-machine

Pour finir la partie “Cozmo veut qu’on lui pose une question”, il reste deux choses à faire :

1. Déplacer l’avant dernier bloc d’instruction “déplacer la tête à [45]° à [150] °/s » en deuxième position, sous le bloc “quand message1 est reçu – hérité”. De cette manière, Cozmo commencera son interaction avec l’utilisateur en le regardant dans les yeux !

2. Enfin, créer le cube de cristal de Cozmo ! (qui lui permet de prédire les résultats)
C’est très facile, il vous suffit d’aller dans la catégorie “Actions” et de sélectionner le bloc “sur le cube [#], mettre [tous les voyants/le voyant #] en [couleur]”.
Choisissez le cube 1 (déjà sélectionné dans notre bloc “condition” (attendre jusqu’à – le cube 1 a-t-il été touché = True). Pour la couleur, vous êtes libre ! Notre choix s’est porté sur le bleu clair, qui pourrait rappeler la teinte du verre d’une boule de cristal…

cozmo code lab mode constructeur lumières des cubes

6. Modification des variables pour l’animation COZMO FOOT et nouveau format de conditions

Comme les conditions, les variables sont des éléments essentiels à tout programme. Une variable est un emplacement virtuel qui va servir à stocker des informations qui seront utilisées plus tard.

Dans le projet VOYANT MAGIQUE !, la variable “Fortune” a été créée. Elle correspond aux différentes prédictions qui seront tirées aléatoirement. En fonction du chiffre qui sortira (pour l’instant, de 1 à 10), Cozmo énonce une prédiction au hasard.

Le bloc “nombre aléatoire entre [X] et [Y]” permet de renvoyer un nombre pris au hasard entre [X] et [Y]. Dans le projet VOYANT MAGIQUE !, X = 1 et Y = 10.

Pour COZMO FOOT nous n’aurons besoin que de trois prédictions, nous changeons donc nos valeurs pour X = 1 et Y = 3.

JNous changeons également le texte de ces prédictions.

  • Texte 1 : “Oui, tu peux compter là-dessus !”
  • Texte 2 : “Hmmm… J’ai de sérieux doutes.”
  • Texte 3 : “Haha, ça n’arrivera jamais !”

Là aussi, vous pouvez tout à fait entrer les textes de votre choix.

Nous venons de créer l’animation suivante :

Cozmo choisit un chiffre au hasard, compris entre 1 et 3. A chaque chiffre est associée une action différente (affichage d’un texte).

Pour lancer telle ou telle action, nous faisons de nouveau appel aux conditions, cette fois avec le bloc “si (condition) alors [A]”.

7. Les fonctions : ajout d’une fonction supplémentaire

Qu’est-ce qu’une fonction ? C’est un ensemble d’instructions, un petit bout de code, qui sera regroupé sous une fonction. Si on prévoit d’utiliser un bout de code plusieurs fois dans un programme, on le range dans une fonction. Chaque fois que nous aurons besoin de d’ajouter ce bout de code dans notre programme, « nous appellerons » la fonction à la place. Ainsi, nous n’aurons pas besoin de retaper notre bout de code.

La fonction présente deux gros avantages :

  • Nous n’avons pas besoin de retaper notre bout de code plusieurs fois
  • Notre code sera plus facile à lire (une fonction qui tient sur une ligne peut remplacer un bout de code de plusieurs dizaines de lignes)

Dans Code Lab, pour créer une fonction, il suffit de placer le bloc d’instruction « quand [message] est reçu » au début de la suite d’instructions que nous souhaitons réutiliser.

A chaque fois que nous souhaitons « appeler » cette fonction dans notre programme, il nous suffit simplement de placer le bloc « diffuser [message] ».

Exemple :

Création de la fonction :  « quand [dialogue1] est reçu »

A chaque fois que vous souhaitez « appeler » cette fonction dans votre programme, il vous suffit simplement de placer le bloc « diffuser [dialogue1] ».

Nous allons maintenant créer une fonction pour le code qui gérera les nouvelles questions de l’utilisateur (car nous ne voulons pas que Cozmo répète les instructions de COZMO FOOT ! à chaque fois, il dira juste « Veux-tu un autre pronostic ? »).

  1. Commencez par nommer ce nouveau bout de code en ajoutant un commentaire (dans Code Lab, cela se passe dans « Données » > « Créer une nouvelle variable »). Ici, nous nous servons du bloc « Variable » comme d’une ligne de texte descriptive. Appelez ce nouveau bout de code « Pose une nouvelle question à Cozmo ».
  2. Vous allez maintenant écrire le même code que pour la partie « Cozmo veut qu’on lui pose une question » (qui est la fonction « message1 ») à quelques différences près :
    1. Nommez votre fonction « message5 » (quand [message5] est reçu)
    2. Après « afficher sur le visage de Cozmo », le code n’est plus le même que pour la fonction « message1 ». Il vous faut remplacer les trois blocs « Dire »« Lire l’animation » et « Dire » par un seul bloc « Dire [Veux-tu connaître un autre pronostic ?] ».
    3. Le dernier bloc doit être « diffuser [message2] » car une fois notre animation achevée, le programme doit lancer la fonction « message2 », qui est le choix aléatoire d’une prédiction.

Note : dans cet exemple, la fonction « message5 » n’est utilisée qu’une seule fois, mais nous pourrions tout à fait imaginer que ce soit plusieurs fois, c’est tout l’intérêt d’une fonction !

Attention, vous avez peut-être remarqué que les fonctions déjà présentes dans le projet VOYANT MAGIQUE ! portent la mention « – hérité », mais que cette mention est absente des blocs de fonction que vous avez ajoutés. Cela est dû au fait que le projet VOYANT MAGIQUE ! a été créé avec la version précédente de Code Lab.

Dans cette version précédente, les messages ne pouvaient porter que les noms « message1 », « message2 », etc. Ces noms étaient sélectionnés dans une liste déroulante. Une mise à jour a été faite, qui permet désormais de nommer les fonctions comme on le souhaite. Par contre, les nouvelles fonctions et les anciennes fonctions ne peuvent pas être utilisées conjointement dans un même bout de code, il y a une incompatibilité de version.

Pour éviter cela, il suffit juste de remplacer les blocs « – hérités » par de nouveaux blocs de fonction. Pour plus de facilité, nous vous montrons ci-dessous, quels sont les blocs à remplacer (et par quoi les remplacer).

code-lab-cozmo-fonctions-heritees

Il ne vous reste plus qu’à remplacer le premier commentaire « Cozmo veut qu’on lui pose une question » par « Cozmo veut qu’on lui pose une première question » !

Vous venez de finir votre premier tutoriel pour Code Lab. Il vous a permis de découvrir les fondamentaux de la programmation (conditions, variables, fonctions) et de comprendre comment les utiliser dans Code Lab. A présent, vous en savez suffisamment pour créer votre propre jeu ou activité !