RoπLawnMow

Nun gibt es noch was Neues in 2024 von mir:
Vor Weihnachten hat Aisler noch meine PCBs für die Perimeter Erkennung geliefert. Da habe ich gestern eine bestückt und heute gestestet.
Das Ergebnis seht ihr hier in dem Video
View attachment Perimeterboard.mp4

Ich muss noch dazu sagen, dass im Video der rote Draht nur zeigen soll wo in etwa mein Draht unter meinem Teppich her läuft. Das passte nun nicht zu 100%. Ich hoffe dass es im Frühjahr dann auch seinen realen Test draußen besteht.
Das kleine OLED Display habe ich nur für Testzwecke vorgesehen, Die eigentliche Auswertung der Daten erfolgt dann über de I2C Schnittstelle oben rechts im Bild aif meinem Pi. Der D1 MINi macht m.E. einen guten Job. Das lesen und Auswerten der Daten im D/A Wanderler erfordert ca 91us und reicht gerade so aus, um einen Zyklus auszuwerten.
Da ich im Pi alle 200ms meine Sensoren abfrage, habe ich noch genügend Zeit die daten dann auf dem D1 zu glätten und auf plausibilität zu prüfen.

Euch allen einen Guten Rutsch und "Happy new Year"
 

Attachments

  • PC310221.JPG
    PC310221.JPG
    82.6 KB · Views: 9
  • PC310223.JPG
    PC310223.JPG
    59 KB · Views: 5
  • PC310224.JPG
    PC310224.JPG
    79.3 KB · Views: 10
Hallo zusammen,
ich will hier einmal einen kleinen Status abgeben, was in den letzten Monaten sich bei mir und meinem RoπLawnMow so getan hat.
Ich denke dass er seit Dezember schon im Gartenhaus steht und auf seinen ersten Einsatz in der neuen Saison wartet. An den ersten Stellen wächst der Rasen schon ganz gut, aber das Mähen lohnt sich bei mir definitv noch nicht.
Mit dem von mir erstellten Perimeter Board wollte ich eigentlich noch ein paar Tests mit meinem MINI-Modell machen. Das war aber nur bedingt Möglich, da ich noch viele neue Funktionen an der PiMowBot-SW getestet habe. Etwas was ich schon lange vor hatte habe ich dann aber doch noch in den letzten Wochen umgesetzt.
Mit der Kamera im RoπLawnMow und meiner SW will ich mehr machen. Meine SW erkennt wertet den Grünanteil von Sektoren im Bild aus und stößt dann Ausweichmanöver an. Diese Auswertung will ich intelligenter gestalten. Neben den 3 Sektoren die im Moment die Manöver anstoßen will ich noch 6 weitere nutzen. Also nicht nur das was unmittelbar vor dem Mäher passiert erfassen, sondern auch das was bis zu 1-2 m vor ihm ist in die Auswertung einbringen. Alles soll sich aber nur auf die Auswertung der grünen Pixel beziehen, ich will da keine Objekterkennung implementieren. Dazu habe ich mir noch ein kleines experimentier Modell gebaut. Es hat eine Kamera, einen MPU und einen ToF Sensor. Das eigent sich gut um Im Zimmer ein wenig hin und her zu fahren. Warum habe ich dazu nicht mein anderes Testmodell genommen? Nun hier kann ich mal schnell die SD Karte Wechseln, ein anderes OS nehmen und die Unterschiede zwischen Lagacy Kamera Stack und libcam Tools ergründen. Oder auch zusätzliche Beleuchtung für die Fahrt im Dunkeln testen.

