Plötzlicher Reset im Idle liegen geblieben

EinEinfach

Well-known member
Hallo zusammen,

ich habe heute meine Rover im Gaten liegen geblieben entdekt, eigentlich sollte er den Rasen mähen. Zuerst dachte ich an die üblichen verdächtigen (GPS invalid etc.). Allerdings stand er einfach nur rum und die App zeigte Idle. Sowie der Zufall es will, hatte ich aus anderen Gründen den seriellen Monitor laufen und das was ich da entdeckt habe, konnte ich bei meinem Mower noch nie beobachten. Anscheinend wurde der Programcode vom Watchdog resetet. Hier ist der Auszug:
Code:
16:10:41.008 -> bumper obstacle!
16:10:41.008 -> triggerObstacle
16:10:41.057 -> ==> changeOp:EscapeReverse->Mow
16:10:42.804 -> batTemp=0.0  cpuTemp=47
16:10:43.735 -> 2:26:14 ctlDur=0.02 op=EscapeReverse->Mow freem=199667 sp=85E39F bat=25.78(0.31) chg=0.67(0.04) tg=-12.26,3.87 x=-12.52 y=3.59 delta=0.75 tow=51061600 lon=10.43170235 lat=52.44016861 h=106.4 n=4362.96 e=-2457.19 d=2.18 sol=2 age=0.94
16:10:44.068 -> driveReverseStopTime
16:10:44.068 -> continue operation with virtual obstacle
16:10:44.068 -> addObstacle -12.08,4.05
16:10:44.106 -> ==> changeOp:Mow
16:10:44.106 -> OP_MOW
16:10:44.106 -> Map::startMowing
16:10:44.106 -> findObstacleSafeMowPoint checking -13.33,5.85
16:10:44.106 -> findPath (-12.54,3.59) (-13.01,4.67)
16:10:44.106 -> path finder is enabled
16:10:44.106 -> freem=199523
16:10:44.106 -> starting path-finder
16:10:44.106 -> .finish nodes=204 duration=201
16:10:44.302 -> node pt=-13.01,4.67
16:10:44.302 -> node pt=-13.06,4.67
16:10:44.302 -> node pt=-13.46,4.27
16:10:44.302 -> node pt=-13.46,3.87
16:10:44.302 -> node pt=-13.06,3.47
16:10:44.302 -> node pt=-12.66,3.47
16:10:44.302 -> node pt=-12.54,3.59
16:10:44.302 -> WARN: PID unmet cycle time Ta=0.24 TaMax=0.07
16:10:44.302 -> WARN: PID unmet cycle time Ta=0.24 TaMax=0.07
16:10:47.697 -> ublox chka error, msgclass=1, msgid=3C, msglen=40: B5!=E4
16:11:00.844 -> SD card found!
16:11:00.844 -> RESET cause: watchdog
16:11:00.844 -> Sunray,1.0.276
16:11:00.844 -> compiled for: Adafruit Grand Central M4
16:11:00.844 -> using robot driver: AmRobotDriver
16:11:00.844 -> robot id: f1:81:dd:56:53:4c:53:34:48:20:20:20:ff:06:03:2b
16:11:00.844 -> MOTOR_DRIVER_BRUSHLESS: yes
16:11:00.844 -> enableCharging 0
16:11:00.844 -> probing for HM-10 module (NOTE: will fail for ESP32)...
16:11:00.844 -> trying to detect Bluetooth 4.0/BLE (HM-10 module) (make sure your phone is NOT connected)9600...
16:11:01.343 -> BLE: AT
16:11:03.372 -> trying to detect Bluetooth 4.0/BLE (HM-10 module) (make sure your phone is NOT connected)115200...
16:11:03.870 -> BLE: AT
16:11:05.301 -> AT+S,0x13
16:11:05.501 -> error: no BLE module found!
16:11:05.501 -> RCModel disabled in config
16:11:05.501 -> ENABLE_TILT_DETECTION
16:11:05.501 -> FREEWHEEL_IS_AT_BACKSIDE: 0
16:11:05.501 -> WHEEL_BASE_CM: 44
16:11:05.501 -> WHEEL_DIAMETER: 220
16:11:05.501 -> ENABLE_LIFT_DETECTION
16:11:05.501 -> LIFT_OBSTACLE_AVOIDANCE
16:11:05.501 -> ENABLE_ODOMETRY_ERROR_DETECTION: 1
16:11:05.501 -> TICKS_PER_REVOLUTION: 384
16:11:05.501 -> MOTOR_DRIVER_BRUSHLESS
16:11:05.501 -> MOTOR_DRIVER_BRUSHLESS_MOW_JYQD
16:11:05.501 -> MOTOR_OVERLOAD_CURRENT: 1.80
16:11:05.501 -> USE_LINEAR_SPEED_RAMP: 0
16:11:05.501 -> MOTOR_PID_KP: 1.50
16:11:05.501 -> MOTOR_PID_KI: 0.03
16:11:05.501 -> MOTOR_PID_KD: 0
16:11:05.501 -> MOTOR_LEFT_SWAP_DIRECTION
16:11:05.501 -> MOTOR_RIGHT_SWAP_DIRECTION
16:11:05.501 -> ENABLE_DYNAMIC_MOWER_SPEED: 0
16:11:05.501 -> MOW_OVERLOAD_CURRENT: 3.00
16:11:05.501 -> ENABLE_OVERLOAD_DETECTION: 1
16:11:05.501 -> ENABLE_FAULT_DETECTION: 0
16:11:05.501 -> ENABLE_FAULT_OBSTACLE_AVOIDANCE: 1
16:11:05.501 -> ENABLE_DYNAMIC_MOWMOTOR: 0
16:11:05.501 -> RAIN_ENABLE: 0
16:11:05.501 -> BUMPER_ENABLE: 1
16:11:05.501 -> CURRENT_FACTOR: 1.98
16:11:05.501 -> GO_HOME_VOLTAGE: 23.50
16:11:05.501 -> BAT_FULL_VOLTAGE: 28.70
16:11:05.501 -> BAT_FULL_CURRENT: 0.20
16:11:05.501 -> BAT_SWITCH_OFF_IDLE: 0
16:11:05.501 -> BAT_SWITCH_OFF_UNDERVOLTAGE: 1
16:11:05.501 -> REQUIRE_VALID_GPS: 1
16:11:05.501 -> GPS_SPEED_DETECTION: 1
16:11:05.501 -> GPS_MOTION_DETECTION: 1
16:11:05.501 -> GPS_REBOOT_RECOVERY: 1
16:11:05.501 -> GPS_CONFIG: 1
16:11:05.501 -> GPS_CONFIG_FILTER: 1
16:11:05.501 -> CPG_CONFIG_FILTER_MINELEV: 10
16:11:05.501 -> CPG_CONFIG_FILTER_NCNOTHRS: 10
16:11:05.501 -> CPG_CONFIG_FILTER_CNOTHRS: 30
16:11:05.501 -> ALLOW_ROUTE_OUTSIDE_PERI_METER: 1.00
16:11:05.501 -> OBSTACLE_DETECTION_ROTATION: 1
16:11:05.501 -> KIDNAP_DETECT: 1
16:11:05.501 -> KIDNAP_DETECT_ALLOWED_PATH_TOLERANCE: 1.00
16:11:05.501 -> DOCKING_STATION: 1
16:11:05.501 -> DOCK_IGNORE_GPS: 0
16:11:05.501 -> DOCK_AUTO_START: 0
16:11:05.501 -> TARGET_REACHED_TOLERANCE: 0.05
16:11:05.501 -> STANLEY_CONTROL_P_NORMAL: 0.60
16:11:05.501 -> STANLEY_CONTROL_K_NORMAL: 0.40
16:11:05.501 -> STANLEY_CONTROL_P_SLOW: 0.80
16:11:05.501 -> STANLEY_CONTROL_K_SLOW: 0.10
16:11:05.501 -> BUTTON_CONTROL: 1
16:11:05.501 -> BUZZER_ENABLE
16:11:05.501 -> SERIAL_BUFFER_SIZE=2048 (increase if you experience GPS checksum errors)
16:11:05.501 -> -----------------------------------------------------
16:11:05.501 -> UBLOX::begin serial
16:11:05.501 -> using gps driver: UBLOX
16:11:05.501 -> trying to connect to ublox f9p...
16:11:05.501 -> NOTE: if GPS is not responding either set 'GPS_CONFIG=false' in config.h or perform GPS wire fix (see Wiki)
16:11:05.544 -> trying baud 115200
16:11:05.544 -> GPS receiver found!
16:11:05.544 -> ublox f9p: sending GPS rover configuration...
16:11:05.544 -> idx=0...OK
16:11:05.544 -> idx=1...OK
16:11:05.583 -> idx=2...OK
16:11:05.583 -> config sent successfully
16:11:05.583 -> sizeof Point=4
16:11:05.583 -> map load... ok
16:11:05.631 -> map dump - mapCRC=-1823114
16:11:05.631 -> points:
16:11:05.631 -> perimeter pts: 109
16:11:05.631 -> exclusion pts: 69
16:11:05.631 -> exclusions: 8
16:11:05.631 -> dock pts: 6
16:11:05.631 -> mow pts: 1234
16:11:05.631 -> first mow point:-8.29,-8.04
16:11:05.631 -> free pts: 0
16:11:05.631 -> mowPointsIdx=0 dockPointsIdx=0 freePointsIdx=0 wayMode=3
16:11:05.631 -> probing for ESP8266 (NOTE: will fail for ESP32)...
16:11:06.101 -> WIFI (ESP8266) not found! If you have ESP8266 and the problem persist, you may need to flash your ESP to firmware 2.2.168
16:11:06.135 -> MPU6050/9150 found
16:11:06.135 -> using imu driver: MpuDriver
16:11:07.466 -> resuming is activated
16:11:07.466 -> state load... ok
16:11:07.466 -> dumpState:  X=-12.69 Y=3.47 delta=1.76 mapCRC=-1823114 mowPointsIdx=551 dockPointsIdx=1 freePointsIdx=1 wayMode=4 op=0 sensor=0 sonar.enabled=1 fixTimeout=70 absolutePosSource=1 lon=10.43 lat=52.44
16:11:07.466 -> resuming operation due to watchdog trigger
16:11:07.466 -> setOperation op=1
16:11:07.466 -> dumpState:  X=-12.69 Y=3.47 delta=1.76 mapCRC=-1823114 mowPointsIdx=551 dockPointsIdx=1 freePointsIdx=1 wayMode=4 op=1 sensor=0 sonar.enabled=1 fixTimeout=70 absolutePosSource=1 lon=10.43 lat=52.44
16:11:07.516 -> save state... ok
16:11:07.516 -> WARN: PID unmet cycle time Ta=2.00 TaMax=0.07
16:11:07.516 -> WARN: PID unmet cycle time Ta=2.00 TaMax=0.07
16:11:07.516 -> batTemp=0.0  cpuTemp=48
16:11:07.516 -> GPS jump: 13.07
16:11:07.516 -> ==> changeOp:ImuCalibration->Idle
16:11:07.516 -> IMU gyro calibration (robot must be static)... 1
16:11:07.516 -> 0:0:10 ctlDur=0.00 op=ImuCalibration->Idle freem=225551 sp=299D bat=0.00(0.00) chg=0.00(0.00) tg=0.00,0.00 x=-12.58 y=3.55 delta=1.76 tow=51085200 lon=10.43170153 lat=52.44016824 h=106.4 n=4362.92 e=-2457.23 d=2.18 sol=2 age=0.02
16:11:08.130 -> ublox chka error, msgclass=1, msgid=43, msglen=508: 0!=B3
16:11:08.529 -> IMU gyro calibration (robot must be static)... 2
16:11:09.526 -> IMU gyro calibration (robot must be static)... 3
16:11:10.557 -> IMU gyro calibration (robot must be static)... 4
16:11:11.555 -> IMU gyro calibration (robot must be static)... 5
16:11:12.519 -> dumpState:  X=-12.56 Y=3.58 delta=1.76 mapCRC=-1823114 mowPointsIdx=551 dockPointsIdx=1 freePointsIdx=1 wayMode=4 op=0 sensor=0 sonar.enabled=1 fixTimeout=70 absolutePosSource=1 lon=10.43 lat=52.44
16:11:12.519 -> save state... ok
16:11:12.519 -> 0:0:15 ctlDur=0.02 op=ImuCalibration->Idle freem=224683 sp=3D33 bat=25.83(0.10) chg=0.66(0.04) tg=0.00,0.00 x=-12.55 y=3.58 delta=1.76 tow=51090400 lon=10.43170183 lat=52.44016853 h=106.4 n=4362.92 e=-2457.23 d=2.18 sol=2 age=0.08
16:11:12.609 -> IMU gyro calibration (robot must be static)... 6
16:11:13.585 -> IMU gyro calibration (robot must be static)... 7
16:11:14.582 -> IMU gyro calibration (robot must be static)... 8
16:11:15.613 -> IMU gyro calibration (robot must be static)... 9
16:11:16.644 -> IMU gyro calibration (robot must be static)... 10
16:11:17.542 -> 0:0:20 ctlDur=0.02 op=ImuCalibration->Idle freem=224683 sp=50BC bat=25.82(0.16) chg=0.66(0.04) tg=0.00,0.00 x=-12.56 y=3.58 delta=1.76 tow=51095400 lon=10.43170182 lat=52.44016852 h=106.4 n=4362.92 e=-2457.23 d=2.18 sol=2 age=0.32
16:11:17.643 -> IMU gyro calibration (robot must be static)... 11
16:11:18.673 -> IMU gyro calibration (robot must be static)... 12
16:11:19.670 -> IMU gyro calibration (robot must be static)... 13
16:11:20.700 -> IMU gyro calibration (robot must be static)... 14
16:11:21.699 -> IMU gyro calibration (robot must be static)... 15
16:11:21.768 -> ==> changeOp:Idle
16:11:21.768 -> OP_IDLE

