PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pozyx Positionierung/Lokalisierung (Arduino, Raspi)



HaWe
27.04.2018, 13:29
hallo,
ich interessiere mich für das pozyx System zur Positionierung/Lokalisierung (Arduino, Raspi).
Leider ist es sehr teuer und daher sehr riskant, wenn ich es nicht zum Laufen kriege.

C++ wird ja nur für Arduino angeboten, und für den Raspi nur Python, was für mich sinnlos ist. Ich werde daher das Arduino-Shield verwenden und den Arduino seriell mit dem Pi verbinden.

Links:
https://www.pozyx.io/
https://github.com/pozyxLabs/Pozyx-Arduino-library/tree/master/examples
https://github.com/pozyxLabs/Pozyx-Arduino-library/blob/master/examples/ready_to_localize/ready_to_localize.ino

Was ich nicht verstehe:
wie werden die 4 Baken (anchors) mit ihren echten Raumkoordinaten initialisiert, auf die dann das mobile Shield (tag) zugreift?
Oder geht das vollautomatisch, das hieße: ich könnte die 4 Baken "irgendwie x-beliebig" irgendwo im Haus an die Wand hängen, und sofort wüsste alles und jeder fürs eigene Programm, wo die absolut und relativ zu einander hängen und wo sich relativ dazu jetzt der Robot mit seinem "tag" befindet?

- - - Aktualisiert - - -

edit:
scheint hier erklärt zu sein, steige aber noch nicht ganz durch:
https://www.pozyx.io/Documentation/Tutorials/ready_to_localize/Arduino


edit2:, doch, so langsam wirds klarer, zumindest das manuelle Init.
Kann oder scheint aber doch auch was automatisches zu geben....?

Holomino
27.04.2018, 17:08
Spekulativ und im Vergleich zum GPS:
Beim GPS wird die Signallaufzeitdifferenz mehrerer synchronisiert sendender Satteliten ausgewertet.
Da das pozyx zweifellos keine kühlschrankgroßen Atomuhren zur Synchronisation auf den Baken sitzen hat, werden wohl durch aktives Rücksenden die Laufzeiten und damit die Abstände bestimmt.
Wenn denn eine Bake sowohl senden, als auch empfangen kann, kann sie dies sicherlich auch zu anderen Baken. Und ich könnte mir vorstellen, wenn die Abstände jeder Bake zu den anderen drei Baken bekannt sind, dass mit ein wenig Rechnerei dann auch wieder die x,y,z-Positionen der Baken relativ zueinander dabei herauskommt.

Rein spekulativ, aber wie kann es anders funktionieren?

Nachtrag:
Ich kann's mir nicht nur vorstellen. Ich weiß jetzt auch, wie 's gehen kann:
Über die Abstände AB AC BC legst Du ein Dreieck z.B. in die YZ-Ebene (eindeutige Beschreibung des Dreiecks über die drei Seitenlängen).
Die drei Abstände AD, BD und CD führen zu zwei achssymmetrischen Schnittpunkten für die Position der D-Bake.
Welchen von den zwei Schnittpunkten man wählt ist eigentlich egal, er hat nur im Vorzeichen der X-Achse einen Einfluss.
Das dabei die Bezüge zu den realen Achsrichtungen X(Vorwärts/Rückwärts) ,Y(Links/Rechts) und Z(Oben/Unten) zum Teufel gehen, ist klar. Aber da scheint das pozyx die üblichen 6 Freiheitsgrade zur Transformation ins Reale zu unterstützen.

HaWe
02.05.2018, 20:30
ich meinte nicht, wie es das System intern macht, sondern wie man die Auto-Initialisierung der Baken für ihr aufgespanntes Koordinatensystem ( im Gegensatz zur manuellen Methode ) als Benutzer per Programmcode veranlassen kann

