Google Tango robot mower

Länger drüber nachgedacht könnte ich als nächstes sowas wie eine Navi-Software einbauen ;-)

1. Schritt: der Benutzer gibt das Arbeitsgebiet (Fläche) mit Hilfe einer virtuellen Schleife vor.
2. Schritt: es wird eine Route berechne welche alle Punkte auf dieser Fläche "besucht". Dabei können Stellen welche nicht überquert werden können (z.B. herumliegende Gegenstände) noch nicht berücksichtigt werden da diese noch nicht bekannt sind.
3. Die "Navigation" startet, der Roboter besucht Punkt für Punkt seiner Route. Trifft er dabei auf einen Gegenstand wird dieser in seine Karte eingetragen und die Routenberechnung für noch nicht besuchte Punkte wird neu durchlaufen. Nach und nach ergeben sich neue Routen aufgrund der gefundenen Gegenstände.
 
Hi Alexander,

jep, und schon wird der ... :whistle:

BTW, hast Du mal die Kamera aus Sicht des ArduMowers geführt? Die Perspektive ist da unten ja schon eine andere.
Alles sehr vielversprechend!

VG
Rajiva
 
Ja, ich werde noch ein Video zeigen, da halte ich die Kamera aus Sicht des Mowers. Er erkennt auch dort bereits innen/außen (Schleife ändert dann die Farbe). Da wir hier mit einer 3D-Kamera arbeiten können bestimmt auch herumliegende Gegenstände erkannt werden weil diese an der Oberfläche am Boden hervortreten.
 
Hallo,

hier also so etwas wie eine Konzeptstudie. Der Benutzer legt zunächst über Touchfunktion die Punkte für die Schleife fest. Dann legt die Software ein "Schachbrett" in die Fläche, jedes Feld bekommt eine Farbe: gemäht (rot) und nicht-gemäht (grün) - nun wird fortlaufend das nächste Zielfeld bestimmt, eine "Fahnenstange" dort hineingesetzt und der Weg zum nächsten Etappenziel angezeigt.

Viel Spaß beim Ansehen :)

Indoor: https://www.youtube.com/watch?v=onQNc0t532Y
Outdoor:
https://www.youtube.com/watch?v=4JwWxFMLMMM
 
Wow, wie cool ist das denn!

Da ist es ja auch denkbar das Bahnenmähen relativ einfach hinzubekommen ohne große Odometrie und Kompaß.

Und noch ein paar verrückte Ideen und Überlegungen.

Wenn ich das Tango Projekt bis jetzt so verstanden habe, erkennt es grob gesagt die Richtung und Position aus der Differenz zwischen 2 Bildern, richtig?

Wie genau ist den die Distanzmessung, könnte man im Ardumower damit auch auf die Ultraschallmodule verzichten?

Zudem stellt sich mir aber die Frage wie man eine sichere absolute Positionsbestimmung zum Start des ganzen hinbekommt.
Also, was passiert wenn ich die Kamera ausmache und mich ein paar Meter weiterbewege.
Wie findet man dann die eigene korrekte Position bzw. des Perimeters wieder?

Kann das System damit auch braune Maulwurfshügel als Hindernis erkennen ;)

Sollte man evtl. dazu Handy's als Kamera und Karten/Navigationssystem nutzen und den Arduino "nur" für die Sensorik verwenden?

Und und und.....

Ganz tolle Geschichte!
 
1. Welche Sensorik hat das Google Tango Gerät (Lenovo phab2PRO)?
-eine Fischaugenkamera (2D, hohe Auflösung)
-eine Tiefenkamera (3D, sehr geringe Auflösung) welche jedem Pixel eine gemessene Entfernung (Tiefe) zuordnet
-eine normale Kamera (2D, hohe Auflösung)
-einen IMU-Sensor
tangophone.jpg

tango_sensor_fusion.jpg


