Forum: Digitale Signalverarbeitung / DSP / Machine Learning Akustische Lokalisation mittels DSP und Mikrofon


von Owan (Gast)


Lesenswert?

Hallo zusammen,

ich bin für ein Uniprojekt auf der Suche nach einem geeigneten 
Microcontroller mit DSP und passenden Mikrofonen.

Hintergrund:
Auf einer 1m x 1m großen Fläche wird ein Objekt plaziert, welches 
einmalig ein akustisches Signal abgibt. Dieses soll über Mikrofone 
aufgenommen werden und aus den unterschiedlichen Ankunftszeiten des 
Schalls soll die Position bestimmt werden. Bei mir in der Uni wird 
aktuell nur mit dem Ardunio-Board gearbeitet, welches für diesen Fall 
jedoch zu langsam arbeitet. Daher hat man mir das C2000 Piccolo 
LaunchPad empfohlen.

Meine Frage:
Hat jemand schon Erfahrungen mit dem C2000 LaunchPad und kann mir sagen, 
ob es für den o.g. Verwendungszweck geeignet ist. Die Bestimmung müsste 
auf wenige Millimeter genau möglich sein.

Zudem suche ich noch passende Mikrofone (4 Stk.). Vorteil der Fläche 
ist, dass sie von einem Rahmen umgeben ist, in den die Mikrofone 
integriert werden können. Auf diesem Gebiet habe ich leider gar keine 
Erfahrungen, da ich, wie gesagt, bisher nur mit dem Arduino und schon 
gar nicht mit Mikrofonen gearbeitet habe.

Ich bin nicht auf der Suche nach einer kompletten Lösung meines Problems 
(auch wenn ich dazu nicht nein sagen würde :P ), aber ein Denkanstoß 
bzw. eine Hilfestellung die mich in die richtige Richtung bringt ist 
explizit erlaubt und durchaus auch gewünscht.

Ich hoffe ihr könnt mir weiterhelfen, da ich aktuell mit googlen nicht 
wirklich weiterkomme, da mein Fachwissen leider doch recht begrenzt ist.

Solltet ihr noch weitere Infos brauchen, gebe ich sie euch gerne :)

Vielen Dank im Voraus.

von mihc (Gast)


Lesenswert?

Owan schrieb:
>
> Hintergrund:
> Auf einer 1m x 1m großen Fläche wird ein Objekt plaziert, welches
> einmalig ein akustisches Signal abgibt. Dieses soll über Mikrofone
> aufgenommen werden und aus den unterschiedlichen Ankunftszeiten des
> Schalls soll die Position bestimmt werden. Bei mir in der Uni wird
> aktuell nur mit dem Ardunio-Board gearbeitet, welches für diesen Fall
> jedoch zu langsam arbeitet. Daher hat man mir das C2000 Piccolo
> LaunchPad empfohlen.

Beim Stichwort "Arduino" und "zu langsam" gibt es eventuell auch einfach 
noch "Optimierungspotential". Wie oft soll den die Position bestimmt 
werden? Wie werden die (akkustischen) Signale aufbereitet (Ich hoffe mal 
nicht über den ADC des Arduino, oder doch ...?). Im Prinzip brauchst Du 
ja nur die Phasenverschiebung zwischen einem Signal.

Nimmt man mal 343 m/s Schallgeschwindigkeit, sind 1 mm Auflösung ~ 3 µs. 
Wenn alle Mikrofone (bzw. digitale Signale daraus) auf einem Port liegen 
(je Mikro ein Pin), so müsste man den Port mit ca. 350 kHz sampeln und 
bei Änderung des Port-Wertes den mit Zeitstempel speichern. Nach ca. 4.1 
ms müssen alle Daten vorliegen und können ausgewertet werden.
Würde man alle Signale noch "ver-odern" und legt die auf einen INT 
Eingang müsste sich das ganze als Interrupt-Routine auslegen lassen. 
Glaube schon, dass das mit einem AVR geht. Schau Dir als Anregung mal 
ein paar AVR Frequenz-Zähler an.

von J. S. (engineer) Benutzerseite


Lesenswert?

Mit der o.g. Rechnung gehe ich jetzt nicht ganz konform. Das gilt ja 
doch nur dann, wenn man einzelne Impulse verarbeiten will und dieses 
granular, also diskret mit der Taktfrequenz des Wandlers tun will. Das 
muss man aber nicht notwendigerweise tun, sondern kann das Signal 
"analog" auffassen, permanent messen und die Phase fein bestimmen. Das 
geht sehr viel genauer, als die Taktfrequenz scheinbar vorgibt. Im 
Prinzip ist das eine umgekehrte DDS. Man braucht nur eine genügend lange 
Impulsfolge, bzw einen Sinus. Der wird konventionell prozessiert und die 
Phasen vergleichen.