Kennt Ihr das von euren Mowern? Was sind die Gründe von dem Reset? Hat sich der Code tatsächlich aufgehängt? Wie habt Ihr das gelöst?

Gruß
Alexander
 
etwas seltsam ist das schon. Aber wenn es einzeln aufgetreten ist, würde ich es nicht auf die Goldwaage legen. Ich habe mal irgendwo hier gelesen, dass das loggen auf sd abstrakte Fehler verursacht. Da „sd Card found!“ direkt darüber zu lesen ist, könnte es im Zusammenhang stehen. Eine instabile Spannung am Prozessor oder ein fehlerhafter Cluster auf der sd-Karte wären allgemein auch denkbar. Vielleicht ist ein Bit im Programm „gekippt“. Wenn es häufiger auftritt, würde ich mal den m4 neu aufsetzen (in erweiterter Eskalation auch den bootloader updaten/ neu Flashen).
Am Ende muss man auch sagen, dass die Prozessoren auch nicht das ewige Leben haben. Es passiert selten, aber es passiert, dass sie den Dienst quittieren.
 
Ich habe mal irgendwo hier gelesen, dass das loggen auf sd abstrakte Fehler verursacht. Da „sd Card found!“ direkt darüber zu lesen ist, könnte es im Zusammenhang stehen
SD Loging ist bei mir nicht aktiv, die Ausgaben erfasse ich mit dem parallel laufendem RPI.

