PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2D Navigation bzw. Raum Mapping.



zerebrator
23.10.2017, 17:16
Hallo Leute,

ich wende mich an die Praktiker unter euch.
Vorhanden ist ein Arduino Robi mit 3 US, 1 Sharp ir dazu jede Menge anderer Sensorik und Elektronik. Ein Raspberry Pi mit einer cam vsitztorne dabei. Ebenso sitzt vorne eine Kinect (X360) Kamera.
Das alles funktioniert rel. gut.
Doch der Robi fährt quasi „blöd“ im Raum herum.

Was ich mir vorstelle ist eine Navigation zu einen oder mehreren bestimmten punkten im Raum.
Habe mich bereits mit OpenCV auseinander gesetzt, doch damit alleine lässt sich mein „Problem“ nicht lösen.

• Was ich brauche ist eine interaktive 2D map meiner Wohnung und das anfahren bestimmter Punkte im Raum.
• Hat jemand von euch schon Erfahrungen hiermit sammeln können?
• Welche Software ist die „beste“ ?
• Was habt Ihr dazu alles probiert?

Habe bereits ein bissl Berührungspunkte mit ROS (http://www.ros.org/) gehabt ebenso mit SLAM (http://robotik-lernen.wikidot.com/slam) ebenso mit SCENECT (http://www.faro.com/scenect/scenect)
Welche Software würde mir erlauben einen 2D bzw 3D erfassten und gespeicherten Raum abzufahren bzw. spezielle Punkte im selbigen anzufahren.
Mit ist natürlich klar, das sich das ganze mit raspi nicht realisieren lässt dazu brauche ich einen recht starken pc der die Befehle an Arduino weiter leitet.

Über Vorschläge bzw. Anregungen würde ich mich freuen.

SG
Chris

HaWe
23.10.2017, 18:00
hallo,
das lässt sich absolut lokal und autonom auf einem Raspi verwirklichen, sogar lokal auf einem Arduino (zumindest teilweise).

ich sehe 2 Möglichkeiten:
Variante a): eine sehr gute Odometrie mit mindestens 1° Auflösung an der Radachse und griffigen Reifen plus einem sehr guten IMU, der nicht durch Magnetfelder gestört wird (z.B. Tinkerforge IMU brick 2) - erfordert allerdings sehr gute Raspi-Programmierkenntnisse, läuft nicht auf Arduino.

Mein Favorit ist allerdings
Variante b): ein externes, im Raum instaliertes Ortungssystem, das entfernt ähnlich wie ein GPS funktioniert und das dir deine Position automatisch berechnet.
Das halte ich z.Zt für perfekt, es nennt sich pozyx und läuft sogar autonom auf AVR Arduinos (nicht auf ARMs!) und Raspi sowieso:
https://www.pozyx.io/?gclid=EAIaIQobChMImK6T0JmH1wIVQRobCh3K0QwWEAAYASA AEgIom_D_BwE

Hinzu käme dann noch in jedem Falle ein LIDAR, das ich kürzlich schon mal vorgeschlagen habe:
https://www.mybotshop.de/RPLidar-A1M8-360-Range-6m
Das würde dann zu jeder momentanen Position die Umgebung scannen und Hindernisse und Wände ermitteln.

ps,
nachdem du dann den Raum gemappt hast, kannst du über Odometrie oder dein pozyx dann auch jedes Ziel exakt unter Hindernisumgehung anfahren.

zerebrator
23.10.2017, 21:04
Sehr gute Vorschläge.

Hast du bereits Erfahrung mit Pozyx ?
Wird das auch in Deutschland vertrieben ?

Worin unterscheidet sich der Lidar vom Kinect ?(im Sinne des mapping Systems) Die Vorteile der Kinect Sensorik sind enorm. Klar ich brauche einen relativ starken Rechner aber die Auflösung ist grandios.

Allerdings ist der Aufwand entsprechend ....

Mich würde tatsächlich die Einsatzfähigkeit der Pozyx interessieren ... Cool das ding :-)

Gruß

Chris

