Sunray modding Spielwiese

Habe nur 3 Dockpunkte, deshalb bin ich auf 0 gekommen... und mit der Juni Version hat es mit den Einstellungen funktioniert.

Komischerweise hat es gestern Abend nach Strom an, Strom aus wieder alles funktioniert er ist brav rausgefahren. Irgendwie habe ich die 8308 Treiber in Verdacht.Ich werde Mal GPS reboot ausschalten und dann mal mitloggen.
 
Hier mal der Log - Robbi stand 4 Stunden im Dock und hat geladen.

Dann den Start Befehl geben: Mow Motor läuft an, fährt nicht los - dies 3 mal hintereinander bis ich abgebrochen habe.

Meine Interpretation: fährt nicht los wegen 8308 driver error
ERROR: odometry error - rpm too low (left, right)=0.00,0.00

Wenn dem so ist, hilft wohl doch nur stromlos machen oder demnächst den geplanten Workaround.
Oder ist es vielleicht doch was anderes?




---------------------------------
4:23:31 ctlDur=0.02 op=Charge(initiatedByOperator 0) freem=234051 sp=2000196C bat=27.39,0.002(0.25) chg=28.53,1(0.01) diff=1.156 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557815800 lon=6.51024584 lat=51.38268785 h=77.6 n=-3.65 e=-0.30 d=3.03 sol=1 age=1.02
ChargeOp: charging completed (DOCKING_STATION=1, battery.isDocked=1, dockOp.initiatedByOperator=0, maps.mowPointsIdx=656, DOCK_AUTO_START=0, dockOp.dockReasonRainTriggered=0, dockOp.dockReasonRainAutoStartTime(min remain)=-263, timetable.mowingCompletedInCurrentTimeFrame=0, timetable.mowingAllowed=1, finishAndRestart=0)

