In [ ]:
from poppy.creatures import PoppyErgoJr

poppy = PoppyErgoJr()

Encore une instruction pour bouger

QUESTIONS

  1. Lorsque la liste pos contient 6 angles en degrés, que permet de faire le jeu d'instructions suivant ?
  2. Quelle différence avec m.goal_position = 30 par exemple ?

In [ ]:
i = 0
for m in poppy.motors:
    m.compliant = False
    m.goto_position(pos[i], 0.5, wait = True)
    i = i + 1

Lecture de marqueurs sous forme de QR-codes

Exécuter ces instructions avec les cartes prévues à cet effet. Que constatez-vous ?


In [ ]:
# importation des outils nécessaires 
import cv2
%matplotlib inline
import matplotlib.pyplot as plt
from hampy import detect_markers

# affichage de l'image capturée
img = poppy.camera.frame
plt.imshow(img)
#récupère dans une liste les marqueurs trouvés dans l'image
markers = detect_markers(img)

valeur = 0  
for m in markers:
    print('Found marker {} at {}'.format(m.id, m.center))
    m.draw_contour(img)
    valeur = m.id
    print(valeur)

Défi mouvement à l'aide de cartes

  1. Enigme : Les cartes ont été créées pour être lues. Pouvez-vous identifier comment à partir des valeurs, on peut reconstruire les noms des variables ?
  2. Mettre toutes les leds des moteurs roses.
  3. Détecter l'un des 4 marqueurs et lui faire effectuer l'action correspondant à son nom :

    • Next doit permettre de passer au moteur suivant de la liste des moteurs
    • Prev de revenir au précédent
    • Righ de faire augmenter la position courante de 5 degrés
    • Left de faire diminuer la position courante de 5 degrés
  4. Pour identifier le moteur sélectionné, sa led sera rouge durant la selection.

  5. Durant un mouvement, la led du moteur qui bouge sera verte.
  6. On commence par le moteur m1 et lorsque l'on a atteint le moteur m6, si la carte next est lue, le code se termine.

remarque

En Python une boucle tant que s'écrit


In [ ]:
while (condition): 
    #corps de la boucle

In [ ]:
import time
# Aide : la commande time.sleep(2.0) permet de temporiser 2 secondes 
RIGH = 82737172

LEFT = 76697084

NEXT = 78698884

PREV = 80826986

# l'instruction ci-dessous permet de créer une liste 
liste_moteur = [m for m in poppy.motors] 
# toutefois, poppy.motors est déjà une liste. Pour vous en assurer, 
# type(poppy.motors) vous retourne le type du conteneur poppy.motors

Auteur : Georges Saliba, Lycée Victor Louis, Talence, sous licence CC BY SA