GY-80 Modul (Kurs/Neigung)

@Sven: das überlasse ich lieber Dir ;) Spaß beseite - ich hoffe nicht dass man das wirklich mit laufendem Messer machen muss - ohne Messer wäre ja noch ok!

PS: Aktueller IMU-Code und meine Ardumower Drive-By-Lane Version (sehr experimentell) liegen nun unter Downloads.
 
Manchmal gibt es Momente, da will man einfach wissen, ob sich der tagelange Aufwand (hier: Kompaß präzise machen) überhaupt lohnt, um ein bestimmtes Ziel zu erreichen. Heute war so ein Moment. Hier ist ein Video davon ("Mähen in Bahnen" - Code v0.7.5).

-Das Video wurde 3x schneller gedreht
-Dies ist KEINE ebene Fläche, sondern eine Hügelfläche mit Gefälle - ohne Kompaß würde der Roboter hier ständig vom Kurs abkommen (kreuz und quer fahren)
-Alles OHNE Odometrie, daher noch der zufällige Rasenversatz
-In den (noch zu langen) Pausen versucht den Roboter den genauen Umkehrkurs zu treffen (bzw. ein paar Grad daneben, damit Rasenversatz da ist) - beim Vorwärtsfahren korrigiert er dann exakt nach
-Die willkürliche Umkehr an einigen Stelle liegt an falsch eingestelltem Motorstrom (Roboter meint dort wäre Hinderniss)
-Ohne Mähmotor (der verfälscht den Kompaß noch...)

http://youtu.be/A-11khSzq1U
 
@Sven: Hallo Sven,

die Idee mit 2x 90 Grad hatte ich erst auch, mir dann aber gedacht, dass es mit einer nicht ganz vollständigen Drehung (z.B. 170 Grad) ja auch funktioniert, da er ja hinterher (beim Geradeausfahren) auch ständig nachkorrigiert.
Das eigentliche Problem ist ja eher, dass er nicht weiß wie weit er schon gefahren ist. Daher ist der Rasenversatz nicht kalkulierbar. Das geht m.E. nur über Odometrie. Bei 2x 90 Grad hätte man dasselbe Problem (Wie weit bin ich ohne Gefälle/bergauf/bergab gefahren?)
Wenn die Odometrie erstmal drin ist, sollte das nochmal wesentlich besser aussehen.
Wir können Deinen Ansatz ja auch mal ausprobieren!

Gruss,
Alexander
 
@Sven: echt? Ich stelle gerade fest, dass ich manuell einfach um 180 Grad drehe und dann mittig versetzt zurück mähe...(also on-the-fly korrigiere)

Ist aber wohl wirklich Geschmackssache :) ...
 
@Sven:

Genauigkeit: ich arbeite bereits an einer noch verbesserten Version des Kompaß - und zwar wird der Kurs bei schnellen Bewegungen zunächst über den Gyro berechnet (aufaddiert) und erst langsam wird dann dieser ermittelte Kurs über den Kompaß nachkorrigiert (die Nachkorrektur erfolgt übrings über eine digitale Regelung dessen beide Regelparameter von oben im IMU Code einstellen kann). Wenn man denn Kompaß schnell oder über einen größeren Winkel dreht, sieht man sehr schön dass der Gyro nicht exakte Werte liefert (der Kompaß stärker nachkorrigieren muss). Dies versuche ich noch zu verbessern.

Magnetfelder: Desweiteren ist mir aufgefallen, dass verdrillte Kabel bei Motoren das Magnetfeld dieser vermindern. Das könnte die Lösung für den Mähmotor sein. Ich muss das aber noch ausführlicher testen/analysieren.

Magneto: ja, es gibt eine C-Code Version des Codes auf der Mangeto-Website. Man könnte dies im Prinzip auch mit Processing umsetzen. Oder: warum nicht als Android-App? :) Dann könnte man ohne Kabel kalibrieren.
Dies hat m.E. niedrigste Prioriät, da zunächst o.g. Problem zu lösen sind - evtl. findet sich ja jemand, der das gerne als Android-App/Processing-Programm entwickelt!

Gruss,
Alexander
 
