PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu ROS. (Robot Operating System)



Andre_S
19.01.2018, 15:43
Hallo Zusammen,

habe da ein paar Fragen zu ROS...
Mir wurde geraten, auf Grund folgender Aufgabe:
Selbstständige Orientierung mit kollisionsfreie Bewegung im unbekannten Raum, mit der Aufgabe ein bestimmtes Objekt zu suchen und im Falle der Ortung dies per Sprachausgabe zu signalisieren.
Mich eher mit ROS zu beschäftigen, statt viel Zeit in eigene Programm-Entwicklung zu stecken.
Bezüglich ROS bin ich allerdings blutiger Anfänger und muss nun für mich entscheiden, ob ich mich die nächsten Monate/Jahre damit auseinandersetze möchte.
Nun bin ich auch mit englisch nicht wirklich gut vertraut, so gesehen helfen mir Videos eher nicht, allerdings schriftliches lesen und erfassen klappt soweit ganz gut, im Notfall wird übersetzt.
Nachdem ich mich erst mal nur grob, also Ansatzweise und nur kurz mit dem Thema beschäftigt habe, bin ich weiterhin unschlüssig ob ich tatsächlich zu ROS wechseln sollte.
Mit den mir bisher empfohlenem Informationen habe ich nicht wirklich den notwendigen Ansatz gefunden. Dort ist zwar gut die Installation, sowie Grundlagen erklärt, auch entsprechende Tools und vor allem viel Simulation und Beispiele mit ROS-konformen Bots, und dies meist auch nicht als komplexes Ganzes. Was ich jetzt völlig vermisse oder überhaupt nicht begriffen habe, da würde mir momentan völlig der Ansatz fehlen. Wie ich nun „meinen“ Bot mit seiner individuellen Hardware integrieren kann und diesen als komplexes System nutze. Ich hätte zum Beispiel keinen Ansatz wie ich meine Sonarsensoren über das ELV I2C-USB Interface ansprechen könnte, um über einen Prozess kontinuierlich die Werte zu ermitteln und entsprechend bereitzustellen (Nodes/Topics)
Online gibt es sicher sehr viel, dies erschlägt mich aber eher als das ich gezielt diese Frage beantwortet finde.
Eventuell kann mir jemand den entscheidenden Anstoß geben und passende Literatur empfehlen.


Gruß André

JanGunheD
19.01.2018, 18:04
Hallo André,

also ich persönlich bin von ROS begeistert. Es gibt für fast jede Open-Source Lösung für Einzelprobleme wie Navigation / Orientierung im Raum / Kartografierung des Raums (kurz SLAM) bereits Anbindungen an ROS, auch jede Menge Hardware wird unsterstützt, so dass man sie ansteuern und auch (in gewissem Rahmen) simulieren kann. Große Hersteller wie Robotis (Dynamixel) bieten für ihre Hardware direkt ROS-Komponenten (=Knoten) an.

