3D-Kartierung und Positionserkennung mit Kamera

nero76

Moderator
Hallo,

aufgrund der Steigungs-Problematik mit dem Lidar (siehe Lidar-Betrag ) ich habe mich ein wenig mit dem Thema Outdoor 3D-Kartierung und Positionserkennung mit Kamera (Mono/Stereo/3D-Kamera) auseiandergesetzt und einige Ergebnisse zusammengetragen (http://grauonline.de/wordpress/?page_id=1282).

Getestet habe ich:
-3D Kamera: Asus Pro Xtion mit RTABMAP (Echtzeit) - Test verlief nicht gut (die IR-Projektion funktioniert draußen nicht besonders gut).
-Panasonic DMC-TZ8 und photoscan bzw. OpenMVG (Nicht echtzeitfähig) - Diese Tests waren sehr erfolgreich und haben gezeigt dass man mit einer simplen Digitalkamera den Garten kartieren (und die Kamera-Position darin orten kann). Allerdings ist sowas nicht echtzeitfähig :(

Noch testen möchte ich:
-Monochrome Global Shutter Kamera mit "omni-lsdslam" (echtzeitfähig)
-Stereokamera mit "RTABMAP" (echtzeitfähig)

Eine bezahlbare Stereokamera (Globalshutter-fähig, Outdoor) suche ich noch - Vielleicht hat jemand ja ähnliche Versuche gemacht und man kann sich hier austauschen :)

Gruss,
Alexander
 
Mir sind da ein paar Dinge durch den Kopf gegangen

Lidar:

Wenn der Mower an einen Berg kommt und das ist ja wohl das Problem, da das Lidar das als Hindernis erkennt.
Das dürfte aber nur passieren, wenn A) der Hang sehr steil ist oder B) das Lidar zu niedrig das Gelände Scannt, denn wenn der Mower in den Hang fährt, ändert sich auch der Winkel mit dem der Liad seine Umgebung abtastet. Somit ist er aus seiner Sicht dann wieder auf einer ebenen Fläche.

Wenn also der Mower dicht genug an den Hang kommt ändert sich der Winkel und das Hindernis verschwindet.

Kartierung:

Cool mit 3D Kartierung aber muss das sein ?
Objekt A wird mit einer normalen Kamera Erkannt in Richtung 0° die Kamera schwenkt oder hat einen extremen Weitwinkel. In Richtung 46° Grad wird Objekt B erkannt. Je mehr Objekte erkannt werden um so genauer wir die Peilung.

Mittel Kreuzpeilung kann so die Position genau ermittelt werden. Die Kamera muss nur genügend Objekte erkennen.
Nebenbei könnte dann gleich noch die Peilung zur Bestimmung der Richtung verwendet werden, unabhängig vom IMU oder als Ergänzung.

Schwenken könnte man die Kamera, bzw das Bild mit dem Spiegel, dann müsste nur die Lage (Drehung) des Bildes in die Berechnung einfließen.

Schöne Feiertage und viel Spaß beim Grübeln ;)

Stefan
 
Hallo Stefan,

so schlimm ist 3D nun auch wieder nicht, da ist noch viel Potential. Die Sensoren und Ansätze welche mit wenig Hardware auskommen werden zukünftig das Rennen machen. Also z.B. Stereo-Kamera oder 3D-Kamera (RGBD). Rechner werden immer billiger und schneller und der Rest ergibt sich dann von ganz allein ;-)

Habe mir mal die Kinect 2.0 bestellt - bin gespannt ob RTABMAP damit läuft :)

Für Deine Triangulation braucht man ja auch eine Kamera. Welche Idee wir dann umsetzen kann dann ja flexibel gehandhabt werden. Es wird spannend! ;-)

Gruss,
Alexander
 
Hier noch ein Bild welches die Problematik mit dem 2D Lidar in 3D verdeutlichen soll - Die Kartierung und Lokalisierung funktionieren nur zuverlässig wenn das Lidar an jedem Ort die Objekte in derselben Ebene erfassen kann.

