Modifications

Sauter à la navigation Sauter à la recherche
2 179 octets ajoutés ,  19 décembre 2016 à 16:41
Ligne 59 : Ligne 59 :     
=== Etude du mouvement ===
 
=== Etude du mouvement ===
Démarrer un mouvement, même pour un être humain, ne se fait pas n'importe comment! Il faut se préparer au mouvement.
+
{{ambox|text=Démarrer un mouvement, même pour un être humain, ne se fait pas n'importe comment! <br />Il faut se préparer au mouvement.}}
    
Par exemple, '''SI''' vous êtes assis sur un chaise et que vous voulez marcher '''ALORS''' vous passez par une étape {{underline|préparatoire}} qui consiste à vous mettre debout '''PUIS''' seulement à {{underline|faire un pas après l'autre}}.
 
Par exemple, '''SI''' vous êtes assis sur un chaise et que vous voulez marcher '''ALORS''' vous passez par une étape {{underline|préparatoire}} qui consiste à vous mettre debout '''PUIS''' seulement à {{underline|faire un pas après l'autre}}.
Ligne 75 : Ligne 75 :  
# La classe Movement contient un méthode '''prepare()'''. '''prepare()''' accepte des paramètres optionnels, ce qui permet d'ajuster les paramètres du mouvement.
 
# La classe Movement contient un méthode '''prepare()'''. '''prepare()''' accepte des paramètres optionnels, ce qui permet d'ajuster les paramètres du mouvement.
 
# La classe Movement contient également une méthode '''do()''' appelée répétitivement par '''move()'''.<br />'''do()''' permet de décomposer un mouvement complexe (par exemple: la marche) en plusieurs opérations élémentaires (ou sous mouvement partiels).<br />Il faudra donc de plusieurs appels a '''Movement.do()''' pour effectuer le mouvement complet qui permet à Doggy d'avancer sur ses 4 pattes.
 
# La classe Movement contient également une méthode '''do()''' appelée répétitivement par '''move()'''.<br />'''do()''' permet de décomposer un mouvement complexe (par exemple: la marche) en plusieurs opérations élémentaires (ou sous mouvement partiels).<br />Il faudra donc de plusieurs appels a '''Movement.do()''' pour effectuer le mouvement complet qui permet à Doggy d'avancer sur ses 4 pattes.
N'hésitez pas à consulter les classes Foward, Backward, etc disponibles dans le module {{fname|doggy.py}}  
+
N'hésitez pas à consulter les classes Foward, Backward, etc disponibles dans le module {{fname|doggy.py}}
    
=== Se lever ===
 
=== Se lever ===
Ligne 98 : Ligne 98 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
=== Avancer ===
+
=== Avancer / Reculer (version prédictive) ===
 
Vous disposez de plusieurs approches pour faire avancer Doggy.
 
Vous disposez de plusieurs approches pour faire avancer Doggy.
 +
 +
Nous présentons ici une approche prédictive, c'est à dire que vous savez combien de "pas" vous allez faire avant d'appeler la fonction forward.
    
Nous présentons ici les approches les plus simples jusqu'au plus avancées.
 
Nous présentons ici les approches les plus simples jusqu'au plus avancées.
Ligne 114 : Ligne 116 :  
delay( 2000 )
 
delay( 2000 )
   −
# Déplacement en marche avant (angle poignet=90) en 40 étapes (de 5 degres chacun)
+
# Déplacement en marche avant (angle poignet=90) en 40 étapes (de 5 degrés chacun)
 
for i in range( 40 ):
 
for i in range( 40 ):
 
d.move( 'FORWARD' )
 
d.move( 'FORWARD' )
Ligne 120 : Ligne 122 :  
delay( 2000 )
 
delay( 2000 )
   −
# Une autre façon de faire: appelle prepare avant d'executer 40 fois l'étape de mouvement
+
# Une autre façon de faire: appelle prepare() avant d'exécuter 40 fois l'étape de mouvement
 
d.reset()
 
d.reset()
 
d.move( 'FORWARD', repeat=40, prepare=True)
 
d.move( 'FORWARD', repeat=40, prepare=True)
Ligne 149 : Ligne 151 :  
     mov_obj.do( wdegree=65, step_angle=10 )  
 
     mov_obj.do( wdegree=65, step_angle=10 )  
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
Vous noterez l'utilisation du mot 'FORWARD' pour avancer. Vous pouvez le remplacer par 'F'.
 +
 +
Pour reculer, vous pouvez utiliser les mots clés 'BACKWARD', 'BACK', 'B'.
 +
 +
=== Tourner ===
 +
Il est possible de faire tourner le robot Doggy à droite (RIGHT) ou à gauche (LEFT)
 +
Nous présentons ici les approches les plus simples jusqu'au plus avancées.
 +
 +
<syntaxhighlight lang="python">
 +
from doggy import *
 +
from pyb import delay
 +
d = Doggy()
 +
 +
# Place le robot en positions de marche (debout).
 +
# Les épaules sont placés a angles adéquat pour commencer à tourner à gauche
 +
# prepare() EST IMPORTANT AVANT DE COMMENCER UN MOUVEMENT 
 +
d.prepare('LEFT')
 +
 +
delay( 2000 )
 +
 +
# Tourne à gauche (angle poignet=90) en 1 étapes de 90° (valeur par défaut)
 +
d.move( 'LEFT' )
 +
 +
delay( 2000 )
 +
 +
# Une autre façon de faire: appeler prepare() avant d'exécuter 2fois l'étape
 +
# de mouvement (de 90 degrees)
 +
d.reset()
 +
d.move( 'LEFT', repeat=2, prepare=True)
 +
 +
delay( 2000 )
 +
 +
# Changer les angles des mouvements des épaules pour tourner à gauche de
 +
# 160 degree (en total) et l'angle des poignet fixé à 5 degrees.
 +
# Tous les paramètres correspondent a Left.do()
 +
d.reset()
 +
d.prepare('LEFT', wdegree=75 )
 +
d.move( 'LEFT', sdegree=160, wdegree=75 )
 +
 +
# Tout en un
 +
d.move( 'LEFT', sdegree=160, wdegree=75, prepare=True )
 +
 +
delay( 2000 )
 +
 +
# Faisons le vraiment a la dure (obtenir l'objet Movement). Voyez comment est implémenté Doggy.move()
 +
d.reset()
 +
mov_obj = d.movement('LEFT')
 +
mov_obj.prepare( wdegree=65 )           
 +
mov_obj.do( sdegree=60, wdegree=65, prepare=True, repeat=3 ) # repeat 3 times the turn left
 +
 +
# Réduire l'amplitude du mouvement de 60 degrés (valeur par défaut)
 +
# à 30 degrées & faire une rotation à gauche de 75 degrée
 +
d.move( 'L', sdegree=75, sdegree_max=30, prepare=True )
 +
</syntaxhighlight>
 +
 +
Vous noterez l'utilisation du mot 'LEFT' pour tourner à gauche. Vous pouvez le remplacer par 'L'.
 +
 +
Pour tourner à droite, vous pouvez utiliser les mots clés 'RIGHT', 'R'.
       
{{Hack-micropython-ServoRobot-TRAILER}}
 
{{Hack-micropython-ServoRobot-TRAILER}}
29 917

modifications

Menu de navigation