Es ist allerdings keine Point&Klick Lösung. Zur Simulation seines eigenen Roboters muss man erst mal durch die Simulations-Tutorials durch und dann selbst ran. Es gibt z.B. kein Tool direkt in ROS, mit dem man einen Roboter leicht zusammenklicken könnte. Phobos (https://github.com/rock-simulation/phobos) ist da allerdings eine gute externe Open-Source Lösung, die auf dem freien Open-Source 3D-Tool Blender basiert.

Ohne die englischen Tutorials auf den Webseiten geht allerdings nichts. Aber alles ist frei und Open-Source verfügbar. Es gibt eine sehr große hilfsbereite Community, mit der man allerdings bei Bedarf auch auf Englisch wird in Kontakt treten müssen. Und vor C++ und Linux sollte man keine Angst haben, auch wenn Python als Alternative zu C++ geht.

Aber all das ist in jedem Fall besser, als alles selbst zu entwickeln und mehrere Räder neu zu erfinden. Es ist schon eine große Zeitersparnis.

Defiant
19.01.2018, 19:36
Zur Ergänzung: ROS hilft dir nicht bei der Low-Level Anbindung deiner Sensoren und Aktoren, sondern setzt eine Ebene darüber an.

z.B. herausfinden wie du deine Sonarsensoren ausliest musst du selber. Die Anbindung deines Sensors im Anschluss ist dann einfaches Abschreiben des Publisher Tutorials (http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29). ROS hilft dir dann die Werte deines Sensors z.B. in einer costmap (http://wiki.ros.org/costmap_2d) darzustellen und durch die Hindernisse zu navigieren.

Bevor du also mit ROS anfängst solltest du folgende Aufgaben lösen (Ich vermute mal einen mobilen Roboter):
- Auslesen der Sensoren
- Geschwindigkeitsregelung für den Antrieb
- Herausfinden der Position des Roboters mit Odometrie

Andre_S
20.01.2018, 01:21
Hallo Jan,

vielen Dank für Deine Informationen, ich werde mir den Link zu Phobos näher anschauen.
Mal schauen ob ich dies alles erfasse bzw. überblicke und es ein für mich gangbarer Weg ist meinen Bot zu integrieren. Ich bin bereits in einem Artikel über dieses Tool gestolpert hatte es aber nicht weiter beachtet. Vor C++ habe ich jetzt keine Sorgen, auch wenn ich bisher vorwiegend C# nutzte, Linux ist natürlich auch eine Baustelle, da ich damit selten zu tun hatte.
Da Du ebenfalls so überzeugt von den Möglichkeiten bist, darf ich Fragen wie Dein Bot aufgebaut ist bzw. wie dieser ausschaut, welchen Du mit ROS betreibst?

Hallo @Defiant,

auch Dir vielen Dank, ich schaue mir das von Dir verlinkte Tutorials ebenfalls näher an.
Allerdings habe ich mich wohl auch etwas unglücklich ausgedrückt. Mir ist schon klar wie die Hardware meines Bots angesprochen wird, im Prinzip funktioniert der gesamte Bot bereits auch mit eigener Programmierung. Aber mit wechselnden und vor allen Dingen komplexeren Aufgaben ist der Programmieraufwand doch jeweils recht hoch und lässt sich zunehmend nicht mehr so einfach in meiner selbst geschaffenen Umgebung bewältigen. Deshalb die Idee das gesamte Projekt "eventuell" auf ROS umzustellen.


Gruß André

JanGunheD
20.01.2018, 10:29
Hallo André,

ja, so eine Umstellung ist immer schmerzlich. Ich hatte auch erst mit einem eigenen Framework angefangen. ROS ist dem, was ich selbst entwickelt hätte, aber so ähnlich und ist dabei ausgereifter und hat die größere Community, dass ich dann doch darauf umgestiegen bin. Das ging erstaunlich schnell und ich hatte auch gleich eine Simulationsumgebung.

Da ich mich mit dem Roboter, den ich da entwickle, selbständig mache, muss ich den noch etwas geheim halten ;-). Nur so viel: Er wird Beine bekommen. Dafür brauche ich viele kräftige Gelenke. Wenn man da am Markt rumsucht, finde ich immer nur viel zu schwache kleine Servos oder gleich Monster-Aktuatoren für 3000€/Stück. Ein günstiges Gelenk (<100€) mit genügend Drehmoment (etwa 9,8 Nm) bei vernünftiger Drehgeschwindigkeit habe ich bisher nicht gefunden. Darum entwickeln wir jetzt als ersten Schritt einen eigenen Aktuator, den wir dann auch verkaufen wollen. Zur Marktforschung mache ich da gerade eine kleine Umfrage. Würde mich freuen, wenn Du da auch mal Deine Anforderungen einträgst, denn vielleicht hast Du ja auch besondere Anforderungen bei Deinem Roboter:

https://goo.gl/forms/nst3xHhdMo9iNQ1B3

(Bzw., wenn jemand so ein Gelenk bereits am Markt kennt, wäre ich auch glücklich, dann könnten wir direkt den verwenden ;-) .)

Defiant
20.01.2018, 10:30
OK, also Hardware ist unter der Kontrolle, generell empfehle ich folgendes (vermute weiter mobile Roboter):

