Sunray modding Spielwiese

Sorry, ich musste nochmal ein Update machen...

Ich habe den Code von @jklotzek verändert, da waren sehr viele Outputs drin. Dann hab ich den Code noch gehörig eingestampft und in der Funktion etwas verändert. RETRY_TOUCH_DOCK übernimmt jetzt das vorfahren an die Ladekontakte wenn aktiviert. Es gab ein problem das der Code vorher beim chargerdisconnectstate nicht mehr vorgefahren ist weil er schon im idleop war. Ausserdem macht er es jetzt sanfter.

Sunray-master_follow_working-319.4mod.zip
 
Hi,
Ja das war ein Wenig Quick and Dirty.
Bin schon gespannt, mir Deine Modifikation anzuschauen.
Viele Grüße,
Jürgen
 
Ja, ich kenn das^^

Ich bin mal gespannt ob er bei langer Standzeit im Dock auch immer wieder die Kontakte trifft und nicht "wegdriftet"...

Wer hat denn alles überhaupt noch die drv8308??
 
Ja, das ist bei mir auch der fall. Ich mag die eigentlich, die sind schön klein und effizient... Wenn dieser Bug nur nicht wäre.
 
Ich habe ein kleines Update gemacht:

- escapefForward bei Obstaclerotation ist in der config.h wieder aktiviert
- ROTATION_TIMEOUT in der Obstacle sektion der config.h eingefügt, war standardmäßig fest auf 15000. Jetzt 8000 (langer trigger um escapeforward auszulösen)
- ROTATION_TIME in der Obstacle sektion der config.h eingefügt, war standardmäßig auf 3000. Jetzt 2000 (schneller imubasierter trigger der eine winkeldifferenz erkennt und escapeforward auslöst)

Sunray-master_follow_working-319.2mod.zip
Also das mit dem popo hängen bleiben scheint gelöst zu sein. Er hat unser Trampolin mit Ball unten drunter mit Bravour gemeistert. Habe auch die 8308 drin.
 
Ich habe gestern deine 319.1mod aufgespielt und heute getestet. Wusste garnicht, das mein Mower so zackig wenden kann. Er war vorher mit der original FW doch (zu) gemütlich unterwegs.
Danke.

Leider ist er trotz GPS Fix und ohne obstacle sehr langsam zum nächsten Waypoint unterwegs. Am Waypoint ist er schnell und kurze Strecke dahinter dann wieder langsam bis zum nächsten.

wie bekomme ich Ihn wieder auf die alte Mähgeschwindigkeit?

Mein Mower hat Heckantrieb, die großen BLDC-8015 Treiber und nutzt das Sapos NTRIP Niedersachsen.
 
Mhhh... Das muss am adaptive speed liegen? Wenn du den Mähmotor händisch aktivierst und der Mower am USB mit Konsole output hängt, was für eine RPM von checkmowmoterRPM steht da nach ca. 10sek?

Sowas hier in der konsole:

checkmotorMowRPMStall: Mow motor Spun up!
DATA: SPINUPTIME (ms), driverPWM, mowRPM, mowRPMSet: 10000, 184, 2537.27, 2600.00

Bzw.: hat dein ardumower odometrie vom mähmotor?

Am besten wäre, du postest ein LOG!

Das sieht dann so aus:

