CO de Marly 2024 / 2025 - Cours de robotique

Dates des cours 2024 / 2025 A NOTER :

Calendrier 2024-2025

Télécharge ce calendrier en cliquant sur ce lien, ou sur l'image ci-dessus !


Le CO de Marly met à disposition 4 LEGO® MINDSTORMS® ROBOT INVENTOR pour ces élèves. Il s'agit des robots suivants:

  • Gandalf
  • Legolas
  • Pippin
  • Merry

Je mets à disposition mes 2 LEGO® MINDSTORMS®ROBOT INVENTOR et mon robot LEGO® Spike, nommés respectivement:

  • Gimli
  • Aragorn
  • BotMan le chevalier multicolore

Merci d'en prendre grand soin!


Bonus: As-tu retrouvé les 2 références à des films qui se sont glissées dans les noms des robots?

Programme et matériel

Ci-dessous, sont présentés tout ce dont tu auras besoin pour ce cours de robotique. A savoir un LEGO® MINDSTORMS® ROBOT INVENTOR et un programme pour pouvoir lui donner tes instructions.

LEGO® MINDSTORMS®

Il s'agit du programme qui te permet de créer et de transmettre tes instructions au robot.


Lancement du programme

Pour le lancer, soit tu vas sur l'application launcher de ton mac.

Soit tu utilises le champs de recherche Spotlight, en cliquant sur commande + barre d'espace.

et ensuite tu tapes "MINDSTORMS", il devrait rapidement te proposer le programme LEGO® MINDSTORMS®, avec l'icone suivante:

Clique dessus pour lancer le programme.


L'interface

Une fois le programme lancé tu te retrouves avec cette interface tu peux choisir entre faire un des 5 modèles proposés, reprendre un des projets que tu as en cours ou cliquer en bas à droite sur "code" pour débuter un nouveau projet.

Ensuite on te demande si tu veux coder en bloc de code ou en python. Le python cela sera pour plus tard, donc tu choisis "bloc de code". Et tu peux nommer ton projet.

Tu te trouves maintenant dans l'interface de développement avec à gauche tous les différents blocs de code triés par catégorie.

Tu peux changer le nom du projet en haut à gauche.

En haut à droite tu peux voir si le hub est connecté.

Pour connecter le hub choisi Bluetooth et fais les étapes qui sont décrites après.

Quand le hub est connecté tu peux voir tous les moteur et capteurs qui sont connectés.

Si tu désires plus d'informations sur les moteurs ou les différents capteurs tu pourras trouver des informations dans l'aide.

ROBOT INVENTOR

Le hub

Le Hub est une unité de commande programmable à laquelle il est possible de connecter des capteurs et des moteurs LEGO®. Le Hub possède une interface intuitive composée de voyants et de boutons, et peut fonctionner de manière autonome ou en mode Visionnage direct.

Le Hub dispose de six ports d'entrée/sortie qui peuvent accepter n’importe quel moteur ou capteur avec le même type de port.

Le Hub dispose d'un capteur d'unités de mesure inertiel à six axes qui permet de détecter l'angle, les mouvements, l'orientation, l'accélération et la vitesse angulaire du Hub.

Le Hub dispose d'une interface à trois boutons. Les boutons flèche gauche et flèche droite peuvent être utilisés pour sélectionner l'un des programmes stockés dans le Hub ou pour réaliser des actions dans les programmes. Le bouton central est utilisé pour activer le Hub, exécuter et interrompre des programmes.

Le Hub dispose d'un bouton permettant d'activer le Bluetooth afin de se connecter à des appareils tels que des téléphones, des tablettes et des ordinateurs. Une connexion physique via USB est également possible pour se connecter aux appareils et charger la batterie.


Fonctionnalités du Hub

L'orientation fait référence au côté du Hub qui est orienté vers le haut.

  • Avant : le côté avec la matrice d'affichage
  • Arrière : le côté avec la batterie
  • Gauche : le côté avec les ports A, C et E
  • Droit : le côté avec les ports B, D et F
  • Dessous : le côté avec le haut-parleur
  • Dessus : le côté avec le port USB

Tangage, Roulis, Lacet

L'angle du Hub est mesuré par rapport à une position de base, le Hub posé à plat sur une table plane, les témoins LED orientés vers le haut Les points des axes permettant de mesurer les degrés commencent au centre du Hub.

Le Tangage fait basculer le Hub vers l'avant et vers l'arrière. Plage de -90 à 90

Le Roulis fait basculer le Hub d'un côté et de l'autre. Plage de -180 à 179

Le Lacet est une rotation du Hub par rapport à sa position de départ lors du démarrage du programme ou de l'utilisation du bloc Réinitialisation du lacet. Plage illimitée. Le Lacet est sensible à la dérive gyroscopique et dépend de la vitesse angulaire du Hub.


Accélération

Mesure sur un axe particulier par rapport à la gravité de -1000 à 1000.

  • X correspond aux côtés gauche et droit du Hub
  • Y correspond aux côtés supérieur et inférieur du Hub
  • Z correspond à la face de l'avant vers l’arrière du Hub

Gyroscope ou vitesse angulaire

Mesure de la vitesse à laquelle le Hub tourne dans un axe spécifié.

  • X tourne le long des côtés gauche et droit du Hub
  • Y tourne le long des côtés supérieur et inférieur du Hub
  • Z toume le long de l'axe avant arrière du Hub

Gestes

Actions lisibles spécifiques affectant le Hub.

  • Secouement : si le Hub est déplacé rapidement d'avant en arrière
  • Tapotement : le Hub est tapoté avec ton doigt ou un autre objet
  • Chute : le Hub tombe le long de n'importe quel axe
  • Double tapotement : le Hub est tapoté deux fois de suite avec ton doigt ou un autre objet

Orientation de l'écran

L'écran de la matrice LED lumineuse 5x5 peut être pivoté pour donner aux modèles une expression appropriée. Il existe quatre options d'orientation. L'écran se repositionnera en fonction de l'endroit où se trouve le pixel en position 1x1. Cela fera également pivoter l'affichage pour toute animation, motif ou texte sur la matrice 5x5.

  • à l'endroit (par défaut) 1x1 à côté du port A
  • à gauche 1x1 à côté du port E
  • à droite 1x1 à côté du port B
  • à l'envers 1x1 à côté du port F

Programmation par blocs

Avant de commence à programmer il te faut construire ton premier robot.

Je te propose de commencer avec le modèle Proxima.

Proxima - le robot de base

Proxima est le robot de base que j'utilise pour mes cours. Il a été crée par BuilderDude35 pour les concours First Lego League

Télécharge le plan en cliquant sur ce lien, ou sur l'image ci-dessus !

Ce design vient du site builderdude35.com

Commencer à coder

Quand tu as terminé la construction de ton robot Proxima, tu peux débuter la programmtion avec les blocs! Tu verras c'est facile! Surtout que tu vas pouvoir essayer pleins de choses!

Premier pas

Ta première mission ? Faire avancer le robot avec une partie des blocs suivants.

À toi de les assembler dans le bon ordre pour faire avancer le robot.

Quand tu penses avoir réalisé le programme. N'oublie pas de toujours mettre ton robot à terre avant de lancer le programme. Cela évitera que le robot ne tombe de la table. Car je te rappelle qu'il est fragile et cher.

Pour lancer le programme que tu viens d'écrire va en bas à droite de ton écran où il y a un numéro suivi d'un carré et d'un triangle.

Choisit le numéro du programme que tu veux assigner à ton code. Puis clique sur la flèche pour télécharger le programme sur ton robot. Ensuite regarde si le résultat est celui que tu voulais. Si oui bravo sinon c'est pas grave, réessaye!


Mission 1.2

Que se passe-t-il si tu inverse le C et le D du bloc "Définir les moteurs de déplacements pour D + C" ?


Mission 1.3

Et si ton robot dessinait un carré en avançant ? Comment t'y prendrais-tu ?


Solutions

Voici les solutions des premières missions.


Mission 1.1

La première chose à faire est d'initialiser les moteurs. Lui dire que nous allons utiliser les moteurs C et D.

Maintenant que le programme sait quels moteurs utiliser, il nous reste à lui dire à quelle vitesse il doit aller. Ici une vitesse à 50 % est bien pour commencer.

Voici le code que tu peux avoir :

Solution pour la mission 1.1

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

Mission 1.2

Que se passe-t-il quand on a interverti le moteur C et le moteur D ?

Eh bien, le véhicule va dans le sens inverse.

Solution pour la mision 1.2a

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

C'est un peu comme si on avait fait le premier programme, mais au lieu de lui dire d'avancer, on lui avait dit de reculer.

Solution pour la mision 1.2b

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

Tu peux voir qu'il y a plusieurs façons de coder qui arrive au même résultat.


Mission 1.3

