Contrôle d`un Robot Légo NXT à distance via Bluetooth

Transcription

Contrôle d`un Robot Légo NXT à distance via Bluetooth
Controle d’un Robot Lego NXT à distànce
vià Bluetooth
Sullivan VILLA – Terminale.S4 – ISN 2013
Equipe pédagogique :
Jérôme CANTALOUBE
Laurent Bernard
Yann BERTRAND
Plan du dossier :
Pourquoi ce projet ? ................................................................................................................................ 2
Qu’existe-t-il déjà dans le même principe? ................................................. Erreur ! Signet non défini.
Analyse du besoin, recherche d’idée : .................................................................................................... 2
Répartition des tâches et démarche collaborative ................................................................................. 6
Démarches collaboratives : ................................................................................................................. 6
Réalisation de mon interface : ................................................................................................................ 7
Voici donc un fonctionnement type : .................................................................................................. 9
Intégration et validation : ...................................................................................................................... 10
Bilan et perspectives: ............................................................................................................................ 11
Diffusion du projet : .............................................................................................................................. 12
1
Pourquoi ce projet ?
Nous avons choisi ce projet, car suite à une liste de projets réalisables donnés par nos
professeurs d’ISN c’était le thème qui nous intéressait le plus parmi tous les autres
choix possibles. En effet choisir un robot NXT, donc fabriqué en Lego©, et le
programmer via une interface sous un logiciel de programmation « en graphique »
nous donnait à l’avance un large choix de projet plus ou moins réalisable à court
terme.
De plus la robotique est une science en pleine expansion et utilisé dans de nombreux
domaines. De la médicalisation en assistant les mouvement d’un chirurgien, à la
domotique en nettoyant de manière autonome le sol de votre maison ou encore dans
l’industrie et les laboratoire, la robotique est de plus en plus présente dans nos
modes de vies, ce qui nous donnais encore plus l’envie de travailler sur un tel thème.
Présentation du Projet
Dans ce dossier, nous allons traiter de notre projet portant sur les Robots NXT
«MINDSTORM». Ces robots ont été conçus en 2006 par l'entreprise LEGO. Le kit Lego
Mindstorms NXT est actuellement en version 2.0.
Le robot Lego Mindstorms NXT est très utilisé pour l'enseignement et l'éducation des
sciences et techniques. De nombreuses compétitions étudiantes sont basées sur le
robot Lego comme la First Lego League ou la Coupe de France de robotique. Des
compétitions internationales existent également sur la base de ce kit robotique.
Ces robots sont composés d'une brique intelligente, permettant de relier des
servomoteurs, ainsi que des capteurs. Il y a, dans le pack d’origine, un capteur
d'ultrasons, un capteur sonore, un capteur tactile, ainsi qu'un capteur de luminosité
mais d’autre capteurs existent comme le capteur boussole ou gyroscopique. Ces
capteurs peuvent par exemple servir à faire interagir le robot avec son
environnement.
Ce sont bien sûr les servomoteurs qui permettent au robot de se mouvoir.
Ces robots sont vendus avec un logiciel de programmation simple, propre aux NXT,
permettant à n'importe qui de pouvoir s'en servir sans avoir besoin de connaissances
2
spécifiques. Il est également possible de programmer les robots NXT avec le logiciel
PROCESSING, en installant des librairies extérieures, développées spécialement pour
les NXT par des développeurs extérieurs.
Avant de commencer notre travail, nous nous sommes renseignés sur ce qui existait
déjà, sur « l’état de l’art », et avons trouvé des choses très étonnantes. Par exemple
un programme NXT ayant pour objectif de terminer le plus rapidement possible un
«Rubik's Cube», seul et sans aide extérieure : des bras ont été conçus, et sont
commandés par les servomoteurs.
Lors de l’achat d’un tel robot le logiciel livré avec, NXT-G, est basé sur de la
programmation graphique tournant en Labview(1). Ainsi on rentre un programme
sous forme de blocs, puis on le rentre dans la mémoire du robot qui effectue le
parcours voulu par la suite.
http://www.generationrobots.com/nxt-g-programmation-lego-mindstormsnxt,fr,8,18.cfm
Il existe un développement en code C++ suivi d’un traitement des informations
en Java, qui envoie donc les commandes au NXT par une liaison Bluetooth. Cette
méthode est décrite dans un tutoriel complet trouvé sur le net, et dont voici le lien :
http://manu.kegtux.org/Java/Tutoriels/Robot/bluetooth.htmlee »
Notes:
(1) : (Définition selon a société « National Instrument » propriétaire du dit logiciel)
LabVIEW est un environnement de développement hautement productif utilisé
par les ingénieurs et scientifiques. Son approche de programmation graphique et
son intégration matérielle inégalée permettent de concevoir et de déployer
rapidement des systèmes de mesure et de contrôle/commande. Dans le cadre de
cette plate-forme souple, les ingénieurs peuvent concevoir des systèmes de
toutes tailles, de la phase de conception jusqu'au test, tout en réutilisant les IP et
en affinant leurs processus pour obtenir de meilleures performances.
Il est bien évident que nous n'avions ni les connaissances nécessaires, ni le temps
pour réaliser ce genre de programme, et surtout pour penser une utilisation
réellement utile. Nous nous sommes donc simplement lancés dans des interfaces de
3
contrôle à distance, via le dispositif Bluetooth : diriger un robot NXT via une interface,
directement depuis un ordinateur.
Nous allons maintenant nous intéresser à notre projet concernant les robots NXT.
L'objectif premier de ce projet était de proposer des interfaces de contrôle
différentes de celles qui existaient déjà, mais surtout de les programmer
différemment, puisqu'il n'y a pas énormément d'interfaces programmées avec le
logiciel Processing.
L'enjeu de départ était que chacun propose une interface différente, dans le but de
les rassembler par la suite dans un menu que nous imaginerions et programmerions
nous-mêmes, toujours avec le même logiciel, Processing, dont nous nous servons
depuis le début de l'année en cours d'ISN.
Nous avons donc tout mis en œuvre pour atteindre notre objectif, et avons réalisé
des interfaces personnelles tout en gardant une collaboration importante.
Anàlyse du besoin, recherche d’idée :
Nous nous sommes d'abord lancés dans des interfaces simples afin d’apprendre à
utiliser les différentes librairies et le robot. Mais nous nous sommes rendu compte
qu'elles avaient toutes des fonctions très proches et un fonctionnement similaire, et
donc sans grand intérêt.
Pour ce faire, nous avons pris du temps pour nous renseigner sur ce dont nous aurons
besoin pour réaliser notre travail, en utilisant bien évidemment les outils
Numériques, avec Internet, mais aussi en s'appuyant sur les notices d'utilisation du
robot.
4
Après concertation, nous nous sommes donc lancés dans 3 nouvelles interfaces dans
l'objectif de les rassembler ensuite dans un menu.
Nous avons donc utilisé le langage «Java» pour établir nos programmes de contrôle
de nos robots NXT, ainsi que l'interface Bluetooth pour établir une connexion
instantanée entre l'ordinateur et la brique NXT, à l'aide d'une clef Bluetooth
extérieure (ou directement depuis une interface Bluetooth intégrée à un ordinateur).
Ce dispositif nous a d'ailleurs malheureusement beaucoup pénalisé au niveau du
temps, car le matériel ne fonctionnait pas du tout de façon régulière (drivers,
interférences…), et il nous est arrivé de n'avoir rien le temps de faire pendant une
séance, car la connexion entre l'ordinateur et le robot n'arrivait pas à se faire. Nous
5
avons donc eu des séances où nous avons été contraints de travailler «à l'aveugle»,
sans pouvoir tester nos programmes en conditions réelles.
Répartition des tâches et démarche
collaborative
Marc-Olivier TURENNE
Interface «Déplacement
Vitesse Variable»
Lecture de la valeur de la
boussole et action à faire
en fonction de l’angle
donné par le programme
d’Elouen TRAVAUX.
Assemblage des interfaces
Sullivan VILLA
Interface « mode
parcours »
Assemblage des
interfaces
Elouen TRAVAUX
Interface « souris, clavier »
Partie « Calcul de l’angle »
du mode boussole.
Démarches collaboratives :
Pour organiser l’avancée de notre projet, nous avons, à chaque début de séance
énoncé aux autres notre avancée personnelle, discuté de nos problèmes afin de
s’entraider. Nous avons aussi organisé plusieurs Brainstormings afin de mettre nos
idées en commun.
Nous avons aussi échangé avec les autres groupes toujours dans un esprit d’entraide
6
Réalisation de mon interface :
Nous avons tous les trois commencé par créer une interface par laquelle on
contrôlait le robot à distance, composée simplement de 4 boutons directionnels pour
la mienne (repris par la suite) et qui permettait de diriger le robot via Bluetooth
comme voulu. C’est ceux qui nous a permis de commencer à prendre en main le
logiciel Processing et notamment la liaison Processing/robot, ainsi que les nouvelles
librairies utilisées pour la communication entre les deux systèmes.
Après nous être réparti les tâches dans le groupe, nous nous sommes chacun
lancé dans une interface différente afin de contrôler un robot NXT d’une manière
différente, dans l'idée de toutes les rassembler ensuite dans un menu.
Pour ma partie je devais donc imaginer et créer un espace depuis lequel
l’utilisateur puisse contrôler le chemin que parcourra son robot par la suite, en
pouvant gérer la longueur de ses déplacement et leur sens.
Les fonctionnalités de mon programme passent par différentes fonctions :
 4 touches de direction : « Haut », « Bas », « Gauche », « Droite » qui
