In [ ]:
from poppy.creatures import PoppyErgoJr
poppy = PoppyErgoJr()
Ecrire un jeu d'instructions permettant
Remarque :
Lorsque la vitesse du moteur poppy.m1 == 0 ou lorsque le moteur est dans l'état compliant == True, la commande poppy.m1.goal_position = 50 n'a pas d'effet.
In [ ]:
On veut faire de ces instructions d'initialisation une procédure dont les arguments sont le robot nommé bot et la liste donnant les positions initiales des moteurs nommé pos_initiale. Le prototype de cette procédure est : f_init(bot, pos_initiale). A la fin de l'exécution de la procédure, on affichera un message pour identifier ce qui a été fait.
Remarque : En Python, on déclare une procédure à l'aide du mot réservé def suivi du prototype de la procédure. Cette ligne ce termine par :.
Ensuite, c'est l'indentation qui délimite le contenu de cette procédure.
Remarque : Il en est de même pour une fonction. Celle-ci comportera le mot réservé return qui permettra à l'issue du traitement de retourner le contenu souhaité.
In [ ]:
def f_init(bot, pos_initiale):
#debut du corps de la procédure
In [ ]:
f_init(poppy, pos_init)
Tester : Mettre la vitesse du moteur m1 du robot à 50°/s puis exécuter la procédure f_init avec la position initiale de votre choix. Pour finir afficher la vitesse du moteur m1 du robot.
QUESTION : Que remarquez-vous ? Expliquer.
In [ ]:
def f_init2(bot, pos_initiale, vitesse):
# début du corps de la procédure
QUESTION : Expliquer pourquoi deux procédures ne "peuvent" pas avoir le même nom.
Expliquer le rôle de la procédure définie ci-dessous.
In [ ]:
def f_bouger_a_la_main(bot):
for m in bot.motors:
m.compliant = True
Vérifier votre réponse en la testant.
In [ ]:
f_bouger_a_la_main(poppy)
Expliquer ce que doit faire la fonction f_pos_cible.
In [ ]:
def f_pos_cible(bot):
f_pos_cible = []
for m in bot.motors:
f_pos_cible.append(m.present_position)
return f_pos_cible
On veut pouvoir créer un mouvement d'une position de départ à une position d'arrivée.
Pour cela :
In [ ]:
# initialiser la position de départ et la sauver dans la liste pos_dep
In [ ]:
# initialiser la position d'arrivée et la sauver dans la liste pos_arr
In [ ]:
import time
def f_mouv(bot, pos_D, pos_A):
# corps de la procédure
# Pourquoi la commande suivante va-t-elle permettre de temporiser
# suffisement longtemps pour terminer le mouvement ?
# time.sleep(2 * abs(pos_A[i] - pos_D[i]) / m.moving_speed)
Tester votre procédure avec l'instruction suivante :
In [ ]:
f_mouv(poppy, pos_dep,pos_arr)
Auteur : Georges Saliba, Lycée Victor Louis, Talence, sous licence CC BY SA