ArduMower Umbau Stapellauf: Fährt im Kreis - DiffDelta overflow

Tinker

Member
Hi,

habe heute bei einem schönen Sonnentag meinen in den letzten Monaten hergerichteten Ardumower Umbau meines Robomow RL500 etwas länger auf dem Rasen ausprobiert.
Zuerst mal meine Konfiguration: SW-Basis Sunray 1.0.298 mit Anpassungen an die Ansteuerung der Fahrmotoren und der 3 Mähmotoren. Bumpersensor, 3 IR-Sensoren. RDK System mit SAPOS. Die IMU wird beim Start immer inialisiert. Die Strommessung der Fahrmotoren habe ich deaktiviert indem ich „leftCurrent“ und „rightCurrent“ auf „1“ gesetzt habe. Die Strommessung muss ich später noch anpassen … Bumper- und IR-Sensoren sind deaktiviert.
App auf Iphone. Mower lässt sich gut per Hand mit der App verfahren. Fix ist (so gut wie) immer vorhanden.
Habe eine Testmap mit 5 Punkten aufgenommen und den Mower in „Das Grüne“ positioniert. Siehe Anhang.
1. Frage: Wieso bekomme ich trotzdem „no map route“? (War auch schon mal weg, kann aber keine Systematik erkennen.
2. Frage: Ich sehe auf der App immer ein graues Viereck in der Map Region, finde aber keine Info dazu. Was hat es damit auf sich?
Wenn ich aus dem Grün heraus das Mähen starte, (die Mähmotoren schalte ich erst mal über die App aus), fährt der Mäher nur im Kreis und die Log Daten sehen folgendermaßen aus:

setOperation op=1
changeOperationType
==> changeOp:Mow(initiatedByOperator 1)
OP_MOW
clearObstacles
Map::startMowing
findObstacleSafeMowPoint checking -7.91,-9.97
findPath (-11.83,-15.17) (-7.91,-9.97)
path finder is enabled (using FLOAT_CALC)
freem=244563 allocating nodes 7 (168 bytes)
freem=244563
starting path-finder
.finish nodes=7 duration=4
node pt=-7.91,-9.97
node pt=-11.83,-15.17
reset left / right rotation - DiffDelta overflow
0:4:49 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=244699 sp=469E5 bat=27.87(2.02) chg=0.12(0.01) tg=-7.91,-9.97 x=-11.89 y=-15.20 delta=0.40 tow=145797000 lon=8.08795282 lat=50.36699340 h=227.8 n=0.37 e=-0.45 d=9.38 sol=2 age=0.94
0:4:54 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=244699 sp=47D70 bat=27.86(2.02) chg=0.11(0.01) tg=-7.91,-9.97 x=-11.93 y=-15.23 delta=0.39 tow=145802000 lon=8.08795222 lat=50.36699312 h=227.8 n=0.34 e=-0.49 d=9.41 sol=2 age=0.92
setOperation op=0
changeOperationType
==> changeOp:Idle(initiatedByOperator 1)
OP_IDLE
...
Auffällig ist für mich die Zeile „reset left / right rotation - DiffDelta overflow
Hat hier jemand eine Idee?

VG Mario
 

Anhänge

  • IMG_0709.PNG
    IMG_0709.PNG
    380,4 KB · Aufrufe: 14
Hallo,
es scheint ein Problem mit der Motoransteuerung (Motorkonfiguration) bzw. den Stanley-Regelparametern vorzuliegen. Ich würde zunächst wie im Sunray-Wiki beschrieben (Motor-Test) die Motoren mit der Firmware prüfen (Anzahl Ticks etc. pro 10 Umdrehungen ermitteln damit die gefahrene Strecke richtig ermittelt werden kann). Um ggf. noch vorliegenee GPS-Probleme auszuschliessen, GPS zunächst in der Konfiguration deaktivieren (der Roboter kann auch einen kleine, einfache Fläche ohne GPS mähen). Nachdem der Motor-Test abgeschlossen ist den Roboter mit der manuellen Steuerung in der App fahren und schauen ob die Entfernungs-Angaben in der App passen (also 1 gefahrener Meter in der Realtität 1 Meter in der App entsprechen - sollten sie wenn die Werte im Motor-Test gestimmt haben). Dann kann man ans automatische Mähen gehen. Für andere Motoren als den Ardumower müssen ggf. die Regler für das Geradeaus-Tracking (Stanley-Regler) angepasst werden. Hierfür die App auf Experten-Modus stellen und ganz am Ende in den Einstellungen mit den Stanley-Parametern (Slidern) spielen. Die für den Motor optimalen Stanley-Parameter werden nicht gespeichert und müssen anschließened in die Firmware-Konfiguration übertragen werden.
Zu Deinen Fragen:
1. "No map route" könnte bedeuten dass der Roboter ausserhalb des Perimeters steht.
2. Das graue Viereck ist für eine IP-Kamera - diese kann in der App unter Einstellungen abgestellt werden.
 
Hallo,
vielen Dank für die schnelle Antwort.
Den Motortest mit 10 Umdrehungen hatte ich erfolgreich durchgeführt. Jetzt habe ich das GPS auskonfiguriert und wollte den gefahrenen Weg per App kontrollieren. Inital steht der Winkel auf etwa -112° und ich bekomme ihn nicht auf 0° durch eine Drehung. Scheint mir, dass es Probleme mit der IMU gibt. Hatte jetzt auch „imu timeout“ und Resets. Vielleicht funktioniert der I2C Bus nicht korrekt, obwohl ich für die I2C Komponenten verdrillte und abgeschirmte Leitungen benutzt habe. Ich muss mich also jetzt erst einmal die Tage um die IMU kümmern!
 
Hast du vielleicht mal ein paar Bilder wie du die IMU verbaut und wie du sie angeschlossen hast? Und welche IMU ist es?
 
An die IMU hatte ich gar nicht gedacht, gut dass Dir das aufgefallen ist - die IMU kann man auch einfach abklemmen und dann läuft alles ohne IMU (nicht so präzise wie mit aber es reicht zum Testen ...)
 
Ich habe die MPU9265 und in der config.h ist #define MPU9250 aktiv.
Im Anhang sieht man, wie ich die IMU platziert habe. Angeschlossen ist sie mit einem verdrillten und abgeschirmten CAT5e Kabel. Die Abschirmung ist nur einseitig an der Hauptplatine angeschlossen.

Ja, ich werde mal den Mower testweise ohne IMU betreiben!
 

Anhänge

  • IMU-1.JPG
    IMU-1.JPG
    1,3 MB · Aufrufe: 42
  • IMU-2.JPG
    IMU-2.JPG
    933,9 KB · Aufrufe: 41
Zuletzt bearbeitet:
Ohne IMU läuft der Mower, zumindest eine Weile, bis er nach einigen Minuten "Zicken macht", letztendlich aussteigt und ich die Versorgungsspannung aus/einschalten muss. Dann sind meine gemähten Bahnen leider auch weg. Das muss ich mir noch genauer ansehen ...
Was mir auch auffällt ist, dass gerade Strecken schnell zurückgelegt werden, dann beim (auch leichten) Abknicken wird der Mower sehr langsam um dann wieder bei der Geraden loszulegen. Ist das normal oder kann man dieses Verhalten korrigieren/konfigurien?

Mit IMU immer noch Rundlauf - vielleicht ist die IMU doch defekt?
 

Anhänge

  • IMG_0952.PNG
    IMG_0952.PNG
    695,7 KB · Aufrufe: 6
Zuletzt bearbeitet:
Ja, neue IMU eingebaut und der Rundlauf hat ein Ende, scheint jetzt zu funktionieren. IMU war also defekt! Das "Zicken machen" sprich Steckenbleiben der FW führe ich auf Stackprobleme mit dem Adafruit GrandCentral M4 zurück. Nachdem ich den AGCM4 durch einen Arduino DUE ersetzt hatte, läuft der Ardumower nun viel stabiler, zeigt aber noch oft "ublox chka error" und "WARN: PID unmet cycle time". Ich denke, dass liegt an der nicht so tollen Performance? Hoffe, dass ich irgendwann, wenn das Stackproblem gelöst ist, wieder den AGCM4 einsetzen kann.
 
HI,

du verwendest doch ein PCB 1.4 oder?
Warum hast du die beiden 2k2 Ohm Widerstände auf dem Grand Central M4 montiert und nicht die Brücken auf dem PCB 1.4 aktiviert?
oder hast du beides?

Ist mir nur gerade aufgefallen.
 
Hi,
ja, da habe ich "doppelt gemoppelt", guter Hinweis, danke!
Ist sicher nicht zielführend für den I2C Bus, hat aber leider mein IMU Problem nicht gelöst. Die "alte" IMU hat ja auch mit dem DUE nicht funktioniert und ist offensichtlich nicht in Ordnung.
 
Oben