@Sven: Hallo Sven,
dasselbe Problem hatte ich doch auch schon mal :) Das liegt daran, wenn der Kompaß bei 180 Grad Drehung nicht exakt in die Gegenrichtung zeigt. Lösen konnte ich das durch eine saubere Kalibrierung. Ich habe den Processing Code zur Visualisierung und meine Kalibrierungsdaten mal angehängt.

Die unkalibrierten Daten sollten die Eigenschaft haben, dass jede Seite der Kugel (bzw. des Elliposid) einen Kreis enthält. Dann hast Du Meßwerte aller Seiten erwischt. Fehlt eine Seite (ein Kreis), wird die Kalibrierung ungenau werden.
hc97308a.jpg


Nach der Kalibrierung sollten die Kreise dann exakt auf der Oberfläche der Kugel liegen, wieder in allen Seiten:
h6898855.jpg


Ich mache es so, dass ich mehrmals langsam um die Hochachse drehe (180 Grad nach links, dann 180 nach rechts => ergibt insgesamt 360 Grad) und danach den Roboter zur nächsten Seite drehe und das Spielchen wiederhole.
http://www.ardumower.de/images/ardumower_compass_calibrate.png
Die Kurskorrektur beim Fahren steckt in der Funktion "motorControl", welche in der Loop-Schleife aufgerufen wird, falls "correctDir" aktiviert ist.
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/hd3f9a37.zip/
 
Zuletzt bearbeitet von einem Moderator:
Habe jetzt einen halben Tag damit verbracht herauszufinden, wie man die magnetischen Störfelder der Kabel wegbekommt - Je nach Drehzahl des Mähmotors fließt ein anderer Strom, dieser Strom erzeugt ein variables Magnetfeld (abhängig von Drehzahl/Strom). Das macht dann je nach Drehzahl des Motors 10-15 Grad aus...
http://vimeo.com/29384989 http://vimeo.com/29519728
Ich habe alle Kabel verdrillt, parallel verlegt so gut es geht - die variable Ablenkung bleibt. Sieht so aus, als wenn der Kompaß bei mir wieder aus dem Gehäuse verschwinden muss...
 
Da ich den AHRS-Algorithmus hinsichtlich des Gyros nicht richtig optimieren kann (ich verstehe den Algorithmus noch nicht), habe ich erstmal wieder meinen eigenen Alogorithmus für die Kursbestimmung eingesetzt (IMU Download v0.3.6). Damit scheint der Kompaß auch ganz gut zu funktionieren und ich verstehe wie man ihn optimieren kann.

Desweiteren kann das "Mähmuster" (Zufall, Bahnen) nun am Roboter (für Bahnen Taster 7 Beeps lang drücken) oder in der pfodApp ausgewählt werden (Ardumower Download 0.7.6).

Mein Kompaß sitzt inzwischen wieder auf seiner Fahnenstange - nur dort wird er vom Mähmotor nicht gestört.

Man kann das Stören etc. testen, indem man in der pfodApp auf "Compass" geht. Bei diesem Test versucht der Roboter exakt die ausgewählte Himmelsrichtung einzuhalten. Wenn man dann den Mähmotor anwirft, sieht man was ggf. passiert :)
 
@Sven

meine Variante ist in einem Bild erklärt :) http://www.ardumower.de/images/ardumower_sensor_fusion.png
Der Gyro gibt ja Drehgeschwindigkeit an - Beispiel:
1 Grad nach rechts
5 Grad nach links
2 Grad nach links
etc.
Diese Werte werden aufaddiert und man erhält den aktuellen Kurs. Da man pro Addition aber einen Meßfehler hat, paßt der Kurs irgendwann nicht mehr. Daher wird der Kurs über den Kompaß nachkorrigiert - Beispiel:

Kurs = 0.9 * GyroKurs + 0.1 * Kompaßkurs

D.h. beides wird gewichtet (0.9 und 0.1), um einen neuen Kurs zu erhalten.

Dasselbe passiert für die Berechnung der Neigung (Tilt, Pitch). Da allerdings wird der Beschleuinigungssensor zur Nachkorrektur verwendet.