Vielen Dank für die restlichen Ansätze, ich beobachte auf jeden Fall weiter
 
289 ist bei mir unbenutzbar, mind zwei resets pro Mähvorgang. Bin zurück auf 276, jetzt ist Ruhe.

was ich schon im Skype Channel gefragt habe, aber leider keine Antwort bekommen. Wie war das gedacht, wenn ein Watchdog Reset auslöst und Resume von der SD Karte im der config auf aktiv gesetzt ist, dann müsste laut Code der Mäher nach dem Reset den Mähvorgang fortsetzen. Der Zustand wird allerdings von der IMU Kalibration überschrieben. Bug oder Feature?

Hust… was steht hierzu im Lastenheft :)
 
Bei mir seit dem gestrigen Update auf die 289 das Selbe Problem...Mit der Alten Version hatte ich keine Probleme.
Gibt es schon einen Lösungsansatz?
 
Falls jemand von euch serielle Monitor Ausgabe mitlogt, solltet Ihr mal auf diesen Wert (freem) ein Auge werfen:
13:04:09.624 -> 0:14:29 ctlDur=0.02 op=Mow(initiatedByOperator 1) freem=204319 sp=D4536 bat=28.09(0.41) chg=0.61(0.02) tg=-11.35,4.97 x=-10.93 y=4.57 delta=-2.96 tow=39867400 lon=10.43172581 lat=52.44017742 h=106.4 n=4368.70 e=-2454.99 d=2.45 sol=2 age=0.34
Dieser läuft bei mir wärend des Mähvorgangs permanent runter (gefüllt nach jedem Obstacle), irgendwann mal wenn es fast bei 0 angekommen ist gibt es einen Watchdog reset. Bis jetzt bei jeder FW ab einschl 289.

