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.
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
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 ?
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.