Teleguide2011-1
Sommaire
Robot téléguidé 1, le Gros Tony
Étudiants: Jean-Dominique Lancieri et Thomas Maurice.
1ère étape, construction du robot
Pour construire le robot, nous avons d'abord essayé de suivre les instructions du manuel Lego fourni, mais plusieurs problèmes d'érgonomie sont assez vite apparus, comme par exemple la non utilisation d'un moteur et l'espace insuffisant entre les moteurs restants pour intercaler les capteurs de luminosité et de puces RFID. Nous avons donc décidé de développer notre propre châssis plus large que celui de base, pour éviter de trop élever le robot par la suite en ajoutant des composants, afin de conserver un assez bon équilibre.
Idée d'amélioration du guidage par wifi
Plutôt que de récupérer les ordres de direction lorsque l'on clique sur la page web du robot, on peut les récupérer via un joystick raccordé à une machine qui enverra les ordres a la foxboard par wifi. Le guidage sera ainsi plus intuitif (et plus rigolo...).
Principe
- Un programme client récupère les informations d'une manette de jeu (état des axes, hats et boutons) et les convertit en ordres simples (avancer/tourner à telle vitesse).
- Le programme client envoie les ordres via un protocole textuel simple à un programme serveur tournant sur la foxboard.
- Le programme serveur actionne /usr/bin/commande avec les paramètres fournis par le client pour piloter le robot.
(Programme client en C++ avec la SDL pour la gestion du joystick et programme serveur en C++ standard)
Documentation
Page man du programme joystick
joystick(1) Joystick Mindstorm controller joystick(1)
NAME
joystick - Logiciel de contrôle du robot Lego Mindstorm via le
réseau.
SYNOPSIS
joystick --host host --port port --key key
DESCRIPTION
Ce programme permet de communiquer avec le serveur joystick-server et
de ce fait de contrôler le robot Lego Mindstorm qui est equipé du pro‐
gramme guidage.nxc. Ce programme est développé pour la manette de jeu
Logitech RumblePad 2, il est donc possible qu'une autre manette
provoque des comportements inattendus si elle est utilisée avec ce pro‐
gramme. Pour capter les évènements de la manette, le programme utilise
la bibliothèque SDL, et pour communiquer à travers le réseau, il
utilise la libtsocket une petite bibliothèque réseau orientée objet
développée en C++.
OPTIONS
--host host
Spécifie l'host de connexion
--port port
Spécifie le port de connexion
--key pass
Spécifie le pass de connexion
UTILISATION
Le programme se lance après avoir une manette configurée branchée à la
machine, la manette sera automatiquement détectée (en théorie) et la
connexion au serveur se fera automatiquement après la détection de la
manette. Les contrôles sont simples :
Les hats
Permettent de contrôler le robot pas à pas, en fait ils permet‐
tent de résaliser le plus petit déplacement possible dl de
manière à diriger le robot en précision.
Les axes
Permettent de diriger le robot en continu et non pas à pas comme
avec les hats. Lors d'un déplacement en avant, il est possible
de faire tirer le robot plus à droite ou plus à gauche pour cor‐
riger un éventuel défaut mécanique ou une inégalité du sol.
C'est en revanche impossible si le robot recule, il reculera
bêtement en ligne droite. Notez que si le robot tourne, par gain
de place, il tournera sur place ce qui permet d'affiner encore
la direction.
Les boutons
Le bouton 9 est le bouton d'arrêt du programme, il doit être
utilisé pour quitter le programme joystick. Le bouton 10 est le
bouton d'arrêt du programme ET du serveur (hébergé sur la même
machine ou sur la foxboard). Appuyer sur ce bouton causera
l'arrêt des deux processus. Les boutons 3 et 1 permettent quand
à eux de pivoter légèrement sur place sur la droite ou sur la
gauche. Le bouton 5 permet au robot de jouer les permières
mesures de la marche impériale de Star Wars, du plus bel effet.
Le bouton 2 est un avertisseur sonor, un genre de klaxon si le
robot en a besoin.
PROBLEMES CONNUS
Parfois les contôles semblent inversés, c'est parce que la manette est
passée pour une raison X ou Y en mode axes inversés, appuyez sur le
bouton mode et tout devrait rentrer dans l'ordre.
AUTEURS
Thomas Maurice <thomas.maurice@polytech-lille.net>
Jean-Dominique Lancieri <jean-dominique.lancieri@polytech-lille.net>
Version 1.0 Thomas MAURICE - Mars 2012 joystick(1)
Page man du programme joystick-server
joystick-server(1) Joystick-server Mindstorm controller joystick-server(1)
NAME
joystick-server - Intermédiaire entre le robot Lego Mindstorm et
la manette de jeu qui sert à le contrôler.
SYNOPSIS
joystick-server --port port --key key --target XX:XX:XX:XX:XX:XX
DESCRIPTION
Ce programme permet de faire le lien entre le programme joystick et le
robot Lego Mindstorm équipé du programme guidage.nxc. Il transforme les
commandes reçues par le logiciel joystick en ordres plus simples
(chaines d'entiers) compréhensibles plus simplement par le robot. Pour
communiquer avec le robot le programme utilise libbluetooth et une sur‐
couche fournie par les développeurs du NXC. Pour communiquer à travers
le réseau, il utilise la libtsocket une petite bibliothèque réseau ori‐
entée objet développée en C++.
OPTIONS
--port port
Spécifie le port d'écoute
--key pass
Spécifie le pass de connexion
--target XX:XX:XX:XX:XX:XX
Adresse MAC de la brique Lego Mindstorm
UTILISATION
Le programme se lance sur un ordinateur équipé d'une clef bluetooth ou
bien de la foxboard qui est montée sur le robot. Le lancement n'est pas
bien compliqué, il suffit de fournir les paramètres du programme au
moment de taper la commande et c'est tout.
PROBLEMES CONNUS
La vitesse de transmission peut être lente si le programme est lancé
depuis une foxboard, dû à la lenteur de son tout petit processeur. Pour
obtenir un résultat optimal, sans aucun lag, il faut le lancer depuis
une 'vraie' machine.
MESSAGES D'ERREUR
Endpoint not connected
Le programme n'a pas réussi à s'appairer avec le robot, pour
pallier à cela vous devez lancer 'bluetooth-agent 1234' et
répondre positivement à la demande d'apairage qui s'affichera
sur la brique.
No route to host
Le programme n'a pas pu initialiser le bluetooth. Soit la clé
bluetooth du serveur n'est pas reconnue par le serveur, soit
elle n'est pas connectée soit le robot n'est pas dans les par‐
ages avec son bluetooth activé.
AUTEURS
Thomas Maurice <thomas.maurice@polytech-lille.net>
Jean-Dominique Lancieri <jean-dominique.lancieri@polytech-lille.net>
Version 1.0 Thomas MAURICE - Mars 2012 joystick-server(1)