s’enregistrent dans des variables homonymes, et qui s’affichent petit à petit
sur la « mini-carte » en bas de l’écran
7
 5 touches de «variations de distance » parcourue par le robot, qui
correspondent à un certain nombre de tours de moteur, donc de roue, au
choix : « 1 », « 5 », « 10 », « 15 » ou « 20 ». Chaque nombre de tours est
assimilé à une couleur qui se retrouve dans les carrés qui composent le petit
chemin sur la « mini-carte ».
 Une « mini-carte » : sur laquelle apparait le trajet que le robot effectuera,
avec les différentes phases repérables par leur couleur significative
 Une touche « START » qui n’est disponible (en couleur verte) seulement
lorsque le nombre d’ordres de trajet (gauche, droite, haut ou bas) est compris
entre 1 et 15. Elle est par défaut rouge, puis le redevient lorsque le compteur
dépasse les 15 nombres d’ordres. Le départ du robot n’est possible que si la
touche « START » est verte.
 Un « compteur d’ordre », qui compte le nombre d’ordre que le robot va avoir
à effectuer, par défaut il est à 0, puis prends +1 à chaque touche
directionnelle pressée.
 Une touche « RESET », qui réinitialise le trajet du robot, met à blanc la « minicarte », et qui remet à défaut les variables.
 Une touche « STOP », qui est explicite, elle arrête le robot dans ses actions.
