Robot laveur n°2
Analyser le comportement du robot
Sign in to Google to save your progress. Learn more
Email *
Votre nom : *
Votre prénom : *
Votre spécialité : *
Le diagramme d’état suivant décrit le comportement du robot.
Lancer le logiciel Robot_Lave_Vitre.exe puis cliquer sur Simulation autonome. Cliquer sur Allumer le robot. Tester le fonctionnement du robot en mode autonome et en mode manuel. Indiquer les différences entre le comportement du robot virtuel et celui donné par le diagramme d’état.
On peut simuler une panne d’un composant en utilisant les curseurs à gauche. Tester un défaut d’alimentation pour valider le diagramme d’état. Pourquoi le robot n’avance-t-il plus et qu’est-ce qui assure toujours le maintien du robot contre la vitre ?
Il faut bien spécifier où chercher la librairie permettant d’interagir avec le robot. Pour le logiciel Thonny, copier le fichier robotlaveur.py (situé sur le site du professeur - clic droit - enregistrer le lien sous) dans le répertoire C:\Users\Public\Documents\Thonny\Lib.
Remarque : la commande robot.start() permet de lancer l’acquisition des valeurs et on peut alors les afficher dans une boucle infinie. Dans le logiciel du robot, aller dans le menu SIMULATION LIBRE puis allumer le robot (le serveur est lancé et on peut communiquer avec Python).Ecrire un script Python permettant d'allumer le robot et de lire la valeur du bouton Pause de la télécommande dans une boucle infinie. Lancer le script Python et appuyer sur le bouton Pause de la télécommande pour observer le bon fonctionnement de votre script.
Pour déclarer l'utilisation de la bibliothèque dans votre programme il faut écrire l'instruction suivante :
from RobotLaveur import *

Pour initialiser l'objet et activer la connexion il faut écrire les instructions suivantes :
robot=Robot()
robot.start()

Pour accéder à une valeur de simulation on utilise la méthode dicSensors. Par exemple pour afficher sur la console la valeur de la vitesse de turbine du robot laveur on utilise l'instruction :
print(robot.dicSensors['get_vitTurbine'])
Vous trouverez les différents noms des variables de chaque paramètre en regardant dans la bibliothèque Python RobotLaveur.
Décrire le comportement du bouton. Indiquer s’il s’agit d’un bouton monostable (1 position d’équilibre) ou bistable (2 positions d’équilibre)
Pour allumer la led de couleur située au niveau de la poignée, on tape : robot.Led("green",val) avec val qui vaut 0 ou 1. On peut changer la couleur en prenant blue ou red. Ajouter cette instruction pour que la led s’allume dès qu’on appuie sur le bouton pause et s’éteint sinon.
Clear selection
Avec ce type de bouton, ce n’est pas la valeur du bouton qui compte mais le passage de la valeur 0 à la valeur 1 (front). En effet on constate dans le diagramme d’état que c’est l’appui sur le bouton qu’on cherche à détecter et non pas la valeur du bouton. Le moyen le plus simple de détecter le changement de valeur est d’utiliser une variable qui permettra de comparer la valeur actuelle du bouton à la valeur précédente.
Définir une variable boutonprec=0 avant la boucle while et modifier le programme pour allumer la led et la laisser allumer quand on appuie sur le bouton (et qu’on le relâche après). Attention l’allumage doit se faire uniquement lorsque le bouton passe de 0 à 1 (pas de 1 à 0).
Clear selection
Le programme réalisé correspond exactement au diagramme d’état suivant.
Pour qu’un nouvel appui permette d’éteindre la led, il faut savoir dans quel état on se trouve pour savoir comment doit évoluer le comportement. En utilisant une instruction conditionnelle, modifier le programme de manière à pouvoir allumer ou éteindre la led à chaque appui sur le bouton pause.
Pour qu’un nouvel appui permette d’éteindre la led, il faut savoir dans quel état on se trouve pour savoir comment doit évoluer le comportement. En utilisant une instruction conditionnelle, modifier le programme de manière à pouvoir allumer ou éteindre la led à chaque appui sur le bouton pause.
Captionless Image
Clear selection
Nous verrons dans la suite qu’il est parfois nécessaire de savoir si l’appui est long ou bref sur un bouton. Par exemple si on appuie plus de 2 s sur le bouton pause la led bleue s’allume, si l’appuie dure moins de 2 s (appui court), c’est la led rouge qui s’allume.
Pour différencier un appui long d’un appui bref, on doit distinguer le moment où l’on appuie sur le bouton (front montant) et le moment où on le relâche (front descendant). Le diagramme d’état peut alors être reformulé de la manière suivante :
Modifier votre programme pour répondre à ce nouveau diagramme. Remarque : Pour gérer l’attente de 2 s, il faut lancer un chronomètre (mesure d’un delta de temps) au moment où on rentre dans l’état APPUI. Lorsque la valeur de ce chronomètre dépassera 2 s, on changera d’état. La mesure du temps se fait avec la commande time.time() qui renvoie un temps absolu par rapport à une origine floue. Il faut donc stocker la valeur du temps absolu quand on rentre dans l’état APPUI (lancement chronomètre : tic=time.time()) et vérifier la valeur du chronomètre en tapant : time.time()-tic *
Next
Clear form
Never submit passwords through Google Forms.
This content is neither created nor endorsed by Google. Report Abuse - Terms of Service - Privacy Policy