Quelle: http://arstechnica.com/gadgets/2016...google-tech-debuts-on-crappy-lenovo-hardware/
2. Wie funktioniert Google Tango?
Es kommen zwei Verfahren zum Einsatz: "präzise 3D-Bewegungserkennung" und "Wiedererkennung einer 3D-Position". Die Bewegungserkennung ("Motion Tracking") verwendet den IMU-Sensor und die Fischaugenkamera um die Bewegung des Gerätes in allen Achsen (x,y,z) präzise zu ermitteln. Dies funktioniert bei "normalen" Bewegungen erstaunlich gut und mit hoher Wiederholgenauigkeit. Mit Motion Tracking allein driftet allerdings die Positionserkennung (schon nach ein paar Metern).
project-tango-8-1024.jpg

tango_drift_Correction.png


Zusätzlich zur 3D-Bewegungserkennung gibt es noch die Möglichkeit eine Umgebung zu "erlernen" ("Area Learning"), d.h. es werden 2D-Daten ("Key Visual Features") der Fischaugenkamera aus der gelernten Umgebung in einer Datenbank (mit der aktuellen Position) abgespeichert und das Gerät versucht seine aktuellen 2D-Daten in den bereits gelernten Daten zu finden um seine Position fortlaufend zu korrigieren. Diese Positions-Korrektur findet innerhalb weniger Sekunden statt und funktioniert auch dann wenn z.B. die Kamera zwischenzeitlich verdeckt wurde.
project-tango-10-638.jpg

tango_adf_learning.png


3. Wie funktioniert "Augmented Reality", also das Einblenden von virtuellen Gegenständen, einer virtuellen Schleife usw.?
Basierend auf der zuvor genannten Positions- bzw. Bewegungserkennung kann das Gerät präzise seine aktuelle Position ermitteln (x,y,z). Die Daten der Kamera (Öffnungswinkel usw.) sind ebenfalls bekannt. Mit diesen beiden Daten berechnet Google Tango nun wo sich ein beliebiger 3D-Punkt (x,y,z) im 2D-Kamerabild (x,y) für die aktuelle Kameraposition (x,y,z) befinden müsste, führt quasi eine "virtuelle Projektion" durch und zeichnet diese in das Kamerabild mit ein.
projection_en.jpg


4. Kann der 3D-Sensor einen Maulwurfshügel erkennen? Ja, dies sollte gehen. Der 3D-Sensor kann Tiefenbilder (3D-Punktwolken) machen ("Depth Perception"). Die Schwierigkeit besteht jetzt nur noch darin, mathematisch auszudrücken was ein Gegenstand in so einer Punktwolke sein soll. Eine Idee wäre z.B. zunächst eine Fläche in diese Punktwolke zu legen und dann zu ermitteln wie hoch die Varianz (Abweichung) der Punkte von dieser Fläche ist.

tangodepth.png

tangodepth2.png

tangodepth3.png

tangodepth4.png

tangodepth5.png



Gruss,
Alexander
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/tangophone.jpg/
 
Zuletzt bearbeitet von einem Moderator:
Bei aller Lobhudelei des Google Tango sollte man vielleicht noch eine jetzt erst entdeckte Schwachstelle erwähnen: das System braucht oben genanntes "Area Learning" damit die Positionserkennung beim "Motion Tracking" nach ein paar Metern nicht driftet. Das System kann also bereits gelernte "Szenen" (und dazugehörige Positionen) speichern und wiedererkennen, allerdings teilt es einem eine wiedererkannte Szene nicht mit (außer die allererste erkannte Szene beim Start des Systems). Man kann also nur hoffen dass es eine erlernte Szene in den letzten Sekunden/Minuten erkannt hat. Ändern sich Randbedingungen (z.B. Helligkeit, Änderung der Umgebung) im Lauf des Betriebs werden zwangsläufig weniger erlernte "Szenen" wiedererkannt. Da aber kein Area Tracking Feedback erfolgt kann man keine Aussage über die Wahrscheinlichkeit einer Position machen...
 
Die App der "Konzept-Studie" gibt's jetzt zum Download (https://play.google.com/store/apps/details?id=de.grauonline.ardumowervision).
 
