GY-80 Modul (Kurs/Neigung)

Hallo Sven,

ich entwickle mit Eclipse (Android SDK) - das Entwickeln der Oberfläche ist kein Problem... es ist letzten Endes Fleißarbeit (ob mit 3rd-party Tool oder ohne), also Algorthmen für die Kalibrierung finden, die Sachen alle miteinander verbinden etc. - Werde wohl bald einen funktionierenden Prototypen haben. Dann ist endlich Schluß mit der umständlichen Kalibrierung über PC :p (und qualitativ beurteilen kann man seine Meßwerte zusätzlich auch noch)

Gruss,
Alexander
 
Hallo Alexander,

ich habe für die Kalibrierung eine Java Anwendung geschrieben. Den Algorithmus habe ich von der Magneto Homepage übernommen, für die Matrizenrechnungen habe ich die fertige Java Bibliothek Jama verwendet. Aufwand war ca. 1-2 Tage bis es funktioniert hat. Wie die Portierung auf eine Android App weiss ich nicht, aber falls ich helfen kann schreibe eine eMail

lg
Hannes
 
Hallo Hannes,

ich verwende den FitEllipsoid-Algorithmus von Yury Petrov (Java Version) und erhalte damit zurück:

centre, radii, eigenvectors of the axes, the 9 variables of the ellipsoid equation and the EVD

Mit dem Offset und den Radieen kann ich die Meßwerte schon super kalibrieren solange die Hauptachsen mit den Kompaßachsen übereinstimmen (der Ellipsoid also nicht gedreht ist). Was mir noch fehlt ist die Rotation.

Ich werde Dir eine E-Mail schreiben...

Gruss,
Alexander
 
Hier schon mal ein kleiner Vorgeschmack - was noch fehlt ist "Kleinkram" (z.B. Bluetooth-Kommunikation, also Einlesen der Rohdaten via Bluetooth vom Roboter und zurückschicken der Kalibrierungsparameter an den Roboter)...

http://www.youtube.com/watch?v=j_4Rz_iarnw&feature=youtu.be
 
Hallo zusammen,

das Kompaß-Kalibrierungstool ist nach (einigen schlaflosen Nächten) endlich fertig geworden :) ('ArduMag'). Da ich es zukünftig pflegen will/muss, habe ich es als App unter Android Play abgelegt (ich hoffe das ist OK so - die pfodApp gibt es ja auch nicht völlig umsonst...)

Ardumower-Code (IMU 0.5 und Ardumower 0.9.1.5) sind passend aktualisiert worden.

Die Anleitung auf der Projektseite ist ebenfalls aktualisiert worden.

Gruss,
Alexander

PS: Ich würde mich wahnsinnig freuen, wenn Ihr auf der Google Play Seite der ArduMag-App einen kurzen Erfahrungsbericht schreibt (oder zumindest eine Bewertung abgebt) -Danke :)
 
Hallo Alexander,

ich finde es völlig ok, wenn deine Arbeit honoriert wird.

Bei dieser Gelegenheit nochmal ein Dankeschön für die vielen unentgeltlichen
Ratschläge, Ideen und Umsetzungen!


Gruß
Roger
 
In Ardumower-Version 0.9.1.7 kann man sich nun die Daten plotten lassen, welche der IMU-Nano berechnet, d.h. Orientierung (Yaw/Pitch/Roll) und Beschleunigung (derzeit wird diese nur in Fahrtrichtung vom Modul ermittelt)


imu_plot.jpg

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/imu_plot.jpg/
 
Zuletzt bearbeitet von einem Moderator:
IMU v0.5 enthielt leider einen Fehler (Kalibrierungs-Matrix falsch multipliziert) - dies wurde in IMU v0.6 korrigiert. Desweiteren wurde der Algorithmus "Sebastian O.H. Madgwick AHRS Fusion code" zur Berechnung von Yaw, Pitch, Roll zum Laufen gebracht und auf diesen umgestellt (Pitch/Roll-Werte sind damit stabiler).

Ich habe festgestellt, dass man möglichst viele Meßwerte zum Kalibrieren verwenden sollte (möglichst 2000), damit man einigermaßen ordentliche Ergebnisse erzielt.

