Vielen Dank für Deine rasche Antwort! Fragen zu Deinen Lösungen: Kennt die Plattform ihre aktuelle Position? Wie ist die Matrix definiert? Wie erkennt die Plattform die Koordinaten?
Vielen Dank für Deine rasche Antwort! Fragen zu Deinen Lösungen: Kennt die Plattform ihre aktuelle Position? Wie ist die Matrix definiert? Wie erkennt die Plattform die Koordinaten?
das siehst du am besten und genauesten, wenn du dir dort den Code ansiehst.
Die momentane Postion wird über unabh. Threads (Multithreading) ständig in real-time aus Odometrie und IMU-Daten berechnet und die Bewegungsänderungen (Winkel/Länge, also quasi Polarkoordinaten-Änderungen) in kartesische Koordinaten umgerechnet. Bezugssystem ist die geografische (Kompass-) Kartengeometrie, also 90° versetzt und im Drehsinn negativ zu mathematischen Koordinaten, damit die Bewegungen und Positionen auch sofort kompatibel zu GPS-Daten sind/wären.
Per Default ist der Nullpunkt des Koordinatenkreuzes der allererste Startpunkt (also nach dem Einschalten und Hochfahren des Systems), es sei denn, man definiert andere Defaults (z.B. aus GPS, oder mutwillige, ganz andere als rel. Bezugssystem).
Wenn ein Kompass verwendet wird (wie bei mir entweder zusätzlich zum Gyro oder den eingebauten im IMU), dann berechnet das System seine Ausrichtung hier nach, also absolut.
Damit bezieht sich dann das goto(x,y) immer auf den relativen Nullpunkt, will man eine absolute geografische Position anfahren, kann man das aber ebenso ganz einfach über die x,y offsets machen (die auch für den rel. Nullpunkt dann identisch sind), und Richtung nach vorn ist immer Kompass-Heading (Kompasskurs).
Ich habe bisher aber immer ausschließlich den relativen Nullpunkt verwendet (Startpunkt (0,0) für die relativen Koordinaten im jeweiligen Zimmer.
- - - Aktualisiert - - -
PS,
beim Lego-Modell mit getrenntem Gyro + Kompass werden alle Sensordaten für Strecke+Richtung (inkl. Odometrie) per einfacher statistischer Filter (Lowpass, Median)gewichtet und nach Plausibilität gefiltert (Ausreißer eliminieren, Gyro Drift beseitigen, Werte glätten), beim IMU (Arduino, Raspi) erledigt das für die Fahrtrichtung der im IMU eingebaute Signalprozessor per eigenem Kalmanfilter, wobei dann also nur die fusionierten IMU-Daten für die Richtung und nur die Odometrie-Daten für die Strecke verwendet werden (arithm. Mittel aus beiden Radencodern).
Geändert von HaWe (10.05.2017 um 15:14 Uhr)
Merci!
Code werde ich mir anschauen
Odometrie ist das Zauberwort. Hier noch zwei Beispielen :
Ohne weitere Sensoren haben sie wel einen "Drift" von ihre Position durch Schlupf und andere Factoren.
Guten Morgen,
ich bin mir in der Zwischenzeit nicht mehr sicher, ob in meiner Aufgabenstellung nicht die Endpositionierung markierungsgestützt einfacher und vor allem exakter wäre. Ich würde in diesem Fall das Bewegungsfeld (ca 2x2m) als Matrix mit 10x10cm Feldern definieren und in diesen den exakten Mittelpunkt als Zielpunkt markieren; navigiert wird dann mit goto (x,y), positioniert wird jeweils auf dem markierten Mittelpunkt
Liebe Grüße aus Wien
Georg
Lesezeichen