Und noch ein Test (mit realistischer Schleifengröße) - diesmal teste ich die Wiederkennungsfähigkeit einer erlernten Umgebung (Area Learning). Man sieht sehr schön wie die Schleife immer dann "springt" wenn eine erlernte Szene wiedererkannt wird und die Position dahingehend korrigiert wird. Ohne diese Wiedererkennung würde eine Position nicht präzise wiedererkannt.
Ein Driften findet aber nicht statt (auch wenn nichts erlerntes wiedererkannt würde). Beim Tango findet nämlich ein fortlaufendes Lernen der aktuellen Umgebung statt, d.h. auch das was vor 10 Sekunden gesehen wurde wird wiedererkannt ("Drift Correction") - dadurch driftet das System nicht sondern hat nur einen konstanten Fehler zur erlernten Position.
https://www.youtube.com/watch?v=jMbNykdPDRo
 
Hi Alexander,

das ist alles sehr interessant, aber ich frage mich gerade was ist das angestrebte Ziel?
Tango braucht eine ganz bestimmte Kamerakombi die es wohl nur in diesem Handy gibt. Auch ist Tango wohl ein spezielles Google Tool was sich so nicht einfach anpassen lässt und schon gar nicht kompatibel zum Arduino ist. Minimaladaption wäre also wohl so ein Handy (~600 Euro) und ein Minicomputer als Adapter zum Arduino. Denkst Du an eine Handyadaption im Ardumower? :blink:

Vielleicht sollte man sich OpenCV mal genauer anschauen, was die da an Objekttracking und Objekterkennung machen ist auch beindruckend!

Grüße
Rajiva
 
Hallo Rajiva,
ich denke ein Ziel ist es, eine kostengünstige optionale Erweiterung für Roboter allgemein (und Rasenmäher im Besonderen) zu finden mit der ein Roboter autonom arbeiten kann, insbesondere dort wo bisher aufgrund unterschiedlicher Gründe keine Schleife gelegt werden konnte.

Natürlich kann man sich die Hardware im Tango-Gerät einzeln zusammenkaufen:
-eine Global Shutter Fischaugenkamera (350 EUR)
-einen 200 Hz schnellen IMU-Sensor (400 EUR)
-eine Outdoor fähige 3D-Kamera (500 EUR)
-ein Display zum Festlegen der Schleife (50 EUR)
-einen schnellen Embedded Computer (50 EUR)

Dann müsste man nur noch alles verkabeln und die nächsten 2 Jahre versuchen Tango nachzubilden - wenn es so einfach wäre hätten wir das schon längst gemacht ;)

Mit dem fertigen Gerät spart man sich erstmal eine Menge Arbeit. Das Handy könnte also dem Arduino (z.B. via Bluetooth) die aktuelle Position mitteilen. Das ist keine Hexerei und wir haben etwas erreicht woran andere sich noch die Zähne ausbeißen ;-)

Es geht hier um eine ausgereifte, energiesparende, echtzeitfähige und autonome Lösung welche mit allen Outdoor Problemen klar kommen muss (Sonnenlicht, wenig und wechselnde Objekte zum Identifizieren, größtenteils Objekte mit wenig Oberfläche). Die Tango Hardware scheint mit diesen Problemen ganz gut klar zu kommen.

PS: Tango nachbauen können wir ja immer noch (ich habe schon einige in der Praxis nicht annähernd so gut funktionierende Open Source Lösungen mit extra dafür gekaufter Hardware ausprobiert) - lasst uns aber erstmal sowas wie einen funktionierenden Prototypen auf die Beine stellen ;) - Funktionierende Prototypen lassen sich immer noch nach und nach komplett selber bauen.
Gruss,
Alexander
 
Hi Alexander,

erst mal danke für Deine Antwort, aber nochmal für Leute (wie mich) die eine klare Aussage brauchen um festzustellen ob sie den Weg mitgehen wollen. Ihr wollt doch das man sich beteiligt, oder? ;-)

Der Plan ist ein 600 Euro Handy an den Ardumower schnallen und über einen weiteren Minicomputer damit navigieren, richtig?

Fragende Grüße
Rajiva

P.S.: das hier machen die z.B. mit einer 20 Euro Kamera und OpenCV. Zugegeben keine fertig erhältliche Lösung für den Ardumower, aber es zeigt was mit geringen Kosten und sehr wenig Aufwand möglich ist. ;-)
 
Hi Alexander,


