Académique Documents
Professionnel Documents
Culture Documents
Séquence
Analyser le comportement séquentiel du robot laveur de vitre.
1/13
Robot laveur de vitres
1.1.1. - Prérequis
Capteurs.
Diagrammes SysML.
1.1.2. - Compétences
1.1.3. - Connaissances
1.2. – Déroulement du TP
1.2.1. - Problématique
En fonction des conditions de fonctionnement, le robot gère de manière autonome son comportement, ce
qui lui permet notamment de suivre une trajectoire particulière et ne pas tomber. L’utilisateur peut
également à l’aide d’une télécommande piloter le robot. Tous ces modes sont décrits par un diagramme
d’état. L’objet du TP est de découvrir comment traduire sous forme de diagramme d’état le
comportement du robot lorsqu’on appuie sur la télécommande.
1.2.2. - Activités
Mise en œuvre du robot et mise en évidence de différents modes de fonctionnement (hors vitre, sur vitre,
avance, rotation, arrêt…).
Observation de la structure de la chaîne d’informations pour analyser les informations pouvant
intervenir dans le programme de fonctionnement du robot (utilisation du modèle virtuel).
Réalisation d’un diagramme d’état simplifié permettant de comprendre le fonctionnement du robot et la
syntaxe de Matlab. Amélioration du programme pour spécifier entièrement le comportement avec
télécommande.
2/13
Robot laveur de vitres
Sujet
Première partie : découverte des modes de fonctionnement du robot
ANALYSE DU FONCTIONNEMENT
Revenir dans le menu Accueil et choisir Découverte. Lister l’ensemble des capteurs qui délivre
des signaux binaires présents sur le système.
- Capteurs de vide (4) situés dans les pieds qui détectent si les pieds du robot sont dans le vide
(pour un bord sans paroi).
- Capteurs de choc (8), 2 situés sur chaque côté du robot pour détecter les bords.
3/13
Robot laveur de vitres
Si on appuie sur la touche du haut de la télécommande le robot monte tant qu’on appuie dessus. Si on
appuie sur la touche du bas, il descend. Lorsqu’on appuie sur la touche de droite, la partie centrale du
robot tourne à droite puis une fois que le centre à tourner de 90°, le robot se déplace vers la droite. De
même si on appuie sur la touche de gauche et que le robot n’est pas orienté horizontalement, la partie
centrale du robot tourne de 90° et le robot recule ensuite. Si on appuie à nouveau sur une touche haut
ou bas de la télécommande, la partie centrale tourne de 90° vers la gauche et le robot monte ou
descend ensuite.
Nous allons dans cette partie utiliser Matlab/Simulink pour spécifier le comportement du robot.
Lancer Matlab. Pour utiliser la palette de blocs dédiés au robot lave vitre, il faut cliquer dans l’onglet
HOME de Matlab sur et installer le module Instrument Control Toolbox en tant qu’administrateur
si ce n’est pas déjà fait.
Dézipper ensuite la librairie LIB_ROBOTLAVEUR et la placer à un endroit facilement accessible.
COMPORTEMENT SIMPLE
4/13
Robot laveur de vitres
COMPORTEMENT SIMPLE
Dans l’arborescence cliquer droit sur startup_robotlaveur.m puis choisir Run. La palette est chargée
et disponible dans le navigateur de palettes RobotLaveur.
5/13
Robot laveur de vitres
COMPORTEMENT SIMPLE
Le bloc permet d’acquérir en continu toutes les données mesurées sur le robot
virtuel (capteur, position…). Le bloc permet de récupérer les valeurs des boutons
de la télécommande. Ici seuls les boutons avant et arrière sont utilisés.
Les blocs de mouvement à droite possèdent une entrée sur la gauche qui permet de spécifier la vitesse
de 0 à 100 et une entrée sur le haut qui correspond à un signal permettant d’activer ou non la fonction.
Ces signaux sont émis depuis le bloc Stateflow.
Si on double-clique pour observer le comportement spécifier dans le bloc Stateflow, on peut voir les
commandes utilisées (des conditions de garde associées aux valeurs des boutons et les ordres pour
lancer les mouvements avancer).
Dans le robot virtuel se rendre dans la section SIMULATION LIBRE. Cliquer sur Allumer le robot.
Vous pouvez alors lancer une simulation sous Matlab en cliquant sur et interagir avec le robot
comme indiqué dans le diagramme d’état. Commenter les transitions utilisées. Stopper la simulation
en cliquant sur
6/13
Robot laveur de vitres
COMPORTEMENT SIMPLE
On constate que ce n’est pas l’appui sur les touches qui compte mais bien la valeur. En effet tant qu’on
reste appuyé sur le bouton le robot se déplace, si on relache (valeur égale à 0), il s’arrête.
bloc à ajouter dans le modèle (copier également un bloc constant 100 à relier à
gauche de ce bloc).
Dans le diagramme d’état, ajouter un état en cliquant sur , le nommer DROITE et ajouter à la
ligne la commande entry:tournerdroite
Relier l’état à l’état ATTENTE en utilisant 2 transitions : [right==1] et [right==0]. Pour ajouter une
transition, cliquer sur le bord de l’état de départ et aller vers l’état d’arrivée, la flèche apparaît.
Lancer une simulation. Une fenêtre d’erreur doit apparaître car les commandes right et tournedroite
ne sont pas connues. Modifier les données dans cette fenêtre de la manière suivante (la fenêtre est
peut être cachée derrière d’autres fenêtres).
Remarque : les commandes utilisées dans le diagramme d’état peuvent être modifiées et définies
7/13
Robot laveur de vitres
Dans le fil d’ariane cliquer sur robotlaveur1 pour revenir au modèle global
Vous pouvez observer qu’une entrée et une sortie supplémentaires ont été ajoutées. Relier ces
entrée/sortie aux blocs du robot virtuel. Lancer ensuite une simulation et tester le nouveau
comportement.
Quel élément permet de savoir que la partie centrale a bien tourné de 90° ? Vous pouvez retourner
dans le mode DECOUVERTE du robot virtuel pour observer les capteurs.
Visualiser également la vidéo Rotation 90° pour bien comprendre la logique de fonctionnement.
Expliquer les étapes apparaissant lors de cette rotation de 90°.
Ce sont les capteurs fin de course qui permettent de détecter la rotation de 90°. Lorsque l’ordre de
tourner est envoyé, l’éléctroaimant sort du logement extérieur et les roues tournent en sens opposé
pour faire tourner la partie centrale. Lorsque la partie centrale entre en contact avec le capteur fin de
course, la rotation est arrêtée et l’électroaimant rentre dans le logement. Ici l’électroaimant est déjà
sorti du logement car la partie intérieure peut tourner.
Faire glisser le bloc fin de course et ajouter un bloc Mux (palette Simulink/Signal Routing) ainsi qu’un
bloc Scope (palette Simulink/Sinks) et ajouter le schéma suivant :
8/13
Robot laveur de vitres
Double-cliquer sur le scope pour ouvrir la fenêtre de tracé et lancer une simulation. Eteindre le robot
et le repositionner en position initiale (vers le haut). Allumer le robot et observer les valeurs indiquées
par les deux capteurs. Faire tourner le robot à droite et observer à nouveau les valeurs des capteurs fin
de course. Ne pas s’occuper du temps, en effet le temps de simulation ne correspond pas au temps réel
de déplacement du robot (un bloc permet de récupérer le temps réel si nécessaire, le temps étant
remis à 0 quand on éteint le robot).
On constate qu’au départ c’est le capteur fin de course gauche qui est appuyé (valeur 1 courbe bleue
car deuxième courbe) et qui n’est plus appuyé lors de la rotation à droite. Lorsque la partie centrale a
tourné de 90° le fin de course droit est appuyé (courbe jaune).
Ajouter dans le diagramme un état AVANCEDROITE qui est activé lorsque le capteur fin de course
droit détecte la rotation de 90°. Dans cet état le robot doit avancer horizontalement (commande
avance) et s’arrêter lorsqu’on relâche le bouton droit. Penser à ajouter l’entrée fcdroite et relier le bloc
fin de course droit au bloc Stateflow (cf. procédure précédente pour valider la fenêtre d’erreur). Lancer
une simulation et vérifier que le comportement est correct.
9/13
Robot laveur de vitres
Modifier le diagramme pour que l’appui sur le bouton haut fasse la rotation en sens inverse. Pour cela
ajouter un nouvel état et l’information en provenance du capteur de fin de course gauche (fcgauche
par exemple). Attention à bien ajouter le bloc pour tourner à gauche et relier les entrées/sorties au
bloc Stateflow.
On obtient
Faire des tests pour voir si le comportement de déplacement vers le haut le bas la droite est cohérent
(ne pas tenir compte pour l’instant des rotations supplémentaires).
MOUVEMENT COMPLET
Vous pouvez ouvrir le fichier robotLaveurComplet.slx qui contient le diagramme complet du robot mais
vous pouvez aussi ajouter facilement le côté gauche.
Voici la solution
10/13
Robot laveur de vitres
MOUVEMENT COMPLET
On constate en faisant plusieurs tests que le robot tourne un peu trop à droite ou à gauche. Ceci est en
parti dû au temps de communication entre Matlab et le robot virtuel. On peut faire tourner le robot
moins vite pour limiter ces problèmes. Cependant en faisant plusieurs tests on constate que des rotations
parasites apparaissent lorsque l’on monte puis descend ou lorsque l’on va à droite puis à gauche.
Expliquer pourquoi.
On remarque que compte-tenu du diagramme réalisé lorsqu’on est en position verticale et que l’on
avance on passe par l’état de rotation à gauche et compte-tenu des délais de communication le robot
tourne un peu à gauche avant d’avancer. C’est la même chose pour le bas.
Modifier les transitions et ajouter certaines transitions de manière à limiter ces décalages uniquement
lorsque le robot passe de la position horizontale à la position verticale et inversement. Il ne doit pas y
avoir de décalage lorsque le robot passe de droite à gauche ou de bas à haut. Pour écrire une condition
booléenne du type ET, on utilise la syntaxe suivante : [right==1 & fcdroite==0].
11/13
Robot laveur de vitres
MOUVEMENT COMPLET
Il reste cependant quelques décalages en partie dûs au fait que la partie centrale du robot n’est pas
bloquée lors des déplacements et les frottements peuvent faire bouger la partie extérieure.
En visionnant à nouveau les éléments de la partie DECOUVERTE, indiquer quel élément permet de
bloquer la partie centrale par rapport au cadre du robot.
C’est l’électroaimant qui permet ce blocage. Lorsque celui-ci est rentré, la rotation n’est plus possible.
12/13
Robot laveur de vitres
MOUVEMENT COMPLET
On a ainsi montré qu’il était possible de spécifier le comportement d’un système à partir d’un diagramme
d’état que l’on améliore au fur et à mesure des essais et des fonctionnalités souhaitées.
13/13