AUTOSTOP: timetable is disabled
AUTOSTART: not defined DOCK_AUTO_START
Motor::setMowState 1
setOperation op=1
changeOperationType
dumpState: X=-0.18 Y=-3.49 delta=0.44 mapCRC=-532420 mowPointsIdx=656 dockPointsIdx=1 freePointsIdx=1 wayMode=2 op=1 sensor=0 sonar.enabled=1 fixTimeout=15 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=255 finishAndRestart=0 motorMowForwardSet=0
save state... ok
==> changeOp:Mow(initiatedByOperator 1)
OP_MOW
Motor::setMowState 0
battery.setIsDocked 0
Map::startMowing
findObstacleSafeMowPoint checking 9.06,-14.25
findPath (-2.02,-4.29) (9.06,-14.25)
path finder is enabled (using FLOAT_CALC)
freem=233343 allocating nodes 136 (3264 bytes)
freem=230047
starting path-finder
.finish nodes=136 duration=80
node pt=9.06,-14.25
node pt=-2.02,-4.29
Map::nextDockPoint: actual dockPointsIdx :1
Map::nextDockPoint: dockPointsIdx: 1 dockPoints.numPoints: 3 trackSlow: 1 trackReverse: 1 DOCK_IGNORE_GPS: 1
Map::nextDockPoint: to avoid gps no speed => obstacle! error resetLinearMotionMeasurement
MowOp:: Switch On mow
Motor::setMowState 1
Linetracker.cpp changed speed to: -0.20
WARN: PID unmet cycle time Ta=0.24 TaMax=0.20
WARN: PID unmet cycle time Ta=0.24 TaMax=0.20
WARN: PID unmet cycle time Ta=0.27 TaMax=0.20
Motor::setMowState 1
Info - LoopTime: 3 - 2 - 2.93 - 240ms
4:23:51 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.30,0.002(0.79) chg=27.93,1(0.01) diff=1.059 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557835800 lon=6.51024575 lat=51.38268812 h=77.6 n=-3.64 e=-0.31 d=3.02 sol=1 age=1.00
dumpState: X=-0.18 Y=-3.49 delta=0.44 mapCRC=-532420 mowPointsIdx=656 dockPointsIdx=0 freePointsIdx=0 wayMode=2 op=1 sensor=0 sonar.enabled=1 fixTimeout=15 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=255 finishAndRestart=0 motorMowForwardSet=1
save state... ok
4:23:56 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.32,0.001(0.56) chg=27.94,1(0.01) diff=0.777 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557840800 lon=6.51024564 lat=51.38268813 h=77.6 n=-3.64 e=-0.32 d=3.02 sol=1 age=0.99
checkmotorMowRPMStall: Mow motor Spun up!
DATA: SPINUPTIME (ms), driverPWM, mowRPM, mowRPMSet: 10000, 178, 3118.74, 3200.00
Info - LoopTime: 3 - 2 - 2.88 - 90ms
4:24:1 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.37,0.002(0.51) chg=27.92,1(0.01) diff=0.654 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557845800 lon=6.51024572 lat=51.38268815 h=77.6 n=-3.64 e=-0.31 d=3.03 sol=1 age=0.96
ERROR: odometry error - rpm too low (left, right)=0.00,0.00
Linetracker.cpp changed mow status: 1
Motor::setMowState 1
motor fault recover counter 1
4:24:6 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=200000A0 bat=27.25,0.002(0.92) chg=28.01,1(0.01) diff=0.710 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557850800 lon=6.51024574 lat=51.38268811 h=77.6 n=-3.65 e=-0.31 d=3.01 sol=1 age=0.96
dumpState: X=-0.18 Y=-3.49 delta=0.44 mapCRC=-532420 mowPointsIdx=656 dockPointsIdx=0 freePointsIdx=0 wayMode=2 op=1 sensor=0 sonar.enabled=1 fixTimeout=15 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=255 finishAndRestart=0 motorMowForwardSet=0
save state... ok
Info - LoopTime: 3 - 2 - 2.88 - 99ms
4:24:11 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.27,-0.001(0.58) chg=27.80,1(0.01) diff=0.277 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557855800 lon=6.51024544 lat=51.38268813 h=77.6 n=-3.64 e=-0.31 d=3.04 sol=1 age=0.97
batTemp=27 cpuTemp=46
checkmotorMowRPMStall: Mow motor Spun up!
DATA: SPINUPTIME (ms), driverPWM, mowRPM, mowRPMSet: 10000, 178, 3159.31, 3200.00
resetting recoverMotorFaultCounter
4:24:16 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.24,0.001(0.49) chg=27.75,1(0.01) diff=0.428 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557860800 lon=6.51024563 lat=51.38268782 h=77.6 n=-3.65 e=-0.32 d=3.03 sol=1 age=0.95
GPS time (UTC): dayOfWeek=sat hour=10
AUTOSTOP: timetable is disabled
AUTOSTART: not defined DOCK_AUTO_START
ERROR: odometry error - rpm too low (left, right)=0.00,0.00
Linetracker.cpp changed mow status: 1
Motor::setMowState 1
motor fault recover counter 1
Info - LoopTime: 3 - 2 - 2.87 - 86ms
4:24:21 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.16,-0.000(1.07) chg=27.74,1(0.00) diff=0.598 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557865800 lon=6.51024533 lat=51.38268785 h=77.6 n=-3.65 e=-0.32 d=3.02 sol=1 age=0.95
dumpState: X=-0.18 Y=-3.49 delta=0.44 mapCRC=-532420 mowPointsIdx=656 dockPointsIdx=0 freePointsIdx=0 wayMode=2 op=1 sensor=0 sonar.enabled=1 fixTimeout=15 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=255 finishAndRestart=0 motorMowForwardSet=1
save state... ok
4:24:26 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.22,0.001(0.53) chg=27.75,1(0.01) diff=0.555 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557870800 lon=6.51024531 lat=51.38268781 h=77.6 n=-3.65 e=-0.32 d=3.02 sol=1 age=0.94
checkmotorMowRPMStall: Mow motor Spun up!
DATA: SPINUPTIME (ms), driverPWM, mowRPM, mowRPMSet: 10000, 178, 3236.47, 3200.00
resetting recoverMotorFaultCounter
Info - LoopTime: 3 - 2 - 2.88 - 99ms
4:24:31 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=200000A0 bat=27.17,0.000(0.53) chg=27.69,1(0.01) diff=0.525 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557875800 lon=6.51024525 lat=51.38268805 h=77.6 n=-3.65 e=-0.33 d=3.03 sol=1 age=0.94
ERROR: odometry error - rpm too low (left, right)=0.00,0.00
Linetracker.cpp changed mow status: 1
Motor::setMowState 1
motor fault recover counter 1
4:24:36 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.14,-0.001(0.79) chg=27.74,1(0.01) diff=0.597 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557880800 lon=6.51024513 lat=51.38268780 h=77.6 n=-3.65 e=-0.33 d=3.03 sol=1 age=0.94
dumpState: X=-0.18 Y=-3.49 delta=0.44 mapCRC=-532420 mowPointsIdx=656 dockPointsIdx=0 freePointsIdx=0 wayMode=2 op=1 sensor=0 sonar.enabled=1 fixTimeout=15 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=255 finishAndRestart=0 motorMowForwardSet=0
save state... ok
Info - LoopTime: 2 - 1 - 2.86 - 99ms
4:24:41 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.17,-0.001(0.50) chg=27.70,1(0.01) diff=0.563 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557885800 lon=6.51024514 lat=51.38268783 h=77.6 n=-3.65 e=-0.33 d=3.02 sol=1 age=0.95
checkmotorMowRPMStall: Mow motor Spun up!
DATA: SPINUPTIME (ms), driverPWM, mowRPM, mowRPMSet: 10000, 181, 3224.88, 3200.00
resetting recoverMotorFaultCounter
4:24:46 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=230207 sp=2000196C bat=27.20,-0.000(0.54) chg=27.72,1(0.01) diff=0.546 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.45 tow=557890800 lon=6.51024523 lat=51.38268805 h=77.6 n=-3.65 e=-0.33 d=3.02 sol=1 age=0.93
GPS time (UTC): dayOfWeek=sat hour=10
AUTOSTOP: timetable is disabled
AUTOSTART: not defined DOCK_AUTO_START
ERROR: odometry error - rpm too low (left, right)=0.00,0.00
Linetracker.cpp changed mow status: 1
Motor::setMowState 1
motor fault recover counter 1
Motor::setMowState 0
setOperation op=0
changeOperationType
dumpState: X=-0.18 Y=-3.49 delta=0.45 mapCRC=-532420 mowPointsIdx=656 dockPointsIdx=0 freePointsIdx=0 wayMode=2 op=0 sensor=0 sonar.enabled=1 fixTimeout=15 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=255 finishAndRestart=0 motorMowForwardSet=1
save state... ok
==> changeOp:Idle(initiatedByOperator 1)
OP_IDLE
Motor::setMowState 0
==> changeOp:Charge(initiatedByOperator 0)
OP_CHARGE dockOp.initiatedByOperator=1 dockReasonRainTriggered=0
Motor::setMowState 0
ChargeOp: charging completed (DOCKING_STATION=1, battery.isDocked=0, dockOp.initiatedByOperator=1, maps.mowPointsIdx=656, DOCK_AUTO_START=0, dockOp.dockReasonRainTriggered=0, dockOp.dockReasonRainAutoStartTime(min remain)=-264, timetable.mowingCompletedInCurrentTimeFrame=0, timetable.mowingAllowed=1, finishAndRestart=0)
Motor::setMowState 0
setOperation op=0
changeOperationType
==> changeOp:Idle(initiatedByOperator 1)
OP_IDLE
Motor::setMowState 0
==> changeOp:Charge(initiatedByOperator 0)
OP_CHARGE dockOp.initiatedByOperator=1 dockReasonRainTriggered=0
Motor::setMowState 0
ChargeOp: charging completed (DOCKING_STATION=1, battery.isDocked=0, dockOp.initiatedByOperator=1, maps.mowPointsIdx=656, DOCK_AUTO_START=0, dockOp.dockReasonRainTriggered=0, dockOp.dockReasonRainAutoStartTime(min remain)=-264, timetable.mowingCompletedInCurrentTimeFrame=0, timetable.mowingAllowed=1, finishAndRestart=0)
Motor::setMowState 0
setOperation op=0
changeOperationType
==> changeOp:Idle(initiatedByOperator 1)
OP_IDLE
Motor::setMowState 0
==> changeOp:Charge(initiatedByOperator 0)
OP_CHARGE dockOp.initiatedByOperator=1 dockReasonRainTriggered=0
Motor::setMowState 0
ChargeOp: charging completed (DOCKING_STATION=1, battery.isDocked=0, dockOp.initiatedByOperator=1, maps.mowPointsIdx=656, DOCK_AUTO_START=0, dockOp.dockReasonRainTriggered=0, dockOp.dockReasonRainAutoStartTime(min remain)=-264, timetable.mowingCompletedInCurrentTimeFrame=0, timetable.mowingAllowed=1, finishAndRestart=0)
Info - LoopTime: 3 - 2 - 3.15 - 151ms
4:24:51 ctlDur=0.02 op=Charge(initiatedByOperator 0) freem=230207 sp=2000196C bat=27.32,-0.000(0.27) chg=27.94,1(0.01) diff=0.223 tg=-1.16,-3.95 x=-0.18 y=-3.49 delta=0.44 tow=557895800 lon=6.51024515 lat=51.38268773 h=77.6 n=-3.66 e=-0.33 d=3.01 sol=1 age=0.96
dumpState: X=-0.18 Y=-3.49 delta=0.44 mapCRC=-532420 mowPointsIdx=656 dockPointsIdx=0 freePointsIdx=0 wayMode=2 op=2 sensor=0 sonar.enabled=1 fixTimeout=15 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=255 finishAndRestart=0 motorMowForwardSet=1
save state... ok
 
