ET – Niveau 1 - Python

TP1

Premier Contact

Le projet Seti vient de faire un communiqué: ils ont établi le contact!

Grâce à la puissance cumulée de milliers d'ordinateurs, ils ont pu retranscrire visuellement une partie du message intercepté depuis l'espace.

le voici:

  • éxécutes le code grâce au raccourci 'ctrl + enter'
In [1]:
import pypot,time
from poppy.creatures import PoppyHumanoid
messager = PoppyHumanoid(simulator='vrep')
time.sleep(1)
messager.r_shoulder_x.goto_position(-5,0.5)
messager.l_shoulder_x.goto_position(5,0.5)
messager.head_z.goto_position(30,1,wait=True)
messager.l_shoulder_x.goto_position(90,2)
messager.l_arm_z.goto_position(90,2)
messager.abs_z.goto_position(10,2)
messager.l_elbow_y.goto_position(-120,2,wait=True)
for i in range(3):
    messager.l_elbow_y.goto_position(-90,0.5,wait=True)
    messager.l_elbow_y.goto_position(-120,0.5,wait=True)   
messager.l_shoulder_x.goto_position(5,2)
messager.l_arm_z.goto_position(0,2)
messager.l_elbow_y.goto_position(0,2,wait=True)
messager.head_y.goto_position(10,1)
messager.head_z.goto_position(0,1,wait=True)
time.sleep(1)
messager.stop_simulation()
pypot.vrep.close_all_connections()
Ce messager semble amical ; nous devrions essayer de lui repondre.
Mais pour communiquer il nous faut un langage commun...

essayons:

In [2]:
import time
from poppy.creatures import PoppyTorso
poppy=PoppyTorso(simulator='vrep')

Voilà notre interprète, Poppy.

C'est lui qui va nous servir à communiquer, comment me direz vous : grâce au langage des signes!
C'est parti!

Tu es prêt Poppy?

In [3]:
# oui

poppy.head_y.goal_position = 20
time.sleep(1)
poppy.head_y.goal_position = -20
time.sleep(1)
poppy.head_y.goal_position = 20
time.sleep(1)
poppy.head_y.goal_position = -20
time.sleep(1)
poppy.head_y.goal_position = 0

oh! tu bouges vraiment comme un robot... pas terrible tout ça ; tu n'es pas d'accord ?

In [4]:
# non

poppy.head_z.goal_position = 40
time.sleep(1)
poppy.head_z.goal_position = -40
time.sleep(1)
poppy.head_z.goal_position = 40
time.sleep(1)
poppy.head_z.goal_position = -40
time.sleep(1)
poppy.head_z.goal_position = 0

Vraiment ?

In [5]:
# NON

poppy.head_z.goal_position = 90
time.sleep(0.5)
poppy.head_z.goal_position = -90
time.sleep(0.5)
poppy.head_z.goal_position = 90
time.sleep(0.5)
poppy.head_z.goal_position = -90
time.sleep(0.5)
poppy.head_z.goal_position = 0

Doucement, pas besoin de s'énerver... il n'y aurait pas un moyen de controler la vitesse de tes mouvements?

In [6]:
# oui

poppy.head_y.goal_position = 40
time.sleep(0.5)
poppy.head_y.goal_position = -40
time.sleep(1)
poppy.head_y.goal_position = 40
time.sleep(1)
poppy.head_y.goal_position = -40
time.sleep(1)
poppy.head_y.goal_position = 0

Comment ?!

In [7]:
# chutttt

poppy.l_arm_z.goto_position(-40,1,wait=True)
poppy.l_shoulder_y.goto_position(-40,1,wait=True)
poppy.l_elbow_y.goto_position(40,1,wait=True)
time.sleep(1)
poppy.l_arm_z.goal_position=0
poppy.l_shoulder_y.goal_position=-90
poppy.l_elbow_y.goal_position=20

mais c'est quoi ce "goto" ???! tu m'expliques ?

In [8]:
# NON

poppy.head_z.goto_position(40, 0.3 ,wait=True)
poppy.head_z.goto_position(-40, 0.3 ,wait=True)

poppy.head_z.goto_position(40, 0.9 ,wait=True)
poppy.head_z.goto_position(-40, .9 ,wait=True)

poppy.head_z.goto_position(40, 1 ,wait=True)
poppy.head_z.goto_position(-40, 1.5 ,wait=True)

poppy.head_z.goto_position(40, 3 ,wait=True)
poppy.head_z.goto_position(-40, 5 ,wait=True)

poppy.head_z.goal_position = 0

Pas grave, j'ai compris ^^ !

j'aimerais en savoir un peu plus sur toi, tu as beaucoup de moteurs ?

In [ ]:
print len(poppy.motors)

hey, mais c'est encore ce poppy.motors?

In [ ]:
print type(poppy.motors)

C'est quoi une liste ?!

In [ ]:
for m in poppy.motors:
    print m.name
    print "----"

ah, c'est une sorte de boite qui contient de l'information ?

In [ ]:
# OUI

for i in range(50,150,25):
    i= i*0.01
    poppy.head_y.goto_position(15, i ,wait=True)
    poppy.head_y.goto_position(-15, i ,wait=True)
    print i
poppy.head_y.goto_position(0,0.1,wait=True)

Et si on communiquait...

Trouves les commandes adéquates pour que Poppy te salue de la main.

In [ ]:
# essaies ton propre code!

Tu as raté? c'est pas grâve, recommmence, essaies ces lignes pour redémarrer :

In [ ]:
messager.reset_simulation()

Encore buger ? essaies celles-ci :

In [ ]:
import pypot
poppy.stop_simulation()
pypot.vrep.close_all_connections()

from poppy.creatures import PoppyTorso
poppy=PoppyTorso(simulator='vrep')

Tu as fini? coupes la simulation ici:

In [10]:
import pypot
poppy.stop_simulation()
pypot.vrep.close_all_connections()