Notions abordées dans cette page

Introduction à la robotique

Le robot

Une vue générale du
				       robot

Le but de cette initiation est d'apprendre les bases de la programmation du robot en quelques heures. Pour arriver au plus vite au cœur du sujet, nous avons construit les modèles au préalable. Vous disposez ainsi d'un robot "standard" composé des éléments suivants :

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 :

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 que nous vous avons préparé, ces trois sorties sont connectées aux trois moteurs : les moteurs B et C commandent les roues (ou 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. Pour avoir une zone de travail plus grande, cliquez sur la croix entourée, en haut à droite de la figure.

L'environnement de
					       programmation
La programmation du robot se fait en plaçant des blocs de commandes sur une sorte de fil du temps. Quand le robot voudra exécuter le programme qu'on y aura enregistré, il effectuera chacune des commandes l'une après l'autre en les lisant de la gauche vers la droite. La figure ci-dessous vous montre le fil du temps, obtenu en cliquant-tirant sur le plot originel.

Le fil du
						   temps

Les blocs de commandes se trouvent dans le menu de gauche. Il y a trois palettes disponibles :

Nous nous servirons de la palette complète. Celle-ci comprend six boutons regroupant les commandes de même type :

Les boîtes  à outils regroupant
				 les commandes.

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.

Il faut placer deux blocs déplacer sur le fil du temps. Ils sont disponibles dans la première boîte à outils :

Les blocs du sous-menu <span class='commande'>
					  Commun</span>
Le premier bloc devra commandera d'aller tout droit pendant 2 secondes, et le bloc suivant lui ordonnera de tourner pendant 5 secondes. La première chose à faire est de placer les deux blocs sur le fil du temps (facile !). Il faut ensuite fixer les paramètres de chacun des blocs. Cliquez sur le premier bloc, ce qui le rend actif et affiche une série de six fenêtres en bas à gauche de l'écran suivant :
Les paramètres d'un
 moteur

Vous pouvez y rentrer les informations suivantes :

Réglez les paramètres pour que le robot ait le comportement décrit au début du paragraphe.

Charger le programme sur le robot

  1. Sauvegardez votre travail (Fichier -> enregistrez sous)
  2. Connectez le robot au port USB et allumez-le (bouton orange sur la brique)
  3. 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.

Tester

  1. 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é.
  2. Appuyez sur le bouton orange encore une fois (Run) : ça y est, c'est parti.
Pas très impressionnant, seulement 4 secondes de fonctionnement... Mais c'est un début.

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 ?

  1. Commencez un nouveau projet.
  2. 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.

Un exemple de
					boucle
A vous de jouer : programmez le robot pour qu'il tourne en carré : avancer 3 secondes, tourner à angle droit, avancer 3 secondes, tourner à angle droit, etc ...
Quelques petits réglages sont nécessaires.

Tourner en spirale

Avancer 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 :

  1. Fixe une longueur initiale n à 1.
  2. Avance d'une distance n.
  3. Tourne à 90 degrés.
  4. Avance de la même distance n.
  5. Augmente n de une unité.
  6. 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 :

Les blocs du menu des
				     données

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

Boucle et utilisation des
				    variables

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). De la même façon, on crée une constante (valeur numérique qui ne changera jamais). Ensuite commence la boucle :

Testez ce programme jusqu'à en avoir bien compris le fonctionnement.

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.

Les plots de contrôle d'un bloc
 <span class='commande'>déplacer</span>
Programmez et tester la progression en spirale du robot.

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 :

Application simple

Essayer de concevoir un programme ordonnant au robot d'aller tout droit jusqu'au moment où il heurte un obstacle, et lui demander alors :

Un peu plus dur (quoi que ...)

Programmer le robot pour qu'il avance tout droit jusqu'à ce qu'il perçoive la présence d'un obstacle à moins de 5 cm. Il tourne alors de 90 degrés, et se remet en route.

Quelques indices :

Nettement plus dur... mais pas infaisable

Le robot se promène dans un environnement parsemé d'obstacles. Lorsqu'il perçoit un obstacle dans la direction de son déplacement à moins de 5 cm, il change de direction jusqu'à temps qu'il constate que la voie est libre devant lui. Il se remet alors à avancer. Programmez ce comportement.
Et si on l'autorisait à changer parfois de direction comme ça, sans raison, au hasard ?