• Aucun résultat trouvé

TP - Robotique - L1 Déplacement du Thymio et Simulation

N/A
N/A
Protected

Academic year: 2022

Partager "TP - Robotique - L1 Déplacement du Thymio et Simulation"

Copied!
3
0
0

Texte intégral

(1)

TP - Robotique - L1

Déplacement du Thymio et Simulation

November 12, 2015

Ce TP est structuré en deux parties. Dans la première partie, on mettra au point des fonctions pour faire se déplacer le Thymio, et lui faire repérer les ob- stacles qui l’entourent. Ensuite, il lui faudra cartographier son environnement.

1 Déplacement et Capteurs de distance du Thymio

1.1 Moteurs

Dans le cours, on a vu que le code suivant permettait de faire avancer la roue gauche de 3000 unités de déplacement.

import pythymio, time, random

with pythymio.thymio([],[]) as Thym:

x= 0.0 # position a 0.0 t= time.time()

# Faire pendant 4 secondes while time.time() - t < 4.0:

e = 3000.0 - x # difference entre destination et position courante u = max(-500,min(500,e/3))

Thym.set(’motor.left.target’,[ u ])

v = Thym.get("motor.left.speed") # vitesse du moteur

x += v # mise a jour de la position

time.sleep(0.1) # attendre 1/10 seconde

Thym.set(’motor.left.target’,[0]) time.sleep(0.5)

Thym.stop()

1

(2)

1. Adaptez le code précédent pour qu’il fasse avancer simultanéement les deux roues de 3000 unités.

2. Creez une fonction avance(x) qui fasse avancer le Thymio de x cen- timètres. Lancez plusieurs fois cette fonction et estimez la marge d’erreur du déplacement (par exemple, avance(20) a une marge d’erreur de ±2 cm).

3. Créez une fonctiontourne(a)qui fasse tourner les deux roues en opposi- tion (donc le Thymio devra tourner sur lui-même). Le paramètrea devra représenter l’angle en degrés. Sia >0, le Thymio tournera vers la droite, sinon la gauche.

1.2 Capteurs

1. La fonctionThym.get("prox.horizontal") renvoie une liste de 5 valeurs indiquant la proximité des obstacles détectées par les 5 diodes infrarouges sur le devant du Thymio. Ces diodes ne peuvent rien détecter au delà de 8cm.

Si ces valeurs sont égales à0, le Thymio ne détecte pas d’obstacles Lorsque l’obstacle se rapproche, la valeur augmente jusqu’à atteindre4000 à peu près.

2. Ecrivez un programme qui affiche cette liste 10 fois par secondes. Ensuite, utilisez la fonctionmaxpour afficher le maximum de cette liste 10 fois par seconde.

3. La fonctionThym.get(’prox.ground.delta’)permet de savoir si le “nez”

du Thymio est au dessus d’une table ou du vide. Lancez cette fonction et regardez ce qu’elle affiche, selon que le Thymio est sur une table ou sur du vide.

1.3 Evitement d’obstacles

Ecrivez un programme qui fasse ceci:

1. En s’inspirant du code de avance(a), écrivez une fonction toutdroit() qui fasse avancer le Thymio jusqu’à ce qu’il détecte un obstacle ou qu’il atteint le bord de la table. Cette fonction doit renvoyer le nombre de centimètres parcourus.

2. Ecrire une fonctionquartTourAlea()qui fasse faire au robot un quart de tour sur lui-même, soit à droite, soit à gauche, choisi aléatoirement. Note:

pour tirer un nombre aléatoire parmi0 et1, fairerandom.randint(0,1) 3. Le programme principal doit appeleravance, puisquartTourAlea

2

(3)

2 Simulateur de Robot

Le simulateur de robot peut être appelé avec les commandes suivantes:

from robosim import * init(’vide’)

On avance le robot de xpixels en faisant av(x) et on le fait pivoter à droite par exemple, avec tournedroite(a) où a est un angle en degrés. Le robot peut aussi dessiner: la fonctionpendown()lui fait dessiner une trace lors de ses déplacements.

1. Faites dessiner au robot un octogone (huit faces)

2. Implémentez (et testez) la fonction suivante, qui dessine un cercle rouge juste en face du robot.

from math import pi,cos,sin def dessine_rond():

x,y=position()

a=orientation()*pi / 180.0

circle(x+25*cos(a),y+25*sin(a),r=12)

3 Robot Thymio et Simulateur

Maintenant, on veut reprendre le programme d’évitement d’obstacles codé sur le Thymio précédemment, et l’implémenter sur le simulateur en parallèle.

1. Reprendre le code du Thymio, et rajouter pour chaque déplacement du Thymio une commande av(x) ou tournedroite(a) qui reproduise en simulation les mouvements du robot.

2. Dès que le robot détecte un obstacle, appeler la fonctiondessine_rond().

Ainsi, la carte des obstacles se dessine peu à peu.

3. ***Question bonus niveau expert*** Etant donné que les relevés du Thymio ne sont pas très fiables, on décide de ne garder que les 10derniers ronds dessinés à l’écran. Pour cela, à chaque fois, on efface les ronds précédents avec la commandeefface(), et garde une liste contenant les coordonnées des 10 derniers cercles à tracer, et on les trace.

3

Références

Documents relatifs

Et il espère comme toi que la nuit sera noire et sans lune car il ne doit être vu de personne s’il veut réussir sa traversée.. Certains prétendants à l’Europe, coincés à

Pourquoi le père Doutreleau a-t-il jeté le cartable de son fils dans le puits de la ferme («à la baille »).. Comment a

Bousculé, apostrophé, harcelé, l'auditeur ne sait plus si le bulletin météorologique qui annonce la neige a trait à la journée d'hier ou à celle de demain ; et il se retrouve en

Pour repérer la thèse défendue, il convient tout d'abord de trouver le thème du texte.. On peut ensuite chercher le jugement ou le sentiment du locuteur à propos de

SI Thymio est dans l’état 1XXX ET que le capteur de châssis gauche détecte un sol gris, ALORS le capot se colore en vert vif et Thymio avance tout droit. SI Thymio est dans

Ainsi, il nous appartient de traiter – plus que jamais – nos collections avec égards, conscients qu’elles seront demain les témoignages des écosystèmes du passé

Juste avant la séance, l’enseignant allume les Thymio et les place dans des modes différents : vert, jaune, rouge, violet.. (Mais pas cyan, ou bleu.) Attention, il est préférable

• Programme 2 : ajouter un test pour que Thymio ne soit plus vert (par exemple, qu’il devienne jaune) s’il ne détecte plus rien devant lui. • Programme 3 : ajouter un test pour