localisation_audio/daily_work.md

7 KiB

Ajout du 20 Mai:

Les premières recherches utiles sur le sujet: https://tel.archives-ouvertes.fr/tel-00148058/document http://www.isir.upmc.fr/UserFiles/File/argentieri/NSR33/Cours-court.pdf

Ci-dessous, les travaux d'un homme sur la localisation sonore utilisant une Raspberry et deux microphones. L'orientation d'une "plaque" en fonction de l'origine du son se fait par un moteur. https://microcontroleurs.blogspot.com/2012/08/localisation-dune-source-sonore-avec-un.html https://microcontroleurs.blogspot.com/2012/08/localisation-optique-et-sonore.html?q=Localisation+d%27une+source+sonore+avec+un+ATmega328

Ici, un forum sur lequel une personne a essayé de mettre en application la solution précédente. https://forum.arduino.cc/index.php?topic=386996.0

N.B.: Utilisation de rosserial_arduino: permet d'utiliser ROS directement avec l'IDE Arduino

Une nouvelle solution proposée sur PotBot: https://pobot.org/La-localisation-des-sources-de-son.html?decoupe_recherche=MICRO&artpage=0-0#outil_sommaire_0 (Commentaire du 12/09/10 paraît pertinent) Test simulé sur pc, programme écrit en java (et un peu lourd) mais adaptable en c/c++ (permet de porter le module sur Raspberry Pi). Cela a été fait ici, notamment avec l'utilisation d'ALSA : https://pobot.org/La-localisation-des-sources-de-son,1099.html Cette solution nécessite deux microphones. Peut-être en essayer plus (4 par exemple) ?

Ajout du 21 Mai

Une première version de l'état de l'art concernant le sujet a été rédigé. https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/Etat_Art_v1.pdf

De plus, la solution envisagée commence à se préciser: Adapté la solution présentée sur PotBot (https://pobot.org/La-localisation-des-sources-de-son.html?decoupe_recherche=MICRO&artpage=0-0#outil_sommaire_0) afin de l'utiliser en c++ sur un Raspberry Pi. Cela avec l'IDE Arduino (http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup) permettant de communiqué avec ROS. Dans un premier temps essayer avec deux microphones, puis étudier l'impact sur la précision du système lorsque l'on rajoute des microphones.

Ajout du 22 Mai

Une première version des programmes permettant de communiquer avec la carte son, l'échantillonnage et la localisation ont été écrits. Ils sont disponibles respectivement aux adresses:

Si les deux premiers semblent fonctionner, le dernier n'est pas encore fonctionnel.

N.B: il est nécessaire d'utiliser ALSA via le header "asoundlib.h" pour le bon foctionnement des programmes.

Ajout du 25 Mai

L'objectif du jour était de faire fonctionner les programmes. Pour traiter les sons qui arrivent à la carte son, il existe deux possibilités:

  • hw:x;y
  • plughw:x;y L'utilisation de plughw:x;y (ou hw:x;y) sur mon pc doit se faire avec les paramètres suivants : x=1 (carte 1), y=0 (périphérique 0). Afin de connaitre ces paramètres, il est possible d'utiliser la commande "aplay -l" dans le terminal. Si hw:x;y est plus léger et permet d'accéder directement au hardware, plughw:x;y qui est plus "gourmand" semble pouvoir fonctionner sans problème sur une Raspberry Pi.

Une fois que les programmes ont bien fonctionnés, je les ai utilisés sur un autre pc (également sous linux) qui comportait un microphone interne stéréo (2 micros distants d'environ 5 cm). La détection fonctionne un peu mais il est cependant nécessaire de l'améliorer.

Programme en C++ permettant la localisation :https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/sound-source-loc_v.1.0.3.cpp

Programme en Java permettant d'afficher la détection : https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/SoundSourceDraw.java

Ubuntu Xenial et Raspbian (linux pour les raspberry pi) sont tous les deux basés sur la distribution Debian. ROS Kinetic pourra donc être aisément porter d'Ubuntu vers Raspbian. Lien vers des explications afin d'utiliser des microphones sur une carte rasperry pi: https://www.pofilo.fr/post/20181216-mic-raspberry-pi/

26 Mai

En première partie de journée j'ai commencé mes recherches sur la façon d'utiliser cmake et j'ai réalisé des premières tentatives. Dans l'après-midi l'alimentation de l'odinateur a coupé, j'ai donc essayé de trouver une solution pour la réparer/changer.

Ajout du 27 Mai

J'apprends a utiliser cmake. http://rachid.koucha.free.fr/tech_corner/cmake_manual_fr.html http://sirien.metz.supelec.fr/depot/SIR/TutorielCMake/index.html#principe https://alexandre-laurent.developpez.com/tutoriels/cmake/

Il y a un problème de "référence indéfinie" lors de la compilation avec cmake car le header "asoundlib.h" n'est pas trouvé.

Afin d'améliorer la précision du programme existant, j'essaie de trouver d'autres façons d'obtenir la direction notamment via l'intercorrélation: https://hal.archives-ouvertes.fr/hal-01146396/document https://hal.univ-lorraine.fr/tel-01749833/document

N.B: Des problèmes avec l'alimentation de mon pc m'ont ralentis.

Ajout du 28 Mai

Le fichier CMakeLists.txt permettant de compiler le programme de compilation en c++ a été terminé: https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/CMakeLists.txt Dans le chemin du CMakeLists, où se situe le programme localisation.cpp il faut donc utiliser cmake (version 3.10) dans le terminal :

  1. cmake CmakeLists.txt
  2. make L'exécutable est alors créé avec toutes les dépndances nécessaires.

J'ai essayé d'optimiser le programme de localisation, mais pour le moment cela est infructueux. Pour le moment le progrmme ne peut localiser la source sonore que selon 180°. Pour avoir une "vision" de 360° il semble nécessaire d'utiliser plus de 2 microphones (cela se dirige vers une utilisation de 4 microphones).

Ajout du 29 Mai

Le dossier contenant le fichier cmake permettant la compilation du programme de localisation a été rajouté à cette adresse : ccf2806151 . Ce dernier a été réécrit plus proprement. Le fichier java permettant de visualiser la direction du son a été ajouté au dossier.

Plusieurs idées ont été pensées pour localiser les sons à 360° autour du sujet. Elles sont au nombre de deux et utilisent toutes quatre microphones: https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/Utilisation%20de%204%20microphones.docx

Une machine virtuelle avec linux a été installée sur le pc fonctionnant sous windows. Ce dernier comportant plusieurs entrées microphones il pourrait être utile au moment de tester une solution avec plus de deux microphones. Sinon, le pc portable comportant un microphone interne stéréo a aussi une entrée pour un micro, peut-être que je pourrais l'utiliser. Il existe aussi des microphones USB, à voir si je peux m'en procurer.