Der Kompaßkurs selber ist relativ störanfällig (Neigung, Umgebung etc.) und wird selber noch über die Neigung korrigiert.

An den Gewichtungsparametern etc. kann man dann einstellen wie schnell etwas in das Ergebnis einfließen soll.

Genau das ist das Problem beim AHRS-Code: Ich würde z.B. gerne dem Gyro mehr Gewichtung geben (da er kurzfristig besser als der Kompaß arbeitet). Leider weiß ich nicht wie das beim AHRS-Code gehen soll. Der AHRS-Code verlässt sich m.E. auch kurzfristig zu stark auf den Kompaßkurs.
Und: wenn ich den AHRS-Code ohne Kompaß laufen lasse, liefert er falsche Werte. Daran sieht man dass ich den AHRS-Code falsch anwende. Ich habe den AHRS-Code einfach noch nicht gegriffen...
 
@Sven: ich habe den Regler-Code für das "Kurseinpendeln" nochmal geändert. Er regelt jetzt präziser (Ardumower 0.7.7).
Der Fehler, dass der Kompaß-Test nicht immer klappt sollte behoben sein.
Der momentane Yaw-Wert wird jetzt oben im Kompaß-Test angezeigt. Den Mähmotor kann man im selben Menü ein/ausschalten.
 
Das sieht nicht schlecht aus! Mir fällt auf, dass er die Fläche in die falsche Richtung abmäht :) Also, er dreht ja am Haus immer links herum, dann bei Dir angekommen immer rechts herum, usw. - Demnach müsste er eigentlich die Fläche im Video gesehen nach links abmähen - er mäht sie aber nach rechts ab (wenn ich das richtig sehe).
Vermutlich klappt das Einstellen des Winkels am Haus nicht richtig (Störquelle?)... daher dreht er dort beim Wenden etwas zu weit ein.

Ist nur eine Vermutung - am Rasen wird es vermutl. etwas besser klappen - Ist ja auch noch alles sehr prototypisch...

UPDATE: Am Haus dreht er m.E. nicht ganz den richtigen Kurs - gedacht ist eigentlich dass er auf Hausseite auch weniger als 180 Grad dreht (auf Deiner Seite angekommen scheint er das richtig zu machen)...

UPDATE2: Um das Problem in den Griff zu bekommen, denke ich werden wir Deine Idee 2 mal 90 Grad drehen wieder aufgreifen :) - Da spielt es dann keine Rolle mehr ob 80 Grad oder 90 Grad gedreht werden... (es wird beim Geradeausfahren hinterher ja nachkorrigiert)
 
Ja stimmt, den Drehwinkel könnte man erstmal größer machen. Ist ja auch abhängig von der Geschwindigkeit des Roboters...
 
Ja, richtig - beim nach 90 Grad fahren würde auch ständig korrigiert. Übrings: die Regelung beim Geradeausfahren ist deutlich träger als die beim Drehen. Ist so ausgelegt worden, damit das Geradeausfahren nicht nur aus Regelung besteht :) (das würde sich sonst etwas stärker auf die erreichbare Geschwindigkeit auswirken)
 
Der Drehfehler würde deshalb weniger ins Gewicht fallen, weil die 90 Grad Drehung deutlich in eine Richtung zeigt. Also auch 80 Grad würden noch deutlich in diese Richtung zeigen. Daher ist 90 Grad Drehen wohl besser...
 
Ich werde als nächstes die Regelparameter für alle Regler in die pfodApp einbauen - einstellen sollte dann deutlich schneller gehen damit...

Das Pfeifen liegt an der PWM-Frequenz (muss nochmal googeln wie man die Arduino PWM-Frequenz ändern kann). Das ist eigentlich immer da, nur wenn man schneller fährt, hört man's vermutl. nicht mehr...

UPDATE: Bei Maximalgeschwindigkeit verschwindet das Pfeifen weil das PWM Signal dann zum DC-Signal wird... stimmt!
 
Hallo,
ich muss das Thema noch mal aufgreifen da ich scheinbar hier Probleme habe.

Habe die Kalibrierung jetzt schon mind. 5x gemacht (2x davon in freier Natur, wegen Störeinflüssen) aber irgendwie wird es nix.

