Robot Operating System
Robot Operating System
| |
---|---|
![]() | |
Basisdaten
| |
Hauptentwickler | Open Source Robotics Foundation |
Entwickler | Willow Garage, Stanford Artificial Intelligence Laboratory |
Erscheinungsjahr | 2007 |
Aktuelle Version | Noetic Ninjemys (ROS 1) Jazzy Jalisco (ROS 2) (23. Mai 2024) |
Betriebssystem | Linux, Mac OS (experimentell), Windows (rudimentär) |
Programmiersprache | C++, Python |
Kategorie | Roboter-Software-Framework |
Lizenz | BSD-Lizenz |
http://ros.org/ |
Robot Operating System (ROS) ist ein Framework für persönliche Roboter und Industrieroboter. Die Entwicklung begann 2007 am Stanford Artificial Intelligence Laboratory im Rahmen des Stanford-AI-Robot-Projektes (STAIR) und wurde ab 2009 hauptsächlich am Robotikinstitut Willow Garage weiterentwickelt.[1] Seit April 2012 wird ROS von der neu gegründeten, gemeinnützigen Organisation Open Source Robotics Foundation (OSRF) unterstützt[2] und seit Beendigung der operativen Tätigkeit von Willow Garage 2013[3] von dieser koordiniert, gepflegt und weiterentwickelt. Seit 2013 beschäftigt sich das ROS Industrial Consortium mit der Förderung und Unterstützung von ROS für Anwendungen in der Industrierobotik. In Europa koordiniert das Fraunhofer IPA die Aktivitäten des ROS Industrial Consortium Europe.[4]
Software
[Bearbeiten | Quelltext bearbeiten]Die Bibliotheken von ROS setzen auf Betriebssysteme wie Linux, macOS oder Windows auf.
Die Hauptbestandteile und -aufgaben von ROS sind
- Hardwareabstraktion
- Gerätetreiber
- Oft wiederverwendete Funktionalität
- Nachrichtenaustausch zwischen Programmen bzw. Programmteilen
- Paketverwaltung
- Programmbibliotheken zum Verwalten und Betreiben der Software auf mehreren Computern
Das System ist aufgeteilt in das eigentliche Betriebssystem ros und ros-pkg, eine Auswahl an Zusatzpaketen, die das Basissystem um (meist einzelne) Fähigkeiten erweitern. Dabei wird eine Serviceorientierte Architektur eingesetzt, um die Kommunikation zwischen den einzelnen Komponenten zu ermöglichen.
ROS wird unter der BSD-Lizenz veröffentlicht und ist somit der Open-Source-Szene zuzuordnen.
Bis April 2012 wurden für ROS 3699 Pakete veröffentlicht, um einzelne Funktionalitäten abzubilden.
ROS 1.x ist nicht echtzeitfähig, kann jedoch mit echtzeitfähigen Komponenten zusammenarbeiten.[5] Ein Ziel von ROS ab der Version 2.0 ist u. a., echtzeitfähig zu sein.[6]
Seit Beginn der Entwicklung von ROS 2.0 wird zwischen ROS 1 und ROS 2 unterschieden. Die beiden Hauptversionen sind nicht miteinander kompatibel, jedoch interoperabel und können parallel ausgeführt werden. Die Motivation hinter der Entwicklung von ROS 2 ist, zu bewahren, was gut an ROS 1 ist und die Bereiche zu verbessern, die Nachteile mit sich bringen. Dazu zählen z. B. die Echtzeitfähigkeit, die Zertifizierbarkeit für (Sicherheits-)kritische Anwendungen in Endprodukten und die Ausführbarkeit auf kleinen Prozessoren, wie etwa Mikrocontrollern. Als wesentlicher Unterschied von ROS 2 im Vergleich zu ROS 1 ist der Ersatz der zuvor eigens entwickelten Middleware durch den Standard Data Distribution Service zu nennen.[7]
Entwicklungsgeschichte
[Bearbeiten | Quelltext bearbeiten]ROS 1
[Bearbeiten | Quelltext bearbeiten]Version | Veröffentlichung | Weblink | Anmerkungen | |
---|---|---|---|---|
(Bekannt seit) | 2007 | n/a | Projektstart bzw. Erstveröffentlichung | |
(Dosenschildkröte) |
Box Turtle2. März 2010 | wiki.ros.org/boxturtle | ||
(Meeresschildkröte/Sea turtle) |
C Turtle2. August 2010 | wiki.ros.org/cturtle | ||
(Diamantschildkröte) |
Diamondback2. März 2011 | wiki.ros.org/diamondback | ||
(elektrische Emys) |
Electric Emys30. August 2011 | wiki.ros.org/electric | ||
(„starke Schildkröte“) |
Fuerte Turtle23. April 2012 | wiki.ros.org/fuerte | ||
(pfundige Galapagos-Riesenschildkröte) |
Groovy Galapagos31. Dezember 2012 | wiki.ros.org/groovy | Die zur Organisation von Paketen verwendeten Stacks werden von Metapaketen abgelöst. Das ROS-eigene Build-System Catkin, welches intern das Meta-Build-System CMake verwendet, löst das frühere Rosbuild ab. | |
Hydro Medusa | 4. September 2013 | wiki.ros.org/hydro | ||
Indigo Igloo | 22. Juli 2014 | wiki.ros.org/indigo | ||
Jade Turtle | 23. Mai 2015 | wiki.ros.org/jade | ||
Kame japanisch für Schildkröte |
Kinetic Kame23. Mai 2016 | wiki.ros.org/kinetic | ||
(lunare Moschus- oder Karettschildkröte) |
Lunar LoggerheadMai 2017 | wiki.ros.org/lunar | ||
(melodische Pfauenaugen-Sumpfschildkröte) |
Melodic MoreniaMai 2018 | wiki.ros.org/melodic | ||
(Noetische Ninjemys oweni) |
Noetic Ninjemys23. Mai 2020 | wiki.ros.org/noetic | Letzte veröffentlichte Version die den Übergang zu ROS2 vereinfachen soll, da dort nur noch Python3 unterstützt wird, welches inkompatibel zu Python2 ist. Diese Version hat Long Term Support (LTS) bis Mai 2025.[8] | |
Legende: Ältere Version; nicht mehr unterstützt Ältere Version; noch unterstützt Aktuelle Version Zukünftige Version |
ROS 2
[Bearbeiten | Quelltext bearbeiten]Version | Veröffentlichung | Weblink | Anmerkungen |
---|---|---|---|
(begeisterte Amerikanische Weichschildkröte) |
Ardent Apalone8. Dezember 2017 | [9] | |
(zappelige Gelbrand-Gopherschildkröte) |
Bouncy Bolson2. Juli 2018 | [10] | |
(kristallklare Tropfenschildkröte) |
Crystal Clemmys14. Dezember 2018 | [11] | |
(elegante Diadem-Erdschildkröte) |
Dashing Diademata31. Mai 2019 | [12] | |
(ausdrucksstarke Mary-River-Schildkröte) |
Eloquent Elusor22. Nov 2019 | [13] | |
(listige Fitzroy-Schildkröte) |
Foxy Fitzroy5. Juni 2020 | [14] | |
(galaktische Geochelone) |
Galactic Geochelone23. Mai 2021 | [15] | |
(bescheidene Echte Karettschildkröte) |
Humble Hawksbill23. Mai 2022 | [16] | Diese Version hat Long Term Support (LTS) bis Mai 2027.[17] |
(eiserne Irwins Schildkröte) |
Iron Irwini23. Mai 2023 | [18][19] | Wird unterstützt bis November 2024. |
(fesche Jalisco-Klappschildkröte) |
Jazzy Jalisco 23. Mai 2024 | [20] | |
(Kilt-tragender Kaijū) |
Kilted KaijuMai 2025 | [21] | |
Legende: Ältere Version; nicht mehr unterstützt Ältere Version; noch unterstützt Aktuelle Version Zukünftige Version |
Alternativen zu ROS
[Bearbeiten | Quelltext bearbeiten]Im Bereich der Robotik gibt es neben ROS verschiedene weitere Frameworks und Middleware-Lösungen, die je nach Anwendungsfall eingesetzt werden. Die folgende Tabelle gibt einen Überblick über einige verbreitete Alternativen:[22][23]
Name | Schwerpunkte / Besonderheiten | Programmiersprache | Lizenz | Quelle |
---|---|---|---|---|
ROS | Standard-Framework, große Community, modulare Architektur | C++, Python | BSD | ros.org |
OROCOS | Echtzeitsteuerung, Industrie | C++ | LGPL | orocos.org |
OpenRAVE | Bewegungsplanung, Simulation | C++, Python | Apache 2.0 | openrave.org |
YARP | Modulares Kommunikationsframework | C++ | LGPL | yarp.it |
MOOS | Maritime Robotik, Kommunikation | C++ | GPL | oceanai.mit.edu/moosivp |
LCM | Leichtgewichtiges Kommunikationssystem | C, C++, Java | LGPL | lcm-proj.github.io |
Zenoh | Effiziente Middleware für Datenverteilung | Rust | EPL-2.0 | zenoh.io |
PyRobot | Einfache Python-API für verschiedene Roboter | Python | MIT | pyrobot.org |
dora-rs | Experimentelles, schnelles Framework in Rust | Rust | Apache 2.0 | github.com/dora-rs/dora |
Die Popularität der einzelnen Frameworks variiert stark. ROS ist mit Abstand das am weitesten verbreitete Robotik-Framework, was sich unter anderem an der Anzahl der Diskussionsbeiträge auf Entwicklerplattformen wie Stack Overflow und Robotics Stack Exchange zeigt.[24]
Weblinks
[Bearbeiten | Quelltext bearbeiten]- ROS.org Wiki zur Dokumentation, Pakete-Übersicht uvm.
- Willow Garage
- Videokanal von Willow Garage auf YouTube
- Open Source Robotics Foundation
- Vergleich Einsatz individueller Controller implementiert mit ROS und Standardrobotersteuerung der Hersteller
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ willowgarage.com ( des vom 10. Oktober 2017 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ willowgarage.com ( des vom 6. November 2017 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ willowgarage.com ( des vom 8. Oktober 2017 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ rosindustrial.org
- ↑ de/ROS/Introduction – ROS Wiki. Open Source Robotics Foundation, abgerufen am 24. April 2017.
- ↑ design.ros2.org
- ↑ design.ros2.org
- ↑ wiki.ros.org
- ↑ index.ros.org
- ↑ index.ros.org
- ↑ index.ros.org
- ↑ index.ros.org
- ↑ ROS 2 Eloquent Elusor (codename ‘eloquent’; November 22nd, 2019). Abgerufen am 9. Dezember 2019.
- ↑ ROS 2 Foxy Fitzroy (codename ‘foxy’; May 23rd, 2020). Abgerufen am 7. August 2020.
- ↑ ROS 2 Galactic Geochelone (codename ‘galactic’; May 23rd, 2021). Abgerufen am 17. Juni 2021.
- ↑ ROS 2 Humble Hawksbill Released! Abgerufen am 6. Juni 2022.
- ↑ Distributions — ROS 2 Documentation: Foxy documentation. Abgerufen am 26. April 2023.
- ↑ Distributions — ROS 2 Documentation: Iron documentation. In: docs.ros.org. Abgerufen am 7. Juni 2022 (englisch).
- ↑ https://docs.ros.org/en/iron/Releases/Release-Iron-Irwini.html
- ↑ https://docs.ros.org/en/iron/Releases/Release-Jazzy-Jalisco.html
- ↑ https://docs.ros.org/en/iron/Releases/Release-Jazzy-Jalisco.html
- ↑ Alternatives to ROS. In: kshitijtiwari.com. Abgerufen am 15. Mai 2025 (englisch).
- ↑ ROS/Introduction - ROS Wiki. Abgerufen am 15. Mai 2025 (englisch).
- ↑ ros2-Tagsuche. In: Robotics Stack Exchange. Abgerufen am 15. Mai 2025 (englisch).