Vous êtes sur la page 1sur 13

Robot laveur de vitres

Robot laveur de vitre

Séquence
Analyser le comportement séquentiel du robot laveur de vitre.

1/13
Robot laveur de vitres

1. Analyser le comportement séquentiel du robot

1.1. – Compétences et connaissances visées

1.1.1. - Prérequis

Capteurs.
Diagrammes SysML.

1.1.2. - Compétences

Analyser le comportement d’un objet à partir d’une description à événements discrets.


Analyser le traitement de l’information.
Traduire le comportement attendu ou observé d’un objet.
Traduire un algorithme en un programme exécutable.
Caractériser les échanges d’informations.

1.1.3. - Connaissances

Comportement séquentiel. Structures algorithmiques (variables, fonctions, structures séquentielles,


itératives, répétitives, conditionnelles).
Diagramme états-transitions. Algorithme, programme. Langage informatique.
Notions d’intelligence artificielle.
Natures et caractéristiques des signaux, des données, des supports de communication. Capteurs.

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.

1.2.3. – Conditions matérielles et logicielles


Robot virtuel pour voir l’intérieur
Matlab (Stateflow) ou Scratch. Python + Matplotlib

2/13
Robot laveur de vitres

Sujet
Première partie : découverte des modes de fonctionnement du robot

Le diagramme d’état suivant décrit le comportement réel du robot.

ANALYSE DU FONCTIONNEMENT

Lancer le logiciel Robot_LaveVitre.exe puis cliquer sur SIMULATION AUTONOME.


Cliquer sur Allumer le robot. Observer le fonctionnement du robot en mode autonome (vous pouvez
dézoomer en tournant la molette de la souris).
Passer en mode manuel en appuyant sur le bouton Pause comme indiqué dans le diagramme puis
revenir en mode nettoyage autonome en appuyant sur le même bouton.

ANALYSE DE LA CHAINE D’INFORMATIONS

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

ANALYSE DE LA CHAINE D’INFORMATIONS


- Capteur de fin de course (2), pour déterminer la rotation du robot.
- Capteur optique de détection de rentrée de tige de l’électroaimant.
- Bouton poussoir sur la poignée du robot pour mettre en marche ou pause le robot.
- Interrupteur sous le robot pour allumer le robot.
- Boutons sur la télécommande (plutôt information numérique).

Deuxième partie : Utilisation de la télécommande

COMPORTEMENT DU ROBOT VIRTUEL

Revenir en mode de SIMULATION AUTONOME et passer en mode manuel. Tester le comportement


du robot lorsqu’on appuie en continu sur les différentes touches de la télécommande (haut, bas,
gauche et droite). Décrire le comportement observé.

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

Dans l’onglet HOME de Matlab, sélectionner le répertoire LIB_ROBOTLAVEUR en cliquant sur .


Attention une fois le répertoire sélectionné, il faut que celui-ci reste toujours affiché pendant la
création d ‘un modèle de manière à ce que la librairie soit visible de Matlab.

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.

Dans le navigateur de palettes, ouvrir le fichier robotLaveur1.slx et observer le modèle proposé.

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.

AJOUT D’UNE ROTATION


Nous allons maintenant ajouter la rotation à droite de la partie centrale, ceci est obtenu à l’aide du

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

directement en cliquant sur puis sur Chart.

7/13
Robot laveur de vitres

AJOUT D’UNE ROTATION

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

AJOUT D’UNE ROTATION

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.

On obtient le schéma suivant

9/13
Robot laveur de vitres

AJOUT D’UNE ROTATION

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].

On obtient le modèle suivant

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.

Ajouter dans le bloc ATTENTE les commandes stop ; rentrer_em. Lancer


une simulation et dans la fenêtre d’erreur qui apparait choisir pour
rentrer_em Event et Output. Relier le bloc électroaimant avec une entrée
égale à 1 au diagramme d’état.

Tester le comportement. On observe que la rotation n’est plus possible.

Copier le bloc électroaimant et mettre 0 comme entrée. Ajouter au bon


endroit les commandes permettant de sortir ou rentrer l’électroaimant afin
de rendre plus précis le déplacement du robot. On ajoutera ces commandes en tant qu’action au niveau
des transitions de la manière suivante [fcgauche==1]/{rentrer_em}.

On obtient le diagramme suivant

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

Vous aimerez peut-être aussi