learObstacles
Linetracker.cpp angular: 0.00
Linetracker.cpp linear: 0.00
LineTracker.cpp targetPoint x = -16.42 y = -18.11
Linetracker.cpp angular: -40.00
Linetracker.cpp linear: 0.25
Adaptive_Speed: Keepslow done!
Adaptive_Speed: Speeding up!
clearObstacles
Linetracker.cpp angular: 0.00
Linetracker.cpp linear: 0.00
LineTracker.cpp targetPoint x = -15.56 y = -26.30
dumpState: X=-16.49 Y=-18.11 delta=0.26 mapCRC=-2238170 mowPointsIdx=368 dockPointsIdx=1 freePointsIdx=1 wayMode=3 op=1 sensor=0 sonar.enabled=1 fixTimeout=120 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=200 finishAndRestart=0 motorMowForwardSet=0
save state... ok
Linetracker.cpp angular: -25.00
Linetracker.cpp linear: 0.25
Linetracker.cpp linear: 0.45
Adaptive_Speed: Speeding up done!
Adaptive_Speed: Using MOW_RPM_NORMAL
Linetracker.cpp linear: 0.25
clearObstacles
Linetracker.cpp angular: 0.00
Linetracker.cpp linear: 0.00
LineTracker.cpp targetPoint x = -15.34 y = -26.21
Linetracker.cpp angular: 40.00
Linetracker.cpp linear: 0.25
Linetracker.cpp angular: 0.00
Linetracker.cpp linear: 0.00
clearObstacles
LineTracker.cpp targetPoint x = -16.20 y = -18.03
dumpState: X=-15.40 Y=-26.20 delta=0.25 mapCRC=-2238170 mowPointsIdx=370 dockPointsIdx=1 freePointsIdx=1 wayMode=3 op=1 sensor=0 sonar.enabled=1 fixTimeout=120 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=200 finishAndRestart=0 motorMowForwardSet=0
save state... ok
Linetracker.cpp angular: 40.00
Linetracker.cpp linear: 0.25
Linetracker.cpp linear: 0.45
Linetracker.cpp linear: 0.25
Linetracker.cpp linear: 0.45

Linetracker.cpp linear: 0.25
clearObstacles
Linetracker.cpp angular: 0.00
Linetracker.cpp linear: 0.00
LineTracker.cpp targetPoint x = -15.97 y = -17.95
Linetracker.cpp angular: -40.00
dumpState: X=-16.19 Y=-18.02 delta=0.61 mapCRC=-2238170 mowPointsIdx=371 dockPointsIdx=1 freePointsIdx=1 wayMode=3 op=1 sensor=0 sonar.enabled=1 fixTimeout=120 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=200 finishAndRestart=0 motorMowForwardSet=0
save state... ok
Linetracker.cpp linear: 0.25
clearObstacles
Linetracker.cpp angular: 0.00
Linetracker.cpp linear: 0.00
LineTracker.cpp targetPoint x = -15.12 y = -26.11
Linetracker.cpp angular: -40.00
Linetracker.cpp linear: 0.25
dumpState: X=-15.96 Y=-18.29 delta=-1.39 mapCRC=-2238170 mowPointsIdx=372 dockPointsIdx=1 freePointsIdx=1 wayMode=3 op=1 sensor=0 sonar.enabled=1 fixTimeout=120 absolutePosSource=0 lon=0.00 lat=0.00 mowPwm=200 finishAndRestart=0 motorMowForwardSet=0
save state... ok
Linetracker.cpp linear: 0.45


Möglicherweise liegt es aber auch nur an einer hohen Leistungsaufnahme vom Mähmotor. Welche Ampere flutschen denn bei dir im normalen Mähbetrieb durch?
In diesem Fall lässt sich das leicht einstellen in der config.h, indemdas hier angepasst wird:

#define MOWPOWERMIN 10.0 // (Watt) idle Power of Mowmotor or minimum load power of mowmotor, if under this load mower will have maximum speed
#define MOWPOWERMAX 60.0 // (Watt) max load power of mowmotor, when hitting this load mower will be at minspeed
 
Zuletzt bearbeitet:
@Mr. Tree
Leider sehe ich keine Ausgabe mittels Konsole oder Log, die mir irgendetwas mit "checkmotorMowRPM" angibt.

Die Stromaufnahme des Mow-Motors im Mähbetrieb liegt bei 0,7-0,8 A und mit Antrieb bei ca. 1,1A. Sollte also so mit den Standartwerten passen.

