Heiners Mäher (v0.0.1)

otterstedt

New member
Hallo allerseits,

mein Mäher fährt seit ein paar Tagen testweise in der Gegend herum,
deshalb möchte er sich hier nun kurz vorstellen ;-)


mymower.jpg



Das Ganze ist bisher vor allem eine Design-Studie. Auch rigorose
Änderungen am Konzept sind möglich (und sogar wahrscheinlich).

Die elektronische Hardware entspricht weitgehend dem Ardumower.

Bisher gilt das auch für die Software. Allerdings komme ich aus der
Programmierer-Ecke - es ist ein zusätzlicher leistungsfähiger Rechner
für Standortbestimmung und Navigation vorgesehen. Einiges davon ist
auf dem Desktop schon implementiert (A-Star, angepasster Floodfill,
openCV-Grassensor, openCV-Objekterkennung usw.).

Außerdem habe ich einen landwirtschaftlichen Hintergrund. Das erfordert
auch ein paar Änderungen am Design: Das Mähwerk ist zwar noch nicht
fertig, aber es wird vor den Rädern laufen. Die Aufnahme für das Mähwerk
ist schon jetzt in der Höhe und im Anstellwinkel stufenlos verstellbar.

Liebe Grüße, Heiner
 
Hallo Heiner,

ich finde Deine Idee ausgesprochen gut - Hintergrund: nicht jeder möchte eine Induktionsschleife im Garten verlegen. Wie ist der Fortschritt bei Deinem System, gibt es nähere Infos?

Ich habe mich gestern ein wenig mit OpenCV auseinandergesetzt und mir fallen ein paar Ideen zur Graserkennung ein:

- Über absolute Histogramm-Auswertung, z.B. zeigt "Rasen" eine andere Verteilung als "Kein-Rasen" (es reicht hier sogar ein Graubild): http://grauonline.de/alexwww/ardumower/mower_computer_vision.jpg - Über Histogrammvergleich mit Bildausschnitt "oben" zu Bildausschnitt "unten" (Gegenstände etc. zeigen eine andere Verteilung)
- Über HSV-Auswertung (Rasen "grün", "Nicht-Rasen" kein bis wenig grün)
- plötzlich auftretende Kanten deuten auf "kein Rasen" hin
bzw. eine Kombination davon

Desweiteren denke ich über Navigation nach (Vorbild: "Ratslam"). Die Idee wäre an einem einzelnen Bild zu erkennen, ob ein Ort schon einmal da gewesen ist. Wenn dies mit einer bestimmten Wahrscheinlichkeit klappt, könnte man die einzelnen Orte (Wegpunkte) über jeweils zurückgelegten Winkel und zurückgelegte Entfernung grob miteinander verknüpfen (Stichwort: neuronales Netzwerk), um so eine Karte der Umgebung für eine Navigation zu erhalten.

(Vermutl. braucht man ein Weitwinkel-Objektiv, damit man möglichst viele Merkmale der Szene erfassen kann)
http://www.youtube.com/watch?v=t2w6kYzTbr8
Als günstige und einfache (Plug&Play) Hardware ("Navigations-Computer") könnte man später auch über ein Android-Gerät nachdenken:
-OpenCV-Echtzeitverarbeitung ist in C möglich (über JNI)
-Evtl. benötigte Weitwinkel-Objektive kann man einfach auf vorhandene Handy-Linsen setzen

Ich würde mich freuen wenn Du Dein System etwas genauer vorstellen könntest :)

Gruss,
Alexander

