{"id":2579,"date":"2016-03-26T10:20:35","date_gmt":"2016-03-26T09:20:35","guid":{"rendered":"http:\/\/www.generationrobots.com\/blog\/?p=2579"},"modified":"2023-04-27T15:05:37","modified_gmt":"2023-04-27T13:05:37","slug":"ros-robot-operating-system","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/de\/ros-robot-operating-system\/","title":{"rendered":"ROS &#8211; Robot Operating System"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2579\" class=\"elementor elementor-2579\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-718aed44 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"718aed44\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-509ff0d\" data-id=\"509ff0d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5aff67d9 elementor-widget elementor-widget-text-editor\" data-id=\"5aff67d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<h2 class=\"wp-block-heading\" id=\"h-in-ein-paar-worten\">In ein paar Worten<\/h2>\n\n\n\n<p>Der Name spricht f\u00fcr sich selbst: ROS (Robot Operating System) ist ein Operating-System f\u00fcr Roboter. Gut bekannt sind schon die Operating-Systems f\u00fcr PC oder Server, ROS \u00fcberleitet dieses Prinzip zur Service-Robotik.<\/p>\n\n\n\n<p>Besteht aus einer Reihe freier Open-Source-Software, mit der Software f\u00fcr die Robotik entwickelt werden kann.<\/p>\n\n\n\n<p>ROS geht aber noch etwas dar\u00fcber hinaus: man kann behaupten es handelt sich um eine Mischung aus OS und Middleware.<\/p>\n\n\n\n<p>Es bietet einem Betriebssystem \u00e4hnliche Funktionen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abstraktion von Hardware<\/li>\n\n\n\n<li>Verwaltung der Konkurrenz<\/li>\n\n\n\n<li>Verwaltung von Prozessen<\/li>\n<\/ul>\n\n\n\n<p>ROS stellt auch Funktionen auf h\u00f6herer Ebene bereit:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Asynchrone Aufrufe<\/li>\n\n\n\n<li>Synchrone Aufrufe<\/li>\n\n\n\n<li>Zentrale Datenbank f\u00fcr Daten<\/li>\n\n\n\n<li>Roboter Setup System<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-wozu-ein-os-fur-roboter\">Wozu ein OS f\u00fcr Roboter?<\/h2>\n\n\n\n<p>Bevor OS f\u00fcr Roboter entwickelt wurden, verbrachte jeder einzelne Forscher oder Robotiker viel Zeit damit die Roboter zu konzipieren und die embedded Software zu schreiben. Das bedurfte Kenntnisse in Sachen Mechanik, Elektronik und Programmierung. Grunds\u00e4tzlich kam dies der Elektronik geneigter embedded Programmierung n\u00e4her als der Robotik wie wir sie heute in der Service-Robotik kennen. Die Wiederverwertung solcher Programme war oft schwierig, da diese oft auf die Hardware bezogen waren.<\/p>\n\n\n\n<p>Der offensichtliche Grund ist es also, nicht jedes Mal E=mc2 auszurechnen zu m\u00fcssen und durch Standardfunktionen die Hardware zu abstrahieren, genau wie auf den g\u00e4ngigen OS f\u00fcr PC.<\/p>\n\n\n\n<p>ROS positioniert sich also als Facilitator f\u00fcr Robotikprojekte. Forscher oder Ingenieure in F&amp;E-Abteilungen verbringen nicht mehr viel Zeit damit, f\u00fcr jedes neue Robotikprojekt ein neues Ecosystem aufzubauen. Dies stellt auch eine finanzielle Einsparung dar.<\/p>\n\n\n\n<p>ROS hat eine beschleunigende Wirkung auf F&amp;E, indem es die Kosten und die \u00ab\u00a0time to market\u00a0\u00bb senkt. F\u00fcr Strukturen oder Abteilungen, die schnell einen neuen Prototypen auf den Markt bringen m\u00f6chten oder einen technologischen R\u00fcckstand aufholen m\u00fcssen, ist dies sehr interessant.<\/p>\n\n\n\n<p>Ein weiterer Vorteil eines OS f\u00fcr Roboter wie ROS, ist es unterschiedliche Knowhows zusammenzubringen. Einen Roboter zu programmieren bedarf n\u00e4mlich unter anderem:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Hardwaremanagement durch geschriebene Driver<\/li>\n\n\n\n<li>Speicher und Prozesse managen<\/li>\n\n\n\n<li>Konkurrenz- und Fusiondatamanagement<\/li>\n\n\n\n<li>Logische Algorithmen erstellen, was weit auf KI zur\u00fcckgreift<\/li>\n<\/ul>\n\n\n\n<p>Robotik ist also vielseitig genug, um allgemein au\u00dfer Reichweite eines einzelnen Menschen zu sein.<\/p>\n\n\n\n<p>ROS senkt das technische Niveau, das f\u00fcr die Arbeit an Robotikprojekten erforderlich ist. Dies kann es vielen Unternehmen erleichtern, in die Robotik einzusteigen oder komplexe Systeme schneller zu entwerfen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ros-der-ursprung\">ROS : Der Ursprung<\/h2>\n\n\n\n<p>Es gibt viele Robotik-Frameworks die spezifisch f\u00fcr pr\u00e4zise Anwendungen, f\u00fcr Prototypen, erstellt wurden. ROS strebt da eher das Allgemeine an, und wird auch von den Erfindern nicht als Allround-L\u00f6sung gedacht.<\/p>\n\n\n\n<p>Vor 2007, als die ROS-Middleware entwickelt wurde, gab es f\u00fcr Robotiker keine Standardarchitektur f\u00fcr eingebettete Software. Es handelt sich also um einen wichtigen Fortschritt.<\/p>\n\n\n\n<p>ROS wird von Willow Garage, einer kalifornischen Firma 2006er Jahrgang, entwickelt. Der Gr\u00fcnder, Scott Hassan, war einer der ersten Google Angestellten, er erarbeitete die Technologie des bekannten Suchmotors und ist verantwortlich f\u00fcr die Yahoo Groups (von eGroups die jetzt Yahoo Groups sind). Der Vorsitzende bei Willow Garage ist Steeve Cousin, ein Veteran IBM\u2019sWillow Garage ist eine Privatfirma die enge Verbindung zu der Universit\u00e4t Standford hat. Beide sind in Palo Alto, Kalifornien fast Nachbarn.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/img\/cms\/articles%20et%20tutoriels\/ROS\/logo-willow.png\" alt=\"logo von Willow Garage\" \/><\/figure>\n\n\n\n<div align=\"center\">\u00a0<\/div>\n\n\n\n<p>Willow Garage pr\u00e4sentiert sich als ein Forschungslabor, Technologieinkubator f\u00fcr Eigen-Robotik mehr als profitorientiertes Unternehmen. (Anfangs zumindest)<\/p>\n\n\n\n<p>Willow Garage stellt also die Software ROS her aber auch Roboter als solche, wie den PR2 und den Turtlebot. In beiden F\u00e4llen sind die Produkte Open-Source (BSD Lizenz). Der Hintergrundgedanke ist es, dass allm\u00e4hlich Roboter zu unserem Alltag geh\u00f6ren und dazu muss die Forschung angekurbelt werden. Das geht besser mit Open-Source L\u00f6sungen.<\/p>\n\n\n\n<p>Es scheint, dass es Willow Garage mehr am Herzen liegt, die Roboter-Community auszubauen als Roboter selber. In einem Interview mit der Zeitschrift l\u2019Expansion, sagte Scott Hassan, dass seine Ziele denen Irobots gleich seien, aber die jeweiligen Strategien sich unterscheiden.<\/p>\n\n\n\n<p>Singularityhubs 4 gute Gr\u00fcnde an Willow Garages Erfolg zu glauben:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Der Wille Roboter-Forschung durch vereinfachte L\u00f6sungen zu beschleunigen.<\/li>\n\n\n\n<li>Die weit ausreichenden Fonds<\/li>\n\n\n\n<li>Die offenen Ohren der Welt der Forschung<\/li>\n\n\n\n<li>Das kostenfreie Teilen der Technologie, ohne erst an Geld zu denken.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ros-grundsatze\">ROS : Grunds\u00e4tze<\/h2>\n\n\n\n<p>ROS Philosophie in 5 Leitmotiven :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Peer to Peer<\/li>\n\n\n\n<li>Mikrokernel<\/li>\n\n\n\n<li>Sprachvielfallt<\/li>\n\n\n\n<li>Leichtgewichtig<\/li>\n\n\n\n<li>Kostenlos \u2013 Open-Source<\/li>\n<\/ul>\n\n\n\n<p>Lasst uns die jeweiligen Punkte genauer anschauen<\/p>\n\n\n\n<p><strong>Peer to Peer <\/strong>: Komplexe Roboter bestehen aus mehreren Computern, embedded Karten mit Ethernet Kabeln verbunden, und manchmal externe PCs f\u00fcr die rechenleistungshungrigen Durchf\u00fchrungen. Eine Peer-to-Peer Architektur, verkuppelt mit einem Buffer- und einem Lookup-System (Nameservice, in ROS Master genannt) erm\u00f6glicht es jeder Einheit direkt mit einer anderen zu kommunizieren. Synchron oder asynchron, je nach Bedarf.<\/p>\n\n\n\n<p><strong>Sprachvielfallt <\/strong>: ROS ist sprachlich gesehen neutral und unterst\u00fctzt somit Entwicklungen in verschiedensten Programmiersprache. ROS Spezifizit\u00e4t liegt in den Messages. Die Peer-to-Peer Verbindungen werden durch XML-RPC verarbeitet, welches in vielen Sprachen verf\u00fcgbar ist. Um eine neue Programmiersprache zu unterst\u00fctzen, kann man entweder die C++Klassen rewrappen (was zB f\u00fcr den Kunden Octave gemacht wurde) oder man schreibt die Klassen, die, die Messages erschaffen. Die Messages sind mit IDL (Interface Definition Language) beschrieben.<\/p>\n\n\n\n<p><strong>Mikrokernel<\/strong>: Mehr als ein monolithisches Runtime hat Ros ein Mikrokernel-Design angenommen. Dieser basiert auf mehreren kleinen Tools um Build und Run der verschiedenen ROS-Komponenten zu managen. Durch das folgen der Tutoriell zu ROS, lernt man schnell Messages und Knoten zu benutzen. Jeder Befehl ist ein isolierter Execute. Vorteil bei dieser L\u00f6sung ist, dass wenn ein Fehler bei einem exe auftritt, dieser nicht die anderen Ehegutes beeinflusst, anders als einem All-in-one Runtime.<\/p>\n\n\n\n<p><strong>Leichtgewichtig<\/strong> : Um gegen Algorithmen anzukommen die etwas abweichend von ROS sind (und somit schwer wiederverwendbar), will Willow Garage, dass Algorithmen und Driver unabh\u00e4ngig, in execute-File Form erstellt werden. Somit bleibt ROS an sich leichtgewichtig und Wiederverwendbarkeit wird erh\u00f6ht. Das macht das ganze Anwenderfreundlich da Komplexit\u00e4t sich in den Libraries befindet. ROS benutzt auch Code aus anderen Open-Source Projekten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Simulator Player\/stage<\/li>\n\n\n\n<li>Bildverarbeitung und Artificial-Vision mit OpenCV<\/li>\n\n\n\n<li>Algorithmen-Planifikation mit OpenRave<\/li>\n\n\n\n<li>\u2026<\/li>\n<\/ul>\n\n\n\n<p>Hier eine komplette Liste der verf\u00fcgbaren Algorithmen: <a class=\"catalogue\" title=\"komplette Liste der verf\u00fcgbaren Algorithmen\" href=\"http:\/\/www.ros.org\/wiki\/StackList\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.ros.org\/wiki\/StackList<\/a><\/p>\n\n\n\n<p><strong>Kostenlos und Open-Source<\/strong>: Wir haben die Gr\u00fcnde dieser Entscheidung bereits im Vorfeld erkl\u00e4rt. ROS Architektur ist mit diesem Aspekt koh\u00e4rent. Einzelne Module sind nicht in einen einzigen Prozess eigebunden, was die Arbeit mit verschiedenen Lizenzen vereinfacht.<\/p>\n\n\n\n<p>Das Ecosystem von ROS verf\u00fcgt \u00fcber Funktionen f\u00fcr den Austausch. ROS erm\u00f6glicht den Im- und Export von Softwarebibliotheken (ROS-Pakete), die auf www.ros.org herunter- und hochgeladen werden k\u00f6nnen. Diese Funktionen haben kollaborative Praktiken und den Austausch von Wissen in der Robotikbranche emuliert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-die-weiteren-operating-systems-fur-roboter\">Die weiteren operating Systems f\u00fcr Roboter<\/h2>\n\n\n\n<p>Hier ein paar Beispiele von Soft- oder Middleware:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"text-decoration: underline;\">Microsoft Robotics Developper Studio <\/span>: Multiplattform-System von Microsoft. Kostenlos und besitzt ein Simulations-Tool. Nur mit Windows kompatibel. Programmierung ist unter einer .NET verhaltenen Sprache (am besten mit C#).<\/li>\n\n\n\n<li><span style=\"text-decoration: underline;\">NAOQi<\/span> : Robotersystem f\u00fcr den NAO Roboter von Aldebaran Robotics. Programmierbar unter C++ oder Python. NAOQI ist Open-Source.<\/li>\n\n\n\n<li><span style=\"text-decoration: underline;\">URBI <\/span>: Von der franz\u00f6sischen Firma <a class=\"catalogue\" title=\"Gostai\" href=\"http:\/\/www.gostai.com\" target=\"_blank\" rel=\"noopener noreferrer\">Gostai<\/a>, mit eigener Skriptsprache (URBIScript) und nat\u00fcrlich Open-Source. Auch programmierbar in C++. URBI ist Multi-Plattformf\u00e4hig.<\/li>\n<\/ul>\n\n\n\n<p>Es gibt zahlreiche embedded Systeme die auf spezifische Roboter ausgerichtet sind. Aber damit k\u00e4men wir aus dem Multi-Plattformrahmen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-mit-ros-programmieren\">Mit ROS programmieren<\/h2>\n\n\n\n<p>ROS ist nicht von einer spezifischen Sprache abh\u00e4ngig. Heutzutage gibt es 3 Grundlibraries f\u00fcr ROS, die jeweils auf Python, Lisp und C++ ausgerichtet sind. Zwei Exmperimentier-Librairies sind f\u00fcr Java und Lua erh\u00e4ltlich.<\/p>\n\n\n\n<p><strong>ROSJAVA und Android<\/strong><br \/>Rosjava unterscheidet sich von der hier oben besprochenen Java-Librairy. Es handelt sich dabei um eine komplette Implementation Javas in ROS, erschaffen und gepflegt von Google in Zusammenarbeit mit Willow Garage. Statt hier ein Client zu benutzen um durch Java ans C++ Herz von ROS zu gelangen, wurde das Herz komplett in Java umgeschrieben. Googles Ziel dabei ist es eine Version von ROS zu haben, die mit Android kompatibel ist. Rosjava erm\u00f6glicht es Roboter zu steuern dessen OS nicht Linux sondern Android ist. (Selbst wenn Android auf Linux-Basis ist).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-mit-ros-kompatible-roboter\">Mit ROS kompatible Roboter<\/h2>\n\n\n\n<p>Die Liste der kompatiblen Modelle die unter ROS funktionieren w\u00e4chst st\u00e4ndig. F\u00fcr einen Einblick in die komplette Liste, besuchen Sie Willow Garages Website: <a class=\"catalogue\" title=\"Mit ROS kompatible Roboter\" href=\"http:\/\/www.ros.org\/wiki\/Robots\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.ros.org\/wiki\/Robots<\/a><\/p>\n\n\n\n<p>Darunter sind die bekanntesten: <a class=\"catalogue\" title=\"Humanoider Roboter NAO\" href=\"http:\/\/www.generationrobots.com\/de\/246-humanoider-roboter-nao\">NAO<\/a>, Lego Mindstorms NXT, IRobot Roomba, TurtleBot und letztendlich der ber\u00fchmte PR2 von Willow Garage selbst.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/img\/cms\/articles%20et%20tutoriels\/ROS\/PR2-robot.jpg\" alt=\"Robot PR2 von Willow Garage\" \/><\/figure>\n\n\n\n<div align=\"center\">\u00a0<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ros-datensystem\">ROS-Datensystem<\/h2>\n\n\n\n<p>ROS-Ressourcen sind in rangm\u00e4\u00dfiger Gliederung eingeordnet. Zwei Konzepte sind zu verstehen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Le package<\/strong> : Es handelt sich hier um die Zentraleinheit der Softwareorganisation von ROS. Ein Package ist ein Verzeichnis der die Knoten beinhaltet (wir werden hier unten erkl\u00e4ren, was ein Knoten ist) sowie die externen Librairies, Daten und XML Konfigurationsdateien die manifest.xml genannt wird.<\/li>\n\n\n\n<li><strong>Stack<\/strong> : Stack bezeichnet eine Sammlung von Packagen. Sie erm\u00f6glicht mehrere Funktionen wie Navigation, Lokalisierung und viele mehr. Ein Stack beinhaltet mehrere Verzeichnisse sowie eine Konfigurationsdatei die stack.xml genannt wird.<\/li>\n<\/ul>\n\n\n\n<p>Neben diesen beiden wichtigen Begriffen, muss man auch den Begriff \u00ab Distribution \u00bb integrieren. Eine Distribution ist, wie in Linux, eine Zusammenstellung mehrerer versionsbezogene Stacks.<\/p>\n\n\n\n<p>Die letzte Distribution von ROS :<\/p>\n\n\n\n<figure class=\"wp-block-table\">\n<table>\n<tbody>\n<tr>\n<td>\n<ul>\n<li><a class=\"catalogue\" title=\"ROS Groovy Galapagos\" href=\"http:\/\/ros.org\/wiki\/groovy\" target=\"_blank\" rel=\"noopener noreferrer\">ROS Groovy Galapagos<\/a>, am 31t Dezember 2012 ver\u00f6ffentlicht<\/li>\n<li><a class=\"catalogue\" title=\"ROS Fuerte distribution ROS\" href=\"http:\/\/ros.org\/wiki\/fuerte\" target=\"_blank\" rel=\"noopener noreferrer\">ROS Fuerte<\/a>, am 30t April 2012 ver\u00f6ffentlicht<\/li>\n<li><a class=\"catalogue\" title=\"ROS Electric Emys distribution ROS\" href=\"http:\/\/www.ros.org\/wiki\/electric\" target=\"_blank\" rel=\"noopener noreferrer\">ROS Electric Emys<\/a>, am 30t Augst 2011 ver\u00f6ffentlicht<\/li>\n<li><a class=\"catalogue\" title=\"ROS Diamondback distribution ROS\" href=\"http:\/\/www.ros.org\/wiki\/diamondback\" target=\"_blank\" rel=\"noopener noreferrer\">ROS Diamondback<\/a>, am 2 M\u00e4rz 2011ver\u00f6ffentlicht<\/li>\n<li><a class=\"catalogue\" title=\"ROS C Turtle distribution ROS\" href=\"http:\/\/www.ros.org\/wiki\/cturtle\" target=\"_blank\" rel=\"noopener noreferrer\">ROS C Turtle<\/a>, am 2 August 2010 ver\u00f6ffentlicht<\/li>\n<li><a class=\"catalogue\" title=\"ROS Box Turtle distribution ROS\" href=\"http:\/\/www.ros.org\/wiki\/boxturtle\" target=\"_blank\" rel=\"noopener noreferrer\">ROS Box Turtle<\/a>, am 2 M\u00e4rz 2010 ver\u00f6ffentlicht<\/li>\n<\/ul>\n<\/td>\n<td><img decoding=\"async\" src=\"\/img\/cms\/articles%20et%20tutoriels\/ROS\/electric_distribution-ROS.png\" alt=\"Distribution Electric ROS\" border=\"0\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ros-grundkenntnisse\">ROS Grundkenntnisse<\/h2>\n\n\n\n<p>Das Grundprinzip eines Operating Systems f\u00fcr Roboter, ist es eine Vielzahl an Executes gleichzeitig laufen zu lassen und Informationen synchron oder asynchron auszutauschen. Zum Beispiel muss das Operating System muss mit genauer Frequenz die Sensoren des Roboters abfragen (Ultraschallsensor, Infrarotsensor, Drucksensor, Temperatursensor, Kreiselsensor, Beschleunigungssensor, Kameras, Mikrofone), an die Algorithmen (Sprachmanagement, K\u00fcnstliche Bildverarbeitung, Lokalisation und Mapping) weitergeben die die Informationen verarbeiten (Datenfusion) und die Motoren letztendlich angemessen kontrollieren. Dieser komplette Prozess ist kontinuierlich und gleichzeitig gemanagte. Dazu muss das Robotik Operating-System Konkurrenzmanagement durchf\u00fchren um den einfachen Zugriff zum Roboter und dessen Ressourcen weiter zu gew\u00e4hrleisten.<\/p>\n\n\n\n<p>Die Informationen hier unten, sind auf die KONZEPTE BEZOGEN, DIE UNTER ROS ALS \u00ab ROS COMPUTTATION GRAPH \u00bb BEZEICHNET WERDEN. Nicht zu verwechseln mit dem \u00ab ROS File System \u00bb, hier oben beschrieben, was statisch ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-die-knoten\">Die Knoten<\/h3>\n\n\n\n<p>ROS bearbeitet diese Problematik einfachst, dank einfachen Grundlagen. Die erste dieser Begriffe ist der \u201eKnoten\u201c.<\/p>\n\n\n\n<p>In ROS ist ein Knoten eine Execute Instanz. Ein Knoten kann sich auf einen Sensor, ein Motor, ein Verarbeitungsalgorithmus oder \u00dcberwachsungsalgorithmus beziehen. Jeder dieser Knoten erkl\u00e4rt sich dem Master. Man findet hier die Bauweise der Mikrokernel wieder: jede Ressource ist ein unabh\u00e4ngiger Knoten.<\/p>\n\n\n\n<p>Das Knotensystem erm\u00f6glicht die Standardisierung grundlegender Funktionen und damit die schnelle Entwicklung von Technologiebausteinen, die leicht wiederverwendet, ver\u00e4ndert oder verbessert werden k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-der-master\">Der Master<\/h3>\n\n\n\n<p><strong>Master<\/strong> ist ein Deklaration- und Speicherservice der Knoten, der es auch den Knoten erm\u00f6glicht sich untereinander zu kennen. Der Master ist dank XMLRPC implementiert.<\/p>\n\n\n\n<p>Der Master beinhaltet eine sehr angefragte sekund\u00e4re Funktion: das Parameter-Service. Auch durch XMLRPC implementiert, und wie der Name schon ahnen l\u00e4sst handelt es sich um einer Art zentrales Inhaltsverzeichnis was den Knoten erm\u00f6glicht Data zu speichern und somit die allgemeinen Einstellungen zu teilen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-die-topics\">Die Topics<\/h3>\n\n\n\n<p>Der Informationsaustausch funktioniert asynchron durch <strong>Topics<\/strong>, und synchron durch <strong>Services<\/strong>.<\/p>\n\n\n\n<p>Ein <strong>Topic<\/strong> ist eine Informationsbewegung, basierend auf einem Subscribe\/Publish System. Ein oder mehrere Knoten k\u00f6nnen somit Informationen auf ein <strong>Topic<\/strong> posten, und ein oder mehrere Knoten k\u00f6nnen diese Information dann ablesen. Ein Topic ist sozusagen ein asynchroner Information-Bus, \u00e4hnlich wie ein RSS-Strang. Die Idee eines asynchronen Many-to-Many Bus ist bei einem Verteil-System obere Wichtigkeit.<\/p>\n\n\n\n<p>Der <strong>Topic<\/strong> wird immer auf selbe weise erstellt, so dass die ver\u00f6ffentlichen Informationsarten immer gleich strukturiert bleiben. Knoten senden und empfangen <strong>Topic-Messages<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-messages\">Messages<\/h3>\n\n\n\n<p>Eine <strong>Message<\/strong> ist eine Kompositdata-Struktur. Eine Message ist aus einer Kombination von Kernelementen (Kausalketten, Bolean, Integer) und einer Message gestaltet. (Die Message ist eine rekursive Struktur). Zum Beispiel : Ein Knoten der einem Servomotor angeh\u00f6rt, ver\u00f6ffentlicht h\u00f6chstwahrscheinlich sein Zustand auf einem Topic (je nach Programmierung) mit einer Message die eine Ganzzahl die die Position angibt, eine Floating f\u00fcr Temperatur und eine weitere Floating f\u00fcr die Geschwindigkeit.<\/p>\n\n\n\n<p>Diese Beschreibung zu den Messages ist in nom_package\/msg\/monMessageType.msg gespeichert. Diese Datei bestimmt die Nachrichtstruktur.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-services\">Services<\/h3>\n\n\n\n<p>Das Topic ist ein asynchroner Kommunikationsmodus der eine Many-to-Many Kommunikation erm\u00f6glicht. Service hingegen dient einem anderen Ziel: die synchrone Kommunikation zweier Knoten. Dieser Begriff kommt einem Remote Procedere Call nahe.<\/p>\n\n\n\n<p>Die Beschreibung zu den existierenden Services ist unter package\/srv\/ServiceType.srv auffindbar. Diese Datei beschreibt die Struktur der Anfrage- und Antwortdaten.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/img\/cms\/articles%20et%20tutoriels\/ROS\/Concepts-de-base-de-ROS.jpg\" alt=\"Schematische Darstellung der grundlegenden Konzepte von ROS\" \/><\/figure>\n\n\n\n<div align=\"center\">\u00a0<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-bags\">Bags<\/h3>\n\n\n\n<p>\u00ab Bags \u00bb ist das Format was Nachrichten lagert und abspielt. Dieses System erm\u00f6glicht es zum Beispiel die Informationen der Servomotoren und Sensoren zu speichern und dann so oft man will abgespielt zu werden. Analysen k\u00f6nnen also auf echten Informationen beruhen oder auch Systeme im Nachhinein debuggt werden.<\/p>\n\n\n\n<p>Das Tool <a class=\"catalogue\" title=\"ROS RxBag Werkzeug zur Aufzeichnung und Wiedergabe von Roboter-Szenarien\" href=\"http:\/\/www.ros.org\/wiki\/rxbag\" target=\"_blank\" rel=\"noopener noreferrer\">rxbag<\/a> erm\u00f6glicht es, die im Bag gespeicherten Nachrichten visuell zu begutachten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-urdf\">URDF<\/h2>\n\n\n\n<p>ROS erm\u00f6glicht vieles mehr und besitzt vielseitige Funktionen die wir in einem n\u00e4chsten Artikel ansprechen werden. Lasst uns dennoch einen weiteren Beitrag ROS zu der Roboter-Welt erl\u00e4utern. Es handelt sich um das URDF (Unified Robot Description Format), ein XML Format was es erm\u00f6glicht standardisiert einen kompletten Roboter als Datei zu beschreiben.de beschriebene Roboter kann somit statisch oder dynamisch sein, Physisch- oder Kollisionseigenschaften mit integriert werden.<\/p>\n\n\n\n<p>\u00dcber die Standard Funktionen hinaus, bietet ROS mehrere Tools die die Erstellung, das Parsen oder Best\u00e4tigung der Datei erm\u00f6glichen.<\/p>\n\n\n\n<p>URDF ist zum Beispiel bei dem Gazebo Simulator im Einsatz, um den Roboter abzubilden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ros2\">ROS2<\/h2>\n\n\n\n<p>Urspr\u00fcnglich wurde ROS f\u00fcr die akademische Welt (Forschung, h\u00f6here Bildung) entwickelt. Dieses Ecosystem ist daher nicht an den Standards f\u00fcr kommerzielle Produktionen ausgerichtet.<br \/>Eine neue Version, ROS2, wurde 2017 ver\u00f6ffentlicht. Diese Version schlie\u00dft die L\u00fccken von ROS insbesondere in Bezug auf Sicherheit und Zuverl\u00e4ssigkeit. ROS2 bietet eine h\u00f6here Servicequalit\u00e4t, Unterst\u00fctzung f\u00fcr eingebettete Systeme und Echtzeitszenarien.<\/p>\n\n\n\n<p>Lesen Sie unseren ausf\u00fchrlichen Artikel mit dem Titel \u00ab\u00a0<a class=\"catalogue\" title=\"ROS2: Was \u00e4ndert sich gegen\u00fcber ROS?\" href=\"\/blog\/de\/ros2-was-andert-sich-gegenuber-ros\/\">ROS2: Was \u00e4ndert sich gegen\u00fcber ROS?<\/a>\u00ab\u00a0, wenn Sie mehr \u00fcber ROS2 erfahren m\u00f6chten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ros-eine-vielzahl-an-nutzreichen-tools\">ROS : eine Vielzahl an nutzreichen Tools<\/h2>\n\n\n\n<p>Wie bereits erw\u00e4hnt ist ROS aus einer Vielzahl an Tools und Algorithmen zusammengestellt. So manche sind sehr nutzreich bei der Programmierung, Ausf\u00fchrung oder Simulation. Hier ein paar Beispiele der meistbenutzten dieser Tools unter ROS:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Stage : 2D-Simulator<\/li>\n\n\n\n<li>Gazebo : 3D-Simulator<\/li>\n\n\n\n<li>Rviz : 3D-Visualisierungssystem (anders als bei Gazebo, hier kein physischer Motor)<\/li>\n\n\n\n<li>Tf-Package dient der \u00c4nderungs- und Koordinatenmanipulation beherrscht. (Falls es bei Ihnen schon mal vorgekommen ist, gegenseitige Bewegungslehre und Matrize handzuhaben, wird dieses Package Ihnen das Leben erleichtern!<\/li>\n\n\n\n<li>OpenCV : Bildverarbeitung<\/li>\n\n\n\n<li>PointCloudLibrary : Wiederherstellung von 3D-Umgebung durch Laser.<\/li>\n<\/ul>\n\n\n\n<p>Standard API zu ROS gibt es unter: <a class=\"catalogue\" title=\"API-Standards ROS\" href=\"http:\/\/www.ros.org\/wiki\/APIs\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.ros.org\/wiki\/APIs<\/a><\/p>\n\n\n\n<p>Ausgiebige Liste der Packages (mehr als 2000 !)unter: <a class=\"catalogue\" title=\"Liste der Packages ROS\" href=\"http:\/\/www.ros.org\/browse\/list.php\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.ros.org\/browse\/list.php<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ressourcen\">Ressourcen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a class=\"catalogue\" title=\"ROS, robot Operating System\" href=\"http:\/\/www.ros.org\" target=\"_blank\" rel=\"noopener noreferrer\">www.ros.org<\/a><\/li>\n<\/ul>\n\n\n\n<div id=\"ros-kompatible-roboter\">\n<h2>Unsere ROS-kompatiblen Roboter und Ger\u00e4te<\/h2>\n<p>Bei G\u00e9n\u00e9ration Robots bieten wir eine gro\u00dfe Auswahl an ROS-kompatiblen Robotern und Roboterkomponenten an. ROS ist eine echte Zeitersparnis f\u00fcr Forscher und Entwickler und erm\u00f6glicht es Ihnen, sofort an einem Projekt und\/oder einer Anwendung zu arbeiten. Tats\u00e4chlich sind viele Ressourcen online verf\u00fcgbar: github, Treiber, Wiki&#8230;<\/p>\n<p>Entdecken Sie unsere ROS-kompatiblen Roboter und Ger\u00e4te:<\/p>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9ac9366 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9ac9366\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7d95428\" data-id=\"7d95428\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-29e0ff1 elementor-widget elementor-widget-image\" data-id=\"29e0ff1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/static.generation-robots.com\/img\/compatible-robots-ros.jpg\" title=\"\" alt=\"Compatible robots ROS\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f56ae0c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f56ae0c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-964eafc\" data-id=\"964eafc\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-955aeac elementor-widget elementor-widget-text-editor\" data-id=\"955aeac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li><a class=\"catalogue\" title=\"Robots mobiles autonomes\" href=\"\/de\/533-autonome-mobile-roboter\">Autonome mobile Roboter mit ROS-Kompatibilit\u00e4t<\/a><\/li>\n<li><a class=\"catalogue\" title=\"Manipulatoren und Roboterarme mit ROS-Kompatibilit\u00e4t\" href=\"\/de\/213-manipulatoren-und-roboterarme\">Manipulatoren und Roboterarme mit ROS-Kompatibilit\u00e4t<\/a><\/li>\n<li><a class=\"catalogue\" title=\" 6 Achsen Roboterarm Niryo\" href=\"\/de\/468-6-achsen-roboterarm-niryo\"> 6 Achsen Roboterarm Niryo<\/a><\/li>\n<li><a class=\"catalogue\" title=\" Roboterarm Interbotix (Trossen Robotics)\" href=\"\/de\/381-roboterarme-interbotix-trossen-robotics\"> Roboterarm Interbotix (Trossen Robotics)<\/a><\/li>\n<li><a class=\"catalogue\" title=\"Roboterarm OpenManipulator\" href=\"\/de\/383-andere-roboterarme\">Roboterarm OpenManipulator<\/a><\/li>\n<li><a class=\"catalogue\" title=\"Drohnen mit ROS-Kompatibilit\u00e4t\" href=\"\/de\/322-programmierbare-drohnen\">Drohnen mit ROS-Kompatibilit\u00e4t<\/a><\/li>\n<li><a class=\"catalogue\" title=\"LiDAR compatibles ROS\" href=\"\/de\/206-lidars\">LiDAR mit ROS-Kompatibilit\u00e4t<\/a><\/li>\n<li><a class=\"catalogue\" title=\"Tiefenkameras mit ROS-Kompatibilit\u00e4t\" href=\"\/de\/205-tiefen-3d-kameras\">Tiefenkameras mit ROS-Kompatibilit\u00e4t<\/a><\/li>\n<\/ul>\n\n\n\n\n<p>G\u00e9n\u00e9ration Robots (<a class=\"catalogue\" title=\"Der Spezialist f\u00fcr mobile Roboter\" href=\"http:\/\/www.generationrobots.com\">http:\/\/www.generationRobots.com<\/a>)<\/p>\n\n\n\n<p><em><span style=\"font-size: 9pt;\">Alle Rechte vorenthalten. Kopie und Benutzung unterliegt voriger Erlaubnis durch Generation Robot<\/span><\/em><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>In ein paar Worten Der Name spricht f\u00fcr sich selbst: ROS (Robot Operating System) ist ein Operating-System f\u00fcr Roboter. Gut bekannt sind schon die Operating-Systems f\u00fcr PC oder Server, ROS \u00fcberleitet dieses Prinzip zur Service-Robotik. Besteht aus einer Reihe freier Open-Source-Software, mit der Software f\u00fcr die Robotik entwickelt werden kann. ROS geht aber noch etwas[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/de\/ros-robot-operating-system\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":188,"featured_media":2583,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10533],"tags":[],"class_list":["post-2579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-anleitungen-und-tutorials"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/2579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=2579"}],"version-history":[{"count":15,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/2579\/revisions"}],"predecessor-version":[{"id":13989,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/2579\/revisions\/13989"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/2583"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=2579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=2579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=2579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}