HaWe
24.10.2017, 09:34
ich kenne die Teile nur aus der Recherche für ein eigenes Projekt. Ich habe die Teile aber noch nicht bestellt, da noch 2 Dinge im argen liegen:
- Ansteuerung von > 5A-Motoren per schwacher H-Brücken (1-3A) über eine Art Booster-H-Brücke (10A)
- Robotarm mit Servos und ca. 1kg Payload
Um LIDAR und Pozyx einfach mal so zu bestellen und sie dann hier rumliegen zu haben, ohne dass der Roboter überhaupt fahren und Dinge vernünftig greifen und heben kann, sind sie mir zu teuer.
Pozyx hat ja wohl nur Direktvertrieb (kommt aus Belgien, also EU), Übersee hieße ansonsten hohe Versandkosten, und bei nicht-EU (außer Kanada evtl) kämen sicher noch Zoll und USt drauf.
So sind die Kosten immerhin überschaubar, aber selbst wenn es teurer würde: immerhin halte ich dein Projekt damit für lösbar, auch ohne leistungsstarken Zweitrechner.

zerebrator
24.10.2017, 12:27
ja das Geld ist natürlich auch ein Thema ...
Was ich mir vorstelle ist das hier LINK (http://www.robotshop.com/letsmakerobots/2d-robot-mapping-software-autonomous-navigation)
Sieht schon gar nicht so schlecht aus, doch die Software dahinter ... was ist das ? Er benutzt hier bereits LIDAR Sensorik allerdings die Lite Version hier (http://www.robotshop.com/en/lidar-lite-2-laser-rangefinder-pulsedlight.html)
Die Auflösung bei Kinect ist natürlich viel besser hier (https://www.youtube.com/watch?v=YZwlt2msvpI)

Gruß

chris

Max Web
25.10.2017, 19:30
Hallo,

da Du bereits mit ROS in Kontakt gekommen bist, wäre das doch etwas für Dich - SLAM, Navigation, Kinect-Ansteuerung etc. ist alles an Bord.
Mit RVIZ kannst Du Dir auch direkt die Karte (und jede Menge hilfreicher Infos) anzeigen lassen und darin auch navigieren.
Da ROS netzwerkfähig ist, kannst Du rviz sowohl lokal als auch auf jedem anderen Linux-Rechner (ROS vorausgesetzt) ausführen - oder Du schreibst Dir einfach Dein eigenes Programm, indem Du z.B. RosBridge o.Ä. verwendest, um die relevanten Daten abzufragen.

Mein eigenes Projekt steckt zwar noch mitten in der Entwicklung, verfolgt allerdings ähnliche Ziele und setzt auch ROS ein. Angefangen habe ich mit dem von HaWe beschriebenen LIDAR und einem Raspberry Pi 3, das noch unbenutzt rumlag.
ROS läuft darauf und man bekommt auch schnell das LIDAR und den Nav Stack zum Laufen, allerdings läuft das Ganze dann natürlich nicht wirklich performant und insbesondere bei der Auflösung der Karte und bei der Performance des Local Planners muss man dann doch einige Abstriche machen. Daher kommt aktuell ein UP Board zum Einsatz, damit läuft ROS dann doch um einiges flüssiger :cool:

Mit dem LIDAR bist Du dann auch nicht mehr sonderlich auf Deine Odometrie angewiesen. Bei meinem RP6 Fahrgestell ist die auf dem Laminatboden hier so gut wie unbrauchbar ;) Daher kommt momentan ein Laser Scan Matcher zum Einsatz, der die passende Odometrie aus den Scandaten des Lasers generiert. Mit erstaunlich guten Ergebnissen!
Zusätzliche Sensoren wie Ultraschall wirst Du aber trotzdem benötigen, um Sachen wie dünne Stuhlbeine oder spiegelnde Glasflächen zu erkennen. Auch bei dunklen Materialien wie Kunstleder kommt es gerne mal zu Aussetzern.

Außerdem kann ROS auch mit Kamerasystemen wie der Kinect umgehen und aus der daraus gewonnenen Punktemenge einen virtuellen Laserscan generieren, der dann für SLAM zum Einsatz kommen kann. Wie performant die Kinect hier ist, kann ich aber nicht beurteilen - bei mir ist eine Intel r200 verbaut. Je nach Parametrisierung braucht diese dann doch schon einiges an Rechenleistung des UP Boards. Ob das auf einem RPi laufen wird wage ich dann doch stark zu bezweifeln.

Die Motoransteuerung solltest Du auf jeden Fall auf einen mC auslagern und nicht auf dem Pi laufen lassen - Du wirst jedes Bisschen an Rechenleistung brauchen.

Mit ROS bekommst Du sehr schnell sehr gute Ergebnisse, hast eine Vielzahl an Erweiterungsmöglichkeiten und ein erhältst ausgereiftes Komplettpaket. Allerdings erfordert es doch etwas Einarbeitungszeit und ausreichend Rechenleistung und RAM.

Den LIDAR Sensor benötigst Du nicht unbedingt, da man die Daten aus der Kinect gewinnen kann. Allerdings solltest Du doch in einen stärkeren Rechner als das Pi investieren, wenn es wirklich ROS werden soll.

Grüße

Max

zerebrator
26.10.2017, 12:45
Hi Max,

ja das mit dem Raspi ist / war eine Lösung für die RpiCam und nur openCV mir ist durchaus bewusst dass ich ohne einen schnellen Rechner hier nicht weiterkomme.
Was aber einen erschlägt sind die Anforderungen welche ROS mit sich bringt. Es müssen neben ROS diverse andere "Hilfsprogramme" installiert werden usw. Auch der Umfang der Software ist riesig.
Ich wollte nichts wieder anfangen was in einer Sackgasse ( wie bei OpenCV) endet.

Da du jetzt schon Erfahrungen mit ROS hast und laut deiner Beschreibung du mit gleichen kämpfst wie ich wird die Sache ein wenig klarer für mich.
Was ich so lese hast du auch die gleichen Probleme wie ich .... Mein Robi ist ein umgebauter Panzer der mit komplett neuen Motoren und Technik ausgerüstet ist.
Der Vorteil ist er kommt mit allen zu recht. Mein Problem ist allerdings der Platz.
Sobald ich einen größeren Rechner einsetzen will brauch ich stärkere Akkus stärkere Antriebe usw.... Also ein individuell konstruiertes System.

Ich werde deine Ansätze versuchen bei mir umzusetzen. Speziell mit Ros und RVIZ da sollte ich noch tiefer rein RVIZ ist mir völlig neu daher werde ich mich damit ebenso beschäftigen.
Mal sehen was dabei rauskommt.

Danke für deine Beschreibung

Gruß

Chris

HaWe
26.10.2017, 15:03
ja das mit dem Raspi ist / war eine Lösung für die RpiCam und nur openCV mir ist durchaus bewusst dass ich ohne einen schnellen Rechner hier nicht weiterkomme.

wie kommst du darauf? das geht mit dem Raspi locker ohne Zweit-PC!
Ein Pi3 muss es ntl schon sein, und dafür reichen seine 4 Kerne bei 1GHz und Jessie oder Stretch!!

zerebrator
26.10.2017, 16:03
@ HaWe ????

Raspi gut für Rpi cam

Nix gut für Kinect und ROS + Grafische 2D Raum Darstellung. ;)


So habe ich das gedacht.

keine Angst der Raspi 3 ist für die spielereiern mit einer Kamera prima wobei auch hier kommt er langsam an seine Grenzen.
Hast du schon mal Live stream getestet da ruckelt es schon ein wenig ;-)
Für Kinect bzw. Echtzeit Navigation mit 2D mapping absolut ungeeignet.