Kommt der Roboter links von der Hütte den Berg hochgefahren liegen die Objekte rechts nicht in der Ebene und umgekehrt. http://grauonline.de/wordpress/wp-content/uploads/lidar_3d_2.png
Sobald Objekte (die aufgrund der Entfernung eigentlich da sein müssten) nicht ständig im Lidar vorhanden sind, kommt jede derzeitige Software welche für ein 2D Lidar geschaffen wurde bei allem (Kartierung und Lokalisierung in 3D Welt) ins straucheln...

PS: Die Steigung hier ist noch harmlos - einige von unseren Ardumower-Leuten haben noch ganz andere Steigungen :)
 
Ich hätte noch eine andere verrückte Idee:

Ein paar Spiegel im Garten die vom Laser angepeilt werden können, einen Spiegel dann laufend im "Visier" halten.
Aus Entfernung und Winkel zum Spiegel kann man die Position berechnen.
Wenn ein Spiegel außer Sicht ist, einen anderen anpeilen. Die Positionen der Spiegel müssen dazu bekannt sein.

Oder vielleicht mit Kamera einen Leuchtpunkt anvisieren, ist vielleicht einfacher zum umsetzen.

LG Werner
 
Das mit dem "im Visier" halten klingt für mich jetzt erstmal nach einem NASA-Projekt ;)

Wenn schon Kamera, warum dann nicht einfach 2 Kamerabilder aus verschiedenen Winkeln schießen und anhand dieser dann die Position orten. Alles was macht braucht sind ein paar Punkte welche in beiden Bildern auftauchen (sogenannte "Feature-Points"). Dann kann man die Position beider Kamera-Bilder bestimmen. Hat man erstmal die ganze Umgebung (=3D Feature-Points) im Rechner, könnte man mit 1 oder 2 Bildern herausfinden wo man sich gerade befindet. Damit man nicht bei Null anfängt, gibt es auch fertige Bibliotheken (openMVG):

Hier die Theorie in ganz einfachen Bildern dazu: http://imagine.enpc.fr/~moulonp/openMVG/coreFeatures.html
Nach dem gleichen Prinzip wurden auch die 3D Bilder oben erstellt.

Wenn man nur grob die Position anhand eines Bildes bestimmen will, kann man auch OpenFABMap nehmen.

Sicherlich haben diese Bild-basierten Verfahren auch so ihre Nachteile (was passiert eigentlich bei starkem Sonnenlicht, schlechter Beleuchtung, Nebel, Regen,...?)

Was mich ein wenig wundert: warum entwickeln/testen viele Forscher ihre Ideen oftmals
a) nur mit teurer Ausrüstung (3D Lidar usw.)
b) nur für einfache Umgebungen (Indoor)
 
AlexanderG schrieb:
Was mich ein wenig wundert: warum entwickeln/testen viele Forscher ihre Ideen oftmals
a) nur mit teurer Ausrüstung (3D Lidar usw.)
b) nur für einfache Umgebungen (Indoor)

a) weil für das Projekt das ausreichend Budget genehmigt wurde
b) weil dann der Diplomant/Dissertant draufkommt das es doch nicht so einfach geht
;)

Aber wie willst am Roboter 2 Kameras mit ausreichend verschiedenen Winkeln montieren? Die max 70cm Abstand sind auf 20m Entferung vernachlässigbar.
In der Nacht wird das kaum funktionieren.

Deswegen meinte ich wenn Kamera dann Leuchtpunkte im Garten verteilen und mit diesen die Position bestimmen. Dann muss die Sichtweite im Nebel schon unter 10m sein damit nichts mehr erkannt wird. Aber mit einer Kamera kleine Winkel erfassen, dazu braucht man schon eine HD Kamera.

Alternativ braucht man eigentlich nur den Empfangsteil vom Lidar. Die Drehmechanik und Winkelerfassung ist schon vorhanden, aus den Winkel der Leuchtpunkte kann man die Position berechnen.

Unter NASA Projekt würde ich eher einen Sonnen- oder Sternen-Sensor verstehen :D
 
Zuletzt bearbeitet von einem Moderator:
Nur mal so eine Frage,
könnte man das nicht auch mit Funk lösen?
Z.B. verschiedene ESP8266 Module im Garten platzieren und dann über evtl. Triangulation die Position bestimmen.
Ich habe keine Ahnung ob sowas geht und wie genau das ganze wird.
Es gibt Projekte z.B. openwlanmap wo so etwas auch gemacht wird.
Irgendwo habe ich was von einer Genauigkeit von ca.0,5m gelesen.
Vorteil: sehr günstig und auch bei Nacht und Nebel zu nutzen. Evtl. können auch WLan signale aus der Nachbarschaft genutzt werden.
Gruß
Stephan
 
