Hack-micropython-ServoRobot-Mouvements

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Pour le fun, nous avons ajouté un mouvement Hello à Doggy.

C'est l'occasion de le documenter l'ajout d'un mouvement.

Créer une classe Hello

Pour commencer, nous allons ajouter la classe Hello dérivée de Movement dans le fichier doggy.py.

La classe doit contenir trois méthodes:

  • name() - qui retourne une liste de tous les noms connus pour ce mouvement
  • prepare() - la méthode qui positionne les pattes/membres en vue de préparer le mouvement.
  • do() - la méthode appelée répétitivement par Doggy.move() pour exécuter le mouvement. Il est parfois nécessaire d'appeler plusieurs fois do() pour exécuter un moment complexe (voyez la classe Forward).
class Hello( Movement ):
	""" Fait un signe "Bonjour" avec le Robot """
	def name():
		""" Retourne les noms qui s'applique à ce mouvement """
		return ('HELLO','H')

	def prepare( self, sdegree_max=60, wdegree=90, right=False, **kw ):
		""" sdegree_max: amplitude max des pattes avant (pour stabiliser le robot)
		    wdegree: angle désiré pour les poignet. 
		    right: Faire le signe avec la patte droite... sinon la patte gauche
		    hello_wdegree: angle du poignet de la patte faisant le signe (negatif pour mettre la patte en l'air)"""
		d = self.robot
		d.standup( wdegree=wdegree )
		if right:
			d.place_paw( d.fl, sdegree_max, wdegree )
			d.place_paw( d.fr, 0, wdegree )
		else:
			d.place_paw( d.fr, sdegree_max, wdegree )
			d.place_paw( d.fl, 0, wdegree )

		delay(100)

	def do( self, sdegree_min=-40, sdegree_max=85, right=False, hello_wdegree=-60, step_angle=2, **kw ):
		""" Faire le signe "Bonjour" avec une amplitude d'épaule allant de sdegree_max à sdegreee_min """ 
		d = self.robot
		p = None # La patte "hello"
		if right:
			p = d.fr
		else:
			p =  d.fl

		initial_sdegree = p.shoulder.angle # Se souvenir de l'angle
		initial_wdegree = p.wrist.angle 
		p.wrist.set( hello_wdegree )
		delay( 100 )
		for i in range( p.shoulder.angle, sdegree_max, step_angle ):
			p.shoulder.set( i )
			delay( 10 )
		for i in range( sdegree_max, sdegree_min, -1*step_angle ):
			p.shoulder.set( i )
			delay( 10 )
		for i in range( sdegree_min, sdegree_max, step_angle ):
			p.shoulder.set( i )
			delay( 10 )
		for i in range( sdegree_max, initial_sdegree, -1*step_angle ):
			p.shoulder.set( i )
			delay( 10 )

		p.wrist.set( initial_wdegree )




Créé par Meurisse D. pour MCHobby.be - Created by Meurisse D. for MCHobby.be

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.