Hier das Log:
Code:
RESET cause: external
Sunray,1.0.319
compiled for: Adafruit Grand Central M4
using robot driver: AmRobotDriver
robot id: 39:6e:93:64:53:38:57:57:51:20:20:20:ff:08:07:23
MOTOR_DRIVER_BRUSHLESS: yes
enableCharging 0
probing for HM-10 module (NOTE: will fail for ESP32)...
trying to detect Bluetooth 4.0/BLE (HM-10 module) (make sure your phone is NOT connected)9600...
BLE: AT
°trying to detect Bluetooth 4.0/BLE (HM-10 module) (make sure your phone is NOT connected)115200...
BLE: AT
error: no BLE module found!
ENABLE_TILT_DETECTION
FREEWHEEL_IS_AT_BACKSIDE: 0
WHEEL_BASE_CM: 46
WHEEL_DIAMETER: 209
ENABLE_ODOMETRY_ERROR_DETECTION: 0
TICKS_PER_REVOLUTION: 148
MOTOR_DRIVER_BRUSHLESS
MOTOR_DRIVER_BRUSHLESS_MOW_BLDC8015A
MOTOR_DRIVER_BRUSHLESS_GEARS_BLDC8015A
MOTOR_FAULT_CURRENT: 3.00
MOTOR_OVERLOAD_CURRENT: 1.00
USE_LINEAR_SPEED_RAMP: 0
MOTOR_PID_KP: 0.50
MOTOR_PID_KI: 0.01
MOTOR_PID_KD: 0.01
MOTOR_LEFT_SWAP_DIRECTION
MOTOR_RIGHT_SWAP_DIRECTION
MOW_PWM: 200
MOW_FAULT_CURRENT: 8.00
MOW_OVERLOAD_CURRENT: 3.00
ENABLE_OVERLOAD_DETECTION: 1
ENABLE_FAULT_DETECTION: 1
ENABLE_FAULT_OBSTACLE_AVOIDANCE: 0
ENABLE_RPM_FAULT_DETECTION: 1
SONAR_INSTALLED
SONAR_ENABLE: 0
SONAR_TRIGGER_OBSTACLES: 0
RAIN_ENABLE: 0
BUMPER_ENABLE: 1
BUMPER_DEADTIME: 50
BUMPER_TRIGGER_DELAY: 50
BUMPER_MAX_TRIGGER_TIME: 30
CURRENT_FACTOR: 1.98
GO_HOME_VOLTAGE: 21
BAT_FULL_VOLTAGE: 28.00
BAT_FULL_CURRENT: 0.40
BAT_SWITCH_OFF_IDLE: 0
BAT_SWITCH_OFF_UNDERVOLTAGE: 1
REQUIRE_VALID_GPS: 1
GPS_SPEED_DETECTION: 1
GPS_MOTION_DETECTION: 1
GPS_REBOOT_RECOVERY: 1
GPS_CONFIG: 1
GPS_CONFIG_FILTER: 1
CPG_CONFIG_FILTER_MINELEV: 3
CPG_CONFIG_FILTER_NCNOTHRS: 8
CPG_CONFIG_FILTER_CNOTHRS: 17
ALLOW_ROUTE_OUTSIDE_PERI_METER: 1.00
OBSTACLE_DETECTION_ROTATION: 1
KIDNAP_DETECT: 1
KIDNAP_DETECT_ALLOWED_PATH_TOLERANCE: 1.00
DOCKING_STATION: 1
DOCK_IGNORE_GPS: 1
DOCK_AUTO_START: 1
TARGET_REACHED_TOLERANCE: 0.07
STANLEY_CONTROL_P_NORMAL: 1.10
STANLEY_CONTROL_K_NORMAL: 0.05
STANLEY_CONTROL_P_SLOW: 1.00
STANLEY_CONTROL_K_SLOW: 0.10
BUTTON_CONTROL: 1
USE_TEMP_SENSOR: 1
BUZZER_ENABLE
SERIAL_BUFFER_SIZE=1024 (increase if you experience GPS checksum errors)
-----------------------------------------------------
UBLOX::begin serial
using gps driver: UBLOX
trying to connect to ublox f9p...
NOTE: if GPS is not responding either set 'GPS_CONFIG=false' in config.h or perform GPS wire fix (see Wiki)
trying baud 115200
ERROR: GPS receiver is not responding
trying baud 38400
GPS receiver found!
ublox f9p: sending GPS rover configuration...
idx=0...OK
idx=1...OK
idx=2...OK
config sent successfully
sizeof Point=4
map load... ok
map dump - mapCRC=78411
points:
perimeter pts: 30
exclusion pts: 32
exclusions: 2
dock pts: 0
mow pts: 1
first mow point:-5.97,-3.99
free pts: 0
mowPointsIdx=0 dockPointsIdx=0 freePointsIdx=0 wayMode=3
probing for ESP8266 (NOTE: will fail for ESP32)...
WIFI (ESP8266) not found! If you have ESP8266 and the problem persist, you may need to flash your ESP to firmware 2.2.1
MPU ID=0x68
MPU6050/9150 found
using imu driver: MpuDriver
resuming is activated
state load... ok
dumpState:  X=1.08 Y=6.53 delta=-2.96 mapCRC=78411 mowPointsIdx=0 dockPointsIdx=1 freePointsIdx=1 wayMode=4 op=0 sensor=0 sonar.enabled=0 fixTimeout=60 absolutePosSource=1 lon=9.80 lat=53.42 mowPwm=200 finishAndRestart=0 motorMowForwardSet=0
timetable (UTC times)    00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
timetable (UTC times) mon                            *  *  *  *  *  *  *  *  *  *  *             
timetable (UTC times) tue                            *  *  *  *  *  *  *  *  *  *  *             
timetable (UTC times) wed                            *  *  *  *  *  *  *  *  *  *  *             
timetable (UTC times) thu                            *  *  *  *  *  *  *  *  *  *  *             
timetable (UTC times) fri                            *  *  *  *  *  *  *  *  *  *  *             
timetable (UTC times) sat                            *  *  *  *  *  *  *  *  *  *  *             
timetable (UTC times) sun                            *  *  *  *  *  *  *  *  *  *  *             
* means mowing allowed
current GPS UTC weektime: dayOfWeek=mon  hour=0
timetable enabled: 0
mowing allowed: 1
WARN: PID unmet cycle time Ta=6.13 TaMax=0.20
WARN: PID unmet cycle time Ta=6.14 TaMax=0.20
WARN: PID unmet cycle time Ta=6.14 TaMax=0.20