AlexanderG schrieb:
Ja, das mit 20 Euro haben wir alles bereits draußen ausprobiert, die meisten möchten keine Marker im Garten.

Objekterkennung muss nicht Marker bedeuten, das war nur ein Beispiel von vielen, aber klar fertigen Code gibt es wahrscheinlich nicht.


Lass uns ein paar Monate warten dann kann sich jeder so ein Gerät leisten.

Danke für Deine Antwort, dann werde ich abwarten und mal sehen was sich in ein paar Monaten bezüglich Tango getan hat. ;-)

Grüße
Rajiva
 
Zuletzt bearbeitet von einem Moderator:
Das nächste "visuelle Ortungs-Gerät" kündigt sich bereits an: ASUS will Tango in sein nächtes "Zenfone AR" einbauen. https://www.asus.com/Phone/ZenFone-AR-ZS571KL/
Konkurrenz ist immer gut. Und vielleicht findet sich ja auch noch eine "Killer"-Anwendung für diese Geräte (so wie man für den ehemals sehr teuren GPS-Empfänger die Auto-Navigation entdeckt hat). Dann würde die Technik in jedes Handy eingebaut (so wie heute GPS).
 
Hi Alexander
Das sieht ja sehr gut aus.
Nach etwas einlesen in das Thema stelle ich mir die Frage wie das mit dem Area Learning aussieht, wenn man als Rasenbegrenzung eine 15m lange gleich ausschauende Hecke hat. So wie ich Area Learning verstanden haben ist man hier ja auf eine möglichst hohe Unterschiedlichkeit der Umgebung angewiesen. Bei einer 15m langen gleich aussehenden Hecke als Begrenzung geht das vermutlich nicht?

Weiterhin gibt es Stellen in meinem Rasen, die auf einer Anhöhe liegen. Hier ist die Begrenzung der Horizont :) Ich denke, dass auch hier das Area Learning nicht funktionieren wird (ist ja angeblich eher für indoor navigation entwickelt worden).

Hast du solche oder ähnliche Fälle schonmal getestet?
Gruß
Raphael
 
Hallo Raphael,

ich werde die von Dir angesprochenen Fälle noch testen, z.B. einen Extrem-Test durchführen, d.h. ein Fussballfeld testen wo praktisch nichts anderes ist als eben dieses Feld.

Was man nicht vergessen darf: das ganze ist ein Komplettpaket. Motion Tracking ("Kurzzeitgedächnis"), Area Learning ("Langzeitgedächnis") und Tiefenwahrnehmung (z.B. für Hindernisserkennung). Es wird immer Bereiche geben wo der Roboter sich allein auf das Motion Tracking verlassen muss. Auch beim Motion Tracking findet jedoch eine Wiedererkennung statt, allerdings nur zeitlich und räumlich begrenzt. Wenn man sich z.B. mehrmals im Kreis dreht (ohne Area Learning) wird ein- und dieselbe Position wiedererkannt und so fängt das System auch hierbei nicht an zu driften. Kommt man aber in andere Bereiche wo das Area Learning wieder greift wird die absolute Position korrigiert.

Auch interessant: da beim Motion Tracking und Area Learning eine Fisch-Augen-Kamera verwendet wird, wird nicht nur das gesehen was unmittelbar im Vordergrund ist sondern eine Rundum-Sicht. Es spielt keine große Rolle wo die Kamera hinzeigt (hat man vielleicht in meinen Tests schon bemerkt dass man ja teilweise immer nur Rasen sieht - das ist aber nicht das was die Fischaugenkamera sieht - das Bild der Fischaugenkamera lässt sich leider nicht anzeigen, ein Beispiel von Google sieht man ja oben weiter)

Gruss,
Alexander
 
Danke für die Erläuterungen.
Dann könnte man ja für's Area Learning auch mehrere Kameras einsetzen, die einen Bereich > 180 Grad abdecken. Aber ich schätze das wird für ein Smartphone nicht viel Sinn machen. Die ganze Entwicklung wird halt durch's Smartphone getrieben. Aber auch nur so bekommen wir bezahlbare Hardware ;)
Also ich warte mit Spannung auf das was noch kommt.
 
Oben