i_make_it
03.05.2018, 07:23
Auf der Webseite wird ja darauf nicht näher eingegangen. Nur das es experimentell ist.
Da Configuration of the UWB parameters (Arduino only) (https://www.pozyx.io/Documentation/Tutorials/uwb_settings) da steht und dort aktive Einstellungen an den Anchors geändert werden, könnte man auf die Idee kommen, das man Auto-initialisierung nur von einem Arduino aus starten kann.
Mit POZYX_DISCOVERY_ANCHORS_ONLY kann man auf jeden Fall die Anchors finden.
in wie weit die Remote Befehle auch bei den Anchors funktionieren lässt sich auch nicht finden.

Die zugängliche Doku ist etwas mau.

Holomino
03.05.2018, 11:01
ich meinte nicht, wie es das system intern macht, sondern wie man die auto-initialisierung der baken für ihr aufgespanntes koordinatensystem ( im gegensatz zur manuellen methode ) als benutzer per programmcode veranlassen kann
rtfm:
Pozyx_devices_calibrate

i_make_it
03.05.2018, 12:02
rtfm:
Pozyx_devices_calibrate

Wow, ich hatte ja alle Seiten einmal angeklickt, aber unter "Device List" als Überschrift habe ich "Anchor calibration" nicht vermutet (deshalb auch nicht so weit runter gescrollt).
Hätte ich fürs Lesen des Abschnitts Positioning (direkt oben drüber) etwa 5 Zeilen weiter runter gescrollt hatte ich es (wegen der farblichen Hervorhebung) gefunden.

Mein Fazit die Seite könnte eine Suchfunktion oder eine bessere Gliederung/ bessere Tags gebrauchen.

Holomino
03.05.2018, 14:11
Unter https://www.pozyx.io/Documentation/Datasheet/FunctionalDescription gefunden:
"Alternatively or it can be performed automatically by calling the function register POZYX_DEVICES_CALIBRATE. This function will automatically discover all neighboring pozyx devices and will estimate their relative coordinates."

Ich denke mal, das ist der Teil der "Doku", wo man anfangen sollte.


Total lustig: https://www.pozyx.io/Documentation/how_does_positioning_work (ganz unten):
We can't guarantee anything, because the performance depends very much on the environment the system is used in.When using four anchors the upper bounds are: - 35 …

Der Link geht leider ins Nirvana.

Oder in FAQ:
What is the range of the system?
The maximum range of the ultra-wideband signals is 100m in clear line-of-sight (LOS). In indoor environments this will be less due to obstructions such as walls. Our test have shown that the signal can usually penetrate 1 or 2 thick concrete walls.
Will heißen: Ins Nachbarzimmer geht. Von der Küche durchs Schlafzimmer ins Wohnzimmer ist grenzwertig.
Das deckt sich mit meinen Erfahrungen: Bei uns in der Küche ist die Umgebung so mit Moniereisen und Versorgungsschachtgittern zugepflastert, dass ich nicht mit WLAN drankomme. Nicht mal die Futaba FF7 (1km Reichweite im Freifeld), die mit Frequenzhopping und Burstsending die max. Sendeleistungsbeschränkung umgeht, kommt da durch Wände rein.

(Sprich: Aluhut brauch ich nicht, ich gehe bei mir in die Küche).

i_make_it
03.05.2018, 15:26
Unter Datasheet > Function Description hatte ich auch nachgesehen, aber halt nur bis Positioning runter gescrollt. Von Devicelist war da grade noch rechts im Bild "Device 2" zu sehen. Und unter der Beschreibung wie die Daten organisiert sind hatte ich "Anchor calibartion" nicht vermutet. also im Browser auf Back und nächste Seite.

Da das System mit UWB arbeitet, ist die Sendeleistung entsprechend beschränkt. Das da jeder Hauch von Dämpfung das aus bedeutet ist klar.
Wobei meine letzte Wohnung war EM-dicht. Haus aus Zementsteinen, die der Eigentümer selbst hergestellt hatte. Als Zuschlagstoff war Hochofenschlacke verwendet worden. WLAN: ein AP im Flur an der Decke vor Schalfzimmer und Küche und einer 8m weiter im Wohnzimmer. trotzdem war im BAD (Luftline 5m und 6m von den beiden AP's entfernt kein Empfang. Auf der Terasse auch nur Empfang in Sichtlinie (genau vorm Fenster oder vor der Tür) sobald Wand im Weg war, war tote Hose.
Handy- und Radioempfang in der ganzen Wohnung nur im Wohnzimmer nahe der Fenster.

Funkmodule an Roboterrn haben nur im selben Raum funktioniert oder ich habe eine Repeater Barke in jede Türöffnung stellen.

HaWe
03.05.2018, 20:24
rtfm:
Pozyx_devices_calibrate

so einfach ist das evtl doch nicht - es scheint so zu sein, dass das NICHT einfach per Arduino-Programm geht, sondern nur über eine sog. "Cloud-App":

"Arduino has the code for auto-calibrate but it does not run well. Manual calibration is advised. The cloud app does require an internet access and a dedicated computer to simulate a "positioning server" which we commonly have a dedicated device for on larger setups. "

Hmm, kommt mir irgendwie undurchsichtig vor. Aber naja, vlt klappt ja die manuelle Methode wenigstens zuverlässig, ich will ja nicht allzuoft mit den pozyx-Baken in andere Häuser umziehen....

Holomino
03.05.2018, 22:05
Dass die Autokalibrierung des Systems nicht so genaue Positionswerte liefert, wie die manuelle Eingabe der Bakenpositionen, liegt in der Natur der Sache. Jede Messung hat einen Fehler ("auf wenige Zentimeter genau"). Wenn schon die Positionen der Baken diesen Fehler beinhalten (weil nach dem gleichen Prinzip vermessen), wird die Positionsmessung der beweglichen Platine dadurch nicht unbedingt besser.

HaWe
03.05.2018, 22:45
Dass die Autokalibrierung des Systems nicht so genaue Positionswerte liefert, wie die manuelle Eingabe der Bakenpositionen, liegt in der Natur der Sache. Jede Messung hat einen Fehler ("auf wenige Zentimeter genau"). Wenn schon die Positionen der Baken diesen Fehler beinhalten (weil nach dem gleichen Prinzip vermessen), wird die Positionsmessung der beweglichen Platine dadurch nicht unbedingt besser.

nein, was ich meine ist, dass die autokalib. per Adruino absolut nicht zu gebrauchen ist, während die per cloaud app und Internet-remote-server immerhin brauchbar ist, wenn auch ungenauer als manuell.

HaWe
04.05.2018, 13:14
update, habe was gefunden:
https://pozyx.wistia.com/medias/8q36d53w53

gibts auch für Raspi C++ und MQTT:

https://www.pozyx.io/Documentation/get_started_cloud
https://www.instructables.com/id/10-CM-Accurate-Ultra-wide-Band-UWB-Positioning-for/