Pour que le robot dessine un carré en roulant, il suffit de lui donner les instructions suivantes.

  • Avance de 10 cm.
  • Puis tourne.
  • Avance de 10 cm.
  • Puis tourne.
  • Avance de 10 cm.
  • Puis tourne.
  • Avance de 10 cm.
  • Puis tourne.

Solution pour la mision 1.3a

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

Et ainsi de suite jusqu'à ce qu'il dessine un carré.

On peut simplifier le code en ajoutant une boucle qui va répéter 4 fois l'instruction "Avancer de 10 cm, puis tourner". Quelle économie de temps !

Solution pour la mision 1.3b

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

Au lieu de donner des distances en centimètres au robot, on peut aussi lui donner un nombre de rotations. Pour cela, il va falloir définir les centimètres que le robot va parcourir avec une rotation de moteur. Cela peut se calculer mathématiquement, mais là, pour les roues que nous avons, nous savons qu'approximativement une rotation c'est 17,5 cm.

Solution pour la mision 1.3c

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

Les capteurs - partie 1

Il est important de savoir utiliser les capteurs, car c'est eux qui vont donner des informations sur notre robot et qui nous permettra d'interagir avec l'environnement.

Capteur de distance

Le capteur de distance peut mesurer la distance par rapport à un objet ou une surface à l'aide de la technologie ultrasonique, comme les chauves-souris.

C'est le bloc rectangulaire qui ressemble à des yeux sur ton robot. En outre, le capteur a un voyant autour des yeux qui sont divisés en 4 segments pouvant être allumés individuellement.

La distance mesurable est d'environ 5 à 200 cm.

Le pourcentage est un pourcentage de la distance mesurable maximale, par exemple une distance de 20 cm sera représentée par 10%.


Mission 2.1

Maintenant que tu sais faire avancer et tourner ton robot. Essayons d'en faire un robot autonome, à savoir qu'il va tourner dès qu'il va détecter un obstacle à une distance d’environ 20 cm.

Tu vas avoir besoin :

Des blocs "Capteur de distance"

Et du contrôle si alors.

D'une boucle infinie.

Du bloc avancer sans distance définie

Pour rendre le mouvement plus fluide, le bloc réglage de l'accélération sur "équilibré"


Je te laisse faire le code qui va faire que le robot tourne dès le moment où il détecte un obstacle à moins de 20 cm.

Voici le pseudo code.

  • Démarrer ton programme
  • Définir les déplacements des moteurs C et D, la vitesse de déplacement, ainsi que la distance pour une rotation d'un moteur
  • Faire une boucle infinie
    • Le robot avance en continue
    • S'il détecte quelque chose à moins de 20 cm.
    • Il tourne.
    • Puis il continue sa boucle infinie.

Mission 2.2

Ajoutons un peu d'aléatoire pour que quand le robot détecte un obstacle, il tourne aléatoirement à gauche ou à droite.

Tu vas avoir besoin de l'opérateur, nombre aléatoire.

Tu peux par exemple choisir un nombre aléatoire entre 1 et 10 et dire que si il est plus petit que 6, tu tournes à droite. Sinon, tu tournes à gauche.

Cela rajoute un peu de « hasard » dans le comportement de ton robot.

Solutions

Voici les solutions des missions 2.1 et 2.2.


Mission 2.1

Solution pour la mision 2.1

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Mission 1.2

Solution pour la mision 2.2

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Les capteurs - partie 2

Capteur de couleur

Le capteur peut détecter la couleur, la réflectivité ou la lumière ambiante. Le capteur peut également être utilisé comme sortie lumineuse.

Couleurs détectables :

  • Noir (0)
  • Magenta (1)
  • Bleu (3)
  • Bleu vert (4)
  • Vert (5)
  • Jaune (7)
  • Rouge (9)
  • Blanc (10)
  • Autre couleur (-1)

La lumière réfléchit, mesure la quantité de lumière réfléchie par une surface sur le capteur de couleur, le capteur étant la source de la lumière.


Mission 3.1

Tu vas devoir coder un robot qui avance jusqu'à ce qu'il détecte la couleur noire, et ensuite il s'arrête net.

Tu auras ces blocs à ta disposition.

Solution pour la mision 3.1

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Mission 3.2

Ta mission sera de coder un robot qui doit rester dans l'arène.

Cela veut dire que quand il détectera une bordure noire, le robot doit tourner soit tout le temps dans le même sens. Soit aléatoirement comme on a déjà vu dans le 2e cours.

Tu auras ces blocs à ta disposition.

Solution pour la mision 3.2

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Mission 3.3