Unter Setup and Configuration of the Navigation Stack on a Robot (http://wiki.ros.org/navigation/Tutorials/RobotSetup) wird beschrieben wie man den Navigation Stack von ROS an seinen Roboter ankoppelt. Dies ist aber nur kurz zur Veranschaulichung. Vorher sollten dringend die Tutorials (http://wiki.ros.org/ROS/Tutorials) durchgearbeitet werden. Um ein Gefühl dafür zu bekommen was ROS für deinen Roboter leisten kann und wofür der Navigation Stack gut ist könntest du eine Simulation, z.B. vom Turtlebot (http://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/#gazebo-3d) durchführen.

Es gab vor ein paar Wochen übrigens einen Artikel zu der Frage ROS oder nicht:
http://pulurobotics.fi/blog/pulurobotics-blog-1/post/why-don-t-we-use-ros-7

Was wiederum in der ROS Community aufgegriffe wurde:
https://discourse.ros.org/t/why-dont-we-use-ros/3161
http://www.theconstructsim.com/not-using-ros-robotics-product/

Viel Spaß.

Andre_S
20.01.2018, 18:17
Hallo Jan,

Okay, dann will ich nicht intensiver nachfragen, zu gegebener Zeit werden wir dies wohl erfahren. Auf jedenfall wünsche ich Dir viel Erfolg bei Deinem Vorhaben.
Ich denke dass außer mir auch noch der eine oder andere Deinen Link besuchen wird um seine gewünschten Anforderungen zu hinterlassen. Ich habe allerdings nur die Punkte ausgefüllt, die für mich relevant sind, einige könnte ich bezüglich meiner Anforderungen gar nicht einschätzen, wie z.B. die dann notwendige Bauform/Größe...


Hallo @Defiant,

auch Dir nochmals vielen Dank, da habe ich nochmals einige Informationen, welche mir sicher auch wieder ein Stück weiter helfen.
Auch der Artikel über ROS ist sicher sehr interessant, habe ihn aber noch nicht durchgelesen,… kommt aber noch, da es ja unmittelbar auch mein Problem darstellt.
Ja natürlich mobiler Roboter. Trage mich schon ein paar Monate mit dem Gedanken meinen Bot Mira (http://home-robotics.de/mira_schema.html) auf ROS umzustellen. Ich habe zwar meine Page nicht mehr weiter aktualisiert, (aber das ist ein anderes Thema) trotz allem am Bot weitergearbeitet. Allerdings bin ich mit der Spracherkennung über Cloud auch nicht recht vorwärts gekommen…


Gruß André

JanGunheD
20.01.2018, 18:49
Danke! :-)

Andre_S
23.01.2018, 18:52
...
Es gab vor ein paar Wochen übrigens einen Artikel zu der Frage ROS oder nicht:
http://pulurobotics.fi/blog/pulurobotics-blog-1/post/why-don-t-we-use-ros-7

Was wiederum in der ROS Community aufgegriffe wurde:
https://discourse.ros.org/t/why-dont-we-use-ros/3161
http://www.theconstructsim.com/not-using-ros-robotics-product/

Viel Spaß.

Hallo @Defiant,

wirklich sehr interessant! :)
Bin allerdings weiter unsicher ob ROS oder nicht...


Gruß André

Defiant
23.01.2018, 21:34
Es kommt darauf an wo du hinwillst. Der Einstieg in ROS ist leider ein kompliziertes Unterfangen. Ich habe etwa zwei Jahre gebraucht nur um die grundlegenden Ideen zu verstehen.