NB :Toutes les indications en gras sont des touches ou des indications visibles
sur l’interface
8
Voici donc un fonctionnement type :
1-Bien évidemment la personne lance Processing et allume le robot, tout en
s’assurant de la bonne connexion Bluetooth.
2-L’utilisateur devant mon interface à différents choix, tout d’abord il peut régler
le nombre de tours de roue de chaque mouvement, puis choisi de 1 à 15
mouvements (nombre 15 choisi pour un confort d’utilisation) selon différentes
directions et de différente longueur (en fonction du nombre de tours de roue).
Avec la possibilité pour la personne de réinitialiser le parcours et le nombre
d’ordre en pressant la touche « RESET ».
3-L’utilisateur lance le programme (visible sur la mini carte), et le robot l’effectue.
Cependant en cas de problème la personne qui utilise le programme peut à tout
moment stopper l’avancée du robot en appuyant sur la touche stop.
4-A la fin l’utilisateur peut re-choisir un parcours et ainsi de suite …
Tout le groupe de travail et moi-même avons été plus ou moins embêtés par
des soucis de connexion récurrents. En effet, d’une manière générale, ayant cours
d’ISN une fois par semaine, l’installation des différentes librairies se faisant sur
des sessions élèves, et sur un poste en soi-même et de plus par l’incompatibilité
de certaine clées Bluetooth ou pas (cela dépendait certaine fois des
semaines/voir tout simplement de la version de Processing), on a donc au départ
perdu beaucoup de temps sur les installations logicielles et périphériques.
C’est ainsi que par la suite nous avons décidé de travailler plutôt à l’aveugle
sans avoir l’occasion ou le temps de tester nos interfaces respectives. Le tout en
espérant que tout fonctionnerait bien.
9
Intégration et validation :
La réalisation finale du programme est en fait une interface principale dans
laquelle l’utilisateur choisit son mode de fonctionnement voulu, entre les trois
interfaces :
 Mode Autonome (Marc-Olivier)
 Mode Parcours (Sullivan)
 Mode Boussole (Elouen)