==> changeOp:ImuCalibration(initiatedByOperator 0)->Idle
IMU gyro calibration (robot must be static)... 1
ublox chka error, msgclass=1, msgid=12, msglen=24: 0!=DA
IMU gyro calibration (robot must be static)... 2
IMU gyro calibration (robot must be static)... 3
IMU gyro calibration (robot must be static)... 4
IMU gyro calibration (robot must be static)... 5
IMU gyro calibration (robot must be static)... 6
IMU gyro calibration (robot must be static)... 7
IMU gyro calibration (robot must be static)... 8
IMU gyro calibration (robot must be static)... 9
IMU gyro calibration (robot must be static)... 10
IMU gyro calibration (robot must be static)... 11
IMU gyro calibration (robot must be static)... 12
IMU gyro calibration (robot must be static)... 13
IMU gyro calibration (robot must be static)... 14
IMU gyro calibration (robot must be static)... 15
==> changeOp:Idle(initiatedByOperator 0)
OP_IDLE
IdleOp::begin switch off all motors
Motor::setMowState RPM OFF

comm.cpp cmdControl() changes mowMotor state
Motor::setMowState 1 RPM: 3200.00
dumpState:  X=1.08 Y=6.53 delta=-2.90 mapCRC=78411 mowPointsIdx=0 dockPointsIdx=1 freePointsIdx=1 wayMode=4 op=0 sensor=0 sonar.enabled=0 fixTimeout=60 absolutePosSource=1 lon=9.80 lat=53.42 mowPwm=200 finishAndRestart=0 motorMowForwardSet=1
save state... ok

comm.cpp cmdControl() changes mowMotor state
Motor::setMowState RPM OFF
comm.cpp cmdControl() changes mowMotor state
Motor::setMowState 1 RPM: -3200.00
dumpState:  X=1.08 Y=6.53 delta=-2.90 mapCRC=78411 mowPointsIdx=0 dockPointsIdx=1 freePointsIdx=1 wayMode=4 op=0 sensor=0 sonar.enabled=0 fixTimeout=60 absolutePosSource=1 lon=9.80 lat=53.42 mowPwm=200 finishAndRestart=0 motorMowForwardSet=0
save state... ok
comm.cpp cmdControl() changes mowMotor state
Motor::setMowState RPM OFF

