Wieder mal neuer Status:

In den letzten Wochen habe ich einige/unzählige Stunden damit verbracht die Software zu verbessern. So gab es Fehler bei der Positionsbestimmung beim Drehen, und beim Anfahren eines Punktes ist er oft genau entgegengesetzt gefahren.

Der Mäher dreht nicht ganz auf dem Stand, da ein Rad steht, und sich nur das andere bewegt. Damit gibt es beim Drehen einen Richtungswechsel, und dazu eine Verschiebung in x und y. Im Internet findet man wenig dazu, das was ich gefunden habe war falsch, und so half nur am Papier die Wege und Drehungen aufzuzeichnen und die Formeln selber zu bestimmen. Habe ich sicher auch schon mal in Mathe gelernt, und schon längst vergessen

Das Anfahren von Punkten hatte ähnliche Fehler mit dem bestimmen der Fahrtrichtung.
Ein Problem bleiben nur große Hindernisse (wie Haus) im Fahrweg, da findet er kaum herum. Ich hatte mal vor Jahren etwas in Scilab programmiert das auf einer einfachen Rasterkarte solche Situationen lösen konnte, aber die Übertragung auf den Mäher funktioniert nicht besonders.
Ich habe es jetzt so gelöst dass der Garten in mehrere Bereiche unterteilt ist, jeder Bereich hat einen Bezugspunkt der ohne Hindernisse angefahren werden kann. Wenn ich jetzt einen neuen Punkt im Garten anfahre der nicht im selben Bereich ist, fährt der Mäher von Bezugspunkt zu Bezugspunkt bis er im richtigen Bereich ist, und von da zum Zielpunkt.
Das funktioniert, wenn man die errechnte Position vom Display mit dem Plan vom Garten vergleicht sehr gut. Tests in der Wildnis stehen noch aus.

Was nicht so toll gelöst ist, ist die Auswahl und Reihenfolge der Bezugspunkte. Ich habe es derzeit mit einer Unmenge an switch-case gelöst, geht bei 9 Punkten gerade noch.
Eleganter wärs mit einem A* Algorithmus, aber wie kann man den am Atmega programmieren? Für die 9 Felder müsste es vom Speicherplatz noch gehen, und man könnte den dann auch teilweise für Hindernisse einsetzen. Ich hab jetzt aber keinen Schimmer wie man den programmiert, auch wenn das Prinzip logisch ist, und ich die Ergebnisse ja hardcoded in den switch-case stehen hab.

Ansonsten ist ein neuer 40W Mähmotor eingebaut, der Plastikteller wurde gegen eine Aluscheibe getauscht. Der Plastikteller hat alleine durch den Luftwiderstand 20W verbraten und ca 10A Anlaufstrom benötigt, was den Motortreiber etwas zum glühen brachte. Mit der Aluscheibe ist das Geschichte, leider konnte ich keine größer als 200mm auftreiben, und das Zuschneiden mit der Hand erforderte einiges an Nacharbeit damit es halbwegs passt. Damit ist die Mähbreite vorerst auf 26cm beschränkt, werde später mal testen wie es mit längeren Messern funktioniert.

GPS Empfänger kommt in den nächsten Tagen, Positionsbestimmung erfolgt über Odometrie, wenn Abweichungen zum GPS größer 2m oder größer 10° werden die Daten vom GPS übernommen, und mit denen weitergerechnet.
Programmiert ist schon alles, fehlt nur der Test ob es funktioniert.

Jetzt fehlt nur noch ein Gehäuse und das Auslegen der Begrenzungsschleife. Und je nach Fahrleistung eine Ladestation.

Das Programm braucht jetzt 20kB Flash und 1450B SRAM, wobei im Ram die Rasterkarte vom Garten ca 1000B verbraucht.
Etwas Platz für Erweiterungen ist also noch vorhanden

LG!