Forum: Digitale Signalverarbeitung / DSP / Machine Learning Kalibrierung eines Mikrofon Array mit unbekannten Ort der Schallquelle


von Dave (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe die Aufgabe ein Mikrofon Array (habe erstmal nur 8 
Mikrofone) zu Kalibrieren, dazu habe ich ein Paper gefunden,
in dem das Mikrofon Array mithilfe einer bewegten Schallquelle 
kalibriert wird. Diese Art von
Kalibrierung würde perfekt zu meiner Aufgabenstellung passen jedoch, 
komme ich nicht wirklich
so ganz mit den Informationen klar.

Es wird beschrieben, dass ein Sensor Array bestehend aus i sensoren mit 
den koordinaten xMi,yMi und zMi
und Schallquellen mit den Koordinaten xSi,ySi und zSi vorhanden sind. 
Mit der euklidischen Formel kann die Distanz von Mi zu Si bestimmt 
werden.
dMiSi=sqrt((xSi-xMi)^2+(ySi-yMi)^2+(zSi-zMi)^2)
Diese wiederrum kann durch die Laufzeitdifferenz von Mi und Si und der 
Schallgeschwindigkeit berechnet werden.
Die Laufzeitdifferenz ergibt sich aus der Messung des gesendeten Puls 
und des Empfangenen Signals mit hilfe einer Autokorrelation.

Im Algorithmus wird darauf eingangen die Koordinaten mit der 
nichtlinearen Methode der kleinsten Quadrate
zu optimieren. Dabei wird im ersten Schritt des Algorithmus die 
Koordinaten der Mikrofonen (x,y,z)
und Schallquellen (x,y,z) zufällig generiert (für ein Reibungslosen 
Verlauf des Algorithmus sollten die Mikrofon Koordinaten annähernd 
passen),
diese Koordinaten werden dann immer weiter aufgewertet.

Die Frage die sich mir stellt ist, wie etwas verbessert werden kann? Die 
Methode der kleinsten Quadrate
erzeugt doch eigentlich nur eine Ausgleichskurve aus , ich brauche 
jedoch konkrete Koordinaten.
Wie sollten sich die Koordinaten verbessern, wenn ich nur die Distanz 
von einer jeder Schallquelle zu
jedem einzelnen Mikrofon als Variable habe? Im Endeffekt könnte ich 
Mi*Si Gleichungen aufstellen, bei denen
dMiSi immer anders ist aber die Koordinaten xSi,ySi,zSi und xMi,yMi,zMi 
immer fest sind ?!
Ich kann mir das einfach nicht vorstellen, vielleicht hat jemand ein 
Tipp für mich.

Im Anhang habe ich den Paper beigefügt. Im Kapitel 6 ist der Algorithmus 
aufgezeigt.

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hi

> Im Endeffekt könnte ich Mi*Si Gleichungen aufstellen,
> bei denen dMiSi immer anders ist aber die Koordinaten
> xSi,ySi,zSi und xMi,yMi,zMi immer fest sind ?!

Genau, das gibt dann ein deutlich überbestimmtes Lineares 
Gleichungssystem. Das musst du dann lösen (so gut es eben geht). Am 
einfachsten wohl in dem Du die Matrix invertierst, das geht nur nicht so 
einfach wie gewöhnlich weil die Matrix nicht quadratisch ist, aber die 
kannst eine Pseudoinverse bilden, z.B. die Moore-Penrose-Invers.

Also, so weit mal auf die Schnelle und ohne das Paper gelesen zu haben, 
da hab ich grad keine Zeit dafür.

Grüße
Flo

von Dave (Gast)


Lesenswert?

Aber nach was löse ich die Gleichung denn wenn dMiSi aus der Messung 
keine Variable mehr ist und alle Koordinaten durch Zufall gesetzt 
werden. Was sind meine Variablen? Wird im ersten Schritt nur eine 
Koordinate als Variable gesetzt und diese nach Methode der kleinsten 
Quadrate optimiert, das wiederholt sich dann für die zweite Koordinate 
usw ?

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hi Dave,
naja, die xMi,yMi, zMi und die xSj,ySj, zSj sind die Unbekannten, die 
dMiSj sind bekannt. Mit jeder neuen Messung/Schallquellenposition n 
bekommst neue Gleichungen und leider auch ein paar neue Unbekannte (xSn, 
ySn, zSn) aber du bekommst mehr unabhängige (i.A. jedenfalls) neue 
Gleichungen als neue Unbekannte, nach genug Messungen (12) hast Du genug 
Gleichungen (60) um alle Mi, Sj (60) auszurechnen.

Das Gleichungssystem ist i.A. überbestimmt drum brauchst Du irgendeine 
Art der Ausgleichsrechnung um die beste Lösung zu finden.

Und etwas ins blaue hinein, denke ich du solltest wohl noch ein Mikrofon 
einfach auf 0 setzen (Koordinatenursprung) und überlegen wie Du zwei 
weitere Nutzen kannst um eine kartesische Basis zu konstruieren.

Zeichne das mal in 2D mit drei Mikros und drei Schallquellen auf, ich 
glaub dann sieht mans eigentlich.

Nur die Sache mit der Pseudoinverse war Käse bzw. ists nicht so einfach, 
da das ja alles gar nicht linear ist, Du braucht also irgendein 
Lösungsverfahren für nichtlineare überbestimmte Gleichungssysteme, z.B. 
das Gauß-Newton-Verfahren. Oder man erfindet sich was ähnliches selber 
weils angeblich besser funktioniert und man machts so wie Paper. Das 
Verfahren klingt zumindest langsam, ist aber ja egal, weil Computer 
schnell sind und man das nur einmal macht.

Grüße
Flo

von Dave (Gast)


Lesenswert?

Florian R. schrieb:
> Hi Dave,
> naja, die xMi,yMi, zMi und die xSj,ySj, zSj sind die Unbekannten, die
> dMiSj sind bekannt. Mit jeder neuen Messung/Schallquellenposition n
> bekommst neue Gleichungen und leider auch ein paar neue Unbekannte (xSn,
> ySn, zSn) aber du bekommst mehr unabhängige (i.A. jedenfalls) neue
> Gleichungen als neue Unbekannte, nach genug Messungen (12) hast Du genug
> Gleichungen (60) um alle Mi, Sj (60) auszurechnen.

Ich glaube ich habe es verstanden! Nur dass ich keine Fehler drin hab 
schreibe ich meinen Gedankenweg nochmal auf.

DS1M1=sqrt((xS1-xM1)^2+(yS1-yM1)^2+(zS1-zM1)^2)
In der Gleichung wären zum Beispiel 6 Unbekannte (wenn wir M1 in den 
Ursprung des Koordinatensystems legen dann sind es immer noch 3 
Unbekannte)
Bei einer neuen Schallquellenposition/Messung kommen Grundsätzlich immer 
3 weitere Unbekannte dazu (die 3 Koordinaten x,y,z):
DS2M1=sqrt((xS2-xM1)^2+(yS2-yM1)^2+(zS2-zM1)^2)
Das ändert sich auch nicht für n Schallquellen.
DSnM1=sqrt((xSn-xM1)^2+(ySn-yM1)^2+(zSn-zM1)^2)
Also wenn wir n Schallquellen haben, haben wir schonmal n Gleichungen 
mit n*3 Unbekannten.

Bei 12 Messungen hätten wir also bei einem Mikrofon mindestens 36 (39 
wenn wir den Uhrsprung nicht in den Koordinatenursprung setzen) 
Unbekannte, jedoch nur 12 Gleichungen.

Bei 12 Messungen und 2 Mikrofonen hätten wir 24 Gleichungen und 39 (42) 
Unbekannte
Bei 12 Messungen und 3 Mikrofonen hätten wir 36 Gleichungen und 42 (45) 
Unbekannte
Bei 12 Messungen und 4 Mikrofonen hätten wir 48 Gleichungen und 45 (48) 
Unbekannte
Bei 12 Messungen und 5 Mikrofonen hätten wir 60 Gleichungen und 48 (51) 
Unbekannte und somit ist das Gleichungssystem überbestimmt und lässt 
sich mit der Methode der kleinsten Quadrate näherungsweise lösen. Die 
exakte Lösung ist aufgrund der Messergebnisse nicht berechenbar, weil 
sich die Gleichungen widersprechen.

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hallo,
ja, so in etwa verstehe ich das auch.

Was mir nicht ganz klar ist, wie man mit Lage und Orientierung des 
Koordinatensystems, in dem man die Ms lokalisieren will, umgeht.

Klar ist, dass man M0 einfach ein de Uhrsprung legen (drei Variablen 
weg) kann. Gut. Bleibt noch die Orientieren, also nochmal drei 
Freiheitsgrade. Ich denke, auch die kannst du beliebig festlegen und so 
noch drei Variablen eliminieren. Wie man das jetzt aber genau macht weiß 
ich grad nicht.

Du könntest vielleicht M0 = (0,0,0) und M1 = (xM1,0,0) setzten und dann 
M2 = (xM2' * xM1, yM2, 0) und M3 = (xM3' * xM1, yM3' * yM2, zM3) und Mi 
= (xMi' * xM1, yMi' * yM2, zMi' * zM3), oder so. Und dann xM1, yM2, zM3 
und M' ausrechnen, und am ende dann wieder alles in M ohne Strich 
umrechnen. Das wird nur blöd, wenn zM3 klein ist, der skizzierte 
Algoritmus ist glaub ich eh schon nicht sonderlich stabil, das wird dann 
vielleicht noch schlimmer, oder vielleicht auch nicht. Naja, gib auf 
diese Idee mal nicht sonderlich viel, keine Ahnung ob das so geht, aber 
eigentlich müsste man insgesamt 6 Variablen weg bekommen.

Grüße
Flo

von Detlef _. (detlef_a)


Lesenswert?

Hi,

Positionsbestimmung aus Laufzeitdifferenzen ist ein uraltes Problem, das 
gibt's seit LoranC : Hyperbelnavigation bei Wikipedia ( Die Punkte 
konstanter Laufzeitdifferenzen liegen auf Hyperbeln) . Ich habe das mal 
auf matheplanet.de für zwei Dimensionen erfragt (such nach 
Hyperbelnavigation und 'cheers', ich kann auf meinem Telefon keine links 
kopieren :-/) und beantwortet bekommen, dort auch ein link für drei 
Dimensionen, das lösen die
GPS Receiver für jede Koordinate. Ich hoffe,ich habe die Frage richtig 
verstanden, mein Screen ist  urlaubsbedingt klein :-)))

Cheers
Detlef

von J. S. (engineer) Benutzerseite


Lesenswert?

Du brauchst in jedem Fall mehrere Impulsfolgen bei einer 
Mikrokalibrierung, weil schon geringe Temperaturunterschiede zu 
relevanten Laufzeitunterschieden führen. In größeren Distanzen braucht 
es dann auch mehrere Messungen zur Realzeit, um keine schwammigen Werte 
zu bekommen.

Statt einer Bewegten Schallquelle kann man das gfs auch mit einem 
LS-Array und den entstehenden Phantomschallquellen lösen.

Habe mal was Ähnliches gemacht:
http://www.96khz.org/oldpages/soundsourcelocalisation.htm

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.