10
Ainsi on a donc chacun une interface personnelle indentée au sein d’une interface
d’équipe. De plus chaque personne a pu à un moment ou un autre des séances de
projet, ou chez soi aider un de ses équipiers, ou travailler ensemble. Pour moi j’ai
vraiment l’impression d’avoir participé à un projet d’équipe.
Mon interface quant à elle répond plutôt bien au cahier des charges de l’équipe.
En effet on voulait concevoir chacun son interface avec laquelle un utilisateur pouvait
contrôler à distance depuis son ordinateur via connexion Bluetooth un robot NXT, en
programmant sous Processing. Ainsi comme c’est le cas, mon interface, le mode
parcours, contrôle un robot NXT à distance sans avoir besoin de le relier par un
quelconque câble, grâce à la liaison sans fil.
Bilan et perspectives:
Le travail que nous avons effectué au cours de notre projet m’a paru vraiment
intéressant. Comme tout projet il m’a permis de travaillé en équipe, chose important
à mes yeux. En effet, aujourd’hui, dans la plupart des postes professionnels
nécessitent un travail en équipe, que l’on soit ouvrier ou ingénieur. De plus nous
avons eu la chance de travailler dans une salle relativement récente, ce qui nous a
apporté un confort très important pour la réussite d’un projet De plus il y a toujours
eu une bonne entente que ce soit avec les professeurs, ou les membres de l’équipe.
Mon projet terminé peut, comme tout projet, être optimisé. Ainsi dans mon
interface je pourrais notamment changer le trajet à choisir, actuellement par des
touches directionnelles, mais là en traçant le trajet à effectuer par le robot avec la
souris. De plus dans l’interface finale utilisateur, on pourrait changer la connexion
Bluetooth par à un boitier wifi disponible. De plus, avec la encore un capteur vidéo en
plus on aurait la possibilité d’ajouter une mini caméra dans chaque mini-interface
donnant vue sur l’environnement entourant le robot.
Pour conclure, je dirais qu’il est clair que ce projet m’a apporté de solides
bases en programmation. De plus il m’a permis de connaître la technologie Légo NXT,
telle qu’elle peut être utilisée dans certains cycles supérieurs d’université ou d’école
d’ingénieur.
11
Diffusion du projet :
Notre projet est à retrouver sur la plateforme Github, qui permet le dépôt de
fichiers importants sur un serveur web. Ce service nous facilite l’accès à nos fichiers
de groupe, sans avoir besoin de prendre avec soi une clef USB ou un disque dur
lorsque l'on ne travaille pas chez soi, et de plus d’avoir la possibilité de modifier ces
fichiers en commun et de voir les modifications effectuées ainsi que les versions
antérieures.
https://github.com/codelab-info/tratuvi
Pour protéger notre projet, et établir les droits correspondants, nous avons
décidé d'utiliser une licence de diffusion «Créative Commons».
Nous avons choisi la licence ci-dessus :
Le sigle BY représente la signature personnelle de la personne ayant effectué le
projet, et le sigle NC représente l'aspect non commercial du projet.
C'est à dire que personne ne pourra tirer profit et gagner de l'argent grâce à ce
projet : ni les créateurs, ni les personnes qui pour une raison quelconque ont accès au
projet. Enfin, le projet appartient à quelqu'un et ne peut pas être usurpé, avec la
licence BY.
http://creativecommons.org/licenses/by-nc/3.0/fr/
Il n'y aura donc aucune vente, il s'agit bien ici d'un projet scolaire qui restera dans son
cadre.
12

Documents pareils