oneEyeCollage.jpg
Im Moment lerne ich ganz viel im Umgang mit dem HSV Farbraum und der Erkennung von Farben. Um das auszutesten soll das kleine Modell (Projektname "OneEye" automatisch die Farbe des untergrundes erkennen und sich darauf bewegen. Das klappt mittlerweile recht gut. Ich will aber noch das Standard Fahrprogramm und die Ausweichmanöver verbessern.
View attachment OneEyeCV2.mp4















Hier seht ihr wie er sich schon sehr sicher auf dem roten Karton bewegt, Rot geht im Moment besser als Grün, weil sich dieses Rot viel intensiver vom Teppich im HSV Farbraum abhebt als grüner Karton. Mein Ziel für die kommenden Tage ist, das genau so sicher au fGrün hinzubekommen. Mittlerweile habe ich auch die Beleuchtung in Betrieb genommen. Auch ein schöner Test mal mit den LED Strips zu "basteln"
Video folgt dazu sicher bald.
 
Und heute habe ich es doch noch hinbekommen, dass er sogar bei künstlichem Licht sehr zuverlässig auf dem Karton bleibt. Ihr könnt auch die "Bremslichter" sehen die sind "Knallrot" also fettes (255,0,0) für die LEDs. Wenn das "Fahrlicht" eingeschaltet ist leuchten die hinteren LEDs mit (50,0,0) so kann man auch sehr schön den Unterschied sehen wenn gebremst wird. Eben wie im echten leben 5x heller.
Was ihr nicht sehen könnt ist die Phase bei der er zuerst ein paar Fahrten macht und den Untergrund / das was vor ihm an Farbe ist abscannt. Während dieser Phase lasse ich die "Warnblinkleuchten" blinken :-)
Macht schon Spass ein wenig mit Licht zu spielen, das weiß unser Fürst ja auch :)
Viel Spass beim Schauen. Code kommt demnächst nach Github, wer vorher was braucht einfach melden.

View attachment Greendetect.mp4
 
Der Rasen wird über den Jahresverlauf seinen Grünton ändern. Das Tageslicht ändert wohl auch den Farbton, der bei der Kamera dann ankommt. Folglich muß wohl der Mäher dann kontinuierlich die Grün-Erkennung anpassen?
In meiner Umgebung geht „zum Glück“ 1/3 meines Grundstücks nahtlos in das Grundstück des Nachbarn über. Rein optisch ist das ein Gewinn für beide, da die Grundstücke damit größer wirken. Ein weiteres Drittel des Rasens hat eine Steinborde (bestens für Kamera geeignet) und das letzte Drittel ist begrenzt durch grüne Büsche.
Somit ist wohl die Anforderung an eine Kameraerkennung recht hoch.
Insofern bin ich gespannt, wie sich das Thema bei Dir weiterentwickelt.
Ich hatte überlegt, ob ich evtl. einen der Mäher in Zukunft mit einer etwas besseren Kamera ausstatte und die Daten dann auf einem potenten PC auswerte. Das sollte gut möglich sein, da der Mäher und das GPS ins wlan eingebunden sind.
Bis dahin versuche ich aber zuerst meine GPS-Ortung stabiler hin zu bekommen.
Gruß Fürst Ruprecht
 
Der Rasen wird über den Jahresverlauf seinen Grünton ändern. Das Tageslicht ändert wohl auch den Farbton, der bei der Kamera dann ankommt. Folglich muß wohl der Mäher dann kontinuierlich die Grün-Erkennung anpassen?
Hallo mein Fürst, schön dass Dich das Thema interessiert, dann habe ich es nicht vergebens gepostet. Ich will dazu demnächst noch ein paar Details zum Konzept publizeiren. Es ist nicht so, -auch wenn dass bei dem grünen Karton vielleicht ginge - dass er eine Farbe als Referenz nimmt. Bei openCV kann man mit Farbräumen arbeiten, also z.B. sehr dunkles grün bis zu ganz hellem grün. Solange sich das was ich vergleiche in diesem Farbraum bewegt wäre alles fein. Kommt er an graue Steine oder etwas anderes was nicht in dem Farbraum liegt, so wird er das merken. Auch dann kann man noch bestimmen, wie er damit umgehen soll, wenn etwas außerhalb des Farbraumes liegt. Da bin ich aber noch am Anfang meines Lernens. Man kann angeblich zusätzlich mit Farb differenzen arbeiten. Das soll dann Sinn machen wenn ein anlysiertes Bild / Frame vielleicht an der Grenze das definierten Farbraumes ist, z.B. braune Blätter im Herbst, oder Erde von Bumenbeeten. Ich habe in den letzten beiden Jahren ja schon sehr erfolgreich mit der Kameraanalyse gemäht, aber gerade im Herbst kam es öfters zu Fehlinterpretationen auf dem Rasen. Die Beete und die Ränder hat er schon sehr gut erkannt. Dennoch hatte ich als Fallschirm mir einen Perimeterdraht gelegt, aber nur einmal um den Rasen herum. Meine Rasenfläche ist aber auch viel kleiner, als in Deinem Fürstentum. Was aber sicher eine Herausforderung wäre, ist wenn die Rasenflächen der Eigentümer eineinander übergehen, und der Nachbar nicht möchte, dass der Mäher aus einem fremden Fürstentum auf seiner Wiese arbeitet.
Mein Ansinnen war eigentlich zu Anfang als ich den OneEye konzipierte die ganze Auswertung auf einem PC / Notebook zu machen und dann nur die Fahrbefehle zurück zu ihm via Socket zu senden. Leider gab es Farbverfälschungen beim streamen der Bildinformation und damit Fehlfunktionen. Wenn ich das ins richtige Leben übertrage, war ich da aber noch in der Grundschule mit der Farbanalyse. Mittlerweile stehe ich kurz vorm Abitur und wenn das alles perfekt auf dem PiZero 2W funktioniert, will ich das mit dem Streamen noch einmal verfolgen. Für die Parxis bei mir aber ungeeignet, da mein Garten nicht Wifi Abdeckung in Summe hat, und ich dazu auch keine SIM Karte verbauen möchte. Also eigentlich eher zum Studium gedacht. Dennoch bin ich zuversichtlich, dass ich auch auf dem PiZero oder bei meinen großen Mähern auf dem Pi4 / P4 sehr gute Ergebnisse erzielen kann.
Gruß
Ulli
 