Zur Überprüfung der Kalibrierung kann man folgendes machen: Über die pfodApp die manuelle Steuerung so einstellen, dass der Roboter gleichmäßig (langsam) im Kreis fährt (ggf. die maximale Motorleistung (MAX_MOTOR_SPEED) unter Settings/Motor etwas heruntersetzen). Dann in das "IMU Plotting" gehen. Die Kurve für "Yaw" (Kurs) sollte nun wie eine Gerade verlaufen (falls nicht, hat man später Abweichungen). Bei mir läuft sie noch nicht ganz exakt gerade (vermutl. noch zu wenig Meßwerte) - das macht sich beim Bahnen mähen dann in ein paar Grad Abweichung bemerkbar. Wenn wir das über die Kalibrierung nicht in den Griff bekommen, werden wir als nächstes den Vorschlag von Hannes umsetzen (Deviationstabelle für die Abweichungen erstellen - dazu würde der Roboter automatisch einen Vollkreis fahren bis er wieder denselben Kurs erreicht - über die gemessene Zeit könnte er dann für jedes Zeitintervall die Kursabweichung ermitteln ...)

imu_plot2.jpg

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/imu_plot2.jpg/
 
Zuletzt bearbeitet von einem Moderator:
Hallo Sven,


Anleitung zum Kalibrieren:
wir müssen noch herausfinden, welches die optimalen Bewegungen für eine Kalibrierung sind. Die einen sagen "drehen nacheinander um alle Achse", die anderen sagen "mehrmals in einer Acht drehen".

Hier ist ein Beispiel für das in einer Acht drehen: http://www.youtube.com/watch?v=3XVmdCtJO10
Hier auch noch ein Bild dazu: http://i.msdn.microsoft.com/dynimg/IC619212.png
Wichtig ist vermutlich: die Meßwerte müssen gleichmäßig verteilt sein

Die App (ArduMag) versucht Ausreißer aus den Meßwerten herauszufiltern, daher werden in der Regel weniger verwendet als in den Meßwerten vorhanden (oben links: "points x (of y)", x ist die Anzahl der verwendeten Meßwerte, y die vollständige Anzahl). Warum allerdings nach dem Kalibrieren bei dir deutlich mehr gefiltert werden ist mir nicht ganz klar. Evtl. noch ein kleiner Fehler... Du kannst die vollständigen Meßwerte übrings speichern (Menu->Data->Save) und jederzeit zu einer Messung hineinladen (Menu->Data->Load) bzw. die Messung löschen (Menu->Data->Clear).
Auch kann man zum Spaß die Meßwerte des im Android eingebauten Kompaß verwenden (Menu->Sensor).

Ein weiterer Aufruf von "Menu->Sensor" bzw. "Menu->Bluetooth" beendet die Kommunikation mit der entsprechenden Datenquelle.


Bewertung:
Eine Bewertung hilft anderen Benutzern bei der Kaufentscheidung ;) - wenn ich sehe, dass eine App schlechte Noten bekommen hat (oder gar keine), wäre ich vorsichtig ;)

Gruss,
Alexander
 
Hallo Alexander,
ich komme mal wieder nicht weiter.
Wenn ich die IMU 0.6 oder 0.6.1 lade, reagiert der Gyro nicht (Anzeige Yaw, Pitch usw. "0")
Lade ich die Version 0.5 zeigt der Gyro diese Werte wieder an (Hardware wurde nicht geändert).

Ist es nicht mehr erforderlich, den Beschleunigungssensor extra zu kalibrieren, wenn man mit der Ardumag- App kalibriert? Die Datei "imucal.h" ist ja nicht mehr vorhanden.

Danke im voraus und Gruß Rolf
 
Hallo Rolf,

öffne mal die serielle Konsole (CTRL+SHIFT+M in der Arduino IDE) am IMU Nano. Dort dann einmal 'r' + ENTER drücken, um alle Kalibrierungsdaten zu löschen. Yaw und Pitch sollten nun wieder angezeigt werden?

Die Kalibrierung des Beschleuinigungssensor wird weiterhin über die serielle Konsole vorgenommen (Details stehen auf der Projektseite).

Sämtliche Kalibrierungsdaten werden nun im EEPROM des Arduino festgehalten (es braucht nichts übertragen werden).

