--- 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.
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.
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
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.
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.
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