Ich prüfe die Möglichkeit, mehrere iBeacons zu verwenden, um eine "raue" Position in Innenräumen zu erreichen. Die Anwendung ist eine Art "Museums" -Einstellung, und es wäre einfacher, ein Raster mit Positionen für die verschiedenen Objekte als einzelne Beacons zu bilden (obwohl dies möglicherweise auch nicht unmöglich ist).
Gibt es Beispiele, Erfahrungen mit der Verwendung mehrerer Beacons zum Triangulieren an einen bestimmten Ort oder eine Logik, die mir beim Schreiben selbst hilft?
bluetooth-lowenergy
ibeacon
Luuk D. Jansen
quelle
quelle
Antworten:
Ich habe einige Experimente durchgeführt, um mit drei Leuchtfeuern eine genaue Position zu erhalten.
Ergebnisse der Trilateration
Leider waren die Ergebnisse qualitativ sehr enttäuschend. Es gab hauptsächlich zwei Probleme:
Mögliche Lösungen
Nachdem ich mit einem Apple-Ingenieur gesprochen habe, der mich aktiv davon abgehalten hat, diesen Weg zu gehen, ist die Option, die ich derzeit eher nutzen möchte, Brute Force. Versuchen Sie, alle X Meter ein Beacon einzurichten (X ist der maximale Fehler, der im System toleriert wird), damit wir auf diesem Beacons-Raster die Position eines bestimmten Geräts verfolgen können, indem wir berechnen, welches Beacon auf dem Raster dem Gerät am nächsten liegt, und dies annehmen Das Gerät befindet sich in derselben Position.
Trilaterationsalgorithmus
Der Vollständigkeit halber teile ich jedoch unten die Kernfunktion des Trilaterationsalgorithmus. Es basiert auf Absatz 3 ("Drei Entfernungen bekannt") dieses Artikels .
quelle
/ (2*(b.y-a.y))
Teil, der eine 0 erzeugt, dann eine Division durch einen Nullfehler.Hier ist eine Open-Source-Java-Bibliothek, die die Trilateration / Multilateration durchführt: https://github.com/lemmingapex/Trilateration
Es verwendet einen beliebten nichtlinearen Optimierer für kleinste Quadrate, den Levenberg-Marquardt-Algorithmus von Apache Commons Math.
Die meisten wissenschaftlichen Beispiele, wie das auf Wikipedia , behandeln genau drei Kreise und setzen vollkommen genaue Informationen voraus. Diese Umstände ermöglichen viel einfachere Problemformulierungen mit genauen Antworten und sind für praktische Situationen normalerweise nicht zufriedenstellend.
Das Problem im euklidischen Raum R 2 oder R 3 mit Abständen, die Messfehler, eine Fläche (Ellipse) oder ein Volumen (Ellipsoid) von Interesse enthalten, wird normalerweise anstelle eines Punktes erhalten. Wenn anstelle einer Region eine Punktschätzung gewünscht wird, sollte der Flächen- oder Volumenschwerpunkt verwendet werden. Der R 2 -Raum erfordert mindestens 3 nicht entartete Punkte und Abstände, um eine eindeutige Region zu erhalten. und in ähnlicher Weise erfordert der R 3 -Raum mindestens 4 nicht entartete Punkte und Abstände, um eine eindeutige Region zu erhalten.
quelle
Ich habe das untersucht. Der Begriff, den Sie wollen, ist Trilateration. (In der Triangulation haben Sie Winkel von 3 bekannten Punkten. In der Trilateration haben Sie Abstand von 3 bekannten Punkten.) Wenn Sie es googeln, sollten Sie mehrere Artikel finden, darunter einen im Wiki. Es beinhaltet das Lösen eines Satzes von 3 simultanen Gleichungen. Die Dokumente, die ich gesehen habe, waren für die 3D-Trilateration gedacht - 2D ist einfacher, weil Sie einfach den Z-Term löschen können.
Was ich fand, war abstrakte Mathematik. Ich habe mir noch nicht die Zeit genommen, den allgemeinen Algorithmus in bestimmten Code abzubilden, aber ich habe vor, ihn irgendwann anzugehen.
Beachten Sie, dass die Ergebnisse, die Sie erhalten, SEHR grob sind, insbesondere in einem anderen als einem leeren Raum. Die Signale sind schwach genug, dass eine Person, eine Statue oder irgendetwas, das die Sichtlinie blockiert, Ihre Entfernungswerte erheblich erhöht. Möglicherweise haben Sie sogar Orte in einem Gebäude, an denen konstruktive Eingriffe (meistens von den Wänden) dazu führen, dass einige Orte so viel näher gelesen werden, als sie tatsächlich sind.
quelle
Eine genaue Positionierung in Innenräumen mit iBeacon ist aus folgenden Gründen eine Herausforderung:
Auf der anderen Seite, wenn Sie könnten IBeacon Frequenz größer als 10 Hz erhöhen (was ich kann zweifeln), dann ist es möglich zu haben 5m oder höhere Genauigkeit geeignete Verarbeitungsverfahren. Erstens sind triviale Lösungen, die auf dem Inverse-Square-Gesetz basieren , wie die Trilateration, oft nicht gut, da in der Praxis die Distanz / RSSI-Beziehung für verschiedene Beacons aus dem obigen Grund oft weit vom Inverse-Sqare-Gesetz entfernt ist. Solange der RSSI für ein bestimmtes Beacon an einem bestimmten Ort relativ stabil ist (was normalerweise der Fall ist), können Sie einen Ansatz verwenden, der als Fingerabdruck bezeichnet wird , um eine höhere Genauigkeit zu erzielen. Eine übliche Methode für den Fingerabdruck ist kNN ( k-Nearest Neighbor ).
Update 2014-04-24
Einige iBeacons können mehr als 1 Hz senden, z. B. Estimote verwendet standardmäßig 5 Hz. Laut diesem Link jedoch : " Dies ist eine Apple-Einschränkung. IOS gibt jede Sekunde ein Beacons-Update zurück, unabhängig davon, wie häufig das Gerät Werbung macht. " Es gibt einen weiteren Kommentar gibt (wahrscheinlich aus dem Estimote Anbieter) sagen : „ Unsere Baken viel schneller übertragen können und es können Ergebnisse und Messung verbessern “. Ob eine höhere iBeacon-Frequenz von Vorteil ist, ist nicht klar.
quelle
Wenn Sie so etwas wie ich sind und keine Mathematik mögen, möchten Sie vielleicht schnell nach "Indoor Positioning SDK" suchen. Es gibt viele Unternehmen, die Indoor-Positionierung als Service anbieten.
Schamloser Stecker: Ich arbeite für indoo.rs und kann diesen Service empfehlen. Es umfasst auch das Routing und dergleichen zusätzlich zur "nur" Innenpositionierung.
quelle
Für diejenigen, die eine
@Javier Chávarri
Trilaterationsfunktion fürAndroid
Geräte benötigen (um Zeit zu sparen):quelle
Debugging
und stellen Sie sicher , dass Sie diese Orte verwenden.Mein Architekt / Manager, der den folgenden Algorithmus geschrieben hat:
Nachdem ich es getestet hatte, fand ich es auf 5 Meter genau.
Bitte kommentieren Sie mir Ihre Tests, wenn wir sie verfeinern können.
quelle
Ich habe einen sehr einfachen Fingerabdruck- Algorithmus für Android 4.4 implementiert , der in einer relativ "schlechten" Umgebung getestet wurde:
Die Genauigkeit scheint in 5-8 Metern und hängt davon ab, wie ich diesen 3 Ibeacon-Sender platziert habe. Der Algorithmus ist recht einfach und ich denke, Sie können einen selbst implementieren. Die Schritte sind:
Wenn Sie mit der Positionierung beginnen, ist dies nur eine Umkehrung der Schritte.
quelle
Wir versuchen auch, mit iBeacons den besten Weg zu finden, um jemanden in einem Raum genau zu lokalisieren. Die Sache ist, dass die Beacon-Signalleistung nicht konstant ist und von anderen 2,4-GHz-Signalen, Metallgegenständen usw. beeinflusst wird. Um maximale Präzision zu erreichen, ist es notwendig, jedes Beacon einzeln zu kalibrieren und sobald es in die gewünschte Position gebracht wurde . (und machen Sie einen Feldtest, um Signalschwankungen festzustellen, wenn andere Bluetooth-Geräte vorhanden sind). Wir haben auch einige iBeacons von Estimote (das gleiche wie das Video von Konrad Dzwinel), und sie haben bereits eine technische Demo entwickelt, was mit den iBeacons gemacht werden kann. In ihrer App ist es möglich, ein Radar zu sehen, in dem iBeacons angezeigt werden. Manchmal ist es ziemlich genau, aber manchmal nicht (und es scheint, dass Telefonbewegungen nicht berücksichtigt werden, um Positionen zu berechnen).http://goo.gl/98hiza
Obwohl theoretisch 3 iBeacons ausreichen sollten, um eine gute Präzision zu erzielen, werden in realen Situationen möglicherweise mehr Beacons benötigt, um die gewünschte Präzision sicherzustellen.
quelle
Was mir wirklich geholfen hat, war dieses Projekt auf Code.Google.com: https://code.google.com/p/wsnlocalizationscala/. Es enthält viel Code, mehrere Trilaterationsalgorithmen, alle in C # geschrieben. Es ist eine große Bibliothek, aber nicht wirklich dazu gedacht, "out-of-the-box" verwendet zu werden.
quelle
Bitte überprüfen Sie die Referenz https://proximi.io/accurate-indoor-positioning-bluetooth-beacons/
Das Proximi SDK kümmert sich um die Triangulation. Dieses SDK bietet Bibliotheken zur automatischen Verarbeitung der gesamten Logik für die Beacon-Positionierung, Triangulation und Filterung im Hintergrund. Zusätzlich zu Beacons können Sie IndoorAtlas, Wi-Fi, GPS und Mobilfunkpositionierung kombinieren.
quelle
Ich fand die Lösung von Vishnu Prahbu sehr nützlich. Ich habe es auf c # portiert, wenn jemand es braucht.
quelle
Alternative Gleichung
quelle