Sieht es bei euch auch so?
 
Ich logge bis jetzt nicht mit...Geht das auf die SD-Karte, oder muss ich dafür einen Raspi mitfahren lassen?
 
Ich werde morgen auch mal die aktuelle 1.0.297 installieren auf meinem Ardumower. Alexander hat das Problem auf dem Schirm und weiß wahrscheinlich auch schon wo der Schuh drückt. Er muss aber auch ein paar Tests machen, bevor es eine Lösung gibt.
 
Ich habe heute auch die neue 1.0.297 geladen.
Bis jetzt ist er nicht wieder stehen geblieben....

Kann mir jemand erklären, was ich deaktivieren muss, damit er bei auslösen des Bumpers nicht jedes mal den Mähmotor stoppt, und anfängt zu piepen?
(Er fährt dann aus der Kollision raus und mäht weiter. Aber irgendwie kostet das jedes mal einiges an Zeit.
 
Ich habe heute auch die neue 1.0.297 geladen.
Bis jetzt ist er nicht wieder stehen geblieben....

Kann mir jemand erklären, was ich deaktivieren muss, damit er bei auslösen des Bumpers nicht jedes mal den Mähmotor stoppt, und anfängt zu piepen?
(Er fährt dann aus der Kollision raus und mäht weiter. Aber irgendwie kostet das jedes mal einiges an Zeit.
Ich verstehe auch noch nicht wirklich, warum bei Bumper-Auslösung immer so ein Gewese gemacht wird. Jeder billige Mäher testet dann an und fährt ggf. weiter. Auch ist das virtuelle Obstacle noch immer viel zu groß und hat die falsche Form.
 
Ich habe bei Alexander das mit dem Mähmotor Stopp und dem Hindernisumfahren nochmal vorgetragen. Mal sehen wann er da was ändert.
 
Ich habe heute auch die neue 1.0.297 geladen.
Bis jetzt ist er nicht wieder stehen geblieben....

Kann mir jemand erklären, was ich deaktivieren muss, damit er bei auslösen des Bumpers nicht jedes mal den Mähmotor stoppt, und anfängt zu piepen?
(Er fährt dann aus der Kollision raus und mäht weiter. Aber irgendwie kostet das jedes mal einiges an Zeit.
Kleines Update...er ist wieder im Idle stehen geblieben...in der Version ist es also noch nicht behoben
 
Ja, es ist mit der 1.0.297 noch nicht behoben, das weiß Alexander auch. Er hat gestern von User Eineinach eine Log erhalten vom seinem Worx Ardumower Umbau, ich denke Alexander muss auf seinem Ardumower da ein paar Sachen testen.
 
Oben