Also, prinzipiell kommen jedes mal andere Werte raus, das ist ja scheinbar normal.

1.
Wenn ich den Roby nach der Kalibrierung von Hand drehe, stimmen auch die Himmelsrichtungen (LED geht jeweils an) und in der Konsole ändern sich auch die Werte für x, Y u. Z, mit der Test Funktion übers Handy haut es auch soweit hin, nur sobald der Mähmotor dazu kommt stimmt nix mehr. Dann findet er keine Richtung mehr exakt und kommt nicht zur Ruhe. Stelle ich den Mähmotor wieder ab, haut es auch etwa wieder hin.

2.
Ist es normal, dass er die entsprechende Himmelsrichtung zum Ende hin soooo langsam anfährt? Hatte das bei dem Video von Alexander schneller gesehen :unsure:

3.
Habe die ardumower0.8.8 Version drauf. Werte habe ich außer für den Strom Mähmotor u. Fahrmotor, sowie die Empfindlichkeit des Schleifenempfängers alle auf Standard.
Das Problem, er macht keinerlei Kurskorrektur, obwohl im IMU-Menü IMU auf "ja" und ebenso bei Kurskorrektur auf "ja" stehen.
Er macht keinerlei Anzeichen für eine Korrektur, fährt einfach in die Richtung weiter, wo man ihn während der Fahrt hin stupst und dass auch noch in schönen Bögen :angry:

4.
Wenn er in Bahnen fahren soll, dauert das ewig biss er endlich in die entsprechende Richtung fährt, ist das normal? Auf euren Videos geht das alles schneller. Dass die Richtung nicht passt, liegt sicher wieder an der Kompassgeschichte.

So, das ist erst mal wieder viel Zeuges, aber weis grad nicht wo ich anfangen soll :unsure: Habe evtl. nur wieder irgend was übersehen oder nicht verstanden, oder sollte es wirklich an dem L50 liegen, dass dort zu wenig Platz ist (die Kompassgeschichte).

Gruß
Stefan
 
Blöde Anmerkung, aber ist das richtig, dass in der aml50 die Anschlüsse für scl und sda auskommentiert sind :unsure:


Code:
#define pinLawnFrontSend 41        // lawn sensor front sender 
#define pinLawnBackRecv 42         // lawn sensor back receive
#define pinLawnBackSend 43         // lawn sensor back sender 
#define pinUserSwitch1 46          // user-defined switch 1
#define pinUserSwitch2 47          // user-defined switch 2
#define pinUserSwitch3 48          // user-defined switch 3
// compass/gyro/accel (I2C):   SCL ,  SDA


Könnte es daran liegen, dass der keine Kurskorrektur macht (nicht hauen, wenn ich hier Stuss schreibe)?

Gruß
Stefan
 
Die Zeile ist bei mir auch auskommentiert.
Ansonsten kannst Du die Kalibrierung auch mal mit laufendem Mähmotor machen.
Allerdings ist da äußerste Vorsicht geboten.
Alexander hatte schon geschrieben das es sehr schwer ist auf Grund der Platzverhältnisse, eventuell setzt Du das Modul auf einen Stab damit es außer Reichweite von Störeinflüssen kommt.
Ach ja die Kabel können auch sehr stark stören.
Die Drehungen am Ende einer Bahn dauern bei mir auch länger, Alexander's Videos spielen öfter mit 2-3x Geschwindigkeit ab, nicht täuschen lassen. :)
 
@Markus
Die sache mit der Gerschwindigkeit ist ja auch erstmal nicht so tragisch. Mit der Anordnung des Modules ist auch soweit klar, obwohl Alexander es ja inzwischen auch im L50 verbaut hat (glaube ich zumindest).

Was viel mehr stört, dass er keinerlei Anzeichen für eine Richtungskorrektur macht.

Hate mal eine 7er-Version drauf (weis grad nicht welche) die hatte zwar noch nicht das Mähen in Bahnen, aber die Korrektur ging. Zumindest hatte er es versucht (die Kalibrierung war damals noch nicht richtig).


Gruß
Stefan
 
Oben