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}} |