jeu, 10/12/2009 - 11:43 par Dom
Type:
Sujet:
Premier programme avec le MAVIN
Introduction
Depuis le début de ce dossier, l'envie se fait de plus en plus sentir de programmer ce fameux MAVIN qui semble jusqu'à présent si prometteur. Ce premier programme ne répondra pas à une tâche concrète très pertinente, mais permettra plutôt de prendre en main le logiciel, de voir rouler le MAVIN et de vérifier par-là si son montage est correct. Nous allons commencer par établir un court cahier des charges que le lecteur pourra lire et essayer de programmer par lui-même. Le programme complet sera ensuite détaillé. N'hésitez pas à laisser vos questions éventuelles en commentaire.
Cahier des charges
Le robot devra répondre au fonctionnement suivant:

- Avancer tout droit durant deux secondes.
- Tourner sur lui-même vers la gauche durant deux secondes.
- Tourner sur lui-même vers la droite durant deux secondes.
- Reculer durant deux secondes.
- Reproduire ces opérations 4 fois de suite.
- Immobiliser le robot.
Indices:
- Pour tourner sur lui-même, le robot doit faire avancer ses deux roues à la même vitesse mais en sens opposé.
- Pour répéter les opérations, inutile de les recopier plusieurs fois: utilisez une boucle.
--------------
A vous de tenter de créer un programme répondant aux spécifications évoquées...
--------------
La solution

Détails
Ce programme, malgré sa complexité apparente pour un débutant est en réalité d'une extrême simplicité. Sa seule difficulté est de comprendre le principe de boucle.
Rappel: Pour paramétrer chaque bloc, cliquez dessus. Une fenêtre de paramétrage apparaît au bas de l'écran comme vu précédement dans la découverte du logiciel.
Suivons le programme pas-à-pas, tel que le fera le micro-processeur du robot:
![]() |
Début du programme. C'est de ce point que redémarrera nécessairement le programme lors de la mise sous tension du robot.
|
![]() |
Un DELAY est une pause temporisé dans le programme. Ici, le programme attends deux secondes avant d'exécuter le bloc suivant. Cela ne signifie pas que le robot s'arrête durant deux secondes, mais qu'il continue à exécuter la dernière instruction durant ces deux secondes.
Cette attente correspond en réalité au temps de recul du robot à la fin de programme. L'attente a été placée à cet endroit pour des raisons purement pratiques. En effet, pour télécharger le programme dans le robot, il convient de l'allumer. Celui-ci suit alors son programme actuel tant que le téléchargement du nouveau programme ne débute pas. Pas pratique de brancher le robot à l'ordinateur si celui-ci roule. Une solution que vous allez certainement rapidement adopter: insérer un DELAY d'une ou deux secondes en début de programme.
Le bloc DELAY se configure en dixième de secondes. Notre attente de deux secondes sera donc paramétrée selon la propriété Delay Time = 20.
|
![]() |
Démarre les deux moteurs en marche avant et à une vitesse choisie arbitrairement à 15: direction=Forward, select motor=Both, velocity=15. Notez que le bloc moteur démarre les moteurs, mais ne configure pas de temps de fonctionnement. Si n'est rien fait ensuite, le robot roule ainsi à l'infini.
|
![]() |
Ce bloc DELAY est un temps d'attente qui correspond en fait au temps de fonctionnement des moteurs. Ainsi, si l'on veut avancer durant deux secondes, il convient en réalité d'allumer les moteurs, d'attendre deux secondes, puis de les éteindre.
|
deux
blocs
MOTOR
|
Ces deux blocs moteurs à la suite permettent le démarrage du moteur gauche et du moteur droit. Le but est de tourner durant deux secondes à gauche. Comme pour cette opération les deux moteurs ne vont pas faire la même chose, il faut les commander séparément, d'où les deux blocs MOTOR. Première subtilité du programme: pour tourner à gauche, il faut faire rouler la roue droite à une vitesse données et arrêter la roue gauche ou la faire tourner à une vitesse moindre. Ici, pour que le robot tourne sur lui-même (et non en courbe), la roue droite tournera à la même vitesse que la gauche mais vers en arrière. Résultat: le robot pivotera sur lui-même.
Les réglagles effectués sont donc pour le moteur droit: direction=Forward, select motor=Right, velocity=15; pour le moteur gauche: direction=Backward, select motor=Left, velocity=15.
|
![]() |
Vous l'aurez compris: cette attente est de deux secondes: le temps de pivotement du robot sur la gauche.
|
deux
blocs
MOTOR
|
A nouveau deux blocs moteurs pour tourner à droite. Vous l'aurez compris, la configuration moteur-droit moteur-gauche est inversée.
|
![]() |
Une attente de deux secondes pour pivoter à droite.
|
![]() |
Pour reculer, démarrez les deux moteurs en marche arrière:
direction=Backward, select motor=Both, velocity=15
|
![]() |
Voici la seconde subtilité du programme: la boucle. En arrivant à ce bloc, le programme lit la valeur de Repeat Count (ici 4 car nous souhaitons que le programme se répète 4 fois). Puis il compte le nombre de fois où il est déjà arrivé sur ce bloc: 1 au premier passage, 2 au seconde,.... Tant qu'il n'a pas atteint le quota, le programme continu sur la branche [R] (Repeat) du bloc. Lorsque le compte est bon, le robot passe à la suite, branche [E] (End).
|
![]() |
Fin du programme! Cela ne signifie pas que le robot s'arrête mais simplement qu'il reste en l'état actuel.
|
Si jamais le programme fonctionnait à l'envers (le robot tourne à droite puis à gauche au lieu de gauche puis droite), inversez simplement les branchements d'alimentation des moteurs (cf article sur le montage du MAVIN).
Transfert au MAVIN

