Modifications

Sauter à la navigation Sauter à la recherche
1 503 octets supprimés ,  19 décembre 2016 à 16:41
Ligne 98 : Ligne 98 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
=== Avancer / Reculer(version prédictive) ===
+
=== Avancer / Reculer (version prédictive) ===
 
Vous disposez de plusieurs approches pour faire avancer Doggy.
 
Vous disposez de plusieurs approches pour faire avancer Doggy.
   Ligne 211 : Ligne 211 :  
Pour tourner à droite, vous pouvez utiliser les mots clés 'RIGHT', 'R'.  
 
Pour tourner à droite, vous pouvez utiliser les mots clés 'RIGHT', 'R'.  
   −
=== Déplacement non prédictif ===
  −
Nous avons déjà vu comment déplacer le robot Doggy d'un certain nombre de pas connu d'avance.
  −
  −
Ce qui serait bien, c'est de pouvoir "avancer" jusqu'à ce que l'on rencontre un obstacle.
  −
  −
La paramètre '''repeat''' de la méthode '''move()''' accepte deux type de paramètre:
  −
* Soit une valeur entière : nombre connu d'appel répétitif à effectuer pour exécuter le mouvement.
  −
* Soit une fonction : qui poursuit l'action répétitive jusqu'à ce que la fonction retourne False.
  −
  −
Cette approche peut être vraiment utile si l'on désire avancer jusqu'à un obstacle (ex: détecter à l'aide d'un senseur infrarouge ou ultrason).
  −
  −
Voici un exemple d'implémentation (à défaut d'un senseur, nous avons utilisé une valeur maximale... ).
  −
  −
<syntaxhighlight lang="python">
  −
from doggy import *
  −
  −
d = Doggy()
  −
  −
# Définir une fonction callback (de rappel) pour arrêter la méthode move()
  −
# lorsque la fonction retourne False.
  −
def forward_until_this( robot, name, iteration ):
  −
    # Effectuer votre test de sortie une fois de temps en temps (pour éviter un ralentissement général).
  −
    # Ex: mesurer la distance avec un senseur ultrason.
  −
    if (iteration % 10) == 0:
  −
        print( 'iteration = %i' % iteration )
  −
  −
        if iteration >= 50:
  −
            return False
  −
    return True 
  −
  −
# Faire un movement FORWARD (avancer) aussi longtemps que la fonction forward_until_this() retourne True
  −
d.move( 'F', repeat=forward_until_this, prepare=True)
  −
</syntaxhighlight>
      
{{Hack-micropython-ServoRobot-TRAILER}}
 
{{Hack-micropython-ServoRobot-TRAILER}}
29 917

modifications

Menu de navigation