Robots siffleurs : Différence entre versions

De Learning Lab Environnements Connectés
Sauter à la navigation Sauter à la recherche
(Atténuation du bruit)
(Atténuation du bruit)
Ligne 107 : Ligne 107 :
 
Le bruit se décompose en deux types : le bruit mécanique (vibrations répercutés jusqu'au micro) et le bruit acoustique (le bruit que fait le moteur).
 
Le bruit se décompose en deux types : le bruit mécanique (vibrations répercutés jusqu'au micro) et le bruit acoustique (le bruit que fait le moteur).
  
[[Fichier:24.jpg|centre]]
+
<gallery>
[[Fichier:25.jpg|centre]]
+
24.jpg|Description 1
[[Fichier:26.jpg|centre]]
+
25.jpg|Description 2
 +
26.jpg|Description 2
 +
</gallery>
 +
 
 
24.jpg
 
24.jpg
 
25.jpg
 
25.jpg

Version du 26 mai 2017 à 15:03

Le projet du module Robots connectés 2016/2017 propose d'utiliser des robots holonomes (à roues suédoises) communiquant entre eux par des signaux acoustiques.
3 robots sont utilisés, un maître télécommandé par bluetooth via un dispositif Androïd, équipé d'un haut-parleur, et 2 esclaves équipés de microphones, qui suivent le robot maître grâce aux commandes sonores émises par ce dernier.


Robot Siffleur

Le scénario qui nous a été proposé consiste à réaliser trois robots holonomes. Le premier dit "Maître" communique et ordonne leur faits et gestes aux deux autres robots appelés "esclaves". La description de chacun d'eux est apporté ultérieurement.

Cahier des Charges

Description projet :

  • 3 robots Holonomes :
  1. Moteurs
  2. Ponts en H
  3. Carte microcontrôleurs moteurs (bas niveau) (Teensy3.2)
  4. Carte microcontrôleurs logiciel(haut niveau) (Teensy3.2)
  • Communication inter robot : signal acoustique (note de musique)
  1. Haut parleurs pour l'émission
  2. Microphone pour la réception
  • Robot maitre télécommander par une application Androïd sur téléphone ou tablette via Bluetooth
  • 2 robots esclaves : suivent les ordres du robot maitre (suivre, autre action)
  • Utilisation de l'AudioLibrary sur l'Audioboard Teensy


Schéma synoptique

Nous avons commencé par diviser le projet en trois premières parties : La première consistera en l'émission d'un signal sonore maitrisé, une autre en la réception et la compréhension de ce signal, et enfin une troisième qui consistera à gérer la liaison Bluetooth.


2.png


Partie 1 : Émission audio

Participants : Alix Barrière, Florian Courbon, Quentin Leroy, Florian Taillandier.

Notre Travail

Tout d'abord voici les documents permettant de reprendre ce projet là ou nous en étions :

Lien vers code du robot maître (HL) : https://drive.google.com/open?id=0B3RzegXT8aoXZUw0eEVwVGxYcU0

Lien vers code de notre robot esclave (HL) : https://drive.google.com/open?id=0B3RzegXT8aoXZGZBRW9zckNNYk0

Lien vers code de notre robot esclave (BL) : https://drive.google.com/open?id=0B3RzegXT8aoXdGt6c1kwcktOY0E

Lien vers notre présentation PowerPoint : https://drive.google.com/open?id=0B3RzegXT8aoXM1dPSnh4S0gyR3c

Cahier des charges de l'émission

Le but de la partie "émission" était de pouvoir envoyer une note de musique à l'instant ou le robot maître allait dans une direction (une note par direction). Pour cela nous avions 1 robot holonome 4 roues comme robot maître, 2 cartes Teensy : une pour gérer les moteurs et une pour gérer la gestion des notes de musique. Et pour finir un Haut-Parleur.

Nous devions réaliser une communication entre le robot maître et esclave par l'intermédiaire de ces notes. La commande du robot maître était faite par une application mobile Androïd réalisée par un autre groupe.


Génération d'un signal sonore

Afin de générer un signal audio, une note de musique nous avons commencé par utiliser un amplificateur audio : !!!! PHOTO AMPLI AUDIO !!!! Avec cet amplificateur il nous suffisait de créer un signal de forme sinusoïdale et de fréquence correspondant à une note de musique. On peut d'aider de ce tableau pour savoir quel est la fréquence des notes :

31.PNG

Il suffisait ensuite simplement d'ajouter un fil sur la broche correspondante à ce signal et relier l'amplificateur audio aux haut-parleurs.


Dans un second temps nous avons choisit d'arrêter l'utilisation de cette amplificateur au profit d'une audioboard, c'est une carte qui possède une liste de librairies et d'autres choses utile à la génération d'une note ou même à sa détection.

Voici la carte en question :

5.jpg
6.jpg

Avec cette carte nous avons pu mettre au point un code générant une note dont on pouvait modifier sa note, son octave, le volume ou elle était jouée, le temps qu'elle allait durer ainsi que le temps avant de jouer une autre note. Voici le code permettant de jouer une note :

7.3.PNG

Espionnage sur la liaison TX/RX

Afin de pouvoir envoyer une note de musique à l'instant ou nous faisions avancer le robot il fallait que la carte Bluetooth contenue sur le robot maître dialogue avec les deux cartes : celle qui gère les moteurs et celle qui gère la génération d'une note. Afin de faire cela nous avions plusieurs possibilités : La première était d'envoyer l'information de commande (ar, ag, av etc...) sur une des deux cartes Teensy, puis, via une liaison série, renvoyer cette information sur la deuxième carte. Le problème fut que nous n'avions pas assez de broches TX/RX sur nos cartes Teensy, due à l'audioboard et aux ponts en H. Pour résoudre ce problème nous avions deux choix : ajouter une troisième carte Teensy qui gère la distribution des données ou réaliser un espionnage de données.

Nous avons donc choisit l'espionnage de données pour des raisons de simplicités et d'économie d'une carte Teensy. Cet espionnage est très simple : la carte Bluetooth et la carte BL du robot communique via leurs ports TX/RX, et nous venons simplement faire un pont entre les ports RX des deux cartes Teensy (BL et HL) de notre robot maître. Comme ceci :

32.PNG
12.jpg


Choix des commandes associés

Une fois que nous étions capables de générer une note et de savoir a quel moment la jouer il fallait associer un ordre à chaque note. Nous avons choisit de faire au plus simple, c'est a dire autant de boucles "if" que de commande, voici notre code :

10.PNG

Pour le choix des notes nous avions tout d'abord opté pour des notes graves afin qu'elles soit agréables à l'oreille et reproductibles par un instrument, puis dans un second temps nous avons choisit d'augmenter les notes d'une octave, donc de doubler la fréquence de celles ci, afin de dépasser la fréquence des moteurs située entre 0 et 1200 Hz. Avec cette modification nous gardions des notes a peu près agréables et reproductibles par un instrument.

Voici un tableau des notes utilisés :

33.PNG

Création d'un Robot esclave pour test

Pour pouvoir caractériser correctement l'émission, on a décidé de réaliser en parallele au groupe Réception une autre solution de réception. C'est avec cette étude que l'on à déterminer les fréquences présentée plus haut pour avoir une influence sonore des moteurs moindre tout en évitant des aiguës trop pénible à l'oreille. De plus, ayant deux robots esclaves à notre disposition, cela n'a pas pénaliser l'autre groupe.

Réception d'une note

Recherchant des notes à des fréquences bien précise, un étude de maximas par FFT nous à permis d'avoir rapidement de bon résultat dans des situations sonore très favorable. En ajoutant par la suite une étude temporelle de ces maximas, on peut rejeter les bruits de forte intensité trop court ou trop long. En fixant le temps d'émission entre 100 et 600ms, on élimine les bruits de choc et continu. Malgré cette amélioration, le bruit des moteurs, étant pas parfaitement stable en fréquence, perturbe le détection. De plus notre robot esclave fait beaucoup plus de bruit que le second ce qui nous a amené à penser à des solutions physiques présentées plus bas.

Une dernière solution logiciel a été mise en oeuvre pour réduire les faux positifs. Il s'agit d'écouter le bruit ambiant, le mémoriser, puis le soustraire aux prochaines mesures. Pour que cela soit efficace, il ne faut pas envoyer d'ordre pendant cette première écoute et que les moteurs aient fini d'accélérer ou décélérer. C'est pendant les 500ms qui suivent un ordre, on ne prendra plus en comptes les maximas. Seul la commande "stop" est disponible pendant cette période. C'est à la fin de cette période que l'on réalise l'écoute du bruit ambiant.

Atténuation du bruit

Un problème majeur s’est posé à nous : le bruit des moteur était un bruit évolutif, situé entre 0Hz et 1200Hz, soit dans notre bande de travail. Nous avons alors choisit, en plus des traitements fait en software, de réduire le bruit physiquement. Le bruit se décompose en deux types : le bruit mécanique (vibrations répercutés jusqu'au micro) et le bruit acoustique (le bruit que fait le moteur).

24.jpg 25.jpg 26.jpg

Partie 2 : Réception audio

Participants : Aiman Ben Sallam, Hamza Bourachdi, Soukaina Mkhairi, Anass Rahhal.

Principe de fonctionnement

  1. Acquisition du son et analyse fréquentielle
  2. Différenciation des fréquences
  3. Association d'une action à chaque fréquence
  4. Transmission des données entre les cartes bas-niveau et haut-niveau
  5. Le programme de la carte bas-niveau est modifié en fonction des besoins de mouvement du robot


Fichier Code
Lien vers le code de détection : https://drive.google.com/open?id=0B3Ivyh2VygOySGV4Q095dkJid1E

Scénario Commande des robots

  • Robot Maître : Pour résoudre le problème de l’interférence du bruit des moteurs avec la commande sonore, le robot émet la commande avant de se mettre à bouger, et envoie la commande stop après l'arrêt des moteurs.
  • Robot esclave : Le mouvement vers la droite et la gauche des robots à trois n'étant pas assez précis, nous avons choisi de les remplacer par des mouvements type rotation 90° + avance.

Nous avons aussi implémenté une chorégraphie avec conservation de l'orientation initiale du robot.


Communication série entre les deux Teensy

  1. Relier les Tx et Rx
  2. Adapter le Baudrate
  3. Envoyer les commandes suivant la fréquence détectée de la carte haut-niveau vers la carte bas-niveau

Analyse Fréquentielle
Cette méthode se base sur le code FFT de la librairie Audio, elle permet une grande rapidité de calcul et une grande sensibilité, en effet même les fréquences à très faible puissance génèrent une perturbation. Par contre sa faible résolution ( colonnes multiples de 43 Hz ) complique la détection des notes de a même octave. Cette solution a été abandonnée en faveur de l'analyse d'amplitude.

Analyse de l'amplitude
Cette méthode est inspirée par la densité spectrale d'un signal, nous calculons l'énergie de chaque fréquence et la comparons avec un seuil déterminé empiriquement. L'énergie du signal à une certaine fréquence est la valeur de l'amplitude de cette fréquence au carré. Nous calculons la somme de la valeur actuelle et la valeur précédente car le calcul se fait sur 200ms. Donc on garde les valeurs précédentes pour 200ms et on les incrémente à chaque calcul. Elles sont remises à 0 dans la dernière partie du void loop().

Solution Finale

Optimisation : Suivi avec la méthode des deux micros

Partie 3 : Liaison Bluetooth-Teensy

Participants : Louis Berger, Romain Chiesa, Julien Desvignes.

code android

On commence par ajouter l'objet "bluetooth" pour pouvoir interagir avec lui par la suite. Bluetooth adapter nous permet de voir si le bluetooth est activé.

Liaison bluetooth2.jpg

Ensuite on initialise la connexion en affichant un message de connexion. Une fois que la carte à trouvé un appareil auquel se connecter, il l'indique en sortant un message "connected". En cas de problème ou si on ne trouve pas d'appareil, on affichera alors "unable to connect" en spécifiant le problème lorsque le bluetooth n'est pas activé.


Liaison bluetooth.jpg

Bibliographie

Des ultrasons pour pister les téléphones