Allerdings wird ROS nicht ohne Grund von vielen (der Mehrheit?) Forschungseinrichtungen und Herstellern (http://robots.ros.org/) in der Robotik verwendet. Der Vorteil ist ganz klar wiederverwendeter Code. Natürlich kann jeder seinen eigenen SLAM-Algorithmus implementieren, aber wozu (http://www.willowgarage.com/blog/2010/04/27/reinventing-wheel)? Und Programme wie rviz (http://wiki.ros.org/rviz) sind für mich zum unverzichtbaren Begleiter geworden.

Meine Meinung: Wer möchte, dass sein Roboter einer Linie folgt wird mit ROS nicht sehr glücklich. Wer möchte, dass sein Roboter in die Küche fährt und dort Bier holen geht ist bei ROS genau richtig aufgehoben.

Andre_S
24.01.2018, 12:21
...
Meine Meinung: Wer möchte, dass sein Roboter einer Linie folgt wird mit ROS nicht sehr glücklich. Wer möchte, dass sein Roboter in die Küche fährt und dort Bier holen geht ist bei ROS genau richtig aufgehoben.

Hallo @Defiant,

ja,… das Beispiel von Dir mit dem Linienverfolger etc. zeigt recht gut den Unterschied!
Allerdings, dass viele mobile Plattformen und komplette Bots, besonders der höheren Preisklasse ROS kompatibel sind ist sicherlich auch dem geplanten Absatz geschuldet. Einige dieser Systeme findet man ja an entsprechenden Universitäten, Fachhochschulen etc. wieder. Das dafür auch ein entsprechendes Etat vorhanden ist, ist nicht neu. Das dort ROS genutzt wird ergibt sich auch aus der Tatsache das oft ROS konforme Plattformen verwendet werden, aber auch aus der Tatsache wechselnder Studiengänge. Dies ist auch ganz klar bei Robocup@Home und vergleichbaren zu erkennen, da liegt der Schwerpunkt nicht unmittelbar in der Entwicklung einer kostengünstigen Motion-Plattform und deren Low-Level Anbindung.
Aber ich wollte das Thema ROS, „ja“ oder „nein“, auch nicht hier reintragen. Ich bin einfach nicht sicher, ob dies der richtige Weg für mich ist. Ehe ich den aktuellen Stand mit ROS wieder erreichen könnte, werden auf Grund der begrenzten Freizeit und dem fehlenden Wissen darüber auch einige Jahre ins Land gehen. In wieweit sich in der Zeit auch ROS noch verändert bleibt auch abzuwarten. Leider kenne ich in meinem Umfeld auch keinen, welcher sich schon mit ROS beschäftigt hat, mit dem man eventuell gemeinsam agieren könnte.


Gruß André

Andre_S
29.01.2018, 08:35
Hallo,

ich habe da noch eine Frage zu den Packages der einzelnen Distributionen von ROS.
Kurz vorweg:
Ich habe gestern nach Anleitung Ubuntu 16.04 LTS, sowie ROS (Kinetic) installiert und zwecks Funktionstest für die Kinect Kamera "openni_camera".
Soweit erst einmal alles Okay…
Nun habe ich in Ubuntu geschaut was an USB Hardware bereits sichtbar ist. Das sieht treibermäßig sogar unerwartet gut aus.
Für einen Teil meiner Hardware habe ich in ROS auch bereits etwas gefunden. Wenn diese Packages aber nun z.B. nur für hydro/indigo gelistet sind, auf was müsste ich achten bzw. was muss geändert/angepasst werden, um es wenn möglich auch in Kinetic verwenden zu können.


Gruß André

Defiant
29.01.2018, 17:38
Die Frage lässt sich leider so leicht nicht beantworten. In der Interprozess-Kommunikation der ROS-Nodes hat sich von Indigo bis Kinetic nicht viel getan, allerdings haben sich u.a. die Boost, OpenCV und PCL Versionen geändert, ein altes ROS-Packet was z.B. eine alte OpenCV Version benötigt kompiliert u.U. nicht auf einem Kinetic System.

Andre_S
30.01.2018, 11:16
Okay,... Danke!
Also probieren, soweit es möglich ist anpassen und wenn dies nicht sinnvoll ist bzw. nicht unkompliziert funktioniert, dass Ganze eventuell nur als Orientierung/Grundlage verwenden.

Ich benutze unter anderem auch das ELV I²C-Interface für 3 Stück SRF-08 Sensoren und den Kompass CMPS10. Nun möchte ich dieses ELV Teil nicht unbedingt an ROS anbinden. Gibt es denn empfehlenswerte Hardware, welche bereits in ROS Kinetic vorhanden ist, eine frei programmierfähige I²C Schnittstelle bietet ohne gleich ein Embedded-System verwenden zu müssen?
Aber wahrscheinlich ist es sinnvoller doch eins mit ROS OS zu verwenden und per Netz anzubinden, passt ja auch besser zur Architektur, allerdings für die 4 restlichen Sensoren auch wieder ein bisschen übertrieben !?


Gruß André

Defiant
30.01.2018, 17:43
Generell ist die Frage ob Linux die Hardware unterstützt oder nicht. Wenn Linux dafür einen Treiber hat, kannst du mit jeder ROS-Node (/dev/i2cX) darauf zugreifen.

Bin mir hier nicht sicher was du als Embedded-System verstehst, ich vermute mal Rasperry Pi oder Intel ATOM?

Für andere Varianten gibt es viele Lösungsansätze. Der ELV I2C Adapter hat sicherlich auch intern nur einen Mikrocontroller drin und ist damit auch "Embedded". Beim Turtlebot3 (turtlebot3.robotis.com) z.B. wird ein sog OpenCR Board genommen. Einfachere Variante wäre sicherlich einen Arduino Nano mit rosserial (http://wiki.ros.org/rosserial) anzubinden.

Andre_S
31.01.2018, 07:12
...
Bin mir hier nicht sicher was du als Embedded-System verstehst, ich vermute mal Rasperry Pi oder Intel ATOM?
...


Hallo,... ja habe ich etwas blöd ausgedrückt!
Natürlich hat der ELV I²C-Adapter auch einen MC, allerdings nicht frei programmierfähig, sondern script- oder makrogesteuert und damit von den Möglichkeiten, als auch vom Timing deutlich eingeschränkt.
Ja, an soetwas wie an einen Rasperry Pi o.ä. hatte ich gedacht, macht ja keinen Sinn ein eigenes Anschlußboard zu designen, da dies ja auch nicht ROS konform wäre.
Na ich schaue erstmal was mit dem aktuellem Aufbau möglich ist, laut Ubuntu sind zumindest alle Module am USB sichtbar...

Nochmals vielen Dank!


Gruß André

Ungolianth
10.04.2018, 13:28
Hallo André,

ja, so eine Umstellung ist immer schmerzlich. Ich hatte auch erst mit einem eigenen Framework angefangen. ROS ist dem, was ich selbst entwickelt hätte, aber so ähnlich und ist dabei ausgereifter und hat die größere Community, dass ich dann doch darauf umgestiegen bin. Das ging erstaunlich schnell und ich hatte auch gleich eine Simulationsumgebung.

Da ich mich mit dem Roboter, den ich da entwickle, selbständig mache, muss ich den noch etwas geheim halten ;-). Nur so viel: Er wird Beine bekommen. Dafür brauche ich viele kräftige Gelenke. Wenn man da am Markt rumsucht, finde ich immer nur viel zu schwache kleine Servos oder gleich Monster-Aktuatoren für 3000€/Stück. Ein günstiges Gelenk (<100€) mit genügend Drehmoment (etwa 1kg/m = 9,8 Nm) bei vernünftiger Drehgeschwindigkeit habe ich bisher nicht gefunden. Darum entwickeln wir jetzt als ersten Schritt einen eigenen Aktuator, den wir dann auch verkaufen wollen. Zur Marktforschung mache ich da gerade eine kleine Umfrage. Würde mich freuen, wenn Du da auch mal Deine Anforderungen einträgst, denn vielleicht hast Du ja auch besondere Anforderungen bei Deinem Roboter:

https://goo.gl/forms/nst3xHhdMo9iNQ1B3

(Bzw., wenn jemand so ein Gelenk bereits am Markt kennt, wäre ich auch glücklich, dann könnten wir direkt den verwenden ;-) .)