Gruß
chris

HaWe
26.10.2017, 16:31
@ HaWe ????

Raspi gut für Rpi cam

Nix gut für Kinect und ROS + Grafische 2D Raum Darstellung. ;)


So habe ich das gedacht.

keine Angst der Raspi 3 ist für die spielereiern mit einer Kamera prima wobei auch hier kommt er langsam an seine Grenzen.
Hast du schon mal Live stream getestet da ruckelt es schon ein wenig ;-)
Für Kinect bzw. Echtzeit Navigation mit 2D mapping absolut ungeeignet.

Gruß
chris

ok, war vlt etwas missverständlich ;)
ja, openCV habe ich schon zum Objekt-Tracking verwendet (BLOB nach Farbe). Man kann durch die Fenstergröße die Geschwindigkeit optimieren, wirst du ja wissen.

Kinect funktioniert aber auch mit dem Pi:


https://www.youtube.com/watch?v=DMXKp98BY-w:

ps,
und der 64bit Pi3 ist angeblich etwa 40% schneller als der ARMv7-Pi2 (beide mit 32bit Raspbian)

- - - Aktualisiert - - -

pps,
allerdings war mein openCV Programm in C++, nicht in Python.... ;)

zerebrator
26.10.2017, 16:52
kein Ding ;-)

doch ich habe eher an so etwas gedacht LINK (https://www.youtube.com/watch?v=YZwlt2msvpI)

Der Pi3 geht schon gut ab trotzdem das packt der nicht.

Gruß

Chris