Teleguide2013-1 : Différence entre versions

De Wiki de bureau d'études PeiP
(Point de vue énergétique)
(Objectifs)
 
(42 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
= Objectifs =
 +
<include nopre noesc src="/home/pedago/ppeip/include/video-RobotTéléguidé1-2013-iframe.html" />
 +
Le but de ce bureau d'étude est la construction d'un robot joueur de balle, et plus précisément ce projet traite la construction d'un robot que l'on peut diriger grâce à un téléphone portable ou une tablette et via le réseau WiFi.
 +
<br style="clear: both;">
 +
 
= La construction du robot =
 
= La construction du robot =
 
Pour la construction du robot, nous sommes partis sur un châssis rectangulaire, afin de disposer de la plus grande surface au dessus de celui-ci.
 
Pour la construction du robot, nous sommes partis sur un châssis rectangulaire, afin de disposer de la plus grande surface au dessus de celui-ci.
Ligne 12 : Ligne 17 :
 
[[Fichier : ConstrSemiFinale.jpg|200px|thumb|center]]
 
[[Fichier : ConstrSemiFinale.jpg|200px|thumb|center]]
 
[[Fichier : Robot.png|200px|thumb|center]]
 
[[Fichier : Robot.png|200px|thumb|center]]
 +
[[Média : 1er pas.mp4]]
 +
 +
Enfin, une fois la construction achevée, nous avons décidés de l'optimiser un peu. Nous avons donc changé le support caméra, solidifié le bras tireur, et nous avons mis le capteur ultrasons à l'arrière du robot (car l'utilisateur n'a pas de visibilité à l'arrière, donc possibilité de se prendre un mur ...). Enfin, nous avons cachés les fils dans l'espace sous le support FoxBoard/Piles.
 +
[[Fichier : Capt_arriere.jpg|200px|thumb|center]]
  
 
= Téléguidage part I : Le Bluetooth =
 
= Téléguidage part I : Le Bluetooth =
Ligne 90 : Ligne 99 :
 
Pour téléguider le robot en utilisant le réseau de l'école, nous utilisons une interface Web, situé dans la FoxBoard.
 
Pour téléguider le robot en utilisant le réseau de l'école, nous utilisons une interface Web, situé dans la FoxBoard.
 
Ensuite, nous devons modifier un peu le programme que nous avons conçu pour qu'il fonctionne : la FoxBoard doit reçevoir un message de retour dans la boite aux lettres 5 pour que la commande soit totalement effectuée et que le programme ne beugue pas.  
 
Ensuite, nous devons modifier un peu le programme que nous avons conçu pour qu'il fonctionne : la FoxBoard doit reçevoir un message de retour dans la boite aux lettres 5 pour que la commande soit totalement effectuée et que le programme ne beugue pas.  
Voici une version finale du programme inséré dans le boitier NXT
+
Voici une version finale du programme inséré dans le boitier NXT :
[[Fichier : programmefinal.png|400px|thumb|center]]
+
[[Fichier : programmefinal.png|800px|thumb|center]]
  
 
Ensuite, nous avons remarqués que les numéros que nous avions mis dans le programme ne correspondaient pas aux nombres envoyés par WiFi. Nous avons donc modifiés les choses suivantes : <br />  
 
Ensuite, nous avons remarqués que les numéros que nous avions mis dans le programme ne correspondaient pas aux nombres envoyés par WiFi. Nous avons donc modifiés les choses suivantes : <br />  
 +
0 : Le robot s'arrête <br />
 
1 : Le robot avance <br />
 
1 : Le robot avance <br />
 
2 : Le robot recule <br />
 
2 : Le robot recule <br />
Ligne 99 : Ligne 109 :
 
4 : le robot tourne à droite <br />
 
4 : le robot tourne à droite <br />
 
5 : Le bras tourne de 90 degrés à sa puissance maximale puis tourne dans le sens inverse de 90 degrés à sa puissance minimale (éviter les sursauts de puissance) <br />
 
5 : Le bras tourne de 90 degrés à sa puissance maximale puis tourne dans le sens inverse de 90 degrés à sa puissance minimale (éviter les sursauts de puissance) <br />
 
+
6 : Le robot fait un demi-tour <br />
 +
7 : Le robot cherche l'alignement avec l'axe de la balle grâce au capteur infrarouge. <br />
 
Puis nous avons ajouté un capteur à ultrasons sur notre robot afin de détecter la proximité d'un éventuel obstacle et de stopper son avancée. Nous avons fixé une distance de 15cm en dessous de laquelle il devra s'arrêter.<br />
 
Puis nous avons ajouté un capteur à ultrasons sur notre robot afin de détecter la proximité d'un éventuel obstacle et de stopper son avancée. Nous avons fixé une distance de 15cm en dessous de laquelle il devra s'arrêter.<br />
 
[[Fichier : capteurs.png|400px|thumb|center]]
 
[[Fichier : capteurs.png|400px|thumb|center]]
  
== Commande de tir ==
+
Pour programmer le bouton stop c'est à dire la commande 0, nous avons mis les moteurs en rotation illimitée. Une fois cette commande exécutée, on sort du bloc, donc le programme peut attendre un nouvel ordre. Nous pouvons donc ainsi arrêter le robot en mouvement en positionnant les moteurs en mode stop.
 +
[[Fichier: Stop.jpg|400px|thumb|center]]
 +
 
 +
Pour programmer le repérage par IR, c'est-à-dire le bouton 7, nous nous sommes servis du bloc IR ainsi que d'une boucle. Lorsque le robot détecte la balle, il avance vers elle. Et sur le même principe que pour le bouton stop, nous pouvons contrôler son avancée.
 +
[[Fichier : Ir.png|400px|thumb|center]]
 +
 
 +
== Nouvelles commandes ==
 
Ensuite, nous nous sommes confrontés à un autre problème : le bouton pour tirer n'existait pas. Il nous fallait donc le créer.
 
Ensuite, nous nous sommes confrontés à un autre problème : le bouton pour tirer n'existait pas. Il nous fallait donc le créer.
 
Nous avons donc récupérés les fichiers HTML, CSS, PHP et JAVASCRIPT sur la FoxBoard pour pouvoir les modifier. <br />  
 
Nous avons donc récupérés les fichiers HTML, CSS, PHP et JAVASCRIPT sur la FoxBoard pour pouvoir les modifier. <br />  
Ligne 109 : Ligne 126 :
 
Il faut d'abord créer le bouton pour tirer. Au vu de la structure du fichier XHTML, nous avons remarqués que les flèches pour la commande sont mis dans une table. Nous avons donc rajouté une ligne dans le tableau, avec une cellule comportant une image.<br />
 
Il faut d'abord créer le bouton pour tirer. Au vu de la structure du fichier XHTML, nous avons remarqués que les flèches pour la commande sont mis dans une table. Nous avons donc rajouté une ligne dans le tableau, avec une cellule comportant une image.<br />
 
<code> <tr><td><img src="ball.jpg" onclick="ordonne(5)"></td></tr></code><br />
 
<code> <tr><td><img src="ball.jpg" onclick="ordonne(5)"></td></tr></code><br />
[[Fichier : télécommande.png|400px|thumb|center]]
 
 
 
 
Ensuite, il faut ajouter une commande pour envoyer l'ordre '5' pour commander le bras. <br />
 
Ensuite, il faut ajouter une commande pour envoyer l'ordre '5' pour commander le bras. <br />
Ligne 119 : Ligne 135 :
 
</code>
 
</code>
 
<br />
 
<br />
 +
 +
Nous avons ensuite décidé d'ajouter une commande qui permettra au robot de faire demi-tour afin de faciliter la commande par l'utilisateur, pour cela nous devions d'abord créer comme précédemment un nouveau bouton actionner cette nouvelle commande.
 +
Nous avons ajouté une ligne dans la tableau déjà existant avec une cellule qui contient l'image symbolisant ce demi-tour. <br/>
 +
<code> <tr><td><img src="dt.jpg" onclick="ordonne(6)"></td></tr></code><br />
 +
 +
Puis nous avons ajouté une autre commande permettant d'aligner le robot dans l'axe de la balle afin d'avoir une meilleure maniabilité du robot. Comme auparavant, nous avons créé un nouveau bouton qui nous permettra d'actionner cette nouvelle commande.
 +
Nous avons donc ajouté une ligne dans la tableau déjà existant avec une cellule qui contient l'image symbolisant cet ajustement. <br/>
 +
<code> <tr><td><img src="ball_search.jpg" onclick="ordonne(7)"></td></tr></code><br />
 +
[[Fichier : commande.png|400px|thumb|center]]
  
 
= Point de vue énergétique =
 
= Point de vue énergétique =
  
 
'''Pour la FoxBoard modèle G20 :''' <br />
 
'''Pour la FoxBoard modèle G20 :''' <br />
Elle est composée de 2 ports USB consommant maximum''' 0.5 A chacun.'''  
+
Elle est composée de 2 ports USB consommant maximum''' 0.5 A chacun.''' <br />
La webcam est auto-alimentée.
+
La webcam consomme 500 mA. <br />
1 pile a une capacité de 2450 mAh. Un ensemble de 4 piles a donc une capacité de 4x2450 mAh, c'est à dire 9800 mAh.
+
1 pile a une capacité de 2450 mAh. Un ensemble de 4 piles a donc une capacité de '''2450 mAh.''' car elles sont en série. <br />
 
En appliquant la formule : <br />
 
En appliquant la formule : <br />
 
''Temps de fonctionnement = Capacité / consommation'' <br />
 
''Temps de fonctionnement = Capacité / consommation'' <br />
 
On a : <br />
 
On a : <br />
t = (9800)*10^-3 / 1.06<br />
+
t = (2450)*10^-3 / 1.56<br />
C'est à dire : '''t = 9.24 h'''
+
C'est à dire : '''t = 1.57 h'''. <br />
 +
La FoxBoard, avec tous ses appareils de communication branchés, et en fonctionnement, a un temps d'autonomie de '''1h30''' environ.<br /> <br />
 +
'''Pour le boitier NXT : ''' <br />
 +
1 moteur consomme 230 mA. Les trois moteurs consomment donc '''690 mA'''. <br />
 +
1 capteur (n'importe lequel) consomme '''30 mA.''' <br />
 +
Le boitier a une capacité, avec ses 6 piles 1.5V en série, de '''1400 mAh.''' <br />
 +
En appliquant la formule citée précédemment, on a un résultat de environ 1.97 h. <br />
 +
Le boitier NXT, avec tous les moteurs et le capteur branchés, et en plein fonctionnement, a un temps d'autonomie de '''2h00''' environ.
 +
 
 +
= Test final de l'intégralité des fonctionnalités =
 +
 
 +
Voici quelques vidéos montrant l'utilisation de chaque fonctionnalité de notre robot
 +
 
 +
== Avance ==
 +
 
 +
[[Média : Avance.mp4]]
 +
<br />
 +
[[Média : Avance2.mp4]]
 +
 
 +
== Demi tour ==
 +
 
 +
[[Média : Demi-tour.mp4]]
 +
 
 +
== Tir ==
 +
 
 +
[[Média : Tir.mp4]]
 +
 
 +
= Conclusion =
 +
 
 +
Ce BE nous a permis de découvrir quelques aspects de la formation d'IMA. Cela nous a également permis d'apprendre à gérer un projet, et d'avoir certaines responsabilités.
 +
Ca nous a conforté dans nos choix de spécialités.

Version actuelle datée du 21 mai 2014 à 10:43

Objectifs


Vidéo HD

Le but de ce bureau d'étude est la construction d'un robot joueur de balle, et plus précisément ce projet traite la construction d'un robot que l'on peut diriger grâce à un téléphone portable ou une tablette et via le réseau WiFi.

La construction du robot

Pour la construction du robot, nous sommes partis sur un châssis rectangulaire, afin de disposer de la plus grande surface au dessus de celui-ci.

Constr1.jpg

Nous avions décidés, au début de la construction, de le porter par des roues. Mais, remarquant que nous disposions que de 2 servo-moteurs, nous n'arriverions pas à faire tourner les 2 roues de derrière. Nous avons donc choisis de mettre des chenilles.

Constr2.jpg

Enfin, quand la construction fut finie, nous avons implantés un programme dans le NXT 2.0 afin de tester l'avance du robot, et la fluidité des mouvements.

Constr3.jpg

Mais un problème s'est posé, les moteurs ne faisaient pas assez tourner les roues arrière de notre robot. Même à pleine puissance. Dans la configuration de notre robot, nous avons donc optés pour mettre des roues normales et des axes tournants aux roues arrière, ce qui fait de notre robot un 2 roues motrices. Après avoir implanté notre programme de test qui le fait avancer, légèrement tourner à droite, puis a gauche, voici une petite vidéo montrant les premiers début de notre robot.

FinaleSansFB.jpg
FinaleSansFB2.jpg
ConstrSemiFinale.jpg
Robot.png

Média : 1er pas.mp4

Enfin, une fois la construction achevée, nous avons décidés de l'optimiser un peu. Nous avons donc changé le support caméra, solidifié le bras tireur, et nous avons mis le capteur ultrasons à l'arrière du robot (car l'utilisateur n'a pas de visibilité à l'arrière, donc possibilité de se prendre un mur ...). Enfin, nous avons cachés les fils dans l'espace sous le support FoxBoard/Piles.

Capt arriere.jpg

Téléguidage part I : Le Bluetooth

Dans un premier temps, pour le téléguidage du robot, nous avons optés pour un téléguidage via le réseau Bluetooth

Le réseau Bluetooth

220px-Bluetooth logo.png

Le réseau Bluetooth est une technique de communication sans fil. Elle utilise les ondes radio courte distance. Il a été inventé pour simplifier les connexions entre appareils électroniques (enlever la tonne de câbles qui nous embête ...)

Spécificités du Bluetooth - Avantages et inconvénients

Malgré sa grande ingéniosité, le Bluetooth est d'une très faible portée. Sur le marché, la plupart des appareils équipés de Bluetooth ont une portée de 10 à 20 mètres, ce qui rend son utilisation très limitée. De plus, le débit pour ce genre de transmission est très faible. Cependant, il est avantageux de l'utiliser pour des communications courte distance car il est très peu couteux en énergie. En effet, le NXT 2.0 disposant d'un Bluetooth de classe 2, il consomme que 2,5 mW ! Nous avons testé la portée des ondes, et nous sommes environ arrivés à 20 mètres. Le fait d'utiliser directement le Bluetooth pour communiquer avec le NXT ne rendra pas le robot téléguidable au sens propre du terme, au vue de la très courte portée des transmissions. Mais nous allons quand même expliquer comment nous nous y sommes pris pour réaliser un téléguidage de ce genre.

Processus de téléguidage Bluetooth

Tout d'abord, nous avons commencés par "associer" les 2 périphériques, c'est-à-dire que nous faisons en sorte de chaque appareil reconnaisse l'autre. Ensuite, dans un premier temps, pour tester la connexion, nous nous sommes servis de la télécommance du logiciel "Lego MindStorm" pour le commander a distance. Mais, le télécommander via un PC n'est pas notre but principal, notre but étant de le téléguider avec une télécommande portable ! Nous avons donc pris un système embarqué de type "FoxBoard" pour réaliser l'embarquement du système.

La FoxBoard : Description et utilisation

La FoxBoard est un mini ordinateur embarqué. Il est muni du système d'exploitation UNIX et dispose de 2 ports USB, 1 port Ethernet et 2 port série. Nous nous servons de la FoxBoard comme relais pour la transmission des commandes.

Pour utiliser la FoxBoard, nous ne nous servons pas de son serveur web, mais d'un logiciel d'émulation de terminal PuTTY. PuTTY est un logiciel d'émulation de terminal et est aussi un client. Ce logiciel sert principalement à réaliser des connexions séries avec la FoxBoard.

PuTTY : Utilisation et contrôle

Configuration de PuTTY

Pour configurer PuTTY, nous avons connectée la FoxBoard à l'ordinateur. Elle est connecté sur le port COM3, et la vitesse de transmission est de 115200 Bit/s.

Interface PuTTy.png

Utilisation de PuTTY

Après validation des paramètres de la configuration, un terminal s'ouvre. C'est le terminal de commande de la FoxBoard. Pour contrôler le NXT 2.0, nous avons besoin d'un programme de contrôle (control.c) qui permet d'envoyer les ordres par Bluetooth. Tout d'abord, il faut associer les 2 appareils. Pour cela, la commande bluetooth-agent code permet de connecter les 2 appareils. Ensuite, la commande control -s device address permet d'associer complètement les 2 appareils en envoyant l'adresse MAC de la NXT. Pour envoyer un ordre, la commande est la suivante : La syntaxe de cette commande est : control -c mailbox number integer Le mailbox number est le numéro de la boîte aux lettres qui va reçevoir le message transmis. le integer est le numéro que l'on va envoyer. Nous avons le choix entre 5 possibilités :
1 : Le robot avance
2 : Le robot tourne à gauche
3 : Le robot tourne à droite
4 : le robot recule
5 : Le bras tourne de 90 degrés à sa puissance maximale et tourne (dans le sens inverse) de 90 degrés à sa puissance minimale

Programme de commande du robot pour la brique intelligente

Pour commander les moteurs, il faut implémenter un programme pour la NXT 2.0 pour gérer les messages Bluetooth entrant.
L'algorithme est le suivant :
LOOP
SI message Bluetooth reçu ALORS
METTRE le message dans la variable NOMBRE1
COMPARER la valeur de NOMBRE1 A
1 : Avance du robot
2 : Rotation du robot vers la gauche
3 : Rotation du robot vers la droite
4 : Le robot recule
5 : Le bras tourne de 90 degrés à sa puissance maximale et tourne (dans le sens inverse) de 90 degrés à sa puissance minimale
GOTO LOOP

CapEcrComBth.jpg

Nous nous sommes confrontés à un problème. Avec des variables de type "nombres", le robot ne répondait qu'a une seule commande, quelque soit le nombre envoyé. Nous avons donc décidés de tester un autre type de variables, le type texte. Et quelque soit le nombre envoyé, le robot répondait à toutes les commandes. C'est donc le bon type de variables.

Au vu de la courte portée des ondes Bluetooth, ce n'est pas le type de téléguidage que nous souhaitons. Nous allons donc expérimenter le téléguidage par WiFi.

Téléguidage part II : Le WiFi

Le processus de téléguidage du robot a changé ... Nous allons communiquer des ordres d'une interface WEB (Téléphone, tablette, ou autres périphériques disposant d'un navigateur WEB et du WiFi) vers la FoxBoard, et la foxBoard enverra par Bluetooth les ordres au boitier qui les traitera en conséquence.

Protocole.png

Modification du programme

Pour téléguider le robot en utilisant le réseau de l'école, nous utilisons une interface Web, situé dans la FoxBoard. Ensuite, nous devons modifier un peu le programme que nous avons conçu pour qu'il fonctionne : la FoxBoard doit reçevoir un message de retour dans la boite aux lettres 5 pour que la commande soit totalement effectuée et que le programme ne beugue pas. Voici une version finale du programme inséré dans le boitier NXT :

Programmefinal.png

Ensuite, nous avons remarqués que les numéros que nous avions mis dans le programme ne correspondaient pas aux nombres envoyés par WiFi. Nous avons donc modifiés les choses suivantes :
0 : Le robot s'arrête
1 : Le robot avance
2 : Le robot recule
3 : Le robot tourne à gauche
4 : le robot tourne à droite
5 : Le bras tourne de 90 degrés à sa puissance maximale puis tourne dans le sens inverse de 90 degrés à sa puissance minimale (éviter les sursauts de puissance)
6 : Le robot fait un demi-tour
7 : Le robot cherche l'alignement avec l'axe de la balle grâce au capteur infrarouge.
Puis nous avons ajouté un capteur à ultrasons sur notre robot afin de détecter la proximité d'un éventuel obstacle et de stopper son avancée. Nous avons fixé une distance de 15cm en dessous de laquelle il devra s'arrêter.

Capteurs.png

Pour programmer le bouton stop c'est à dire la commande 0, nous avons mis les moteurs en rotation illimitée. Une fois cette commande exécutée, on sort du bloc, donc le programme peut attendre un nouvel ordre. Nous pouvons donc ainsi arrêter le robot en mouvement en positionnant les moteurs en mode stop.

Stop.jpg

Pour programmer le repérage par IR, c'est-à-dire le bouton 7, nous nous sommes servis du bloc IR ainsi que d'une boucle. Lorsque le robot détecte la balle, il avance vers elle. Et sur le même principe que pour le bouton stop, nous pouvons contrôler son avancée.

Ir.png

Nouvelles commandes

Ensuite, nous nous sommes confrontés à un autre problème : le bouton pour tirer n'existait pas. Il nous fallait donc le créer. Nous avons donc récupérés les fichiers HTML, CSS, PHP et JAVASCRIPT sur la FoxBoard pour pouvoir les modifier.

Il faut d'abord créer le bouton pour tirer. Au vu de la structure du fichier XHTML, nous avons remarqués que les flèches pour la commande sont mis dans une table. Nous avons donc rajouté une ligne dans le tableau, avec une cellule comportant une image.
<tr><td><img src="ball.jpg" onclick="ordonne(5)"></td></tr>

Ensuite, il faut ajouter une commande pour envoyer l'ordre '5' pour commander le bras.
Dans le fichier XHTML, il y a un script JAVASCRIPT comportant une fonction "ordonne" qui fait référence à un fichier PHP qui s'occupe d'envoyer un message Bluetooth.
function ordonne(cmd){

     new Ajax.Request("ordonne.php", {method:'get', parameters:{cmd: cmd}});
   }


Nous avons ensuite décidé d'ajouter une commande qui permettra au robot de faire demi-tour afin de faciliter la commande par l'utilisateur, pour cela nous devions d'abord créer comme précédemment un nouveau bouton actionner cette nouvelle commande. Nous avons ajouté une ligne dans la tableau déjà existant avec une cellule qui contient l'image symbolisant ce demi-tour.
<tr><td><img src="dt.jpg" onclick="ordonne(6)"></td></tr>

Puis nous avons ajouté une autre commande permettant d'aligner le robot dans l'axe de la balle afin d'avoir une meilleure maniabilité du robot. Comme auparavant, nous avons créé un nouveau bouton qui nous permettra d'actionner cette nouvelle commande. Nous avons donc ajouté une ligne dans la tableau déjà existant avec une cellule qui contient l'image symbolisant cet ajustement.
<tr><td><img src="ball_search.jpg" onclick="ordonne(7)"></td></tr>

Commande.png

Point de vue énergétique

Pour la FoxBoard modèle G20 :
Elle est composée de 2 ports USB consommant maximum 0.5 A chacun.
La webcam consomme 500 mA.
1 pile a une capacité de 2450 mAh. Un ensemble de 4 piles a donc une capacité de 2450 mAh. car elles sont en série.
En appliquant la formule :
Temps de fonctionnement = Capacité / consommation
On a :
t = (2450)*10^-3 / 1.56
C'est à dire : t = 1.57 h.
La FoxBoard, avec tous ses appareils de communication branchés, et en fonctionnement, a un temps d'autonomie de 1h30 environ.

Pour le boitier NXT :
1 moteur consomme 230 mA. Les trois moteurs consomment donc 690 mA.
1 capteur (n'importe lequel) consomme 30 mA.
Le boitier a une capacité, avec ses 6 piles 1.5V en série, de 1400 mAh.
En appliquant la formule citée précédemment, on a un résultat de environ 1.97 h.
Le boitier NXT, avec tous les moteurs et le capteur branchés, et en plein fonctionnement, a un temps d'autonomie de 2h00 environ.

Test final de l'intégralité des fonctionnalités

Voici quelques vidéos montrant l'utilisation de chaque fonctionnalité de notre robot

Avance

Média : Avance.mp4
Média : Avance2.mp4

Demi tour

Média : Demi-tour.mp4

Tir

Média : Tir.mp4

Conclusion

Ce BE nous a permis de découvrir quelques aspects de la formation d'IMA. Cela nous a également permis d'apprendre à gérer un projet, et d'avoir certaines responsabilités. Ca nous a conforté dans nos choix de spécialités.