NACHTRAG: Ich habe mir Deinen Beitrag zum Rasensensor nochmal angesehen (http://www.ardumower.de/index.php/de/forum/sensoren/57-rasensensor?start=20#2428) - Dein Ansatz der Kameraorientierung ist interessant (Du lässt die Kamera direkt auf den Boden schauen), evtl. könnte man über "2D-FeaturePoints" hierüber (grob) Drehwinkel und zurückgelegte Entfernung bestimmen...
 
Hallo, ich komme gerade aus dem Urlaub zurück und bin deshalb noch
nicht wieder so richtig "im Thema". Vorm Urlaub habe ich u.a. mit
allen möglichen "Visual-SLAM" Lösungen herum gespielt. Unter anderem
war auch RatSLAM dabei. Soweit ich mich erinnere hatte ich zunächst
einige Probleme die Sourcen (unter Linux) überhaupt zum Laufen zu bringen.
Als das dann endlich geklappt hat gab es Probleme mit dem wirklich
sehr komplexen Config-File. Werde mir das aber noch mal ansehen.

Bisher ist mein Favorit LibViso2 . Hier ein
kleines Video zu dazu vom Programmierer:

[video width=425 height=344 type=youtube]EPTJz7w_AqU[/video]

Eine weitere Idee war es die beiden Kameras neben den Rädern senkrecht nach
unten blicken zu lassen. Damit kann man dann (zusätzlich zur Grassensor-Funktion)
auch noch relativ leicht die zurückgelegt Strecke berechnen. Man erhält also einen
optischen Odometrie-Sensor. (Bei Interesse habe ich dazu ein OpenCV-Demo)

Ach ja und kurz vor dem Urlaub habe ich bei ebay (für knapp 40€) einen Kinect-Sensor
erstanden. Erste Versuche damit waren ziemlich interessant. Leider funktioniert
er aber bei starkem Sonnenschein nicht so gut. Mal sehen, ob man trotzdem etwas
damit anfangen kann und ob er evtl sogar aus Gras-Sensor geeignet ist.
Überhängende Vegetation müsste damit problemlos von Rasen zu unterscheiden sein.

Wie man sieht habe ich erst mal in alle möglichen Richtungen gestochert um einen
Überblick zu bekommen, was es schon alles so gibt. Wenn ich etwas Vorzeigbares habe
werde ich berichten.

Liebe Grüße, Heiner
 
@Heiner: LibVisio2 sieht interessant aus:

- hast Du mit nur einer Kamera ausprobiert?
- kann man weitere Daten (Radumdrehungen/Kurs) einbeziehen, um die Genauigkeit zu erhöhen?

Hier ein Beispiel wo eine 360 Grad Kamera eingesetzt wird - der Ansatz ist ähnlich:
https://www.youtube.com/watch?v=2Ypt4BdQ3Co
 
Ja, ich hatte zwei Creative 720p Webcams verwendet. Ansätze mit einer
Kamera haben bei mir nicht wirklich gut funktioniert weil es immer mal
wieder dicke Sprünge in der Odometrie gab. (Ganz ohne solche Hopser
ging es allerdings auch bei zwei Kameras nicht)

Das Hauptproblem war, dass sich die Kameras so viel USB-Bandbreite
vom System zusichern lassen, dass USB 2.0 nicht für zwei Kameras
ausreicht. Nach etwas wühlen im System konnte ich das mit einem Quirk
im Kernelmodul uvcvideo umgehen (Linux):

# rmmod uvcvideo
# modprobe uvcvideo quirks=128

Es gibt einige Lösungen die "Visual"-Daten mit den Sensoren von den Rädern
und/oder GPS zu verbinden, damit habe ich mich bisher aber nur am Rande beschäftigt.
Das Mittel der Wahl dürfte da wohl wieder der Kalman-Filter sein.
Wichtig ist auch, dass der berechnete Standort ständig verbessert wird, indem
Strukturen in der Umgebung wiedererkannt werden ( Loop-Closure ). Auch damit
habe ich mich bisher kaum beschäftigt.

Und zuletzt noch zwei Links: Zum einen spiele ich gerade mit dem Kinect-Sensor herum.
Mein Favorit ist da die libfovis . Echt faszinierend!
Zum zweiten bekam ich gerade heute den Hinweis, dass LSD-SLAM endlich veröffentlicht
wurde. Bisher habe ich es leider noch nicht kompiliert bekommen, sieht aber sehr
interessant aus.

Nachtrag: Habe oben noch einen Link auf ein Video eingefügt,
dass ganz gut zeigt, wie das mit dem Loop-Closure funktioniert.
 
Hier noch weitere interessante SLAM-Umsetzungen mit Open Source Code und vor allem Demo-Videos:

RT-SLAM (Monokular) http://www.openrobots.org/wiki/rtslam/ Demo-Video: http://homepages.laas.fr/croussil/videos/2011-06-09_rtslam-inertial-robot-grass.avi
SmartSLAM (Bearing-Only SLAM, Omnidirektional/360) http://www.servicerobotik-ulm.de/drupal/?q=node/55 Demo-Video: http://www.servicerobotik-ulm.de/drupal/?q=node/60
Mein derzeitiges Problem: es gibt hunderte von Libraries - man kann zeitlich leider nicht alle testen, um sie hinsichtlich Robustheit, Outdoor-Fähigkeit, dynamische Umgebung etc. einzuordnen... (die perfekte, universelle Library scheint es wohl noch nicht zu geben)
 
@Heiner: könntest Du Deinen OpenCV-Code (zur Graserkennung) hier zur Verfügung stellen? Dann muss man das nicht auch noch wiedererfinden :) Danke!
 
Moin allerseits,

> könntest Du Deinen OpenCV-Code (zur Graserkennung) hier zur Verfügung stellen?

Klar. Ich lade mal eine Version ohne Speichern des Ergebnis-Videos hoch. Die dürfte
einigermaßen selbsterklärend sein.

Leider bin ich gerade wieder "auf dem Sprung" deshalb nur eine kurze Erklärung dazu:

Kritisch ist das "inRange" zu Beginn der Schleife. Die Grenzwerte habe ich
händisch ermittelt. In einer endgültigen Version müssen sie laufend dynamisch an
die Realität angepasst werden. Das dürfte dürfte aber wohl machbar sein.
Bei guter Justierung konnte das Programm sogar "gemäht" von "ungemäht" unterscheiden.

Weiterhin ist der "morphologyEx" Block ziemlich zeitaufwändig. Da sind aber definitiv
nicht alle Schritte notwendig. Leider kann ich mich im Moment nicht mehr erinnern
welche ich bei der Erstellung des Videos verwendet habe. Da war aber sicherlich
mehr als die Hälfte der Anweisungen auskommentiert.

Liebe Grüße, Heiner

grasdetect-13.04.14.zip

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/1209/grasdetect-13.04.14.zip/
 
Zuletzt bearbeitet von einem Moderator:
Oben