C'est exactement la même mission que la mission 2 mais simplement au lieu de détecter la couleur noire tu devras utiliser le capteur de couleur en mode réflexivité.

Le capteur de couleur a une lampe qui éclaire la surface sur laquelle il se trouve.

La réflexivité est le pourcentage de lumière qui est réfléchi.

Cela se traduit de la manière suivante, sur une feuille blanche, on est proche de 100% de réflexivité et sur du noir on est proche de 0%.

À toi de tester en mettant sur différentes surfaces pour voir quel est le pourcentage qu'il affiche.

Si ton robot a un pourcentage de réflexivité plus petit que 50%, il doit tourner.

Voici le pseudo code pour ce programme:

  • Initialiser les moteurs de déplacement.
  • Initialiser la vitesse de déplacement.
  • Régler l'accélération du déplacement.
  • Définir une rotation de moteur.
  • Répétez indéfiniment.
  • Déplacement en ligne droite.
  • Si le capteur de couleur a un pourcentage de réflexivité plus petit que 50%
  • Faire tourner le robot.

Tu auras ces blocs à ta disposition.

Solution pour la mision 3.3

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Mission 3.4

Suivre une ligne.

Tu vas devoir choisir. Quel capteur sera utilisé pour suivre une ligne, le gauche ou le droite ? Je te laisse trouver le bon port.

Le robot devra suivre le bord de la ligne, donc tu devras choisir si tu veux suivre le bord droite ou le bord gauche de la ligne.

Le comportement de ton robot sera le suivant. Si le capteur voit du noir, alors il tournera à droite. Et s'il voit du blanc, il tournera à gauche.

Tu peux inverser la droite et la gauche. Cela revient au même au final.

Tu auras ces blocs à ta disposition.

Solution pour la mision 3.4

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Solutions

Voici les solutions des missions 3.1, 3.2, 3.3 et 3.4.


Mission 3.1

Solution pour la mision 3.1

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Mission 3.2

Solution pour la mision 3.2

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Mission 3.3

Solution pour la mision 3.3

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !


Mission 3.4

Solution pour la mision 3.4

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

Les capteurs - partie 3

Gyroscope

Le Gyroscope te permet de mesurer des angles de manière beaucoup plus précise qu'avec simplement les rotations des roues.


Mission 4.1

Tu vas refaire le programme pour dessiner un carré, mais cette fois en utilisant les angles de lacet.

Tu auras ces blocs à ta disposition.

Solution pour la mision 3.4

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

L’angle n'est pas de 90 degrés précisément car il y a un temps d'attente (temps de latence) entre le moment où le hub détecte que l'angle de lacet est plus grand que cette valeur et le moment où il va s'arrêter.


Mission 4.2

Maintenant que tu sais dessiner un carré, si tu essayais d'autres formes ? Je te donne les valeurs mathématiques pour différentes formes ci-dessous.

Nom Nombre de cotés Angle
Rectangle (Pas le cas particulier du carré !) 4 360° / 4 = 90°
Pentagone 5 360°/ 5 = 72°
Hexagone 6 360°/ 6 = 60°
Heptagone 7 360°/ 7 = 51.5° (Environ)
Octogone 8 360°/ 8 = 45°
Ennéagone ou nonagone 9 360° / 9 = 43.3° (Environ)
Décagone 10 360° / 10 = 36°
Hendécagone ou undécagone 11 360° / 11 = 32.7° (Environ)
Dodécagone 12 360° / 12 = 30°

Les défis

Maintenant que tu as vu les différents capteurs et leur utilisation. Je te propose quelques defis!

Défi 1 : Les quilles

Ejecter les piles de l'arène SANS EN SORTIR!

Défi 2 : le combat de sumo

Ejecte ton adversaire de l'arène! Pour cela il faut que ses 2 grandes roues soient totalement en dehors!

Défi 3 : Le contre la montre

Fais le tour de l'arène le plus rapidement possible, mais le plus précisément aussi!

Mes programmes pour la recherche et l'attaque de cible

Chose promise, chose due! Tu trouveras ci dessous les 2 programmes de recherche et d'attaque de cible.

Recherche et attaque (Simple)

Le robot tourne sur lui-même et attaque toutes cible qui s'approche!

Recherche et Attaque simple

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !

Recherche et attaque avec détection des bords

Même comportement qu'avant, mais il ne doit plus sortir de l'arène!

Recherche et Attaque avec détection des bords

Télécharge ce code en cliquant sur ce lien, ou sur l'image ci-dessus !