Sunray modding Spielwiese

Mr. Tree

Active member
Wegen kleinerer aber mehrere problemchen im Sunraycode ist die Nachfrage nach Lösungsmöglichkeiten, Workarounds.. und Tests doch recht hoch?!
Bei Bedarf wollte ich meine Version über eine Unterhaltung bereitstellen, leider zur Zeit nicht (wie es aber sein sollte) über Github. Kommt vielleicht noch...
Jedoch können nur 6 Leute an einer Konversation teilnehmen, deswegen dieses neue Thema hier.

Ich kopiere einige Infos aus der Unterhaltung. Aber generell bitte beachten:

- es handelt sich um meine Sunrayversion, in die ich händisch Githubänderungen einarbeite, damit ich meine Änderungen nicht immer wieder von vorne Einpflegen muss
- die config.h ist auf meine Hardware angepasst, bitte also unbedingt genau überprüfen, das es nicht zu Fehlkonfigurationen kommt!
- meine Hardware ist die erste BLDC April 2021 Version aus dem Shopset!
- Aufpassen: Adaptive_Speed, Escape_Lawn, USE_MOW_RPM_SET benötigen alle funktionierende RPM_FAULT_DETECTION, das bedeutet es funktioniert nicht ohne funktionierende RPM Berechnung vom Mowmotor
- Es sind define Beschreibungen angelegt, aber nicht 100%ig detailliert. Alle in der Tuningsektion durchlesen
- Wenn RPM funktioniert, spricht nichts dagegen alles aktiviert zu lassen

Kopiert aus Unterhaltung:
Besonders die Funktion no rotation at dock und die svolo funktionen von only last dockpoints slow und gps reboot können sehr verbuggt sein, wenn keine anpassung der map dock points erfolgt. Du brauchst zb. mindestens 3 dockpunkte mehr als die Zahl die du bestimmst..Also GPS REBOOT und ONLY SLOW LAST POINTS zb. bei 4, brauchst du insgesamt 7 Punkte.

Du solltest auch erst am rechner bei beobachten der konsole überprüfen ob deine rpm funktioniert und der regler auch kein offset braucht. Dazu einfach per app den mowmotor starten und 10 sek warten.
Dann kommt sowas hier wenn alles i.o:
checkmotorMowRPMStall: Mow motor Spun up!
DATA: SPINUPTIME (ms), driverPWM, mowRPM, mowRPMSet: 10000, 192, 3392.78, 3400.00

Ich habe doch noch schnell die Software auf gespielt, Docking ging super aber der Mähmotor will nicht.
Motor dreht hoch dann aus/an/aus/an fährt 5cm und wieder Motor aus usw.
Ich habe Brushed Motoren muss ich da noch was einstellen beim Mähmotor ?

Habe jetzt einfach mal das auf False gesetzt und dann hat er in einer unglaublichen Geschwindigkeit gemäht.
Die Wendungen sind überhaupt kein Vergleich zu vorher, muss Morgen mal ein größeres Stück mähen.
Danke


#define USE_MOW_RPM_SET false // uses RPM instead of PWM to set mowmotor
#define ENABLE_RPM_FAULT_DETECTION false

@Beece, ich glaube der Brushed Mähmotor hat kein RPM Signal, oder? Der hat doch nur zwei Kabel + und -. Da wird es nicht anders gehen.

Ohne RPM funktionieren die anderen Funktionen nicht! Das adaptive Speed sollte aber gar nicht einschalten, wenn nicht auch RPM fault detection in der Originalsoftware aktiviert ist. Also, alles... Was bzgl. Adaptive Speed ist, Reverse, escape lawn ... Langsamer ...schneller... Funktioniert NUR über RPM. Also ist Drehzahl des mowmotor.
Man könnte allerdings in dem Fall, wie es auch gut wäre, dann wieder auf die Stromfunktion von letzten Jahr zurückgreifen bzw. Einarbeiten. Das ist aber bestimmt ein paar Tage Arbeit mit bugfixing und Tests pipapo.

Mr. Tree schrieb:


Man könnte allerdings in dem Fall, wie es auch gut wäre, dann wieder auf die Stromfunktion von letzten Jahr zurückgreifen bzw. Einarbeiten. Das ist aber bestimmt ein paar Tage Arbeit mit bugfixing und Tests pipapo.
Das wäre die Lösung für alle Motoren.

Added:
//... Mowmotor ticks per revolution:
#define MOTOR_MOW_TICKS_PER_REVOLUTION 6 //ACT BLDC MOTOR from Shop = 6!

to adjust motordependent tickoutput.... So if your rpm reading is high, like 3000rpm, but physically its much much lower, adjust or calculate tick per revolution ( diable mowmotor in code, run motor test, turn mowmotor by hand to see ticks per 20 turns or so...)
 

Anhänge

  • Sunray-master_follow_SB.zip
    3,7 MB · Aufrufe: 33
Wenn der Undockvorgang durch eingreifen abgebrochen wird, kann es zu einem Bug kommen. GPS REBOOT true nach undocking kann ich bei mir leider nicht testen, wäre schön wenn das mal jemand überprüft bei dem GPS Reset funktioniert.
Die Linear_Ramp sollte TRUE bleiben!
 
Wer RPM benutzt, sollte mittels Konsole testen, welche RPM der Mowmotor bei leerem Akku überhaupt noch erreichen kann!
 
@senil Could you please Copy Paste your Work from your Post with the Pictures from the Dock problem conversation earlier? I think its usefull and the reason for most Users looking for a solution.
 
@senil Could you please Copy Paste your Work from your Post with the Pictures from the Dock problem conversation earlier? I think its usefull and the reason for most Users looking for a solution.
Not problem!!


Hallo,
Ich habe die neueste ZIP-Datei ausprobiert, die im privaten Chat angezeigt wird.
Da ich Bürstenmotoren und MC33926-Controller habe, musste ich beim Setup nichts mehr anfassen.
Das Ergebnis war besser als mit der vorherigen Lösung. Außer, dass ich eine Erfolgsquote von 50 % habe.
(Siehe beigefügte Videos.)

Manchmal ist er fast am Ende angelangt, fängt dann aber an abzudriften und wird dann verrückt.
Ein anderes Mal stoppt es nur etwa 10 Zentimeter entfernt und stoppt, nach einer Sekunde bewegt es sich weiter, bis es die Kontakte erreicht.
Mir ist es auch schon passiert, dass es mit dem ersten fährt und kuppelt.

Ich habe dieses Layout auf der Karte und mit den von mir angezeigten Parkplätzen:


1684838611262.png



Punkt 1, 2 und 3 haben eine FIX-Lösung.
Der letzte Punkt Nummer 4 hat eine FLOAT-Lösung und ich habe sie weiter hinten in der Kabine platziert.
Meinen Sie, ich sollte noch einen Zwischenpunkt hinzufügen?
Andererseits sehe ich im Allgemeinen eine bessere Bewegung in Bezug auf Version 298.

Ich werde versuchen, am Nachmittag weitere Tests durchzuführen und einen weiteren Zwischenpunkt hinzuzufügen.

Danke Mr. Tee!!


Solution for me:

Mr. Tree said:


The function will Set angular 0 after 0,5 seconds reaching the prelast dockpoint. Move your Point 3 more away from Dock. Like where your Point 2 or half the way between. Be aware to have enough dockpoints to Not Trigger Bugs.
Watch Out that you get the Line of three Points as straight as possible, I See some improvement there.

Build something, so it will Hit the bumper If it would Not make it. This way ist will Reverse,wait and try again. You could also tune the time when angular will be Zero.. Its at the end of linetracker.cpp


You are a genious!
With this arrangement I have an 80% or more success rate!


1684857350784.png


NOTE:
Mr. Tree said:


For all who are trying this out and to clarify things: the LAST 3 Points need to be in a straight line as possible. senil forgot in his solution in the picture to show that there is actually 5 points, one is directly at mowperimeter wich would be 4, and dock would be 5.

Pending arrange a "Build something, so it will Hit the bumper."

Thank you very much Mr. Tree!! 🏆
 

Anhänge

  • VID_20230523_112307.ogg
    62,1 MB
  • VID_20230523_112418.ogg
    62,9 MB
  • VID_20230523_115611.ogg
    77,8 MB
Zuletzt bearbeitet:
For all who are trying this out and to clarify things: the LAST 3 Points need to be in a straight line as possible. senil forgot in his solution in the picture to show that there is actually 5 points, one is directly at mowperimeter wich would be 4, and dock would be 5.
 
Gibt es einen Grund warum du die GPS in deiner Config.h deaktiviert war? Ich habe mich halt schon gewundert, warum ich kein GPS Empfang habe, aber die folgenden Zeilen waren deaktiviert. Sonst eine coole Sache und ein großes Dankeschön für deinen Einsatz.

// configure ublox f9p with optimal settings (will be stored in f9p RAM only)
// NOTE: due to a PCB1.3 bug GPS_RX pin is not working and you have to fix this by a wire:
// https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#PCB1.3_GPS_pin_fix_and_wire_fix (see 'GPS wire fix')
#define GPS_REBOOT_RECOVERY true // allow GPS receiver rebooting (recommended - requires GPS wire fix above! otherwise firmware will stuck at boot!)
//#define GPS_REBOOT_RECOVERY false // do not allow rebooting GPS receiver (no GPS wire fix required)

#define GPS_CONFIG true // configure GPS receiver (recommended - requires GPS wire fix above! otherwise firmware will stuck at boot!)
//#define GPS_CONFIG false // do not configure GPS receiver (no GPS wire fix required)

#define GPS_CONFIG_FILTER true // use signal strength filter? (recommended to get rid of 'FIX jumps') - adjust filter settings below
//#define GPS_CONFIG_FILTER false // use this if you have difficulties to get a FIX solution (uses ublox default filter settings)


Nach dem Update, wenn der Mäher neu bootet, dann zuckt kurz der Mähmotoer, ich vermute mal eine kleine Einstellung, da sollte er eigentlich nicht tun. Das macht er wenn die IMU anfängt hochzuzählen (piepsen).
 
Zuletzt bearbeitet:
In bumper.cpp musst du noch die zwei /* raus machen, sonst geht der Bumper delay nicht. Die Funktion hat aber noch ein Problem, wenn der Bumper länger aktiviert ist, dann bleibt der Mäher stehen. Leider weiß ich nicht wie da eine Lösung ist. Vielleicht mal Bumper max trigger deaktivieren mit 0
#define BUMPER_MAX_TRIGGER_TIME 0 // if bumpersensor stays permanent triggered mower will stop with bumper error (time in seconds; 0 = disabled)
 
Und diese Geschichte vermisse ich noch von Sven:

// It is possible to navigate the mower by touch-joystick in sunray-app. In some cases it could be neccessary to navigate the mower very soften, especially when your connected by // It is possible to navigate the mower by touch-joystick in sunray-app. In some cases it could be neccessary to navigate the mower very soften, especially when your connected by
// wifi to the mower. If parameter is set to true, the speed value from app will be used for maximum speed by joystick control. To navigate soften, // wifi to the mower. If parameter is set to true, the speed value from app will be used for maximum speed by joystick control. To navigate soften,
// change the speed slider for example to 0.10. If you need to let the mower drive long distance without accurate positioning change the speed slider to higher values. // change the speed slider for example to 0.10. If you need to let the mower drive long distance without accurate positioning change the speed slider to higher values.
#define USE_SETSPEED_FOR_APPJOYSTICK true // setting of setSpeed is used for maximum speed of mower control with joystick in sunray-app.
//#define USE_SETSPEED_FOR_APPJOYSTICK false // mower will drive at a maximum speed of 0.33m/sec by control with joystick in sunray-app.
 
ja, das von svol0 bekomme ich noch eingebaut. Ich habe bei mir gps config auf false, weil es bei mir zum permanenten neustart der software führt, bzw. diese garnicht erst richtig anläuft. Das ist aber kein codechange dingens, sondern meinem setup vom ublox geschuldet, den habe ich nämlich auf permanente settings configuriert. Bei mir zuckt zwar der mähmotor nicht, aber der mower.... dieses problem habe ich schon versucht zu verstehen und ich bin einfach nicht dahinter gekommen. es muss ein laufzeitproblem sein.
 
Allerdings habe ich just den Mäher 300 Meter enfernt bei meinem Papa an einer Straße mit neuer Map und superlangem Dockpfad ausprobiert. Ein Traum! Hohe Gräser, Unkraut, Reverse auf dem Undockpfad und dann weiter, Pfad schlagen. Für mich funktioniert es gerade wirklich gut!Screenshot_20230524-001520.png
 
Zuletzt bearbeitet:
Es gibt definitiv noch genug sunray bugs, zb. kann er sich ewig festmachen und dann keinen error auslösen. Wenn er aber seinen bumper permanent getriggert sieht , und dann in den eroor geht und abschaltet, ist das gut. Der standard Bumper ist aber leider ein Fail, auch nach upgrade der federn, was realtiv leicht ist, steht er einfach nicht genug hervor. Es fehlt ca. 1cm.
 
Ich denke viele Dinge sind beim Ardumower nach expectation programmiert. Besonders Sicherheitsfunktionen... Diese wurden aber nie getestet. Zb.: Bock den mower auf einem Karton auf sodass er sich im laufenden Betrieb nicht mehr bewegen kann, was denkst du? Wann gibt er seine Bewegungsmanöver auf? Bestimmt nicht RTK basiert, würde ich sagen...
 
For all who are trying this out and to clarify things: the LAST 3 Points need to be in a straight line as possible. senil forgot in his solution in the picture to show that there is actually 5 points, one is directly at mowperimeter wich would be 4, and dock would be 5.
🙈 Sorry.
 
Wollte mich gerade an der Firmware versuchen und habe ein minimales Problem in der Konfiguration (compile error):

Bin die Config.h Zeile für Zeil durchgegangen und auf meine Konfig hin angepasst. Eine Verständnissfrage (wegen Compile Error: PinRemoteMow existiert nicht).

In meiner alten 286 hatte ich dies - zur Steuerung mit einer RC Fernsteuerung und einem RC Empfänger verbunden, Links/Rechts/Schnell langsam funktioniert, Mow Motor wird über App eingeschaltet
#define pinRemoteMow 12 // remote control mower motor
#define pinRemoteSteer 11 // remote control steering
#define pinRemoteSpeed 10 // remote control speed

In der neuen Testfirmware ist es jetzt
#define pinRemoteDrive 12 // remote control CHANNEL1 Linear (Chan 3 at Receiver)
#define pinRemoteSteer 11 // remote control CHANNEL2 Angular (Chan 1 at Receiver)
#define pinRemoteSwitch1 10 // remote control PIN3 SwitchOut1 for LED LIGHTS Relaisboard K1

Und es gibt einen Compile Error: PinRemoteMow existiert nicht - weil ich RC in der Config aktiviert habe.

Gibt es irgendwelche Side Effekte (weil ich nicht weiss was sonst noch im Code angepasst und verändert wurde) , wenn ich meine Definitonen drinlasse und die Pinnummer auf Null setze?
Ich möchte meine RC Lösung weiterverwenden...

Mein Idee - funktioniert dass?

#define pinRemoteMow 12 // remote control mower motor
#define pinRemoteSteer 11 // remote control steering
#define pinRemoteSpeed 10 // remote control speed

#define pinRemoteDrive 0
#define pinRemoteSwitch1 0

Besten Dank
 
Ersetze mit deiner rcmodel.cpp und ändere die pinnamen! Ich habe bei mir einen RC Empfänger dran, aber die hältfe der Pins unterstützen keinen Interrupt, weshalb ich da was geändert hatte. Bei mir hatte ich den mowmotor mit einen Poti eingeschaltet, und einen Pin für das anschalten des RC Empfängers
 
Evtl. Suchst du noch den pinnamen für Led Lights Relais im Code, dieser schaltet bei mir die LEDs aus wenn er den charger connected, das müsstest du löschen. Wenn ich am Rechner bin schaue ich mal genauer.
 
Danke - also bisher voller Erfolg!! 8 von 8 Treffern beim Docken. Bin begeistert....
Und Recht zügig jetzt bei Drehungen.

Allerbesten Dank schonmal dafür - werde weiter testen :)
 
Oben