Teleguide2012-2

De Wiki de bureau d'études PeiP

Objectifs

Le but de ce Bureau d'études IMA est de nous faire découvrir une partie du programme, ainsi que la méthode de travail des étudiants de cette spécialité en nous plongeant directement dans la pratique.

Pour cela nous nous sommes attribués une série de mini-projets consistant à réaliser un robot totalement autonome. Tout nos robots sont basés sur une "voiture" à laquelle nous devons nous débrouiller pour y intégrer différentes fonctions.

La suite de cette page portera sur le robot téléguidé, qui repose sur une idée simple : commander un robot à moyenne distance à partir d'un appareil tel qu'un téléphone (à vrai dire la manipulation peut se faire depuis quelque appareil que ce soit dans la mesure où il est équipé d'un module Wi-Fi et d'un navigateur internet).


La construction du robot

Comme la majorité d'entre nous, j'ai d'abord commencé par suivre le manuel LEGO MindStorms pour créer une première base de mon robot, qui s'avère être une bonne initiative étant donné que cette base est particulièrement adapté à la fonction première des robots qui est de se déplacer de façon autonome.

Par la suite il fut nécessaire d'adapter cette base en fonction du matériel nécessaire à utiliser et des fonctions secondaires à apporter. Pour ma part, le module de contrôle des moteurs (le NXT), ainsi qu'une FoxBoard (modèle G20), sont nécessaires à la réalisation du robot téléguidé. Bien sûr, il faut rajouter à cela les outils nécessaires à la communication entre les différents terminaux à savoir des dongles Bluetooth et Wi-Fi. Une Webcam est également embarquée, pas indispensable mais tout de même très utile pour le pilotage.

Après avoir intégré sur le robot tout le matériel nécessaire, je me suis rendu compte à quel point l'ensemble était lourd et déséquilibré. De plus un 3ème moteur provenant du modèle de base de la documentation restait inutilisé. J'ai donc procédé à une révision du châssis pour aboutir à une version finale du robot (du moins au niveau matériel).


La programmation

Principe de fonctionnement

Comme nous l'avons vu précédemment, plusieurs éléments sont intégrés au robot. Le premier est le NXT dont le rôle est d'actionner les moteurs pour déplacer le robot. Pour cela le NXT reçoit par Bluetooth des messages envoyés par la FoxBoard. Ces messages sont envoyés grâce grâce à une page internet qui est stockée dans la mémoire de la FoxBoard et accessible par Wi-Fi depuis un terminal quelconque.


Programmation du boîtier NXT

Les fonctions de déplacement contenues dans le NXT s'articulent autour d'un algorithme simple. Ceci m'a permis d'utiliser le logiciel de programmation fourni avec le pack LEGO MindStorms, basé sur une programmation en LabView (langage de programmation graphique). Je peux d'ailleurs dire également que c'est un moyen de programmation qui est peu intuitif mais reste cependant efficace. D'autres solutions de programmation existent comme NXC qui est un langage basé sur le C et adapté pour fonctionner avec les boîtiers NXT.

Pour revenir à l'algorithme même, le mode basique se décompose comme suit :

Programme final basique


  Tant que vrai
     Recevoir message bluetooth
     Associer la valeur du message à une variable
     Si nouveau message
        Comparaison de la valeur du message
           0: Arrêt
           1: Avancer
           2: Reculer
           3: Tourner à gauche
           4: Tourner à droite
        Fin comparaison
     Fin si
     Envoi message de confirmation
  Fin tant que


Pour ce qui est du mode total, il suffit simplement d'ajouter un cas n°5 qui récupérera les instructions pour contrôler la puissance à fournir par les moteurs :

Modèle d'instructions pour le moteur A pour le cas 5


           5: Récupérer et envoyer les valeurs pour les moteurs


Programmation de la FoxBoard G20

La FoxBoard est un 'mini' ordinateur fonctionnant sous Linux, il est donc possible de la configurer afin de lui faire faire ce que l'on souhaite. En se connectant à la FoxBoard (en Ethernet ou par Wi-Fi), il est possible d'y enter des commandes dans un terminal depuis une machine classique sous Linux, grâce à la commande exécutée en mode Super Utilisateur (su) :

  ssh root@192.168.100.1  ou  ssh root@192.168.1.1

La commande change selon le type de connexion (filaire ou non). A partir de la, nous sommes en mesure de naviguer dans l'arborescence de la FoxBoard, régler différents paramètres ou encore accéder à diverses informations. Par exemple, afin de pouvoir se connecter par Wi-Fi à notre robot, il est nécessaire de régler l'interface Wi-Fi en mode Master. Cependant l'intérêt principal que j'ai trouvé à me connecter en SSH à la FoxBoard aura été de pouvoir télécharger des fichier pour modifier son site de configuration. Je détaillerais la démarche un peu plus tard.

A vrai dire, on ne peut pas vraiment parler de programmation de la FoxBoard, mais plutôt d'une configuration (du moins si on s'en tient à l'objectif de base). On accède à la page de configuration via un navigateur internet, depuis quelque machine que ce soit qui y est connectée, en tapant dans la barre d'adresse :

  192.168.100.1  ou  192.168.1.1

Encore une fois, l'adresse diffère selon le type de connexion employée.

C'est à partir de cette page que l'on lance les différents scripts préchargés pour contrôler le robot. C'est aussi là que se trouve la page de contrôle qui envoie les ordres au boîtier NXT.


Modification de l'interface web

Une fois la programmation du NXT terminée ainsi que la configuration de la FoxBoard, j'ai pu commencer à m'amuser avec mon robot en le contrôlant grâce à mon téléphone. Je me suis alors rendu compte que l'interface du site était très peu appréciable sur un tel appareil qui n'offre qu'un écran de quelque pouces. J'ai alors imaginé une interface plus épurée et mieux pensée pour un téléphone qui consiste simplement à superposer les boutons de contrôle du robot au dessus de l'image diffusée par la Webcam. J'ai pour cela utilisé les fichiers source qui sont disponibles ici [[1]].

Screenshot nécessaire

Pour utiliser les fichiers créés dans la FoxBoard, il faut les transférer. On y parvient grâce à SCP (Secure Copy Protocol) qui permet de transférer des fichiers entre des machines Linux des fichiers en SSH. La commande :

  scp file.txt root@192.168.100.1:/home/folder

Copiera le fichier file.txt dans le dossier /home/folder de la machine 192.168.100.1.

Pour la suite, une amélioration est en cours de développement et permettrait de contrôler le robot grâce au gyroscope/accéléromètre (?) qui équipe maintenant la majorité des appareils mobiles.