Die Lokalisation in der Ebene erfordert hier ja auch eine Art von 
3D-Messung, bei der sehr viel geringere Winkelabweichungen vermessen 
werden müssen, wegen der Elongation auf der Querachse und dem sich 
bildenden Dreieick. Üblicherweise nimmt man dazu mehr Mikrofone her, als 
mathematisch nötig und berechnet Durchschnittswerte bez plausibilisiert 
die Positionen. Zunächst bekommt man ja bei jedem Kreisschnitt 2 
mögliche Schnittpunkte und damit Positionen der Schallquelle.

Ich habe damit seinerzeit mal etwas herumgespielt:
http://www.96khz.org/oldpages/soundsourcelocalisation.htm

Man muss/sollte die Mikrophone aber nicht als DECCA stellen, sondern gfs 
einfach in abgeflachtes Dreieick. Auch eine ebene Linie liesse sich 
prozessieren.

Was die DSP-Power angeht, ging das damals mit einem TMS320 und später 
einem Motorola 56301. Die Berechnung erfolgt natürlich nicht in 
Echtzeit, sondern impulsweise offline. Mit einem ausreichend schnellen 
DSP geht das aber sicher auch in Echtzeit. Hängt von der Auflöung und 
der Samplerate ab. Am Ende hängt die Auflösung irgendwann von der 
Frequenz und damit auch der Mikrofoncharakteristik ab. Optimal wäre 
Ultraschall, was aber dann Spezialmikros braucht. Auch wenn man Kugeln 
verwendet, haben normale Audiomikrofone oberhalb 1kHz eine 
Richtcharakteristik und unterhalb einer gewissen Wellenlänge beginnt die 
Membranbreite eine grosse Rolle zu spielen.

Ich habe damals mit Einzelimpulsen probiert und Haun-Mikros für 
Konzertaufnahmen benutzt. (410er Kugeln). Empfehlen würde ich für sowas 
entsprechende Messmikros, wie das hier: "MBNM 550 EL" oder das Behringer 
ECM Mikro.

von Owan (Gast)


Lesenswert?

Vielen Dank für die Rückmeldung.

> Beim Stichwort "Arduino" und "zu langsam" gibt es eventuell auch einfach
> noch "Optimierungspotential". Wie oft soll den die Position bestimmt
> werden? Wie werden die (akkustischen) Signale aufbereitet (Ich hoffe mal
> nicht über den ADC des Arduino, oder doch ...?). Im Prinzip brauchst Du
> ja nur die Phasenverschiebung zwischen einem Signal.

Soweit ich informiert bin arbeitet der Arduino im Bereich >1ms. Daher 
macht es wenig Sinn damit überhaupt was zu probieren und ich hab den 
daher gar nicht erst angerührt.
Die Positionsbestimmung wird einmalig durchgeführt, dann die Position 
des Signalgebers geändert und erneut gemessen. Der Abstand hierzwischen 
ist aber >1s und sollte daher egal was ich verwende nicht ins Gewicht 
fallen.

> Ich habe damit seinerzeit mal etwas herumgespielt:
> http://www.96khz.org/oldpages/soundsourcelocalisation.htm
>
> Man muss/sollte die Mikrophone aber nicht als DECCA stellen, sondern gfs
> einfach in abgeflachtes Dreieick. Auch eine ebene Linie liesse sich
> prozessieren.

So in etwa werde ich das auch aufbauen. Jedoch noch mit einem vierten 
Mikrofon um sicher zu gehen.

Die von dir empfohlenen Mikrofone sprengen leider etwas den Rahmen. Aber 
die sind ja auch eher für Konzertaufnahmen etc. gedacht. Bei mir ist das 
ganze ja deutlich kleiner gedacht. Hatte da eher an etwas im Bereich von 
wenigen Euros pro Mikrofon gedacht.

Bzgl. des Mikrocontrollers hat man mir gestern dann das C2000 LaunchPad 
in die Hand gedrückt, da wir das noch an der Uni hatten. Werde mich da 
jetzt erstmal etwas in die Programmierung einarbeiten und mich dann 
ggfs. nochmal bei Conrad o.ä. bzgl. der Mikrofone beraten lassen.

