Modifications

Sauter à la navigation Sauter à la recherche
1 505 octets ajoutés ,  19 décembre 2016 à 16:22
Ligne 210 : Ligne 210 :     
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