- une introduction à la robotique avec les robots Légo
Introduction à la robotique
Le robot

Le but de cette initiation est d'apprendre les bases de la programmation du robot en une séance. Vous disposez d'un robot "standard" composé des éléments suivants :
- un cerveau, la brique NXT. Elle contient un processeur (comme les ordinateurs) capable d'exécuter des suites d'instructions de base : le programme.
- deux moteurs commandant les roues, connectés aux sorties B et C de la brique NXT.
- un capteur de couleur à l'avant
- un capteur de son sur la droite
- un capteur de mouvement ("les deux yeux") sur la droite
- un capteur de contact sur le parechoc arrière
La brique NXT
Cette brique comporte 4 entrées (on parle de ports d'entrée), numérotées de 1 à 4. Chaque entrée peut recevoir un capteur qui permet au robot de récupérer des informations sur son environnement :
- présence d'un obstacle (capteur tactile ou détecteur à ultrasons).
- couleur d'un objet ou luminosité ambiante (capteur de couleurs).
Il y a aussi, de l'autre côté de la brique, trois sorties, notées A, B et C qui permettent au robot d'agir. Sur le modèle utilisé, ces trois sorties sont connectées aux trois moteurs : les moteurs B et C commandent les chenilles. Le moteur connecté sur A est là pour faire beau.
A côté de la sortie C se trouve l'entrée USB qui permet de connecter le robot au PC. C'est par cet intermédiaire que les programmes, développés sur le PC, seront transmis au robot. On pourra alors déconnecter le robot du PC, et le faire évoluer de façon autonome.
Sur le devant de la brique se trouve un écran qui permet d'une part de naviguer dans différents menus et de contrôler le robot, d'autre part d'afficher différents messages pendant l'exécution d'un programme.
L'interface de développement
Lancez le programme de l'interface de développement, en cliquant sur son icône. Vous obtenez
l'écran de la figure ci-dessous.
Choisissez : Créer un nouveau programme
Pour avoir une zone de travail plus grande, cliquez sur la croix entourée, en haut à droite de la figure.


Les blocs de commandes se trouvent dans le menu de gauche. Il y a trois palettes disponibles :
- la palette des commandes courantes (l'onglet représenté par un rond vert en bas à gauche de l'écran).
- la palette complète (l'onglet avec les trois petits carrés de couleurs différentes en bas à gauche).
- les blocs construits par l'utilisateur ou bien téléchargés (l'onglet représenté par les deux barres bleues en bas à droite).
Nous nous servirons de la palette complète. Celle-ci comprend six boutons regroupant les commandes de même type :

Un premier programme
Programmer
Le premier programme sera très simple : nous allons demander au robot d'avancer tout droit pendant 2 secondes, puis de tourner pendant 2 secondes.


Vous pouvez y rentrer les informations suivantes :
- Port : indique quels sont les moteurs concernés (ici, c'est B et C : s'ils ne sont pas cochés, faites-le).
- Direction : Avant, Arrière ou Arrêt : le sens de la marche (on choisit Avant).
- Diriger : permet de faire tourner les robot.
- Alimentation : permet de régler la puissance des moteurs.
- Durée : fixez-la à cinq secondes (l'unité utilisée est à choisir dans le menu ouvert à l'aide de la flèche à droite de cette fenêtre).
- Action suivante : indiquer si l'on veut que le robot continue en roue libre, ou bien s'arrête brusquement. Ce n'est pas très important pour nos exemples, vous n'avez qu'à essayer les deux pour voir la différence.
Charger le programme sur le robot
- Sauvegardez votre travail (Fichier -> enregistrez sous)
- Connectez le robot au port USB et allumez-le (bouton orange sur la brique)
- Chargez votre programme dans le robot :
- utilisez la touche en
bas à gauche du pavé de communication
(voir l'interface de développement).
- Une fenêtre s'ouvre au milieu de l'écran pour vous informer de l'état d'avancement du chargement. Si tout s'est bien passé, le programme est maintenant chargé dans le robot, vous pouvez débrancher le câble USB.
- utilisez la touche en
bas à gauche du pavé de communication
Tester
- Sur la brique, à l'aide du bouton orange, sélectionnez My Files puis Software Files (les programmes que vous avez chargés), puis le nom du programme que vous avez sauvegardé.
- Appuyez sur le bouton orange encore une fois (Run) : ça y est, c'est parti.
Tourner en rond
... mais si on lui demande de répéter ce comportement à l'infini, on obtient un robot qui tourne en rond sans s'arrêter, ce qui est déjà un peu mieux. Comment faire ?
- Commencez un nouveau projet.
- Allez chercher la boucle dans le sous-menu Commun (l'avant-dernière icône), et positionnez-la sur le fil du temps.
Toutes les commandes figurant à l'intérieur de cette boucle seront exécutées de gauche à droite. Lorsque le robot aura exécuté la commande la plus à droite, il recommencera au début de la boucle. La figure ci-dessous est un exemple simple d'utilisation de la boucle : en y entrant par la gauche, on active le moteur B pendant une seconde, puis on attend une seconde, et on active le moteur C pendant une seconde. Puis la boucle recommence.

Quelques petits réglages sont nécessaires.
Tourner en spirale

On voudrait maintenant faire tourner le robot en spirale, comme sur le schéma de la figure ci-contre : avancer une seconde, puis tourner de 90 degrés, avancer encore une seconde, puis tourner de 90 degrés, avancer deux secondes, tourner, etc.
Comment indiquer au robot de suivre ce comportement ? Il faudrait lui dire :
- Fixe une longueur initiale n à 1.
- Avance d'une distance n.
- Tourne à 90 degrés.
- Avance de la même distance n.
- Augmente n de une unité.
- Recommence au point 2.
Le déroulement de ces instructions, du point 2 au point 6 correspond au fonctionnement de la boucle dont on vient de parler. Il faudrait juste avoir un bloc mémorisant la valeur actuelle de n, et un ou plusieurs autre blocs qui permettraient d'ajouter 1 à cette valeur.
Les boîtes nécessaires existent, elles sont dans le menu des données :

Le petit programme suivant peut vous aider à comprendre comment les utiliser :

On a créé une variable (c'est-à dire un endroit pour stocker une valeur numérique) qui s'appelle durée : pour cela on va dans le menu Modifier->Définir des variables->Créer, puis on choisit le type numérique, et le nom de la variable, ici durée. Puis on va sur la deuxième palette et on choisit "les outils mathématiques" (la croix orange) et on choisit le logo de la valise sans le cadenas.
On a créé une constante (c'est-à dire un endroit pour stocker une valeur numérique qui ne changer jamais) qui s'appelle incrément : pour cela on va dans le menu Modifier->Définir des consatants->Créer, puis on choisit le type numérique, et le nom de la constante, ici incrément. Puis on va sur la deuxième palette et on choisit "les outils mathématiques" (la croix orange) et on choisit le logo de la valise avec le cadenas.
Ensuite commence la boucle :- Les trois premiers blocs servent à afficher la valeur courante de
la variable durée sur l'écran de la brique :
- lire la valeur de la variable.
- transformer le nombre en mot : l'écran ne comprend que les chaînes de caractères.
- afficher le texte sur l'écran.
- Les quatre blocs suivants changent la valeur de la variable durée :
- on va chercher la valeur actuelle de la variable.
- on va chercher la valeur de la constante.
- on utilise un bloc addition pour calculer la somme de ces deux valeurs.
- on range le résultat dans la variable.
- Enfin, on place un bloc de temporisation, sinon l'affichage avance trop vite.
Pour demander au moteur d'avancer pendant une durée variable, il faut entrer la valeur voulue dans le bloc déplacer. Pour cela, cliquez sur le côté bas du bloc : une série de plots se déplie comme ci-dessous. Branchez alors votre variable sur le plot durée.

Réagir à l'environnement
Les robots décrits jusqu'à maintenant fonctionnent comme des automates : ils font ce qu'on leur demande, mais ne prennent jamais de décisions, aussi simples soient-elles. En ajoutant des capteurs à un robot, on lui permet de percevoir son environnement. Si on peut le programmer pour que son comportement dépende de cette perception, on obtient une machine un peu plus intelligente. Le degré d'intelligence dépend de l'acuité de ses sens, et de la puissance de calcul qu'il utilisera pour prendre ces décisions.
Pour permettre au robot de percevoir son environnement, nous avons à notre disposition plusieurs types de capteurs :
- des capteurs tactiles : le robot peut voir si ces interrupteurs sont enfoncés; on s'en sert pour savoir si on a heurté un obstacle avec le pare choc arrière.
- des capteurs sonores : les oreilles du robot .
- des capteurs à ultrasons : ils permettent de calculer des distances.
- des capteurs photosensibles et capteurs de couleur : les yeux du robot.
- d'autres capteurs peuvent connaître l'état des moteurs, on peut les comparer aux nerfs qui nous renseignent sur le fonctionnement de nos muscles.
Application simple
- de s'arrêter.
- d'avancer de 20cm.
- de se remettre en marche dans une autre direction.