Mit 'g' + ENTER kann man sich auch die Gyro-Rohdaten anschauen.

Gruss,
Alexander
 
Hallo Alexander,
vielen Dank für die schnelle und kompetente Hilfe. Der Gyro funktioniert und ich bin begeistert. Jetzt erst einmal ein bisschen Feinarbeit, dann sende ich ein paar Bilder.

Gruß Rolf
 
Hallo zusammen,

falls Ihr den Kompaß mit ArduMag kalibriert habt und dennoch Abweichungen zwischen Nord/Süd um mehr als 180 Grad feststellt, so ist das ein bekanntes Problem - die Firma Autonnic Research (Flux Gate Kompaß-Module) hat mir mitgeteilt, dass die Korrektur über "Ellipsoid-zu-Kugel" nicht perfekt ist, da es nicht 100% zum realen Modell paßt, d.h. in der Realität hat man wohl keinen perfekten Ellipsoid sondern eine leichte Kartoffel...

Wie dem auch sein, wir werden als nächstes die Idee umsetzen welche Hannes und diese Firma beide anwenden, d.h. eine nachgelagerte Kalibrierung "Kurs-Tabelle", bei der der Mäher einmal exakt 360 Grad um sich selbst dreht. Er startet also bei Meßwert x und dreht gleichmäßig so lange bis er wieder denselben Meßwert x erhält (das sind dann 360 Grad). Dann werden die Kurs-Fehler für jedes Zeitintervall berechnet.

Gruss,
Alexander
 
Die im letzten Beitrag skizzierte Idee der nachgelagerten Kurskorrektur-Tabelle ist prototypisch umgesetzt und wird nun ausführlich getestet - man erkennt im IMU Plot sehr schön dass die Winkel eine Gerade ergeben während der Roboter sich gleichmäßig um sich selbst dreht (bzw. einen Kreis fährt), die Winkel also einen exakten Kreis beschreiben (wie man es von einem Kompaß erwartet):
http://www.ardumower.de/images/ardumower_imu_plotting.jpg
Endlich stimmen die Kurse des Kompaß zueinander :)
 
@Sven: hört sich vielleicht verrückt an, aber ich werde evtl. noch als nächstes die neue Deviation-Kalibrierung (für Schritt 2) in Kombination mit der alten Min/Max-Methode statt mit ArduMag (für Schritt 1) ausprobieren.

Schritt 1: ArduMag Kalibrierung
Schritt 2: Deviation Kalibrierung

Wenn das genauso exakte Winkel ergibt, können wir uns den Umweg (für Schritt 1) über die ArduMag einsparen und den unnötigen Komplexitätsgrad (Fehlerquellen etc.) an dieser Stelle reduzieren.

Schritt 1: Min/Max Kalibrierung
Schritt 2: Deviation Kalibrierung
 
@Alexander

Ich habe heute versucht meine IMU zu kalibrieren. In der Anleitung (http://www.ardumower.de/index.php/de/anleitungen/2013-11-23-19-50-19/kompass-beschleunigung-gyro) ist da von einem Menupunkt (pfodApp: "Settings->IMU->Start Com Cal Dev") die Rede, doch der fehlt in meiner Software. Ich habe 0.9.2.2 und 0.6.0.1 IMU installiert.

Ist da die Webseite nicht auf dem neusten Stand oder brauche ich eine neuere Software?

Vielen Dank
Rene
 
Hallo Rene,

der von Dir genannte Teil der Dokumentaiton ist bereits für die nächste Version - diese wird derzeit noch ausführlich getestet und sodann bereitgestellt.

Gruss,
Alexander
 
Hallo,

ich habe 2 Fragen:

1.) Ist ds GY-80 Modul zusammen mit dem Arduino Nano ein Standalone Modul dass mir über I2C den fertigen Kurs liefert?

2.) wie verhält sich dieses System wenn es auf einmal systematische Abweichungen gibt?


Mir ist gerade aufgefallen dass der Kompass in der Nähe der Hausmauern den Kurs um gute 30° ändert, das erschwert jede Navigation.
Diese Abweichung bleibt bis der Roboter ca 3m von der Mauer weg ist. Kann dieses Modul hier helfen?

LG!
 
Oben