Kapitel 1 : Roboter-Betriebssystem
Das Robot Operating System, manchmal auch als ROS oder ROS bekannt, ist eine Suite von Open-Source-Middleware für Robotic Computing. Trotz der Tatsache, dass ROS kein Betriebssystem (OS) ist, sondern eine Sammlung von Software-Frameworks für die Entwicklung von Robotersoftware, bietet es Dienste an, die für einen heterogenen Computercluster gedacht sind. Zu diesen Diensten gehören die Hardwareabstraktion, die Gerätesteuerung auf niedriger Ebene, die Implementierung häufig verwendeter Funktionen, die Nachrichtenweitergabe zwischen Prozessen und die Paketverwaltung. Die Graphenarchitektur wird verwendet, um laufende Sätze von ROS-basierten Prozessen abzubilden. Die Verarbeitung erfolgt in Knoten, die Sensordaten, Steuerung, Status, Planung, Aktuator und andere Signale empfangen, buchen und multiplexen können. Die Graphenarchitektur wird auch verwendet, um die Architektur des Netzwerks darzustellen. ROS ist kein Echtzeitbetriebssystem (RTOS), obwohl Reaktivität und geringe Latenz im Kontext des Robotersteuerungssystems äußerst wichtig sind. Dennoch ist es möglich, ROS mit Code zu integrieren, der für Echtzeit-Computing verwendet wird. Das Fehlen der Unterstützung von Echtzeitsystemen wurde durch die Entwicklung von ROS 2 behoben, das eine signifikante Verbesserung der ROS Application Programming Interface (API) darstellt. ROS 2 wird moderne Bibliotheken und Technologien für grundlegende ROS-Aufgaben nutzen und Unterstützung für Echtzeit-Anwendungscode und eingebettete Systemhardware hinzufügen.
Die Software des ROS-Ökosystems kann in drei Kategorien unterteilt werden, die wie folgt lauten:
Da die sprachunabhängigen Tools sowie die primären Client-Bibliotheken (C++, Python und Lisp) unter den Regeln der BSD-Lizenz bereitgestellt werden, handelt es sich um Open-Source-Software, die sowohl im kommerziellen als auch im Forschungsbereich kostenlos verwendet werden kann. Die überwiegende Mehrheit der anderen Pakete ist unter einer Reihe verschiedener Open-Source-Lizenzen lizenziert. Diese zusätzlichen Pakete sind für die Implementierung von Funktionen und Anwendungen verantwortlich, die häufig verwendet werden. Dazu gehören Hardwaretreiber, Robotermodelle, Datentypen, Planung, Wahrnehmung, simultane Lokalisierung und Kartierung (SLAM), Simulationstools und verschiedene Algorithmen.
Die primären ROS-Clientbibliotheken sind für die Arbeit mit einem System konzipiert, das Unix ähnelt. Dies liegt vor allem daran, dass sie auf umfassende Open-Source-Softwareanwendungen angewiesen sind. Die Ubuntu Linux-Distribution wird für bestimmte Client-Bibliotheken als "unterstützt" bezeichnet, während andere Betriebssysteme wie Fedora Linux, macOS und Microsoft Windows als "experimentell" bezeichnet und von der Community unterstützt werden. ROS-basierte Anwendungen können jetzt dank der nativen Java-ROS-Client-Bibliothek, die als rosjava bekannt ist, für das Android-Betriebssystem erstellt werden. Diese Bibliothek teilt diese Einschränkungen nicht mit anderen ROS-Clientbibliotheken. Darüber hinaus hat rosjava die Integration von ROS in eine offiziell unterstützte MATLAB-Toolbox ermöglicht. Diese Toolbox ist kompatibel mit Linux, macOS und Microsoft Windows. Darüber hinaus wurde eine JavaScript-Client-Bibliothek namens roslibjs entwickelt. Diese Bibliothek ermöglicht es, Anwendungen in ein ROS-System zu integrieren, indem ein beliebiger Webbrowser verwendet wird, der mit den Standards konsistent ist.
Die Stanford University war der Ort, an dem die ersten Komponenten dessen, was später ROS werden sollte, irgendwann vor 2007 zusammenkamen. Zu dieser Zeit wurde das Personal Robotics Program von Eric Berger und Keenan Wyrobek geleitet, die beide Doktoranden an der Stanford University waren und im Robotiklabor von Kenneth Salisbury arbeiteten. Bei der Arbeit an Robotern, die Manipulationsaufgaben in menschlichen Umgebungen ausführen sollen, stellten die beiden Studenten fest, dass viele ihrer Kollegen durch die Vielfalt der Robotik behindert wurden. Zum Beispiel verfügt ein exzellenter Softwareentwickler möglicherweise nicht über die erforderlichen Hardwarekenntnisse, und jemand, der eine hochmoderne Bahnplanung entwickelt, weiß möglicherweise nicht, wie die erforderliche Computer Vision durchgeführt wird. Um eine Lösung für dieses Problem zu finden, beschlossen die beiden Studenten, ein Basissystem zu schaffen, das als Grundlage dienen sollte, auf der andere Akademiker ihre eigenen Systeme aufbauen können. Laut Eric Berger fasst "etwas, das in all diesen verschiedenen Dimensionen nicht war" die Situation gut zusammen.
Die ersten Schritte in Richtung dieses vereinheitlichenden Systems machten die beiden Personen, indem sie den PR1 als Hardware-Prototyp konstruierten und dann begannen, darauf basierende Software zu entwickeln. Sie taten dies, indem sie sich die Best Practices von anderen frühen Open-Source-Robotersoftware-Frameworks ausliehen, insbesondere von Switchyard, einem System, an dem Morgan Quigley, ein weiterer Stanford-Doktorand, zur Unterstützung des Stanford Artificial Intelligence Robot (STAIR) des Stanford Artificial Intelligence Laboratory gearbeitet hatte. Die Anfangsfinanzierung in Höhe von fünfzigtausend US-Dollar wurde von Joanna Hoffman und Alain Rossmann bereitgestellt, was die Gründung des PR1 erleichterte. Auf der Suche nach Mitteln für die weitere Entwicklung stießen Eric Berger und Keenan Wyrobek auf Scott Hassan, den Gründer von Willow Garage, einem Technologie-Inkubator, der an einem autonomen SUV und einem solarbetriebenen autonomen Boot arbeitete. Beide Projekte befanden sich in der Entwicklung. Die Vorstellung, die Berger und Wyrobek von einem "Linux für die Robotik" hatten, teilte Hassan, und er lud sie ein, eine Anstellung in der Willow Garage anzunehmen. Willow Garage wurde im Januar 2007 gegründet, und am 7. November desselben Jahres wurde der allererste ROS-Code-Commit an SourceForge vorgenommen.
Als Nachfolger des PR1 begann Willow Garage mit der Arbeit am PR2-Roboter, und ROS sollte die Software sein, die für den Betrieb verwendet werden sollte. Eine zunehmende Anzahl von Paketen, die sich in ROS integrieren ließen, um ein größeres Software-Ökosystem zu schaffen, wurde mit Beiträgen von mehr als zwanzig verschiedenen Institutionen entwickelt. Diese Beiträge umfassten sowohl die Kernsoftware als auch die wachsende Anzahl von Paketen. Aufgrund der Tatsache, dass Personen von außerhalb von Willow zu ROS beitrugen, insbesondere aus dem STAIR-Projekt in Stanford, wurde ROS von Anfang an als Plattform konzipiert, die mehrere Roboter unterstützen konnte. Obwohl Willow Garage in der Vergangenheit an anderen Projekten gearbeitet hatte, wurden diese Projekte zugunsten des Personal Robotics Program aufgegeben. Das Hauptziel des Programms war es, den PR2 als Forschungsplattform für akademische Einrichtungen und ROS als Open-Source-Robotik-Stack zu entwickeln, der als Grundlage sowohl für die akademische Forschung als auch für Technologie-Startups dienen sollte. Dies war vergleichbar mit der Art und Weise, wie der LAMP-Stack als Grundlage für webbasierte Startups diente.
Der erste der drei internen Meilensteine von Willow Garage wurde im Dezember 2008 erreicht und bestand aus der kontinuierlichen Navigation der PR2 über einen Zeitraum von zwei Tagen und einer Strecke von Pi-Kilometern. Kurz darauf wurde eine frühe Version von ROS, bekannt als 0.4 Mango Tango, der Öffentlichkeit zur Verfügung gestellt. Es folgten die erste RVIZ-Dokumentation und das erste Papier über ROS. Der zweite interne Meilenstein wurde zu Beginn des Sommers erreicht, nämlich dass der PR2 in der Lage war, sich am Arbeitsplatz zurechtzufinden, Türen zu öffnen und sich gleichzeitig einzuklinken. Der Start der ROS.org-Website folgte auf diese Veranstaltung, die im August stattfand. Als ROS 1.0 im Januar 2010 veröffentlicht wurde, wurden im Dezember erste Lektionen über das Betriebssystem veröffentlicht, um die Veröffentlichung vorzubereiten. Es war der dritte Meilenstein, der darin bestand, eine große Menge an Dokumentationen und Tutorials für die enormen Fähigkeiten zu entwickeln, die die Ingenieure von Willow Garage im Laufe der letzten drei Jahre entwickelt hatten.
Auf diese Weise konnte Willow Garage eines seiner langjährigen Ziele erreichen, nämlich die Spende von zehn PR2-Robotern an renommierte Hochschulen. Von Anfang an war dies eines der Hauptziele der Schöpfer, da sie glaubten, dass der PR2 das Potenzial hatte, die Robotikforschung auf der ganzen Welt zu initiieren. Am Ende vergaben sie elf PR2s an verschiedene Institutionen, darunter die Universität Freiburg (Deutschland), die Robert Bosch GmbH, das Georgia Institute of Technology, die KU Leuven (Belgien), das Massachusetts Institute of Technology (MIT), die Stanford University, die Technische Universität München (Deutschland), die University of California, Berkeley, die University of Pennsylvania, die University of Southern California (USC) und die University of Tokyo (Japan). All dies, in Verbindung mit dem äußerst fruchtbaren Praktikumsprogramm, das Willow Garage anbot (das Melonee Wise von 2008 bis 2010 betreute), trug zur Verbreitung von Informationen über ROS in der gesamten Robotik-Community bei. ROS Box Turtle, die erste offizielle Version der ROS-Distribution, wurde am 2. März 2010 der Öffentlichkeit zur Verfügung gestellt. Dieses Ereignis markierte das erste Mal, dass ROS formell eine Sammlung von versionierten Paketen zur Verfügung gestellt wurde, die die breite Öffentlichkeit nutzen konnte. Als Ergebnis dieser Errungenschaften wurden das erste autonome Fahrzeug, das ROS ausführte, die erste Drohne, die ROS ausführte, und die Adaption von ROS für Lego Mindstorms entwickelt. Der PR2-Roboter wurde am 9. September 2010 offiziell für die breite...