Heute noch ein kurzes Update und ein erstes Video mit Hindernissen auf meinem grünem Foto-Karton.
Bei dieser Testfahrt finde ich hat die Bildanalyse schon ganz ordentlich funktioniert. Das braune Packpapier um die Lego Pflanzen soll die Blumenerde simulieren. Natürlich passt das Größenverhältnis nicht, so kommt es schon mal vor, dass er mit dem Heck durch die Pflanzen fährt, aber es soll ja auch nur zeigen, dass die Farberkennung im großen und ganzen schon gut funktioniert. In dem angehängten Bild ist das erste Ausweichmanöver festgehalten. Oben kann man erkennen welchen Farbraum ich zulasse, lower - upper und unten in den roten rectangles kann man sehen welche Farbe er dort erfassst hat. Darüber habe ich die Farbwerte als Farbe dargestellt, da ich mal wissen wollte wie die Farbe dann für das menschliche Auge aussieht.
View attachment OneEye-Camera.mp4

Für mich gibt es jetzt noch 2 wichtige Dinge zu tun:
a:) Man kann gut erkennen dass er wenn er sich selbst im Licht steht das grün zu sehr abdunkelt. Die Bildanalyse hat ergeben, dass er in Summe das Bild zu dunkel aufnimmt. Das trifft auch für die Stops an den dunkleren grünen Stellen zu. Hierzu muss ich noch die Belichtungszeit automatisch anpassen. Beste Ergebnisse habe ich mit einer Bildhelligkeit von 160 erzielt ( brightness Angabe oben rechts im jpg)
stops_20000.jpg
b:) Im Moment werte ich nur die unteren 3 rectangles vom Bild aus. Sind alle 3 zu wenig grün, muss er wenden ist nur das linke zu wenig grün, korrigiert er nach rechts usw. Das ganze Bild habe ich in 9 Rechtecke aufgeteilt die ich alle auswerten möchte. Damit kann man dann z.B. sinnvolle Manöver definieren. z.B. ist der Linke unten und der in der Mitte unten zu wenig grün, aber alle anderen darüber sind ausreichend grün, handelt es sich wohl eher um ein Blatt vom Baum, oder Moos im Rasen oder, oder. Wenn die ToF Sensoren kein Hindernis erkennen, könnte er so also weiter fahren und müsste nicht die Richtung welchseln.
So viel ersteinmal zu dem aktuellen Status der Bildanalyse basierend auf der PiCamera V1.3 . Ausgewertet wird das Bild mit openCV. Da ich nicht streame, sondern nur das Bild local speicher, es mir aber über einen Fask Webserver auf ein Device bereitstellen lassen kann, benötigt das Script bei einem "PiZero 2W"!! nicht einmal 5% CPU Last. Und ich finde dafür ist das Ergebnis also die Reaktionsgeschwindigkeit Top! Was meint ihr?
Gruß
Ulli
 
Last edited:
Back
Top