1- Vérifiez que votre programme est correct en utilisant le 'vérificateur de logique': bouton [1].
2- Compilez votre programme en utilisant le 'compilateur': bouton [2]. Votre programme va être traduit pour être compréhensible par le micro-controleur du robot.
3- Branchez le câble de téléchargement sur le port USB de votre ordinateur, ainsi que sur le port USB-2 du MAVIN (à l'arrière, à gauche du bouton de démarrage). Allumer ensuite le MAVIN.
4- Téléchargez (= tranférez) le programme que vous venez de créer dans la mémoire interne du MAVIN en vu de son exécution. Pour cela cliquez sur le bouton [3].
Pour exécuter le programme, débranchez le câble de téléchargement, éteignez votre robot puis rallumez-le une fois posé au sol.
Testons votre compréhension
Voyons si vous avez tout compris! Une erreur a volontairement été introduite dans le programme le rendant pas tout à fait conforme au cahier des charges. Réfléchissez, testez puis lisez la suite....
Voici la réponse :
A la fin de la dernière boucle, en arrivant au END, le programme se termine. Pourtant les moteurs n'ont pas été arrêtés. Du coup, le robot continu de rouler indéfiniement en arrière. Pour corriger ceci, rien de plus simple. Après la boucle et avant le bloc final, ajoutons un nouveau bloc moteur qui les 'alumera' sur une vitesse 0.

Conclusion
Une note positive pour conclure cet article: le MAVIN est vraiment très simple à programmer, en tout cas pour des programmes aussi basiques, et le logiciel est très intuitif.
Les plus:
- Simple à programmer, tranfert du programme facile à mettre en oeuvre.
- Logiciel intuitif et agréable à utiliser.
Les moins:
- Le robot est bruyant en fonctionnement.
- L'absence d'odométrie se fait ressentir: il sera impossible de créer un asservissement, du coup, même aller en ligne droite n'est pas évident.
- Les roues ont un jeu relativement important: le robot ne repassera pas deux fois par la même trajectoire, alors qu'il est censé faire quatre fois la même chose.
Vous avez aimé ? Offrez-nous le café !
Pas tout compris? Laissez un commentaire ou contactez-nous !