Decouverte – Niveau 1 - Python

TP2

Pour commencer votre programme python devra contenir les lignes de code ci-dessous et le logiciel V-REP devra être lancé.

  • Dans V-REP (en haut à gauche) utilise les deux icones flèche pour déplacer la vue et regarder poppy sous tous les angles.
  • Dans notebook, utilise le raccourci 'Ctrl+Enter' pour éxécuter les commandes.
In [ ]:
import time
from poppy.creatures import PoppyTorso
poppy = PoppyTorso(simulator='vrep')

Rappel :
Nom=poppy.nom_du_moteur.name
Position=poppy.Nom.present_position
poppy.Nom.goal_position = valeur en degrès entre -180° et + 180°

Boucle et memoire

Les listes

Comme évoqué dans le TP1, une liste sert à stocker de l'information, elle permet de définir une structure de données en groupant l'information.

Essaies les commandes:

In [ ]:
L=[]
m=poppy.head_z
L.append(m.name)
L.append(m.present_position)
print(L) # liste complète  
print( L[0]) # élément d'indice 0 de la liste L
print(L[1]) # élément d'indice 1 de la liste L

On voit ici que la liste L contient 2 éléments, le nom du moteur et sa position ;
On voit également que ces éléments sont accessibles via le nom de la liste suivi du numero d'index entre crochet.

Attention, c'est l'ordre d'ajout des éléments dans la liste qui détermine le numéro d'index.

Essaie les commandes:

In [ ]:
L2=[]
m=poppy.head_z

L2.append(m.present_position)
L2.append(m.name)
print(L2) # liste complète  
print( L2[1]) # élément d'indice 1 de la liste L
print(L2[0]) # élément d'indice 0 de la liste L

Les listes L et L2 sont-elles identiques ? oui / non

Vérifions:

In [ ]:
print L == L2

La subtilité est:

In [ ]:
print L[0] == L2[1]
print L[1] == L2[0]
print L, L2

Différentes listes sont directement accécibles comme :

In [ ]:
poppy.motors
In [ ]:
poppy.alias

Comment les exploiter?

Boucle "for"

Ce que nous voulons faire:
Creer une boucle for (pour) que m (une variable) prenne chacune des valeurs in (dans) poppy.motors (la liste) et : (faire), append (ajouter) cette valeur (contenu dans m) dans une nouvelle liste (L).

Ceci se traduit par :

In [ ]:
L=[]
for m in poppy.motors :
    L.append(m.name)
print(L)

d'autres syntaxes possibles:

In [ ]:
# Pour afficher
for m in L: print(m)
In [ ]:
# Pour créer une liste
for m in poppy.motors : L.append(m.name)
for m in L: print(m)
In [ ]:
# Pour créer une liste
L=[m.name for m in poppy.motors]
for m in L: print(m)

Application:

Recréer la liste alias r_arm:

Alias est une liste qui contient tous les moteurs (articulation) associés au bras droit. Recrées la.

In [ ]:
print poppy.alias
for m in poppy.r_arm: print(m)
In [ ]:
# essaies ton code ici

bras_droit = []

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 [ ]:
import pypot
poppy.stop_simulation()
pypot.vrep.close_all_connections()