Ich habe ein ziemlich einfaches TDOA-System entwickelt, das Ultraschallsignale von zwei Lautsprechern verwendet, um Mobiltelefone (relativ zu den Lautsprechern) zu lokalisieren. Die beiden Signale sind durch die Frequenz getrennt.
Das System hat die folgenden Einschränkungen:
- Die Signale müssen unhörbar sein. Zu diesem Zweck halten wir uns an Frequenzen über 17 kHz. Einige Leute können das immer noch hören, aber die meisten können es nicht.
- Die Abtastrate beträgt 44,1 kHz.
- Musik wird normalerweise abgespielt, daher treten bei den niedrigeren Frequenzen viele Störungen auf.
- Wir haben keine Kontrolle darüber, wie gut die Lautsprecher und Mikrofone bei den oberen Frequenzen funktionieren, daher haben wir unsere Obergrenze bei etwa 20 kHz gehalten.
Das spezielle Signal, das ich verwende, sind BPSK-modulierte 13-Bit-Barker-Codes aufgrund ihrer guten Autokorrelationseigenschaften. Die Autokorrelation sieht wie folgt aus:
Wenn ich das erwartete Signal mit dem empfangenen Signal im wirklichen Leben kreuzkorreliere, sieht das, was ich bekomme, normalerweise so aus:
Das Blau ist die Kreuzkorrelation mit dem Signal von Lautsprecher 1 und das Rot ist die Kreuzkorrelation mit dem Signal von Lautsprecher 2. Es scheint, dass die Echos aufgrund der Richtungsverstärkung des Mikrofons signifikant und leider oft stärker als das direkte Wegsignal sind.
Ich habe versucht, einfach das früheste Auftreten des Signals zu erkennen, da dies wahrscheinlich der direkte Weg ist. Dieser Ansatz reagiert sehr empfindlich auf den Schwellenwert, den ich für die Entscheidung verwende, wann das Signal vorhanden ist, und ist daher überhaupt nicht robust.
Ich möchte einen robusten Ansatz zur Bestimmung der "wahren" Ankunftszeit des Signals, dh der Ankunftszeit des Direktpfadsignals. Vielleicht irgendeine Form der Kanalschätzung und Entfaltung? Wenn ja, wie würde das funktionieren?
Daten / Code: Ich möchte klarstellen, dass ich nicht erwarte, dass jemand die Daten analysiert oder meinen Code überprüft. Ich habe sie zur Verfügung gestellt, falls Sie dies möchten. Ich interessiere mich hauptsächlich für Ideen.
Ich habe das rohe empfangene Signal und die modulierten erwarteten Signale zum Download bereitgestellt. Sie werden alle mit 44,1 kHz abgetastet. Das Korrelieren des empfangenen Signals mit den erwarteten Signalen erzeugt etwas Ähnliches, aber nicht identisches wie das obige Bild, da ich die empfangenen Signale auf das Basisband verschiebe und dezimiere, bevor ich mit den erwarteten Signalen korreliere.
Matlab-Skripte Die Matlab-Skripte enthalten sowohl das Signalerzeugungsskript (genLocationSig.m) als auch mein Empfangs- / Verarbeitungsskript (calcTimingOffset.m).
quelle
Antworten:
Dies sind nicht die Codes, die Sie suchen ...
Wie ich in den Kommentaren erwähnt habe, gibt es eine ganze Reihe von Möglichkeiten, eine robuste TDOA durchzuführen. (Kreuzkorrelation mit linearen Chirps-, Exponential-Chirps- und CDMA-Methoden). Sie haben bereits ein TDOA-System mit Codes erstellt (und das ist in der Tat eine gute Wahl gegenüber linearen Chirps, wenn Sie eine Robustheit gegenüber Doppler benötigen), aber Sie beschränken sich künstlich auf zwei Arten:
Verwenden Sie eine PN-Sequenz:
Senden Sie eine Präambel:
In Ihrer speziellen Anwendung haben Sie erwähnt, dass Sie nur ein Bit übertragen haben. Sie sollten versuchen, dies zu vermeiden, wenn Sie helfen können, und so viele Bits übertragen, wie Ihre Anwendung zulässt, um weitere Codierungsgewinne zu erzielen.
Probieren Sie eine oder beide dieser Lösungen aus und stellen Sie Ihre Ergebnisse auf. Ich erwarte konkrete Verbesserungen, die wir dann wiederholen können. (Pulsformung, verschiedene / längere PN-Sequenzen usw.).
quelle