Programme MAVIN: Evitement d'obstacles
Introduction
Cahier des charges

La solution

Détails
debut
|
Début du programme. C'est de ce point que redémarrera nécessairement le programme lors de la mise sous tension du robot.
Le programme se divise ensuite en diverses branches représentant les différents cas possibles: obstacle devant, à gauche, à droite, etc... Le programme détermine quelle branche doit être utilisée en testant la condition en début de chaque branche et ceci de gauche à droite. Si la branche de gauche est 'obstacle devant' et que celle de droite est 'obstacle à droite', si deux obstacles (devant et à droite) se présentent simultanément, le programme évitera donc celui de devant en premier.
|
|
branche1
![]() |
Première branche: teste la présence d'un obstacle devant le robot. La réaction dans ce cas sera de reculer durant une seconde, puis de tourner à gauche.
|
|
![]() |
Condition d'entrée dans la branche: présence d'un obstacle devant. Le capteur Photo à l'avant est sollicité :direction=Forward, sensor status=C. Si la condition est vraie, le programme condition sur la sortie T (True) sinon, la branche 2 est testée sur la sortie F (False).
|
|
![]() |
Si l'entrée dans la branche est acceptée, c'est qu'un obstacle se présente devant le robot. La réaction est de reculer durant une seconde. Le bloc MOTOR commande donc l'allumage des deux moteurs en marche arrière à une vitesse arbitrairement choisie à 15: direction=Backward, select motor=Both, velocity=15.
Le bloc DELAY suspend quand à lui l'exécution du programme durant une seconde, soit 10 dixièmes: Delay Time = 10. Cela laisse le temps au robot de rouler en arrière (cf Premier pogramme avec le MAVIN).
|
|
![]() |
Ce second bloc MOTOR de la branche est en réalité commun avec celui de la branche 2. Il commande le moteur droit vers l'avant à une vitesse de 15: direction=Forward, select motor=Right, velocity=15. Rappelons que le moteur gauche tourne toujours en arrière: le robot va pivoter sur lui-même vers la gauche.
A son tour, le bloc DELAY suspend l'exécution du programme durant une seconde, soit 10 dixièmes: Delay Time = 10. Cela laisse le temps au robot de tourner!
|
|
branche 2
![]() |
Seconde branche: teste la présence d'un obstacle sur la droite du robot. La réaction dans ce cas sera la même que précédement: reculer durant une seconde, puis de tourner à gauche. | |
![]() |
Condition d'entrée dans la branche: présence d'un obstacle à droite. Le capteur Photo à droite est sollicité :direction=Forward, sensor status=R. Si la condition est vraie, le programme condition sur la sortie T (True) sinon, la branche 3 est testée sur la sortie F (False). | |
![]() |
Si l'entrée dans la branche est acceptée, c'est qu'un obstacle se présente à droite du robot. La réaction est de reculer durant une seconde. Le bloc MOTOR commande donc l'allumage des deux moteurs en marche arrière à une vitesse arbitrairement choisie à 15: direction=Backward, select motor=Both, velocity=15.
Le bloc DELAY suspend quand à lui l'exécution du programme durant une seconde, soit 10 dixièmes: Delay Time = 10. Cela laisse le temps au robot de rouler en arrière (cf Premier pogramme avec le MAVIN). |
|
![]() |
Ce second bloc MOTOR de la branche est celui vu à la branche 1. Il commande le moteur droit vers l'avant à une vitesse de 15: direction=Forward, select motor=Right, velocity=15. Rappelons que le moteur gauche tourne toujours en arrière: le robot va pivoter sur lui-même vers la gauche.
A son tour, le bloc DELAY suspend l'exécution du programme durant une seconde, soit 10 dixièmes: Delay Time = 10. Cela laisse le temps au robot de tourner!
|
|
branche 3
|
Troisième branche: teste la présence d'un obstacle sur la gauche du robot. La réaction dans ce cas sera de reculer durant une seconde, puis de tourner à droite. | |
![]() |
Condition d'entrée dans la branche: présence d'un obstacle à gauche. Le capteur Photo à gauche est sollicité :direction=Forward, sensor status=L. Si la condition est vraie, le programme condition sur la sortie T (True) sinon, la branche 4 est exécutée sur la sortie F (False). | |
![]() |
Si l'entrée dans la branche est acceptée, c'est qu'un obstacle se présente à gauche du robot. La réaction est de reculer durant une seconde. Le bloc MOTOR commande donc l'allumage des deux moteurs en marche arrière à une vitesse arbitrairement choisie à 15: direction=Backward, select motor=Both, velocity=15.
Le bloc DELAY suspend quand à lui l'exécution du programme durant une seconde, soit 10 dixièmes: Delay Time = 10. Cela laisse le temps au robot de rouler en arrière (cf Premier pogramme avec le MAVIN). |
|
![]() |
Ce second bloc MOTOR de la branche commande le moteur gauche vers l'avant à une vitesse de 15: direction=Forward, select motor=Left, velocity=15. Rappelons que le moteur droit tourne toujours en arrière: le robot va pivoter sur lui-même vers la droite. Encore une fois, notre fameux bloc DELAY suspendant l'exécution du programme durant une seconde, soit 10 dixièmes: Delay Time = 10 pour laisser le temps au robot de tourner! |
|
branche 4
![]() |
La dernière branche est celle par défaut. Aucun des cas particuliers précédents n'a été détecté, c'est à dire qu'il n'y a absolument aucun obstacle devant le robot. Que faire? Tout simplement avancer du mieux que l'on peut en allumant les deux moteurs à la même vitesse en marche avant: direction=Forward, select motor=Both, velocity=15. Toujours le même bloc DELAY suspendant l'exécution du programme durant une seconde, soit 10 dixièmes: Delay Time = 10! |
|
Fin
|
Enfin le programme se termine par une boucle. Comme nous l'avions vu lors de notre Premier Programme, la boucle va permettre de réitérer les tests tout au long du programme. Si elle n'y était pas: le programme durerait une seconde. Afin de permettre au programme de durer indéfiniement, la boucle est dite infinie. Elle est reglée sur Count=0. Le bloc END sur la sortie end de la boucle permet quant à lui de terminer le programme. Le fil d'exécution, c'est à dire l'étape où en est l'éxécution du programme ne devrait jamais l'atteindre: la boucle est infinie! Toutefois, il est rappelé que ce bloc est obligatoire. |
Transfert au MAVIN
1- Vérifiez que votre programme est correct en utilisant le 'vérificateur de logique': bouton [1].
Testons votre compréhension
Conclusion
- Simple à programmer, tranfert du programme facile à mettre en oeuvre.
- Logiciel intuitif et agréable à utiliser.
- Le robot est bruyant en fonctionnement.
- Les capteurs ont une distance de détection vraiment trop faible. Mieux vaut s'en servir pour suivre un mobile.