Ja, sieht so aus. Oder den Robbie kurz bewegen im Dock. Seltsamerweise "klemmen" meine Antriebe seit neuestem nicht mehr. Der Stand jetzt 2 Tage im Dock und ist nach Befehl einfach losgefahren. Strange. Ein User interessiert sich auch für eine softwarelösung. Mal sehen, evtl. Probiere ich es die Tage auch mal eine kleine stündliche Reverse Forward Logik einzubauen.
 
Die Antriebe sind echt random...

Heute perfekt 2mal gedockt und rausgefahren. Dann wieder nach nur 20 Minuten Dock rechtes Rad klemmt und läuft nicht.

Irgendwie ist nur sicher - je länger er parkt, desto größer die Wahrscheinlichkeit...
 
Mann könnte in der config.h einen automatischen Reset hinterlegen zu einer bestimmten Uhrzeit (GPS Uhr). Wenn das in der Nacht um z.B. 1 Uhr ist, dann steht der Roboter wahrscheinlich eh in der Ladestation. Oder vielleicht nur die Motortreiber per Software abschalten, sofern das möglich ist.
 
Wenn ich mich recht erinnere, ist Euer Problem die Programmierung des Treibers selber.
Ich meine bei dem blauen Treibern, gab es ein Problem, wenn PWM für längere Zeit auf 0 ist, dann muss der Treiber resetet werden.
Lösung wäre PWM anstatt auf 0 auf 1 zu stellen.

