Hallo lieber habuchitel!
Unser
Unterwasser-GPS wurde kürzlich drei Jahre alt. Während dieser Zeit wurde das System seriell, wir brachten mehrere weitere Systeme und Geräte auf den Markt, aber die ganze Zeit über ließ ich nicht die Besessenheit hinter mir, Hydroakustik in die Massen zu bringen, um sie gewöhnlichen Liebhabern, Modellierern, Vertretern von Richtungen wie
urbaner verrückter Bürgerwissenschaft und Wissenschaft zugänglich zu machen andere interessiert.
Und heute, zu Ehren unseres bescheidenen Jubiläums, werde ich detailliert und an den Fingern erklären, wie man den geografischen Standort eines Unterwasserobjekts mit nur zwei Transceivern bestimmt: mit Quellcode, lustigen Bildern, Grafiken und experimentellen Ergebnissen.
Ich bitte alle Interessierten auf einem Kajak im sauberen und warmen Wasser des Wolgograd-Stausees!
ACHTUNG: Der Artikel enthält Spuren von Matan!Für diejenigen, die nicht verstehen, was passiert, aber nichts dagegen haben, empfehle ich Ihnen, sich mit unseren früheren Veröffentlichungen zum Thema Hydroakustik und Unterwassernavigation vertraut zu machen:
Sitzung der Videoübertragung von Ton durch Wasser mit BelichtungUnterwasser-GPS von Grund auf neu pro JahrUnterwasser-GPS: FortsetzungÜber die Wirkung von Cyanobakterien auf die Sprachfunktionen des PräsidentenNavigation unter Wasser: Peilung - keine Peilung, Sie sind zum Erfolg verurteiltUnd auch mit einem großartigen Übersichtsartikel
von akuzmin über Hydroakustik
Einführung
Unter Wasser erstrecken sich Radiowellen nicht über eine nennenswerte Entfernung, und eine mehr oder weniger anständige drahtlose Kommunikation und Navigation ist Hand in Hand nur mit Hilfe der Akustik möglich.
Es gibt nur zweieinhalb funktionierende Arten von Navigationssystemen:
- Ultrakurzbasis (USB, USBL) - basierend auf der Bestimmung des Ankunftswinkels des Beacon-Signals und der Messung der Entfernung (entweder durch Anforderungs-Antwort-Methode oder durch synchronisierte Stunden). Der Ankunftswinkel wird unter Verwendung eines Antennenarrays bestimmt. Die gewünschte Position wird durch den Winkel und die Reichweite bestimmt (direkte geodätische Aufgabe). Das UKB-System ist beispielsweise unser ZIMA
- Langstrecken (DB, LBL) - Hier werden die Signalankunftszeiten entweder an mehreren Empfängern oder von mehreren Sendern (unser Unterwasser-GPS funktioniert einfach so) mit bekannter Position gemessen. Sie können Entfernungen entweder mit der "Request-Response" -Methode (Entfernungsmesser-Methode) messen oder Unterschiede in den Signalankunftszeiten (Differenz-Entfernungsmesser-Methode) messen, z. B. GPS- und GLONASS-Arbeit. Eine lange Basis kann schwebend (wie unser RedWAVE ) oder unten sein.
- Short-Base (KB, SB) - in der Tat - dieselben Long-Base-Systeme, aber alle Stützelemente der Base befinden sich auf derselben Base - beispielsweise auf einem Schiff.
Wie gesagt, eine lange Basis kann auf einer "Anfrage-Antwort" -Basis arbeiten. In diesem Fall ist es notwendig, das Problem des Schneidens von N Kugeln oder Kreisen zu lösen, wenn die Tiefe des gewünschten Objekts bekannt ist.
Oder die Basis kann genau wie GPS und GLONASS funktionieren, solche Systeme werden auch als hyperbolisch bezeichnet, und hier ist der Grund: Wenn das gewünschte Objekt regelmäßig ein Navigationssignal aussendet und die Uhren aller Empfänger (Basiselemente) synchronisiert sind, kann die Entfernung nicht direkt gemessen werden, aber Sie können es nur herausfinden Welches der Basiselemente ist näher oder weiter entfernt? Das heißt, es sind nur Abstandsunterschiede verfügbar. Und wie Sie aus dem Schulkurs
wissen :
"Eine Hyperbel kann als die geometrische Position von Punkten definiert werden. Der absolute Wert der Differenz der Abstände zu zwei bestimmten Punkten, die als Brennpunkte bezeichnet werden, ist konstant."
Mit anderen Worten, wenn das Unterwasserobjekt ein Signal ausgesendet hat und wir es an zwei Empfängern empfangen haben, deren Uhren synchronisiert sind, können wir sagen, dass unser Objekt auf einem Hyperboloid liegt (oder auf einer Übertreibung, wenn es plötzlich seine Tiefe an uns überträgt). Mehr Empfänger - mehr Hyperbeln! Mehr Hyperbeln - höhere Ortsgenauigkeit
kein Palast - kein Palast .
Und wenn nicht das Unterwasserobjekt strahlt, sondern die Basiselemente, dann kann das Unterwasserobjekt, das seine Tiefe kennt, seinen Standort selbst bestimmen, und in diesem Fall stört es niemanden und es kann so viele solcher Objekte geben, wie sie sind - sie sind nur Zuhörer. So sind GPS / GLONASS und unser
RedWAVE angeordnet .
Und ich habe die Navigation durch zwei Transceiver versprochen, von denen einer derjenige ist, dessen Position bestimmt werden muss.
Lass uns verstehen
Abstand zwischen zwei Punkten
A ( x a , y a , z a ) und
B ( x b , y b , z b ) im dreidimensionalen Raum wird durch eine einfache Formel bestimmt (man weiß nie, plötzlich hat jemand vergessen):
d A B = s q r t ( x a - x b ) 2 + ( y a - y b ) 2 + ( z a - z b ) 2
Angenommen, wir haben N Basisstationen. Aus humanitären Gründen gehen wir davon aus, dass ihre Koordinaten uns bekannt sind, und wir haben die Entfernungen gemessen
d b n von jeder der Basisstationen
Bn(xbn,ybn,zbn) zum Ziel T. Zur Klarheit: T ist Ziel und B ist Basis.
So können wir für jeden Punkt
M(x,y,z) Schreiben Sie einen Ausdruck auf, der zeigt, wie dieser Punkt zu unseren experimentellen Messungen passt. Tatsächlich ist dies die Summe der Differenzen zwischen der Entfernung vom Punkt M zur entsprechenden Basisstation und der gemessenen Entfernung. Wir werden jeden dieser Unterschiede ausgleichen.
epsilon(x,y,z)= sumNn=0 left( sqrt(x−xbn)2+(y−ybn)2+(z−zbn)2−dTbn right)
Im Allgemeinen handelt es sich um die Methode der kleinsten Quadrate, und die Koordinaten des gewünschten Punkts sollten idealerweise das Minimum der Funktion ε sein.
Wenn wir über die Differential-Entfernungsmesser-Methode sprechen, auf die wir in diesem Artikel völlig wahllos eingehen werden, haben wir für jede Basisstation einen nicht gemessenen Abstand
dbn und die Signalankunftszeit
tOA dann gibt es im Ausdruck der Funktion des Fehlers keine Abstände, sondern deren Unterschiede. Der einzige Unterschied besteht darin, dass Sie die erforderlichen Paare von Basisstationen sortieren müssen, beispielsweise für die n-te und die n + 1-te Station:
sqrt(x−xbn)2+(y−ybn)2+(z−zbn)2− sqrt(x−xbn+)1)2+(y−ybn+1)2+(z−zbn+1)2−v(tOAn−tOAn+1)
v - bedeutet hier die Schallgeschwindigkeit, die übrigens nicht konstant ist, sondern stark von der Dichte des abgelesenen Mediums, von Temperatur, Salzgehalt und Druck abhängt. Und wenn Sie alles auf erwachsene Weise tun möchten, müssen Sie es entweder direkt messen oder berechnen, aber dies zu einem anderen Zeitpunkt.
Beachten Sie, dass die Tiefe positionierter Objekte in modernen Sonarnavigationssystemen direkt und mit ziemlich hoher Genauigkeit (0,5 bis 2 cm) gemessen wird. Daher ist es sinnvoll, die Aufgabe in eine flache Aufgabe zu übersetzen.
Es wäre möglich zu informieren, dass wir dies jetzt durch eine beliebige Optimierungsmethode lösen und hier enden.
Aber erstens ist nicht alles so einfach und zweitens ist nicht alles so kompliziert.Beginnen wir mit den Schwierigkeiten
Tatsache ist, dass vieles von der Anordnung der Basisstationen relativ zueinander abhängt (dies kann beispielsweise durch Verwaltungsmethoden beeinflusst werden =) und von der Position des positionierten Objekts relativ zu den Elementen der Basis (es ist viel schwieriger, dies in einem breiten Spektrum von Aufgaben zu beeinflussen) anfangs ist die Position des positionierten Objekts sehr ungefähr bekannt und es ist fast unmöglich, im Voraus eine Basis aufzubauen).
Holen Sie sich die Situation wie in Abbildung 1 - wie beim guten Morgen:
Abbildung 1 - Die Oberfläche der Fehler für die Basis ihrer drei Elemente. Positioniertes Objekt außerhalb der Basis. Das Vorhandensein eines falschen Minimums
Die grünen Kreise zeigen die Positionen der Basisstationen an, und das Sternchen zeigt die wahre Position des positionierten Objekts an. Die Farbe der Punkte gibt den Wert der Restfunktion (ε) an diesem Punkt an. Wie ein Politiker sagte, ist es klar, dass die Oberfläche zwei Vertiefungen aufweist, und wenn man nach einem Minimum sucht, ist es sehr leicht, in eine falsche zu fallen. Die Situation ist noch schlimmer: Unter Berücksichtigung des Maßstabs, der tatsächlichen Position des Objekts und der durchschnittlichen Bewegungsgeschwindigkeit solcher Objekte können wir sagen, dass es sich für eine lange Zeit in dieser Position befindet, die Form der Fehleroberfläche erhalten bleibt und es sehr wahrscheinlich ist, dass für eine lange Zeit falsche Daten über den Ort des Objekts empfangen werden .
Die folgende Animation zeigt eine ähnliche Situation: Wenn Sie eine Suche von einem Mittelpunkt zwischen Basisstationen aus starten und von einer nahe gelegenen Station aus starten, führt die Suche zu einem falschen Minimum:
Abbildung 2 - Die Suche hat beim Start vom Mittelpunkt der Basis aus das falsche Minimum erreicht. Basis von drei ElementenDie Suche wird hier mit
dem Nelder-Mead-Algorithmus oder, wie es auch genannt wird, der Simplex-Methode implementiert. Es wird beispielsweise in Matlab in der Funktion
fminsearch verwendet
Es erfordert keine Berechnung von Derivaten, ist sehr visuell, intuitiv und einfach zu implementieren.
Abbildung 3 - Die Suche hat das falsche Minimum erreicht, wenn Sie vom nächsten Basiselement ausgehen. Basis von drei Elementen
Erfahrene Leute mögen empört sein, dass niemand die Basisstationen in Betrieb nimmt, aber erstens manchmal, und zweitens ist dies eine Übertreibung für eine visuellere Demonstration.
„Die Niederlage war abgeschlossen. Es war nicht möglich, etwas zu erfinden “(C) A. und B. Strugatsky,„ City Doomed “
Was kannst du dir hier einfallen lassen?
Die Logik schlägt vor, dass Sie eine von zwei Methoden der globalen Optimierung verwenden können -
Simuliertes Tempern oder ähnliches. Ein anderer (und produktiverer) Ansatz besteht jedoch darin, a priori Informationen vollständiger zu verwenden, um einen Suchstartpunkt auszuwählen.
Schließlich wissen wir mit Sicherheit, dass der gewünschte Punkt (mit einem Bruchteil der Annahme) auf den Kreisen liegt, in deren Zentren sich Basisstationen befinden, und die Radien dieser Kreise entsprechen den gemessenen Bereichen!
Und wir sind uns auch sicher, dass der Fehler bei der Messung des Bereichs in der Hydroakustik mit diesem Bereich zunimmt: Der Schall breitet sich nicht linear aus.
Sie können versuchen, den Startpunkt für die Ermittlung des Minimums um (im wahrsten Sinne des Wortes auf dem Kreis) des nächsten Leuchtfeuers zu wählen, in der Hoffnung, dass der Abstand zu diesem mit maximaler Genauigkeit gemessen und vom gleichen Wert der Restfunktion ε geleitet wird.
Die Koordinaten der Kandidatenpunkte werden in diesem Fall nach folgenden einfachen Formeln gebildet:
x=xbc+dbccos alphay=ybc+dbcsin alpha
xbc und
ybc - Koordinaten der nächstgelegenen (c - nächstgelegenen) Basisstation,
dbc - der Abstand zum positionierten Objekt.
alpha - Argument (Winkel). Wenn Sie jetzt nach einem Minimum für suchen
epsilonε variieren
alpha Im Bereich von 0 bis 360 Grad mit einem Schritt von beispielsweise 10 Grad. Wenn Sie dann neben diesem Wert suchen, indem Sie den Schritt auf 1 Grad verringern und den Suchbereich auf 20 (± 10) Grad verkleinern, können Sie die anfängliche Annäherung sehr gut bestimmen, was praktisch ist in allen Fällen trifft es das Ziel fast sofort!
In den folgenden Bildern fiel die "frontale" Lösungsmethode für 30 Iterationen tapfer in ein falsches Minimum, was zu einer absolut falschen Lösung führte, und die Methode mit vorläufiger eindimensionaler Minimierung traf fast sofort den Punkt und näherte sich in 6 Iterationen der tatsächlichen Position mit einer Divergenz von ~ 25 Zentimetern bei Die Entfernung zur nächsten Basisstation beträgt ~ 400 Meter.
Abbildung 4 - Die Suche hat das falsche Minimum erreicht
Abbildung 5 - Finden der richtigen Lösung ausgehend von dem Punkt, der durch vorläufige eindimensionale Minimierung erhalten wurde
Abbildung 6 - Der vergrößerte Bereich um die resultierende Lösung. Der gelbe Kreis ist die empfangene Lösung, der grüne Stern ist die wahre Position des ObjektsIm obigen Beispiel ergab die erste Iteration nach einer vorläufigen Auswahl der anfänglichen Suchposition eine Lösung 20 Meter von der realen Position entfernt (im Feld ~ 600 x 600 Meter).
Zu diesem Zeitpunkt haben wir die Entfernungsmesser-Methode herausgefunden. Die Situation zwischen Differenz-Entfernungsmesser ist etwas komplizierter: Es gibt keine so klaren Richtlinien für die Auswahl des Startpunkts (der Kreis ist eine gute Zahl, weil er geschlossen ist, und die Hyperbel ist schlecht, weil sie ins Unendliche geht).
Zurück zum versprochenen „Unterwasser-GPS“ zweier Transceiver. In gewisser Hinsicht bin ich schlau: Als vollwertiges Unterwasser-GPS ist dies in
unserem ersten Artikel nicht möglich. Wenn Sie
jedoch nicht das Geld haben, um das richtige Gerät zu kaufen, einige Einschränkungen
in Kauf nehmen und sich insbesondere mit bestimmten Aufgaben befassen, können Sie dennoch etwas tun.
Ein häufig positioniertes Objekt ist bewegungslos (oder bewegt sich zumindest vernachlässigbar langsam). In solchen Fällen können Sie anstelle mehrerer Basisstationen tatsächlich eine verwenden, die sich jedoch bewegt: Dieser Ansatz wird als VLBL oder Virtual Long Base bezeichnet. Wenn wir nicht die Spur der Bewegung des Unterwasserobjekts festlegen müssen, sondern einfach dessen Position bestimmen müssen, dann ist dies das, was wir brauchen.
Oft tritt dieses Problem auf, wenn Bodengeräte durch freie Entladung aus dem Schiff installiert werden. Bei greifbaren Tiefen und vorhandenen Strömen kann die tatsächliche Position des Geräts am Boden erheblich von der Position des Abgabepunkts abweichen. Dieses Gerät kann auch ein Element der unteren Navigationsbasis sein: Um den Standort eines Unterwasserobjekts zu bestimmen, müssen Sie zuerst den Standort des Unterwasserobjekts bestimmen.
Wie kann das alles in der realen Welt arrangiert werden?
Unser Versuchsaufbau besteht aus:
- das Objekt, das wir am Boden des Reservoirs verstecken werden: unser RedGTR-Code-Modem in einer eigenständigen Version (es klingt tatsächlich nur offiziell - ein Modem, das an einen versiegelten Batteriekasten angeschlossen ist); Hier ist es auf dem Foto:

Abbildung 7 - Responder Beacon mit Batteriebehälter
- eine mobile Basisstation basierend auf einem chinesischen Köderboot aus unserem anderen Artikel . Sie hat zusätzlich zu ihrer nativen Steuerungsfüllung ein zweites RedGTR-Modem, ein 433-MHz-DORJI-Funkmodul mit Antenne, ein hausgemachtes GPS / GLONASS-Modul auf der Basis des quectel l76 und ein eigenes Motherboard auf der Basis des STM32F429 (kann problemlos durch NUCLEO-STM429 oder STM32F4 Discovery ersetzt werden) an Bord Ich bin mir sicher, dass jedes Arduino-ähnliche Board dies auch tun würde), das einfach die Rolle eines Routers spielt: Alles geht vom Funkkanal über UART zum Modem und umgekehrt, Daten vom GPS-Modul werden auch in den Funkkanal gestreamt.
Es sieht also aus wie eine Versammlung:

Abbildung 8 - Foto der Test-Wasserfahrzeugbaugruppe
Dieses Mal haben wir eine Art Spiegel zum Anbringen einer Stange mit einem Modem angeheftet. Die Erfahrung eines frei gezogenen Navigators hat gezeigt, wie bösartig ein solches Schema ist, sowohl hinsichtlich der Steuerbarkeit als auch hinsichtlich der sich ändernden relativen Position des Geräts und des Bootes.
So sieht es im Laderaum aus:

Abbildung 9 - Foto eines Testfahrzeugs. Blick auf den Laderaum
Alle nativen Schaltkreise blieben nahezu unverändert, und alle zusätzlichen Geräte werden von einer separaten Bleibatterie mit 1,2 A * h gespeist.
- die Bedienerkonsole, die einen Laptop mit Software und ein über USB mit dem Konverter verbundenes Antwortfunkmodul enthält. Die Software ist natürlich etwas voreilig und nur zur Demonstration geeignet, aber es ist bereits ein Protokoll für die Interaktion mit einem Modem implementiert, ein TOA-Solver, das auf derselben Nelder-Mead-Methode basiert, Auswahl von Basispunkten, einfache Zeichnung geografischer Standorte sowie die Möglichkeit, GPS für die Datenübertragung zu emulieren ein Analogon von Google Earth.

Abbildung 10 - „Bedienerkonsole“. Testlauf auf dem Tisch.
Die blauen Punkte repräsentieren die GPS-Position des Bootes, die grünen Punkte zeigen die Positionen an, an denen Messungen durchgeführt wurden, die Positionen der virtuellen Basiselemente werden durch Lachs hervorgehoben und die berechneten Positionen des Antwortbakens werden rot hervorgehoben.
Wer ist mit was beschäftigt?
- Das Modem, das Sie suchen möchten, liegt ganz unten, empfängt und beantwortet Anfragen.
- Das Modem auf dem Boot führt Befehle aus, die über UART eingegangen sind - sendet Anforderungen und empfängt Antworten, wie von UART gemeldet
- Die Karte mit STM32F4 im Boot empfängt Daten vom GPS und vom Modem über UART und leitet sie von einem anderen UART zum Funkmodul um. Außerdem leitet sie Daten vom Funkmodul zum Modem um. Es gibt eine kleine Nuance im Zusammenhang mit dem Funkmodul - es ist kein Vollduplex (genau wie bei hydroakustisch =)), daher „hält“ die Karte die RMC-Nachricht vom GPS-Modul und sendet sie nur zusammen mit der Nachricht vom Modem.
- Die Fernbedienungssoftware steuert die gesamte Aktion, sammelt Daten über Entfernungen zum Ziel von verschiedenen geografischen Standorten, wählt die optimale Basis aus und bestimmt den Standort des Ziels.
Ein bisschen detaillierter
Die Kommunikation mit Modems erfolgt über ein NMEA-ähnliches Protokoll. Für unsere Aufgabe werden nur drei Nachrichten verwendet:
$PTNTE,targetAddr,requestedCmd,timeoutMs*hh
von der Fernbedienung zum Modem. Senden Sie den Befehl
targetAddr
an den Remote-Teilnehmer unter
targetAddr
, und setzen Sie das Antwortzeitlimit auf timeoutMs.
Der Befehl kann eine der genehmigten Listen sein:
Das Team | Code | Beschreibung |
---|
CDS_CMD_PING | 0 | PING-Anfrage, auf die der Remote-Teilnehmer PONG antwortet |
CDS_CMD_PONG | 1 | Antwort auf PING-Anfrage |
CDS_CMD_DPT | 2 | Befehlen Sie dem Remote-Teilnehmer, seine Tiefe zu übertragen |
CDS_CMD_TMP | 3 | Befehlen Sie dem Remote-Teilnehmer, seine Temperatur zu übertragen |
CDS_CMD_BAT | 4 | Der Befehl an den entfernten Teilnehmer, seine Stromversorgung zu übertragen |
CDS_CMD_USR_0 | 5 | Benutzerteam 1 |
CDS_CMD_USR_1 | 6 | Benutzerteam 2 |
.. | .. | .. |
CDS_CMD_USR_34 | 39 | Benutzerteam 34 |
Das Modem unterstützt grundlegende Funktionen: Ping, Übertragungstiefe, Wassertemperatur, Batterieleistung und eine Reihe von Benutzercodebefehlen.
Das Modem antwortet dem TNTE-Befehl sofort auf die Tatsache, dass der Befehl akzeptiert wird oder nicht ausgeführt werden kann, mit der ACK-Nachricht:
$PTNT0,errCode
errCode
- 0, wenn das Modem den Befehl akzeptiert hat, andernfalls der Fehlercode
Wenn das Modem nicht darauf gewartet hat, dass der Remote-Teilnehmer rechtzeitig antwortet, meldet er dies mit einer
REM_TIMEOUT
Nachricht, die nur die Adresse des Remote-Teilnehmers im Parameterfeld enthält:
$PTNTB,targetAddr
Wenn das Modem die Antwort rechtzeitig erhalten hat, meldet es dies mit dem Befehl
REM_PONGEX
, der das folgende Format hat:
$PTNTD,requestedAddr,requestedCmd,receivedValue_decoded,snrd,dpl,pTime,[dst],[dpt],[tmp]
requestedAddr
- Adresse des angeforderten Teilnehmers
requestedCmd
- angeforderter Befehl
receivedValue_decoded
- akzeptierter Wert
snrd
- Signal-Rausch-Verhältnis am Empfängerausgang in dB
dpl
- Dopplerverschiebung in Hz
pTime
- Signalausbreitungszeit (Einweg) in Sekunden
dst
- Entfernung zum Teilnehmer in Metern
dpt
- eigene Tiefe des Modems in Metern
tmp
- Außenbordwassertemperatur in Grad Celsius
Die letzten drei Parameter werden nur übertragen, wenn das Modem mit einem integrierten Druck- / Temperatursensor ausgestattet ist (unsere Option).
Vom GPS-Modul interessiert uns nur die RMC-Nachricht, woher wir die aktuelle geografische Position beziehen (wir könnten GGA oder GLL verwenden - die letzte kürzeste).
Das Schwierigste - Datenübertragung über Wasser und Entfernungsmessung - wird von Modems durchgeführt, die die geografische Position des Bootes bestimmen - GPS-Modul, nur noch wenig übrig -, um diese Daten korrekt zu verwenden.
Das gesamte Parsen und Erstellen von NMEA-Nachrichten wird mithilfe der NMEAParser-Klasse in der
UCNLNMEA- Bibliothek durchgeführt.
Die auf dem Laptop ausgeführte
Konsolensoftware sendet regelmäßig
REM_PINGEX
Anforderungen an den Abonnenten unter der in den Anwendungseinstellungen angegebenen Adresse. Dies geschieht entweder nach Erhalt von
REM_TIMEOUT
oder
REM_PONGEX
. Unterwegs werden die Koordinaten des Bootes aufgezeichnet und Daten über die Entfernung und Tiefe des entfernten Teilnehmers zusammen mit den Koordinaten des Bootes gespeichert, in dem sie empfangen wurden.
Der gesunde Menschenverstand (und die Erfahrung) sagen uns, dass zur Bestimmung der Position eines Unterwasserobjekts 3-5 virtuelle Basisstationen benötigt werden und wie aus den obigen Bildern ersichtlich, sie sowieso nicht lokalisiert werden sollten.
Das heißt, die folgende Aufgabe wird gebildet: Wenn Messungen empfangen werden, müssen mehrere von ihnen auf bestimmte Weise als Elemente der Navigationsbasis ausgewählt werden.
Ich schlage die folgende Option vor: Wählen Sie solche Messungen so aus, dass sie die konvexeste Figur bilden, die um die geschätzte Position des positionierten Objekts beschrieben wird.
Nehmen Sie dazu einen bestimmten Punkt (im Anfangsstadium, wenn nicht klar ist, wo sich das positionierte Objekt befindet, wird der Mittelpunkt aller Messungen angezeigt, der dann durch die erste Annäherung an die Position des gewünschten Objekts ersetzt wird) und berechnen Sie den Azimutwinkel daraus (den Winkel zwischen der Richtung nach Norden und der Richtung nach Norden) Punkt) für jeden Messpunkt. Und jetzt werden wir einige auswählen, die den resultierenden Winkelbereich am gleichmäßigsten abdecken. Bei der Fernbedienung erfolgt dies durch die Methode
List<Measurement> Measurements.GetBase();
Sobald Daten eintreffen, fügen
REM_PONGEX
in der Methode, in der die REM_PONGEX-Nachricht
REM_PONGEX
, Messungen hinzu und versuchen, eine Navigationsbasis aufzubauen und das Navigationsproblem damit zu lösen. Die Methode ist dafür verantwortlich.
GeoPoint3DWE LocateLBL_NLM(List<Measurements> base, GeoPoint3DWE prevLocation, double rErrorThreshold, out double stStageRErr, out int itCnt);
Die Basis selbst wird darauf übertragen - der Satz von Messungen, die wir zur Lösung des Navigationsproblems ausgewählt haben, die vorherige Position (falls vorhanden, wird auch die Tiefe des gewünschten Objekts übertragen), die radiale Fehlerschwelle und zwei diagnostische Ausgabeparameter - der radiale Fehler in der ersten Stufe der Lösung (gemäß eindimensionale Optimierung) und die Anzahl der Iterationen, nach denen die Lösung in der zweiten Stufe erhalten wurde.
Wenn die Lösung, mit der wir zufrieden sind, auf einem radialen Fehler beruht, verwenden wir diese Lösung als Referenzpunkt für den Aufbau der Basis.
Und so werden wir, bis wir müde werden, eine Lösung finden, die uns zufriedenstellt.
Die
LocateLBL_NLM
Methode löst, wie der Name schon sagt, das Problem
mithilfe der Nelder-Mead-Methode und führt zuvor eine eindimensionale Optimierung durch, wenn es keine vorherige Lösung gibt. In der Realität sind Sie möglicherweise nicht an das vorherige Ergebnis gebunden, sondern wenden die eindimensionale Optimierung ständig an. Die Strategie kann unterschiedlich sein und hängt von bestimmten Bedingungen ab.
Der Einfachheit halber wird die Lösung in Metern ausgeführt, wobei vor dem Start der Lösung alle Koordinaten an das lokale System übertragen werden, wobei sich der Ursprung im Mittelpunkt der Navigationsbasis befindet. Nach dem Lösen wird das Ergebnis wieder in geografische Längen- und Breitengrade übersetzt (Längengrad ist X und Breitengrad ist Y). Um Grad in Meter und zurück zu übersetzen, enthält die Navigationsklasse die Methoden GetDistance2DDeg und Meters2Deg.
Aber wie Sie wissen, ist eine Theorie ohne Praxis tot, und es ist Zeit, zu den Ergebnissen von Feldversuchen überzugehen.
Lassen Sie uns die Theorie mit praktischer Verifikation wiederbeleben
Nach alter Tradition führen wir Tests an der
Mündung des Pichuga durch . Es ist ein bequemer Ort, es gibt Tiefen von bis zu 30 Metern und eine ziemlich komplizierte Wasserfläche.
Der beklagte Leuchtturm ist auf einem speziellen Schaftständer montiert (Schaumschaumbalkone und ein Anker, der der gesamten Struktur hilft, aufrecht zu bleiben, waren nicht im Rahmen enthalten):
Abbildung 11 - Beacon-Responder „Bottom Station“Die Installation des Leuchtturms wurde auf
Video gefilmt, sie wurden nicht ein wenig mit dem Licht berechnet und vergaßen, eine Taschenlampe mitzubringen, so dass der Moment des Bodenkontakts in der Dunkelheit verborgen blieb.
Während sie testen wollten, gaben sie dem Boot einen Namen:
Abbildung 12 - „Palych“ in der natürlichen UmgebungAm „Palychu“ -Riegel befestigten Nylonbinder ein Stück von der Angelrute, an der sich das RedGTR-Modem befindet (um nicht abzuhängen und aufzutauchen).
Das Experiment bestand darin, dass das Leuchtfeuer des Angeklagten unten installiert ist, nur ein kleiner Schwimmer ragt heraus, während „Palych“, vom Ufer aus gesteuert, in großen Kreisen um das Wassergebiet läuft und die Fernbedienung regelmäßig vom Angeklagten etwas verlangt, zum Beispiel seine Tiefe . Alle Daten werden in das Protokoll geschrieben und alles wird entsprechend dem tatsächlichen Stand der Dinge auf dem Bildschirm angezeigt. So:
Abbildung 13 - Ein Screenshot der Fernbedienungssoftware mit der Flugbahn des Bootes und den berechneten Positionen des Responder-Beacons (die am besten berechnete Position wird rot angezeigt).Wie aus Abbildung 13 ersichtlich ist, befand sich der Leuchtturm in einer Tiefe von 13,2 m und die Wassertemperatur in dieser Tiefe betrug 24,1 ° C.
Abbildung 14 - Importieren empfangener Titel in GoogleEarthIn diesem Fall ein gutes Ergebnis zu erzielen, dauerte etwa 15 Minuten, um von der Kraft zu schwimmen.
Im zweiten Versuch wurde der Leuchtturm in einer Tiefe von 16,5 Metern installiert, wo der erwartete etwas kälter war - nur 22,6 ° C.
Abbildung 15 - Das Ergebnis der Bestimmung der Position des Responder-Beacons im zweiten Experiment auf dem Bildschirm der FernbedienungssoftwareIn diesem Fall haben wir uns aufgrund des akuten Zeitmangels nicht mit der korrekten Beurteilung der Genauigkeit befasst (tatsächlich verursachten diese lustigen Tests eine gewisse Reibung beim Management, weil sie von der Arbeit gerissen wurden) und waren zufrieden, dass das Schiff zum Schwimmer ging (dieser Moment ist am
ersten zu sehen)
Spur ), dann stimmte in Bezug auf seine Position vollständig mit der besten Lösung überein, und die Entfernung stimmte mit der Tiefe überein (mit dem Unterschied zwischen den Tiefen des Antwortenden und dem auf dem Schiff installierten Modem). Die Punkte, an denen die Beacons zurückgesetzt wurden, wurden festgelegt, und die Diskrepanz zwischen der berechneten Position und den Entladungspunkten liegt im Bereich von 2-3 Metern, was zusätzlich die Funktionsfähigkeit des Systems bestätigt.
Generell können wir sagen, dass dieser Proof-of-Concept erfolgreich abgeschlossen wurde!
Wir haben wahre Freude und Sonnenbrand erhalten, beantworten gerne Fragen und hören Kritik!
Nachwort
Die traurige Tatsache ist, dass die in diesem Experiment verwendeten Modems, obwohl sie für die Standards des Weltmarktes für hydroakustische Kommunikation sehr billig sind, für Amateure immer noch nicht sehr zugänglich sind.
Um nicht unbegründet zu sein, werde ich einen Link zu Miss Bensons
hervorragender Arbeit geben , die auf Seite 54 des PDF oder 36 der Dokumentennummerierung ein interessantes Schild mit Preisen für einige Sonarmodems ab 2010 enthält. Solche Dinge. (In der Tabelle ist ein kleiner Fehler aufgetreten. Der Bereichskommunikationsbereich für das von ihr entwickelte Modem wird in Metern angegeben, während die Überschrift der Spalte km lautet.)
Die gute Nachricht ist, dass wir plötzlich Modems entwickelt haben, die fast alles gleich machen können (ein bisschen kleiner (tatsächlich das kleinste auf der Welt, und vor ihnen waren das kleinste auch unser - aus diesem Artikel), die Kommunikationsreichweite ist kürzer , niedrigere Übertragungsgeschwindigkeit), und nach unseren Schätzungen sind sie für wohlhabende Enthusiasten bereits ziemlich erhebend. Im Moment sind Elektronik und Firmware vollständig fertig und wir vervollständigen die Gehäuselösung. Am Ende der Entwicklung werden wir einen Artikel mit den Ergebnissen einer experimentellen Verifikation veröffentlichen.
Achtung! Umfrage: