Ardumower Software "Sunray"

nero76

Moderator
--- ACHTUNG "Entwicklungsecke" (hier ist nichts 100% lauffähig oder endgültig) ---

UPDATE: Eine aktuelle Anleitung ist nun im Wiki (http://wiki.ardumower.de/index.php?title=Ardumower_Sunray)

Hallo zusammen,

die Ardumower Software "Sunray" ist eine experimentelle Weiterentwicklung der aktuellen Software " Azurit " mit dem Ziel "intelligentes Mähen". Bis "Sunray" jedoch für den produktiven Einsatz wirklich geeignet ist, werden noch viele Tests und Verbesserungen einfließen müssen.

Entwickelt wird derzeit mit folgender Hardware-Ausstattung:
- Ardumower PCB 1.3 mit Arduino Due , Protector PCB, MC33926 Motortreiber
- Ardumower Motoren mit Odometrie
- Schleife und Schleifen-Sender (v2)
- 2 Spulen (links+rechts)
- IMU-Modul 'GY-88'
- Bluetooth-Daten-Verbindung zum PC

Hier also ein Vorgeschmack wie die Software funktioniert. Die Schleife dient dem Roboter zur Ortung. Ein Software-Filter (Particle Filter) schätzt die Position auf der Schleife (beim Abfahren) bzw. innerhalb (beim Mähen). Der Filter ermittelt auch die Wahrscheinlichkeit dieser Position. Sinkt diese unter ein Minimum muss der Roboter die Schleife ein Stück abfahren um wieder eine exakte Position zu erhalten.
https://www.youtube.com/watch?v=Ewqkd6leQjc
Funktionsprinzip des Filters:

Wir wollen vom Chaos-Mähen wegkommen und systematisch und in kürzester Zeit alles mähen. Punkt 1 ist exakt geradeausfahren (und Kurs halten) und Punkt 2 abschätzen wo man gerade ist und die gemähte Bahn in eine Karte eintragen. Da man nicht wirklich wissen kann, wo man ist, dreht man den Spieß einfach um und schätzt wo man nicht sein kann. Wenn wir z.B. die Schleife abfahren können wir zunächst überall sein. Also setzen wir überall potentielle Punkte auf unsere Schleife (sogenannte Particle). Wenn wir nun die Odometrie-Sensoren und den Fahrkurs auswerten, lassen wir unsere Particle auf der Karte mit diesen Sensorwerten (Strecke, Kurs) einfach mitfahren. Es wird Particle geben die die Schleife verlassen - diese entfernen wir von der Karte. Nach und nach werden nur noch die Particle übrig bleiben welche unsere exakte Position beschreiben. So ähnlich funktioniert das Verfahren dann auch zur Positionsbestimmung beim Bahnen mähen.
https://www.youtube.com/watch?v=EoHz1kj8mio
Im ersten Video arbeitet der Filter im Arduino, also im Roboter. Im letzten Video arbeitet der Filter nicht im Roboter sondern am PC. Die Daten werden in Echtzeit über Bluetooth übertragen. Dies soll nicht die endgültige Lösung darstellen sondern ermöglicht uns die Software schneller zu verbessern.

Ich möchte mich bereits jetzt schon bei allen bedanken die Sunray ausprobieren und mir durch ihre praktische Erfahrung Feedback geben.

Anleitung (experimentell):

1. PCB mit Arduino Due bestücken, Bluetooth-Modul (für PC-Verbindung) anschliessen, PC mit Bluetooth-Stick ausstatten
2. Ardumower Sunray auf den Due flashen: https://github.com/Ardumower/Sunray 3. Kompass an PCB anschließen und außerhalb des Roboters (mit 1m langem Kabel) mit 'processing_mag' kalibrieren (theoretisch könnte man den Kompass auch innerhalb des Roboters kalibrieren - dies wird man aber aufgrund der hohen Anzahl benötigter Messwerte kräftemäßig nicht durchstehen). Kabel und alle metallichen Gegenstände (z.B. Schrauben) im Nahbereich (5cm) müssen fest verlegt sein, jegliche mm-Änderung des Kabels oder anderer Gegenstände im Nahbereich verändert die Kompass-Kalibrierung. Empfehlenswert ist die feste Installation des Kompass und des Kabels im Nahbereich in einer Kunstoff-Verteileraufputzdose.
verteileraufputzdose_2017-01-22.jpg

Bei der Kalibrierung Mindestabstand zu allen metallischen Gegenständen in der Umgebung (1m) einhalten. Kompass langsam ständig in alle Richtungen drehen. Der Kompass befindet im Mittelpunkt einer gedachten Kugel und zeigt mit seiner aktuellen Lage auf einen Oberflächen-Punkt dieser Kugel. Man bewegt den Kompass nun so dass man möglichst viele Punkte der Kugeloberfläche trifft, so dass sich die Kugeloberfläche mit Messwerten füllt.
Compass_sphere.png

Wichtig: für einen genauen Kompass viele Messwerte sammeln (mindestens 20000 Messwerte sollten auf der sich ergebenden Kugeloberfläche liegen). Die Kompass-Kalibrierung wird fortlaufend errechnet und zum Roboter geschickt (Roboter bestätigt mit Ton). Die Parameter für die Kompass-Kalibrierung werden in Processing auf der Console ausgegeben. Am besten man notiert sich die Parameter (da diese beim erneuten Flashen des Due überschrieben werden).
4. Kompass im Roboter weit weg (35cm) von jeglichen metallischen Gegenständen installieren. Keine metallischen Gegenstände (z.B. Schrauben) im Nahbereich hinzufügen, dies verändert die Kalibrierung. Am besten Kunsstoffschrauben zur Befestigung der Verteileraufputzdose verwenden.
5. PC-GUI ('processing_sunray') starten - die Sensoren des Roboters sollten angezeigt werden. Beim Start (bzw. alle 3 Minuten) kalibriert der Roboter den Gyro (dauert Outdoor ggf. etwas länger). Der Roboter-Status (Calibration) wird in der GUI angezeigt. Wenn diese abgeschlossen ist, Kompass-Kalibrierung testen indem Roboter langsam auf der Stelle rotiert wird (mit Maus auf Fadenkreuz klicken). Am besten auf einer schiefen Ebene testen (damit alle Kompass-Achsen getestet werden/wir wohnen am Hang). Kompass-Yaw und Gyro-Yaw sollten dabei (auf 3 Grad oder besser) deckungsgleich sein. Nach Einschalten der Motoren ändert sich der Kompass-Yaw typischwerweise um 5-10 Grad. Daher wird der Gyro-Yaw für die Richtung verwendet und der Kompass-Yaw nur zur Korrektur des Gyros-Yaw benutzt (findet alle 3 Minuten statt wenn der Gyro kalibriert wird - Motoren werden dabei abgeschaltet). Falls die Kompass-Kalibrierung nicht erfolgreich war (bzw. metallische Gegenstände zwischenzeitlich geändert oder hinzugefügt wurden) sind Gyro-Yaw und Kompass-Yaw nicht deckungsgleich. In diesem Fall wird das Bahnen mähen nicht funktionieren da der Umkehrkurs (180 Grad) nicht stimmt.

Gruss,
Alexander
 
Ich hoffe allen ist klar was für ein riesen Schritt das ist.
Es gibt ja einen Arbeits-Chat für die Entwicklung und auch wenn es hier mal etwas ruhiger ist, geht es dort immer hoch her.
Die Menge an Stunden, die Alexander in dieses Projekt gesteckt hat, sind nicht zählbar.
Seit 3 Jahren Entwickelt er die Software für den Ardumower.
Nicht am Wochenende wenn mal nebenbei Zeit ist oder im Frühling wenn der Rasen wieder anfängt zu wachsen.
Nein, jede verdammte Woche (meistens alle 7 Tage) seit dieses Projekt gestartet ist, arbeitet er daran.
Wahnsinn wie viele Wege er ausprobiert hat um eine Lösung für das Intelligente mähen zu finden, die einfach und günstig umzusetzen ist.
Jede Idee, auch wenn Sie dann verworfen wird muss ja getestet werden.
Das heißt die Hardware kaufen (da ist einiges im Laufe der Zeit zusammen gekommen €€€) und die Lösung Programm technisch umsetzen.
Manchmal Wochen, manchmal Monate Arbeit, um sie dann am Ende zu verwerfen.
Zum Glück ist Alexander keiner, der dann Entnervt hinwirft.
Wenn Ihr Euch also über diese neue tolle Lösung freut, dann denkt auch an die 1000enden Arbeitsstunden die Alexander dafür investiert hat.

Mir bleibt nur DANKE zu sagen und mich zu freuen das er dabei ist.
Auf eine neue spannende Mäh -Saison. :)
 
Dann sage ich doch schonmal "Danke" ... und werde mal bei Gelegenheit die neue Version runterladen und mir mal anschauen und vllt im Frühjahr mal testen. Momentan sitze ich am Aufbau meiner CNC-Fräse, um schneller an neue Platinen (Stichwort Isolationsfräsen) zu kommen.

Gruß,
Jens
 
Bitte erwartet von den Versionen "Sunray 0.x" nicht zu viel - es ist noch keineswegs ein vollständiges Mähprogramm welches alle Features eines Mähroboters abdeckt, "nur" eine Umgebung (Arduino+PC-Software) womit man das neue "intelligente" Mäh-Konzept einmal Ansatzweise ausprobieren und dadurch Ideen für Verbesserungen gewinnen kann :)

In diesem Sinne allen ein frohes Schaffen! :)
 
Der Arduino Due ist Pin-kompatibel zum Mega, daher kann man ihn gegen den Mega austauschen. Wichtig ist dabei jedoch zu beachten dass der Due ein 3,3v System ist (der Mega ein 5v System), d.h. dass kein I/O Pin mehr als 3,3v verwenden darf. Das lösen wir mit dem PCB 1.3.
 
Alexander, ich bin echt begeistert! B)
Freue mich jetzt schon auf den Moment, wo meine beiden Mower mit Sunray unterwegs sein werden!
Ich bin n bisschen neugierig was die neue SW mit sich bringt.
Zum einen hast du ja schon das "intelligente Mähen" als Prio 1 genannt.
Erzählst du uns bei Gelegenheit mal, was sich an weiteren Features/Änderungen auf der ToDo Liste tummelt?

Grüße, Stephan
 
Hallo Stephan,

ein weiteres Feature wird (voraussichtlich) sein dass du als Anwender auswählen kannst: Ortung per Schleife oder Funk. In meinen Augen ist das Verlegen einer Schleife nicht mehr zeitgemäß und die Funklösung basierend auf UWB-DW1000 Sendern soll eine Alternative darstellen. Pauschal das eine oder das andere kann man nicht sagen, da es auf die Umgebung ankommt (klein/stark verwinkelter Garten mit Häusern drauf: Schleife - großer Golfplatz: zwingend Funk).

Gruss,
Alexander
 
Synray 1.0

Es wird ein historischer Moment sein, wenn Sunray Version 1.0 freigegeben.

Ich werde die Entwicklung mit Spannung verfolgen und hofft, Bau in diesem Herbst zu beginnen, mit dem Ziel, einen Ardumower Sunray bei der Arbeit im Garten zu bekommen.

Wird DW1000 könnte eine Fläche von 3500 m2 verarbeiten?

Können Sie sich das vorstellen, wenn die mittlere Leistung des Schneidens abläuft, ist es auch die Ladestation findet, und nach dem Aufladen weiterhin Schneiden, wo es her Macht ausging?

Wie ich es sehe, DW1000 Lösung intelligent in die Zukunft zu schneiden.
 
Danke für die Info, Alex (darf ich hier abkürzen?!)
Meine Frage war eher etwas allgemeiner, hab die Videos zu den DW1Ks alle gesehen, sehr beeindruckend!
Kannst du schon abschätzen, ob und wie sich die App ändert?
Gibt es für die weniger technisch versierten vielleicht eine guided calibration?
Ist Softwaremäßig ein Not-Aus angedacht? Wird evtl ein zweiter "Arduino" als Watchdog für den Due eingesetzt?
Solche Dinge geistern mir in letzter Zeit im Kopf herum und einige davon werde ich vermutlich auch umsetzen.

Wünsche euch noch nen schönen Abend!
 
Sune Bielefeldt schrieb:
Synray 1.0
Es wird ein historischer Moment sein, wenn Sunray Version 1.0 freigegeben.

Herzlich willkommen, Sune Bielefeldt!

Magst du vielleicht mal deinen Mower (am besten hier http://www.ardumower.de/index.php/de/forum/eure-andere-projekte )
vorstellen.
Ich gehe fast davon aus, dass du schon ne Weile am mitlesen und vielleicht auch selbst bauen bist, wenn dein erster Post hier so euphorisch ist! Vielleicht hast du dich mit dem DW 1000 Sendern im Idealfall auch schon auseinandergesetzt und kannst hierzu Informationen beitragen?

Grüße, Stephan
 
Zuletzt bearbeitet von einem Moderator:
Hello,
sorry for English, but I can't find a thread about Sunray in English.
Please can you give me short introduction of this new SW ?
What I need to implement to upgrade from Azurit to fully working Sunray ?

Thank you for more informations.

Alex
 
Hello Alex,

the new idea in Ardumower Sunray is that a perimeter loop will be mandatory, and that this perimeter loop will be used for the robot's position guidance. The robot will track the perimeter from time to time until it found its position on it. Then it will know it's exact position and continue mowing.
Additionally, a new gyro and compass will be mandatory and will be used for lane-by-lane mowing. The mowed lane will be marked in a map. The trajectory of the mower will be calculated by odometry which will also be mandatory.

Everything is still very incomplete and experimental and under heavy development. Some experiments can be already tried with the code posted in above attachments and with the hardware mentioned in above postings.

Regards,
Alexander
 
Hello Alexander
Could you give a small stock of how SunRay project gaining ground.
Are there any major challenges or you see it as something that can become reality?

Best wishes
Sune

Hallo Alexander
Könnten Sie einen kleinen Vorrat an wie SunRay Projekt gewinnt Boden geben.
Gibt es große Herausforderungen oder sehen Sie es als etwas, das Wirklichkeit werden kann?

beste Wünsche
Sune
 
Hello Sune,

I have a PC controlled indoor working prototype - but outdoor, robustness and user-friendliness is something completely different:

-need to find a way for semi-automatic (user-friendly) calibration of the 3 axis compass where the mower does not have to be rotated over all 3 axis - any ideas are welcome here
-need to add general logic for mow planing
-need to test and improve for outdoor, add robustness
-after PC controlled code works, PC code needs to be ported to Arduino Due, add robot user interface (phone/LCD)

So, still some steps to do - Not impossible, but still some work :)

Regards,
Alexander
 
Dear Alexander.

Thank you for your briefing about SunRay
It seems like a very exciting project that will fundamentally change the way Ardomower work.

I think we are many that follow your work with great interest.

The chaos clipping can be changed to intelligent cutting is a big step forward.

Good luck with the continued development.
 
Moin Alexander,
habt Ihr mal über Folgendes nachgedacht:

Variation der Spurlage mittels Multi-Perimeter-Sensor

Mit einem Perimetersensor ist man in der Lage, durch verfolgen des Aufenthaltsbereiches innerhalb / außerhalb der Schleife mehr oder weniger genau über dem Draht zu fahren.

Mit zwei Perimetersensoren könnte man die Spurlage des Mähers zum Perimeter über Software einstellen:

Wird nur der linke Sensor genutzt (verfolgt den Draht) ist die Spurlage des Mähers „innen“, mit Nutzung nur des rechten Sensors „aussen“.

Nutzt man 2 Sensoren parallel, müsste man die Spurlage stufenlos zwischen den Sensoren „verschieben“ können. bis außen (rechter Sensor verfolgt den Draht) fahren lassen.

Sind beide Sensoren mit maximalem Abstand im Mäher montiert, hätte man die Möglichkeit, die Spurlage fast um die Mäherbreite zu variieren.

Beim Perimetermähen könnte man so nach der ersten Runde die Spurlage umschalten und mit systembedingter Überdeckung die 2. Bahn parallel zum Perimeter mähen.

Andere Möglichkeit ist die Anpassung der Spurlage bei z.B. zu dicht am Rand verlegten Perimeterdraht ...

Gruß ... Peter
 
Peter, geniale Idee!
Wird bei azurit 1.04 eigentlich eine oder beide verwendet? Einer von beiden ADCs(4 oder 5) spinnt bei mir etwas und somit die ganze Trackinggeschichte... Es werden lt. Code schon beide gelesen, aber auch verwendet?

Grüße Stephan
 
Sieht ja schon super aus!!!! :)


Ich weiss ihr arbeitet sicher jeden Tag an der Software, aber kann man schon ungefähr sagen, wann diese für uns zu verwenden ist?

Und ob wir das aktuelle 1.2 Mainboard dafür weiter verwenden können?

Mein Mäher ist zwar fertig, jedoch will ich unbedingt ohne Schleife mähen. Bis zum Software Start mähe ich halt noch mit der RC Steuerung :D

Wünsche euch auf alle Fälle gutes Gelingen


lg Michael
 
Peter Sorgatz schrieb:
Variation der Spurlage mittels Multi-Perimeter-Sensor
/quote]
Moin Leute,
ich hab mal bisschen in den Sunray-Code geschaut und mittlerweile die Vermutung, dass Alexander uns da schon etwas voraus ist...(und mittlerweile vermutlich seinen Vorsprung ausgebaut hat)
In der Perimeter.h findet man folgendes:
#define IDX_LEFT 0
#define IDX_CENTER 0
#define IDX_RIGHT 1
Im weiteren Code werden in der mir vorliegenden Version 0.2 nur LEFT und RIGHT verwenden.
Auch diese sind dort nur definiert.
Ich äußere mal eine Vermutung...
Da der ADC Kanal 6 und Center bisher noch nicht verwendet werden könnte ich mir da durchaus was vorstellen.

Grüße, Stephan
 
Zuletzt bearbeitet von einem Moderator:
Oben