Unter folgendem Link:
https://nodna.de/Dynamixel-AX-18A-Robot-Servo

lässt sich ein Servo mit 18kgcm Haltektraft finden, falls dir das weiterhilft.

LG

JanGunheD
10.04.2018, 14:06
Unter folgendem Link:
https://nodna.de/Dynamixel-AX-18A-Robot-Servo

lässt sich ein Servo mit 18kgcm Haltektraft finden, falls dir das weiterhilft.

LG

Danke, die kenne ich schon, leider ist das ein viel zu geringes Drehmoment, die Dynamixel PRO wären passender, sind aber viel zu teuer.

HaWe
10.04.2018, 19:07
darf ich einmal kurz eine Zwischenfrage stellen...?
Erfordert ROS einen leistungsfähigen Remote-Server (wie z.B. einen PC), oder läuft ROS auch lokal auf autonomen MCU-Robots wie z.B. einem Arduino Due?
Fals nein, reicht ein Raspi 2 dafür aus (lokal, autonom)?

Defiant
10.04.2018, 19:44
Die Frage lässt sich so leicht nicht beantworten, also:
- Zum Einsatz von ROS brauchst du mindestens einen zentralen PC mit Betriebssystem (aka Linux), rpi reicht.
- Ein Arduino oder ähnlich "leistungsschwaches" sich z.B. über rosserial (http://wiki.ros.org/rosserial) anbinden
- Welche Leistungsklasse der Prozessor benötigt ist letztendlich von den verwendeten Algorithmen/Einstellungen abhängig
- Ein rpi2 könnte für autonome Navigation reichen, der Turtlebot 3 "Burger" (http://emanual.robotis.com/docs/en/platform/turtlebot3/specifications/#specifications) verwendet z.B. einen RPI3.
- Man kann auch die ROS Modularität nutzen und CPU-intensive Algorithmen auf dem stationären AMD ryzen/Intel Core i7 berechnen und diese per WLAN an den Roboter übertragen

Hoffe das hilft.

HaWe
11.04.2018, 08:52
Die Frage lässt sich so leicht nicht beantworten, also:
- Zum Einsatz von ROS brauchst du mindestens einen zentralen PC mit Betriebssystem (aka Linux), rpi reicht.
- Ein Arduino oder ähnlich "leistungsschwaches" sich z.B. über rosserial (http://wiki.ros.org/rosserial) anbinden
- Welche Leistungsklasse der Prozessor benötigt ist letztendlich von den verwendeten Algorithmen/Einstellungen abhängig
- Ein rpi2 könnte für autonome Navigation reichen, der Turtlebot 3 "Burger" (http://emanual.robotis.com/docs/en/platform/turtlebot3/specifications/#specifications) verwendet z.B. einen RPI3.
- Man kann auch die ROS Modularität nutzen und CPU-intensive Algorithmen auf dem stationären AMD ryzen/Intel Core i7 berechnen und diese per WLAN an den Roboter übertragen

Hoffe das hilft.

ok, verstehe ich das richtig:
ich brauche also immer einen "zentralen", d.h. stationären PC (Windows-PC, Linux-PC, ggf Linux Soc)
PLUS entspr. MCU oder SoC auf dem Mobil-Teil?

Ein einziger Soc, ausschließlich auf dem Mobilteil reicht nicht?

Defiant
11.04.2018, 09:06
Ein einziger AVR/Arduino mobil ist möglich, wenn dieser über Funk mit einem ROS-PC oder ROS-Rpi kommuniziert.
Ein einziger mobiler Rpi2 ohne PC ist genauso möglich, nur dann ggf ohne z.B. SLAM oder andere CPU intensive Algorithmen.

HaWe
11.04.2018, 10:09
Ein einziger AVR/Arduino mobil ist möglich, wenn dieser über Funk mit einem ROS-PC oder ROS-Rpi kommuniziert.
Ein einziger mobiler Rpi2 ohne PC ist genauso möglich, nur dann ggf ohne z.B. SLAM oder andere CPU intensive Algorithmen.

aja, ok, aber gerade SLAM wäre für mich wichtig, aber ich programmiere grundsätzlich immer nur voll autonome Robots ohne jegliche externe Server - dann ist ROS wohl doch nicht das richtige für mich.

Defiant
11.04.2018, 10:18
Naja, ROS ist an dieser Stelle nur die Middleware. Wenn du eine SLAM-Anwendung hast, die bei dir funktioniert lässt sich die bestimmt integrieren.

gmapping z.B. ist eine eigenständige Anwendung die mir einem ROS-Adapter integriert ist.

HaWe
11.04.2018, 10:48
nein, ich habe keine funktionierende SLAM-Anwendung, meine Ortungsfehler bei Dauerbetrieb sind durch Magnetische Fehlweisungen (IMU CMPS11), GPS-Ungenauigkeiten, GPS-Empfangsfehler (indoors) und Odometriefehler (Kettenantrieb) viel zu groß. US und IR Distanzsensoren sind naturgemäß auch nicht super-exakt.