localisation_audio/daily_work.md

119 lines
9 KiB
Markdown
Raw Normal View History

2020-05-21 15:10:26 +02:00
**Ajout du 20 Mai:**
2020-05-20 18:10:38 +02:00
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
2020-05-21 18:25:33 +02:00
Cette solution nécessite deux microphones. Peut-être en essayer plus (4 par exemple) ?
2020-05-28 12:24:06 +02:00
2020-05-21 18:25:33 +02:00
**Ajout du 21 Mai**
2020-05-21 18:26:37 +02:00
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
2020-05-21 18:25:33 +02:00
2020-05-22 18:09:22 +02:00
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.
2020-05-28 12:24:06 +02:00
2020-05-22 18:09:22 +02:00
**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:
* https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/carte_son_v1.cpp
* https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/echantillonnage_v1.cpp
* https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/localisation_v1.cpp
Si les deux premiers semblent fonctionner, le dernier n'est pas encore fonctionnel.
2020-05-25 21:43:09 +02:00
N.B: il est nécessaire d'utiliser ALSA via le header "asoundlib.h" pour le bon foctionnement des programmes.
2020-05-28 12:24:06 +02:00
2020-05-27 17:10:44 +02:00
**Ajout du 25 Mai**
2020-05-25 21:43:09 +02:00
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.
2020-05-25 21:51:56 +02:00
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
2020-05-25 21:50:48 +02:00
2020-05-25 21:51:56 +02:00
Programme en Java permettant d'afficher la détection : https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/SoundSourceDraw.java
2020-05-25 21:50:48 +02:00
2020-05-25 21:43:09 +02:00
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.
2020-05-27 17:10:44 +02:00
Lien vers des explications afin d'utiliser des microphones sur une carte rasperry pi: https://www.pofilo.fr/post/20181216-mic-raspberry-pi/
2020-05-28 12:24:06 +02:00
**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.
2020-05-28 22:09:36 +02:00
2020-05-27 17:10:44 +02:00
**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
2020-05-28 22:09:36 +02:00
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.
2020-05-29 16:10:24 +02:00
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 : https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/commit/ccf2806151042984c21566d1376ce07901f0b20f . Ce dernier a été réécrit plus proprement. Le fichier java permettant de visualiser la direction du son a été ajouté au dossier.
2020-05-29 16:16:06 +02:00
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
2020-05-29 16:19:37 +02:00
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.
2020-06-02 09:59:43 +02:00
Il existe aussi des microphones USB, à voir si je peux m'en procurer.
**Ajout du 02 Juin**
2020-06-02 10:47:46 +02:00
Une nouvelle solution permettant de n'utiliser que trois microphones a été pensée pour une localisaion à 360° (partie III du document suivant): https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/Localisation_360_degres.pdf
2020-06-02 15:46:40 +02:00
La décision a été prise d'utiliser ctte troisième solution, il a donc fallu adapter le code précédent (avec deux microphones) afin de prendre en compte et d'utiliser le troisième microphone. Plusieurs rajouts ont été écrits:
https://gitcdr.univ-ubs.fr/ericsenn/localisation_audio/src/branch/master/Localisation_360
2020-06-03 14:52:30 +02:00
Un petit souciest survenu : lorsque le micro externe est branché sur le pc (par une prise jack), cela désactive automatiquement les micros internes. Cela empêche donc pour le moment d'utiliser plus de deux microphones. Il faut donc trouver un moyen de controler trois microphones sur un même pc (et sans table de mixage !). La carte son ne pouvant pas contrôler deux entrées directes en même temps, l'utilisation d'un microphone passant par un port USB (et donc n'utilisant pas la carte son) en complément des microphones internes pourrait fonctionner. Peut-être trouver un moyen d'utiliser mon smartphone comme microphone USB ?
**Ajout du 03 Juin**
Afin d'utiliser mon smartphone comme un microphone USB, j'ai essayé d'utiliser *Wo Mic*. Ce logiciel doit permettre de transmettre les sons captés par le téléphone via le port usb : https://wolicheng.com/womic/
2020-06-03 14:59:50 +02:00
Cela n'étant pas concluant, j'ai trouvé un moyen de connecter mon smartphone à mon pc en bluetooth, puis d'envoyer le son capté par le micro du téléphone au pc. Le problème est que le temps de latence est trop élevé et faussera donc les calculs (ces derniers étant basés sur le temps de parcours du son de la source jusqu'au microphone). Je pourrais alors utiliser trois téléphones connectés en bluetooth, mais il faudra modifier le code pour changer la voie d'acquisition du son (la bibliothèque hci_lib semble permettre cela).