comm.cpp cmdControl() changes mowMotor state
Motor::setMowState 1 RPM: 3200.00
dumpState:  X=1.08 Y=6.53 delta=-2.88 mapCRC=78411 mowPointsIdx=0 dockPointsIdx=1 freePointsIdx=1 wayMode=4 op=0 sensor=0 sonar.enabled=0 fixTimeout=60 absolutePosSource=1 lon=9.80 lat=53.42 mowPwm=200 finishAndRestart=0 motorMowForwardSet=1
save state... ok
Motor::setMowState RPM OFF
CHARGER CONNECTED chgV=28.84 batV=27.42
IDLE->CHARGE: idle time more than 2secs => assuming robot is not in dock
battery.setIsDocked 0
==> changeOp:Charge(initiatedByOperator 0)
OP_CHARGE dockOp.initiatedByOperator=1 dockReasonRainTriggered=0
Motor::setMowState RPM OFF
enableCharging 1
dumpState:  X=1.07 Y=6.53 delta=-2.88 mapCRC=78411 mowPointsIdx=0 dockPointsIdx=1 freePointsIdx=1 wayMode=4 op=2 sensor=0 sonar.enabled=0 fixTimeout=60 absolutePosSource=1 lon=9.80 lat=53.42 mowPwm=200 finishAndRestart=0 motorMowForwardSet=1
save state... ok

Gruß Volker
 
Interessant. Hast du die config übernommen oder hast du etwas verändert? Kannst du die config mal hochladen? Hier liegt jedenfalls auch die Ursache des problems.

Hast du das originale rpm_fault_detection aktiviert?
 
Ich habe deine config mit meinen Parametern aus der FW 317 angepasst. Sonst nichts geändert.
Und das rpm_fault_detection war in allen original Sunray aktiviert.

Hier der Link zu meiner config der 319mod:
config.zip

Danke.
 
Kurzes Update, es gibt ein bug. Beim einfahren in die Ladestation ignoriert er den bumper, jeden falls zum dockpunkt. Ob schon auf dem restlichen Dockpfad muss ich noch testen. Nur das jeder bescheid weiß... Das finde ich sehr ärgerlich, bin mir fast sicher dass das letztes Jahr funktioniert hat...

@Röstkartoffel nachher schau ich mir das noch an. Bin zuversichtlich das es eine config.h Geschichte ist.
 
Noch eine Sache: die Integration mit dem undock/dock... Habe ich auf 10min aktuell, die Treiber werden deaktiviert wenn gedockt, der Mäher war 17h gedockt, ist nicht wegdriftet und die Antriebe haben bisher nicht "geklemmt"
 
Hi Mr. Tree,

Can you describe the hardware requirements? I’m using svolos latest versions but have been seeing bugs recently.

My current setup is not using a brushless motors or a mower rpm detection as I have an older mow motor. Will this version still work or would I need to upgrade all my motors?

I really want to try this but want to make sure I don’t damage the mower.
 
So, i wouldn´t say you damage your mower. But you should be carefull with the config.h if you have an older hardware setup. So double check everything.
Basically, you might discover bugs because you don´t have RPM feedback.

For you, you have to DISABLE:


Code:
#define USE_MOW_RPM_SET           false  // uses RPM instead of PWM to set mowmotor (RPM_FAULT_DETECTION of orig Sunray needs to be TRUE for all RPM based functions!!)
#define ESCAPE_LAWN               false  // mower drives reverse if true and RPM stall of mow motor is detected by more than MOW_RPMtr_STALL(percentage), only available if ENABLE_RPM_FAULT_DETECTION true
#define ENABLE_RPM_FAULT_DETECTION  false     // use mow rpm signal to detect a motor fault (requires mowing motor with rpm output!)


This here (beside of the description ..only available with RPM...) leave it TRUE, i changed the adaptive speed to use mowmotorpower instead of mowrpm,
but i have to check again:

Code:
#define ADAPTIVE_SPEED            true  // if true, mowing speed will adjust to RPM of mow motor on all forward speed mow operations, only available if ENABLE_RPM_FAULT_DETECTION true
#define MOWMOTORPOWER             true  // uses Power (Watts) for adaptive speed instead of mowRPM (best)
 
Ich glaub ich hab das gleiche Problem (oder ein ähnliches), wie Röstkartoffel. Mähen geht super (also echt super, gute Arbeit!), aber zur Docking-Station fahren ist eine Geduldsprobe.
An den Waypoints selbst wird schnell gefahren, kurz danach wird wieder verlangsamt.

Viele Grüße,
Jürgen

Hier meine config:
 
6. Das Problem ist aber nicht der Dockingpfad, sondern der Weg dahin. Hat er den ersten Docking-Punkt erreicht, fährt er wieder "normal" schnell. Die letzten 2 oder 3 Punkte dann wieder langsam.
 
Oben