Gruß
Owan

von J. S. (engineer) Benutzerseite


Lesenswert?

Wie hast Du Dir die Anordnung gedacht? Du willst offenbar X und Y 
bestimmen? In der von mir erwähnten Darstellung war es ja nur eine 
Koordindate, die variiert wurde.

Ich gehe davon aus, dass Du die Mikros ebenfalls als Fläche aufstellen 
willst, wahrscheinlich im Quadrat?

Wenn Du kein Messmikro verwenden willst, sollten es wenigsten 
Kugelcharakteristik-mikrofone ("OMNI") sein.

von runtastic (Gast)


Lesenswert?

Habe so etwas ähnliches schon einmal gemacht.
Sende als Anfang mal ein Wobbel-Signal-Burst und taste dementsprechend 
hoch ab.
Bei mir war es damals 96kHz.
Danach machst du eine  Kreuzkorrelation über gesegnetes und empfangens 
Signal.
Da bekommst du dann schon mal die Phase.
Evtl. Noch die Temperatur bestimmen und dann die kompensierte Laufzeit 
berechnen.

Macht im Prinzip jedes  Heimkino so.
Nur das da die Lautsprecher außen hängen und das Mikro in der Mitte.

von Profi (Gast)


Lesenswert?

runtastic schrieb:
>Macht im Prinzip jedes Heimkino so.
Wozu? Justiert das System da irgendwas? Was?

von ich (Gast)


Lesenswert?

Profi schrieb:
> runtastic schrieb:
>>Macht im Prinzip jedes Heimkino so.
> Wozu? Justiert das System da irgendwas? Was?

Kommt auf das System an. Bei meinem Yamaha z.B. mißt es die Laufzeit, 
die Phasenlage, die Lautstärke und den Frequenzgeng jedes einzelnen 
Lautsprechers (bzw. jeder einzelnen Box, klar).

von Martin (Gast)


Lesenswert?

runtastic schrieb:
> Sende als Anfang mal ein Wobbel-Signal-Burst und taste dementsprechend
> hoch ab.

Oder anstelle des Chirp sende zwei oder mehrere unterschiedliche 
Frequenzen und berechne aus deren Phasenlagen die absolute Distanz (wie 
Laserentfernungsmesser). Pseudozufallsfolgen wie bei GPS dürften 
akustisch wohl schwierig werden.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Die Verwendung von Pseudozufall (Rauschen) ist gängige Praxis zur 
Vermessung von Raumimpulsantworten.

von J. S. (engineer) Benutzerseite


Lesenswert?

Dabei werden allerdings die empfangenen Rauschsignale mit den 
ausgesendeten korreliert, d.h. sie müssen bekannt sein (was ja hier der 
Fall ist). Das wird deshalb gemacht, weil das Messsystem nicht wissen 
kann, was sonst noch so an akustischem Schmutz im Raum ist, wenn es 
misst. Die delay line gesteurten Lautsprechersystem im Saal an 
unterschiedlichen Orten und die Line Arrays selber, die inzwischen bei 
P.A. Systemen für Rockkonzerte im Freien und grossen Hallen üblich sind, 
agieren ähnlich. Diese messen während des Konzertes, also bei voller 
Lautstärke und Zuschauergeschrei, die akustischen Verzögerungen, die 
sich durch die Erwärmung und Feuchtigkeit der Luft ergeben und stellen 
die künstlichen Signalverzögerungen passend ein.

Früher geschah das manuell durch die Saal-Crew, indem sie die Signale 
der LS und die einiger Empfangsmikros in einer Summe mischten, die nur 
ihnen zugänglich war und dann nach akustischem Empfinden die 
Deutlichkeit anpassten. Das führte dazu, dass die hinteren LS immer 
etwas zu wenig Verzögerung bekamen, was zwar die Deutlichkeit der Musik 
in der Nähe verbesserte, insgesamt zu einem problemastischeren 
Mischmasch und schlecht beherrschten Bassfrequenzen führte.

Andererseits laboriert die automatische Einmessung und Regelung von 
zahlreichen Artefakten und somit gibt es immer noch Leute, die sich 
lieber auf das Ohr verlassen und das per Hand hindrehen.

Das Rauschen in diesen Systemem ist derart hochfrequent und auch leise, 
dass es praktisch nicht zu höhen ist. Infolge der quasi unendlichen 
Prozessierungszeit ist es aber hochgenau. Ohne das Rauschen wäre man nur 
auf die Nutzung der realen Musik-Signale angewiesen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.