Teleguide2011-2
Sommaire
Introduction à la partie contrôle à distance
La partie du contrôle à distance a pour but de contrôler un robot Mindstorm à l'aide d'un navigateur internet (machine de type pc ou smartphone). Pour cela, on se connecte via Wifi à un micro-ordinateur (Foxboard) comprenant des pages web permettant le contrôle du robot.
Le matériel principal utilisé est :
- Machine comprenant un navigateur web
- Foxboard avec interface Wifi et Bluetooth
- Brique NXT du robot Mindstorm.
Le contrôle en lui même s'effectue en plusieurs étapes:
- Le navigateur se connecte à la Foxboard via Wifi et arrive sur les pages web.
- Suivant les actions de l'utilisateurs sur cespages web, des Javascripts s'executent et envoient des ordres bluetooth à la brique NXT du robot.
- Le programme implanté des la brique reçoit les ordres (sous forme de chiffre) et executent les actions correspondantes au chiffre reçu.
Image représentant plan de contrôle
Avancée du projet
Etape 1 : Construction du robot
Nous avons d'abord commencé par construire en essayant de suivre un maximum le manuel fourni par Lego. Cependant, le problème du manque d'espace est très vite apparu. Deuxième soucis, un moteur placé à l'avant ne servait à rien. Enfin, si nous voulions suivre le manuel, c'était pour être sur d'avoir un robot solide qui tienne face au poids conséquent des différents composants externes à installer. Nous avons alors décidé de reprendre les fondamentaux du robot typique, mais d'en élargir énormément l'intérieur afin de pouvoir mettre la Foxcom et le mini-PC tranquillement. On a donc obtenu un robot assez large mais compact comportant tous les objets dont nous allions avoir besoin par la suite.
Etape 2 : Familiarisation avec le logiciel Labview (logiciel Mindstorm)
Nous avons commencé par la programmation graphique du logiciel pour comprendre l'utilisation des moteurs et du sensor. Très vite, nous avons été confrontés à des problèmes de communication bluetooth entre la foxboard qui nous a poussé vers la programmation avec le langage NXC (Not Exactly C) qui nécessite un apprentissage de ce langage et des fonctions permettant de diriger chaque composant du robot. Ce langage a plusieurs avantages, il nous a permis de régler chaque mesures plus aisément et précisément(vitesse des moteurs, temps, fréquences de sons, distance, etc) et de ne pas se perdre dans les blocks quand le programme s'épaissit.
Voici un aperçu du résultat du programme test que nous avons fait avec le logiciel mindstorm :Walle phase test -> Youtube Walle avance tout le temps, et si il rencontre un objet, alors il effectue un virage à droite et continue sa route jusqu'à rencontrer un autre objet. Bref, test tout bête mais avec lequel on a pu voir que Mindstorm était très très capricieux et ingérable avec ses nombreux bugs et caprices bluetooth
Etape 3 : Programmation du code
Après longue étude des .pdf que l'on pouvait trouver sur le web au sujet du NXC, nous avons pu écrire l'algorithme (simpliste) du programme suivant :
Tant que (true)
Réception du message bluetooth
Si il y a un obstacle à moins de 15 cm Alors exécuter le fichier son !camion et faire marche arrière jusque 20 cm Fin si
Si (l'instruction est conforme à celle attendu et si elle est différente de la précédente) switch (instruction) cas 0 : On arrête les moteurs cas 1 : On actionne les moteurs pour faire marche arrière cas 2 : On actionne les moteurs pour aller tout droit cas 3 : On actionne les moteurs pour aller à gauche cas 4 : On actionne les moteurs pour aller à droite cas 5 : On actionne les moteurs suivant la direction et la puissance donné par le navigateur de la Foxboard (guidage amélioré) Fin switch Fin si
Fin tant que
Nous avons équipé notre petit Walle -comme le montre l'algorithme- d'un arrêt d'urgence. En cas de mauvaise manœuvre de l'utilisateur le robot s'arrête à 15 cm d'un obstacle, enclenche un signal d'alerte et recule de 5 cm. Seul problème, si l’obstacle et vraiment grand, la tâche 2 qui correspond à "aller tout droit" ne s’exécute pas : forme d'intelligence artificielle ?