Hallo Ulli,
bei mir ist gerade der Wurm drin. Mein alter Mäher mit Ardumower-Technik ist am Wochenende stehen geblieben und will einfach nicht mehr fahren. Mähwerk läuft. ...........
Heute habe ich zufällig gesehen, daß die Preise für „Dual-Antenna RTK“ stark gefallen sind, man könnte sagen, fast erschwinglich.
siehe hier:
H-RTK Unicore UM982 (Dual Antenna Heading)
Gruß Fürst Ruprecht
Hallo Mein Fürst!,
ich habe neulich mal an Deine mechanischen Konstruktionen denken müssen. Mir fiel ein Real in die Hände (wohl eher aufs Telefon-Display) das zeigte ein Fahrwerk mit 4 lenkbaren Rädern. Ich hatte ja auch mal die konstruktion gebaut die Du verbaut hast die ohne Spurstange auskammt.
Der Konstrukteur hatte einen Getriebe Motor für die Lenkbewegungen und dann an allen 4 Rädern über Bowdenzug und Umlenkrollen (ähnlich wie beim Flugzeug) die Bewegung übertragen. Das fand ich schon ziehmlich beeindruckend, denn das erschien mir besser als mit einem Gestänge.
...
Ja das mit den Antennen und der Signalübertragung ist schon blöd. Da ist aber eigentlich jedes Controller basierendes Projekt noch im Vorteil ggü. einer Architektur mit einem Pi oder ähnlichem (finde ich) denn wenn ich z.B. noch im Test-Modus fahre und über mein Notebook mit dem Pi im Mäher über ssh verbunden bin, und es reißt mir die WLAN Verbindung zum Notebook ab, dann funktionieren auch die Scripte nicht mehr die ich auf dem Pi über das Notebook gestartet habe. Dafür lassen es sich aber Scripte wesentlich besser debuggen und verbessern (finde ich) als wenn man compilieren muss hochladen und dann wieder schauen muss wie die Reaktion ist und ob es sich verbessert hat oder nicht.
Gut man kann nicht alles haben.
Ich versuche das mit dem winke-Fehler mal zu beschreiben, wenn es nicht deutlich wird, dann musst Du dich noch einmal melden.
Nehmen wir an der Mäher ist an einem Punkt egal ob er fährt oder steht, dann weiß er ja über das RTK Modul wo er ist. Und er weiß wo er als nächstes hin muß. Hier eine logzeile.
Code:
Dist=7.38m | Target=76.8° | Mode=GYRO° | RTK_Heading=149.3° | Gyro_Heading=149.3° | Err=-72.5° |RTK-FIX=RTK-Fixed |RTK-Quali=91 |RTK-State=RTK-VERY-GOOD |Links = 0 |Rechts= 0|Speed= 0
Sein neues Ziel liegt bei 76.8 Grad und ist 7.38m entfernt. Der Roboter selber steht in Richtung 149.3 Grad (ich plotte für mich im Moment noch immer RTK_Heading und Gyro_Heading wenn er steht ist Gyro Heading der Bezug, wenn er schneller als 20 cm/s ist, dann ist RTK_Heading meine führender Wert den ich dann auf den Gyro übertrage. Somit reduziere ich Fehler bei er Richtungs-Erkennung)
Wir sehen der Ausrichtungsfehler zum Ziel ist -72.5 Grad. Wenn er jetzt auf das Ziel zufahren würde, dann würde er eine schöne große kurve Fahren. Ich hatte mal ein paar Tests gemacht und festgestellt, dass meine Motore bei einer 90 Grad Drehung ca 420 Tics mit dem Hall generieren bei 180 Grad erzeugen sie ca 860 Tics. Das ganze natürlich bei kurzem Rasen und trockenem Boden. Bei Nässe und am Berg sieht das sicher anders aus. Also gehe ich wie folgt vor bei dem Winkel-Fehler hier von 72.5 Grad benötigt er ca 340 Tics. Der Befehl den nun mein RTK-navi.py erzeugt ist
Code:
Drive.Locked Datei wurde erstellt
Drive_cmd = -20,20,340,340
drehe Links mit -20rpm, rechts mit 20rpm bei beiden Motoren 340 Tics. Nach den 340 Tics höre auf. Das ist die Abbruch Bedingung.
Drive.Locked deswegen, weil bei einer Drehung kein erneuter Fahrbefehl kommen soll. Dazu muss man wissen, dass bei mir die Motorsteuerung eine seperate Datei ist und ich daher per Steuerdatei das dann blockiere. Auch der Fahrbefehl -20,20,340,340 wird in eine Datei geschrieben und dann von der drive.py eingelesen und umgesetzt.
Hier in diesem längerem Lock kann man auch gut erkennen wie er den ersten Befehl absetzt, reagiert der Fehler Winkel beim 2. Log ist schon geringer
Code:
Drive_cmd = -20,20,340,340
Dist=7.38m | Target=76.8° | Mode=GYRO° | RTK_Heading=149.3° | Gyro_Heading=149.3° | Err=-72.5° |RTK-FIX=RTK-Fixed |RTK-Quali=91 |RTK-State=RTK-VERY-GOOD |Links = 0 |Rechts= 0|Speed= 0
Dist=7.38m | Target=76.8° | Mode=GYRO° | RTK_Heading=148.6° | Gyro_Heading=118.9° | Err=-42.1° |RTK-FIX=RTK-Fixed |RTK-Quali=91 |RTK-State=RTK-VERY-GOOD |Links = 92 |Rechts= 88|Speed= 17
Divelocked wurde gerade gelöscht Timestamp gespeichert
Dist=7.16m | Target=76.8° | Mode=GYRO° | RTK_Heading=89.5° | Gyro_Heading=76.8° | Err=-0.0° |RTK-FIX=RTK-Fixed |RTK-Quali=89 |RTK-State=RTK-VERY-GOOD |Links = 0 |Rechts= 0|Speed= 0.21
Aktualilsiere den Fahrbefehl auf 20, 20, 716,s,76
Nun hat er sich auf das Ziel ausgerichtet und sein neuer Motorbefehl lautet: Drehe mit beiden Rädern mit der Sollgeschwindigkeit von 20rpm 716cm weit s steht für straight auf 76 Grad.
Meine Logzeilen werden derzeit sekündlich erzeugt. Alle drei Sekunden wird der Motorsteuerung ein neuer Fahrbefehl übermittelt
Code:
Dist=7.14m | Target=76.9° | Mode=GYRO° | RTK_Heading=79.2° | Gyro_Heading=80.8° | Err=-3.9° |RTK-FIX=RTK-Fixed |RTK-Quali=88 |RTK-State=RTK-VERY-GOOD |Links = 78 |Rechts= 92|Speed= 0.03
Dist=7.00m | Target=76.7° | Mode=GYRO° | RTK_Heading=75.5° | Gyro_Heading=74.4° | Err=2.3° |RTK-FIX=RTK-Fixed |RTK-Quali=87 |RTK-State=RTK-VERY-GOOD |Links = 80 |Rechts= 78|Speed= 0.14
Dist=6.75m | Target=76.2° | Mode=RTK° | RTK_Heading=76.4° | Gyro_Heading=76.8° | Err=-0.6° |RTK-FIX=RTK-Fixed |RTK-Quali=86 |RTK-State=RTK-VERY-GOOD |Links = 80 |Rechts= 88|Speed= 0.25
Aktualilsiere den Fahrbefehl auf 20, 20, 675,s,76
Bei den Werten "Links" und "Rechts" handelt es sich um den PWM Value für die Motore, da kann man auch gut sehen wie der eine ann mehr oder weniger bestromt wird, damit die Richtung gehalten wird.
In dem Video von meinem Post heute vormittag kann auch sehr gut sehen wie bei der letzten Fahrt die Regelung nach 3 Sekunden wieder eingreift und ihn auf kurs bringt. Er fährt da mit einem Rad über einen Hügel und bekommt dadurch einen Schub nach rechts. Die Regelung gleicht es ohne Kallmann Filter ;-) aus. Ich bin derzeit auf Föhr im Urlaub und habe vergessen gestern noch meinen Mäher an die Laestation anzuschließen. So kann ich ihn aus der Ferne jetzt nicht ein schalten, sonst hätte ich Dir noch den Code Teil er Regelung schicken können. Das ist alles überschaubar.
Wenn ich meinen Fürst damit helfen konnte dann hat es mich gefreut. Ich bin jetzt dabei und versuche eine Bahnplanung zu realisieren mit. Also von Punkt zu Punkt, möchte das aber nicht alles per Hand machen. Wie gehst Du vor?
Beste Grüße von Föhr
Ulli