Hab OpenWLANMap mal gerade mit dem Handy ausprobiert: Nutzung im "Outback" geht erst nachdem man 250 Access Points(!) hochgeladen hat - Jetzt ist auch klar wo deine 0.5m Genaugikeit her kommen ;) - Das wäre der Idealfall :) (Man arbeitet mit dem Durchschnittswert und der liegt irgendwo bei mehreren Metern)
 
Wie wäre es eigentlich wenn wir eine günstige 3D-Kamera (Kinect1/2, Szen3D/DepthSense 325, Xtio Pro) nehmen und diese nach unten auf den Rasen gucken lassen? Eine 3D-Kamera strahlt ja bereits selber IR-Licht aus und kann auf einen Meter etwa noch die Breite und Tiefe eines Fingers am Boden erkennen. Die Kamera als Schutz gegen äußere Lichteinflüsse z.B. in eine Art Trichter/Schirm setzen.

Dann hätten wir auf einen Schlag:
- optischen Flußsensor (3D- bzw. 2D-Bildvergleich gibt uns Bewegungs-Richtung an)
- 3D-Kartierung (Mapping)
- 3D-Ortung (Lokalisierung)
- Absturzsensor
- Hebesensor
- Maulwurfshügel-Detektor
- evtl. Rasen/nicht Rasen Detektor

Hat das schon mal jemand gemacht/probiert? :)


ardumower_3dcam.png

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/ardumower_3dcam.png/
 
Zuletzt bearbeitet von einem Moderator:
In der Position wird die Optik gleich verstaubt sein.

Hab auch nochmal das Internet wegen den Bluetooth Beacons abgesucht, anscheinend funktioniert das nicht mal in Museen. WLAN Ortung erst recht nicht.

Eine alte Kamera Idee von mir ist eben eine Kamera am Haus die im Garten den Roboter erkennt.

Eine neue Variante wäre eine Kamera oben am Roboter, 360° Objektiv, und soll sich so an der Umgebung orientieren.
Staubsauger Roboter haben doch auch eine Kamera die nach oben schaut.

LG!
 
Hallo,

ich hatte ja vor einem Jahr (oben) bereits angedeutet dass ich RTAB-Map testen wollte. Dies habe ich heute nachgeholt. Verwendet habe ich eine Kinect2 3D-Kamera (Reichweite ca. 4m) die ich zu einer "portablen" Kamera umgebaut habe:

kinect_2_0_plus_usb_3_0_adapter2.jpg


Aufgrund der Schwäche bei der 2D-Wiedererkennung (Fischaugenkamera) beim Google Tango hatte ich mir von der 3D-Wiedererkennung (Kinect2) bei RTAB-Map erhofft, dass diese besser funktioniert. Leider hat dies jedoch nicht so gut wie erwartet geklappt. Unseren kreisförmigen Hubschrauberlandeplatz den ich mit Fortbewegungen dazwischen zweimal umlaufe wird nicht wiedererkannt (und stattdessen an gedrifteter Position gezeichnet). Evtl. liegt es an:
-Einstellungen in RTAB-Map
-man noch eine IMU benötigt/echte Odometrie benötigt
-die Tiefen-Auflösung des Sensors zu gering ist
-die Reichweite des Sensor noch zu gering ist (er sieht einfach zu wenig für eine globale Korrelation) bzw. zu wenig Gegenstände für eine lokale Korrelation vorhanden waren

Da müsste man nochmal näher schauen.
https://www.youtube.com/watch?v=HJeXOxrriBE
PS: RTAB-Map haben schon Leute auf einem Raspberry PI zum Laufen gebracht: http://official-rtab-map-forum.6751...etry-1-ubuntu-on-raspberry-pi-tp444p1246.html
Gruss,
Alexander
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/kinect_2_0_plus_usb_3_0_adapter2.jpg/
 
Zuletzt bearbeitet von einem Moderator:
Oben