Ich kann mich aber auch irren.
 
Ein Softwarereset bzw. Reboot reicht nicht aus. Hatte ich schon mal getestet. Nur stromlos machen oder Manuel bewegen. Das mit dem pwm werde ich mal versuchen....
 
Ja stromlos machen, meinte ich mit Reset. Falsch ausgedrückt.
Die roten Treiber haben dieses Problem aber nicht mehr, da wurde das Problem behoben.
 
Ich habe jetzt mal sowas eingefügt direkt im motor.cpp (noch nicht getestet):

Code:
void Motor::drvfix(){
  if (DRV8308_FIX) {
    if (drvfixreset) {
      drvfixcounter++;
      if (drvfixcounter >= DRVFIXITERATIONS) {
        speedPWM(0, 0, 0);
        drvfixreset = false;
        drvfixcounter = 0;
      }
    }
    if ((millis() >= drvfixtimer) && (battery.chargerConnected())){
      drvfixtimer = millis() + DRVFIXTIMER;
      speedPWM(1, 1, 1);
      drvfixreset = true;
    }
    return;
  } else {
    return;
  }
}

wird in config.h hier eingestell:

Code:
#define DRV8308_FIX               true  // only for testing, if true and charger is connected, drivers pwm will be 1 for DRVFIXITERATIONS iteration of code everytime DRVFIXTIMER is met
#define DRVFIXITERATIONS          5     // iterations of code for pwm of drivers to be 1
#define DRVFIXTIMER               60000 // (ms) timer for DRV8308_FIX, everytime timer is met, function will run once for DRVFIXITERATIONS and set pwm of drivers to 1


Wenn jemand testen will:

gelöscht.............
neu:
Sunray-master_follow_working-314ide_drv.zip



hier wird es aber ein problem geben, wenn der mowmotor an ist und er auf ihn wartet um aus dem dock zu fahren..... da sollte noch eine bedingung rein, das er es nur auslöst wenn die treiber keine anderen pwm werte als 0 haben.... habe ich noch ergänzt.
 
Zuletzt bearbeitet:
Hi jaschek, man benötigt Brushlessmotoren bei denen die Drehzahl überwacht wird über die Odometrie. Es gibt aber die Möglichkeit seit dem letzten Update das nicht die Drehzahl sondern der Stromverbrauch gemessen wird. Ist glaube ich jetzt in der Config.h einstellbar, für die User welche Brushed Motoren verwenden. Standardeinstellung ist Brushless Drehzahlüberwachung über Odometrie.
 
Zur Zeit muss RPM funktionieren, beim mähmotor. Auch die rpmfault vom originalen sunray muss true sein. Es wird eine Zeit dauern bis ich Strom und RPM separiert habe... dann ist wahlweise mit nur Strom, nur RPM oder beides kombiniert.
 
Allerdings ist es so, wenn jemand nur komfortabel seine Geschwindigkeiten des mowers also auch Drehung etc.. anpassen will, kann das adaptive Speed, mowrpmset, escape lawn gedöhns auch deaktiviert werden. Funktionen wie nodockrotation und GPS reboot nach undock SOLLTEN wie sonst auch funktionieren. Hier und da im Bewegungsablauf sind zudem Sachen im Code geändert die ich für Buggy halte, gerade zb. Beim angletotargetfits im linetracker. Das heißt viele kleine Optimierungen(so wie ich es sehe, ein echter Programmierer aber evtl. Nicht) sind trotzdem drin. mein mower ist zur Zeit jedenfalls ein Arbeitstier, und ich hoffe das es auf meinen drei Flächen wieder nachwächst sodass ich ihn endlich wieder losschicken kann.

Wenn das jemand testet, also deaktivierte Funktionen, gerne Feedback hier über Bugs... denn ich habe nicht alle Kombination von Funktionen Kreuz und quer getestet.
 
Zuletzt bearbeitet:
Oben