# Robot Operating System

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. Seit April 2012 wird ROS von der neu gegründeten, gemeinnützigen Organisation Open Source Robotics Foundation (OSRF) unterstützt und seit Beendigung der operativen Tätigkeit von Willow Garage 2013 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.

## Software

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. Ein Ziel von ROS ab der Version 2.0 ist u. a., echtzeitfähig zu sein.
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.

## Entwicklungsgeschichte
### ROS 1

| Version | Veröffentlichung | Weblink | Anmerkungen |
| Ältere Version; nicht mehr unterstützt: (Bekannt seit) | 2007 | n/a | Projektstart bzw. Erstveröffentlichung |
| Ältere Version; nicht mehr unterstützt: Box Turtle (Dosenschildkröte) | 2. März 2010 | wiki.ros.org/boxturtle | |
| Ältere Version; nicht mehr unterstützt: C Turtle (Meeresschildkröte/Sea turtle) | 2. August 2010 | wiki.ros.org/cturtle | |
| Ältere Version; nicht mehr unterstützt: Diamondback (Diamantschildkröte) | 2. März 2011 | wiki.ros.org/diamondback | |
| Ältere Version; nicht mehr unterstützt: Electric Emys (elektrische Emys) | 30. August 2011 | wiki.ros.org/electric | |
| Ältere Version; nicht mehr unterstützt: Fuerte Turtle („starke Schildkröte“) | 23. April 2012 | wiki.ros.org/fuerte | |
| Ältere Version; nicht mehr unterstützt: Groovy Galapagos (pfundige Galapagos-Riesenschildkröte) | 31. 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. |
| Ältere Version; nicht mehr unterstützt: Hydro Medusa | 4. September 2013 | wiki.ros.org/hydro | |
| Ältere Version; nicht mehr unterstützt: Indigo Igloo | 22. Juli 2014 | wiki.ros.org/indigo | |
| Ältere Version; nicht mehr unterstützt: Jade Turtle | 23. Mai 2015 | wiki.ros.org/jade | |
| Ältere Version; nicht mehr unterstützt: Kinetic Kame Kame japanisch für Schildkröte | 23. Mai 2016 | wiki.ros.org/kinetic | |
| Ältere Version; nicht mehr unterstützt: Lunar Loggerhead (lunare Moschus- oder Karettschildkröte) | Mai 2017 | wiki.ros.org/lunar | |
| Ältere Version; nicht mehr unterstützt: Melodic Morenia (melodische Pfauenaugen-Sumpfschildkröte) | Mai 2018 | wiki.ros.org/melodic | |
| Ältere Version; noch unterstützt: Noetic Ninjemys (Noetische Ninjemys oweni) | 23. 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. |
| Legende:Ältere Version; nicht mehr unterstütztÄltere Version; noch unterstütztAktuelle VersionAktuelle VorabversionZukünftige Version ||||

### ROS 2

| Version | Veröffentlichung | Anmerkungen |
| Ältere Version; nicht mehr unterstützt: Ardent Apalone (begeisterte Amerikanische Weichschildkröte) | 8. Dezember 2017 | |
| Ältere Version; nicht mehr unterstützt: Bouncy Bolson (zappelige Gelbrand-Gopherschildkröte) | 2. Juli 2018 | |
| Ältere Version; nicht mehr unterstützt: Crystal Clemmys (kristallklare Tropfenschildkröte) | 14. Dezember 2018 | |
| Ältere Version; nicht mehr unterstützt: Dashing Diademata (elegante Diadem-Erdschildkröte) | 31. Mai 2019 | |
| Ältere Version; nicht mehr unterstützt: Eloquent Elusor (ausdrucksstarke Mary-River-Schildkröte) | 22. Nov 2019 | |
| Ältere Version; nicht mehr unterstützt: Foxy Fitzroy (listige Fitzroy-Schildkröte) | 5. Juni 2020 | |
| Ältere Version; nicht mehr unterstützt: Galactic Geochelone (galaktische Geochelone) | 23. Mai 2021 | |
| Ältere Version; noch unterstützt: Humble Hawksbill (bescheidene Echte Karettschildkröte) | 23. Mai 2022 | Diese Version hat Long Term Support (LTS) bis Mai 2027. |
| Ältere Version; noch unterstützt: Iron Irwini (eiserne Irwins Schildkröte) | 23. Mai 2023 | Wird unterstützt bis November 2024. |
| Aktuelle Version: Jazzy Jalisco (fesche Jalisco-Klappschildkröte) | 23. Mai 2024 | |
| Zukünftige Version: Kilted Kaiju (Kilt-tragender Kaijū) | Mai 2025 | |
| Legende:Ältere Version; nicht mehr unterstütztÄltere Version; noch unterstütztAktuelle VersionAktuelle VorabversionZukünftige Version ||||