Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
ROS, das Robot Operating System, ist ein Open-Source-Framework, das Roboter dazu bringt, Dinge zu tun. ROS soll als gemeinsame Softwareplattform für Menschen dienen, die Roboter bauen und benutzen. Dank dieser gemeinsamen Plattform können die Menschen Code und Ideen leichter austauschen und, was vielleicht noch wichtiger ist, du musst nicht erst jahrelang an der Software-Infrastruktur arbeiten, bevor sich deine Roboter bewegen können!
ROS ist bemerkenswert erfolgreich. Zum Zeitpunkt der Erstellung dieses Artikels gibt es in der offiziellen ROS-Distribution über 2.000 Softwarepakete, die von fast 600 Personen geschrieben und gepflegt werden. Ungefähr 80 kommerziell erhältliche Roboter werden unterstützt, und wir können mindestens 1.850 akademische Abhandlungen finden, in denen ROS erwähnt wird. Wir müssen nicht mehr alles von Grund auf neu schreiben, vor allem, wenn wir mit einem der vielen Roboter arbeiten, die ROS unterstützen, und können mehr Zeit damit verbringen, überRobotik nachzudenken, statt über Bittricks und Gerätetreiber.
ROS besteht aus einer Reihe von Teilen:
-
Eine Reihe von Treibern, mit denen du Daten von Sensoren lesen und Befehle an Motoren und andere Aktoren in einem abstrakten, klar definierten Format senden kannst. Es wird eine Vielzahl gängiger Hardware unterstützt, darunter eine wachsende Zahl kommerziell erhältlicher Robotersysteme.
-
Eine große und wachsende Sammlung grundlegender Robotik-Algorithmen, die es dir ermöglichen, Karten der Welt zu erstellen, in ihr zu navigieren, Sensordaten darzustellen und zu interpretieren, Bewegungen zu planen, Objekte zu manipulieren und vieles andere mehr. ROS ist in der Robotik-Forschungsgemeinschaft sehr populär geworden, und viele innovative Algorithmen sind jetzt in ROS verfügbar.
-
Die gesamte Recheninfrastruktur, die es dir ermöglicht, Daten zu verschieben, die verschiedenen Komponenten eines komplexen Robotersystems zu verbinden und deine eigenen Algorithmen einzubauen. ROS ist von Haus aus verteilt und ermöglicht es dir, die Arbeitslast nahtlos auf mehrere Computer zu verteilen.
-
Eine große Anzahl von Werkzeugen, die es einfach machen, den Zustand des Roboters und der Algorithmen zu visualisieren, fehlerhaftes Verhalten zu beheben und Sensordaten aufzuzeichnen. Das Debuggen von Robotersoftware ist bekanntermaßen schwierig, und dieser umfangreiche Satz an Werkzeugen ist einer der Gründe, warum ROS so leistungsfähig ist, wie es ist.
-
Das ROS-Ökosystem umfasst eine Vielzahl von Ressourcen, wie z. B. ein Wiki, in dem viele Aspekte des Frameworks dokumentiert sind, eine Frage-und-Antwort-Seite, auf der du um Hilfe bitten und dein Wissen mit anderen teilen kannst, sowie eine blühende Gemeinschaft von Nutzern und Entwicklern.
Warum solltest du also ROS lernen? Die kurze Antwort ist, weil es dir Zeit spart. ROS bietet alle Teile eines Robotersoftwaresystems, die du sonst selbst schreiben müsstest. So kannst du dich auf die Teile des Systems konzentrieren, die dir wichtig sind, ohne dich um die Teile zu kümmern, die dich nicht interessieren.
Warum solltest du dieses Buch lesen? Im ROS-Wiki gibt es eine Menge Material, darunter ausführliche Tutorials zu vielen Aspekten des Frameworks. Eine florierende Benutzergemeinschaft steht bereit, um deine Fragen aufhttp://answers.ros.org zu beantworten. Warum lernst du ROS nicht einfach aus diesen Quellen? In diesem Buch haben wir versucht, die Dinge übersichtlicher zu gestalten und umfassende Beispiele zu geben, wie du ROS nutzen kannst, um interessante Dinge mit echten und simulierten Robotern zu tun. Wir haben auch versucht, Tipps und Hinweise dazu zu geben, wie du deinen Code strukturierst, wie du deinen Code debuggen kannst, wenn der Roboter etwas Unerwartetes tut, und wie du Teil der ROS-Community wirst.
ROS ist ziemlich komplex, vor allem, wenn du kein erfahrener Programmierer bist. Verteilte Berechnungen, Multithreading, ereignisgesteuerte Programmierung und eine Vielzahl anderer Konzepte bilden das Herzstück des Systems. Wenn du nicht zumindest mit einigen dieser Konzepte vertraut bist, kann die Lernkurve von ROS entmutigend sein. Dieses Buch ist ein Versuch, diese Kurve etwas abzuflachen, indem es dich in die Grundlagen von ROS einführt und dir einige praktische Beispiele zeigt, wie du es für echte Anwendungen auf echten (und simulierten) Robotern nutzen kannst.
Wer sollte dieses Buch lesen?
Wenn du deine Roboter dazu bringen willst, Dinge in der realen Welt zu tun, aber nicht die Zeit damit verbringen willst, das Rad neu zu erfinden, dann ist dieses Buch genau das Richtige für dich. ROS enthält die gesamte Recheninfrastruktur, die du brauchst, um deine Roboter zum Laufen zu bringen, und genügend Robotik-Algorithmen, um sie schnell interessante Dinge tun zu lassen.
Wenn du dich für einen bestimmten Aspekt interessierst, wie z.B. die Bahnplanung, und diesen im Kontext eines größeren Robotersystems untersuchen willst, dann ist dieses Buch genau das Richtige für dich. Wir zeigen dir, wie du deinen Roboter mit der Infrastruktur und den Algorithmen von ROS dazu bringst, interessante Dinge zu tun, und wie du einige der vorhandenen Algorithmen gegen deine eigenen austauschen kannst.
Wenn du eine Einführung in die grundlegenden Mechanismen von ROS und einen Überblick über einige der möglichen Dinge erhalten möchtest, dich aber der Umfang der Informationen im Wiki ein wenig abschreckt, dann ist dieses Buch genau das Richtige für dich. Wir geben dir einen Überblick über die grundlegenden Mechanismen und Werkzeuge von ROS und zeigen dir konkrete Beispiele für komplette Systeme, auf denen du aufbauen und die du anpassen kannst.
Wer sollte dieses Buch nicht lesen?
Obwohl wir niemanden von der Lektüre dieses Buches ausschließen wollen, ist es wahrscheinlich nicht die richtige Ressource für alle. Wir gehen von bestimmten Annahmen über die Roboter aus, die du benutzen wirst. Sie laufen wahrscheinlich unter Linux und haben gute Rechenressourcen (mindestens so gut wie ein Laptop). Sie haben hochentwickelte Sensoren, wie z. B. eine Microsoft Kinect. Sie sind bodengebunden und können sich wahrscheinlich in der Welt bewegen. Wenn deine Roboter nicht zumindest in einige dieser Kategorien fallen, sind die Beispiele in diesem Buch vielleicht nicht sofort für dich relevant, aber das Material über die zugrundeliegenden Mechanismen und Werkzeuge sollte es sein.
In diesem Buch geht es hauptsächlich um ROS und nicht um Robotik. Du lernst hier zwar etwas über Robotik, aber wir gehen nicht sehr tief in viele der Algorithmen in ROS ein. Wenn du eine umfassende Einführung in die Robotik suchst, dann ist dieses Buch nicht das Richtige für dich.
Was du lernen wirst
Dieses Buch soll eine umfassende Einführung in die Programmierung von Robotern mit ROS sein. Wir behandeln die wichtigsten Aspekte der grundlegenden Mechanismen und Werkzeuge, die den Kern von ROS ausmachen, und zeigen dir, wie du sie nutzt, um Software zur Steuerung deiner Roboter zu erstellen. Wir zeigen dir anhand konkreter Beispiele, wie du ROS nutzen kannst, um interessante Dinge mit deinen Robotern zu tun, und geben dir Tipps, wie du auf diesen Beispielen aufbauen kannst, um deine eigenen Systeme zu entwickeln.
Neben dem technischen Material zeigen wir dir auch, wie du dich im größeren ROS-Ökosystem zurechtfindest, z. B. im Wiki und im Q&A-Forum, und wie du Teil der globalen ROS-Community wirst und deinen Code und dein neu erworbenes Wissen mit anderen Robotikern auf der ganzen Welt teilst.
Voraussetzungen
Es gibt ein paar Dinge, die du wissen musst, bevor du das Material in diesem Buch wirklich nutzen kannst. Da ROS ein Software-Framework ist, musst du wissen, wie man programmiert, um es richtig zu verstehen. Obwohl es möglich ist, ROS in einer Vielzahl von Sprachen zu programmieren, werden wir in diesem Buch Python verwenden. Wenn du Python nicht kennst, wird ein großer Teil des Codes hier keinen Sinn ergeben. Zum Glück ist Python eine leicht zu erlernende Sprache! Es gibt viele hervorragende Nachschlagewerke und kostenlose Websites, um Python zu lernen, angefangen bei der offiziellen Python-Website: http://python.org.
ROS funktioniert am besten in einer Ubuntu-Linux-Umgebung, und wenn du dich schon ein wenig mit Linux auskennst, wird dir das das Leben sehr erleichtern. Wir werden versuchen, dir die wichtigsten Teile von Linux nach und nach vorzustellen, aber ein Grundverständnis des Dateisystems, der Bash-Kommando-Shell und mindestens eines Texteditors wird dir helfen, dich auf die ROS-spezifischen Inhalte zu konzentrieren.
Ein grundlegendes Verständnis der Robotik ist zwar nicht unbedingt notwendig, um ROS zu lernen, aber dennoch hilfreich. Wenn du etwas über die Mathematik weißt, die der Robotik zugrunde liegt, wie z. B. Koordinatentransformationen und kinematische Ketten, wird es dir helfen, einige der ROS-Mechanismen zu verstehen, über die wir sprechen. Auch hier werden wir versuchen, eine kurze Einführung in die Materie zu geben, aber wenn du damit nicht vertraut bist, solltest du vielleicht einen Abstecher in die Robotik-Literatur machen, um dir ein wenig Hintergrundwissen anzueignen.
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
-
Zeigt neue Begriffe, URLs, E-Mail-Adressen, Verzeichnis- und Pfadnamen, Dateinamen und Dateierweiterungen an.
Constant width
-
Wird für Programmlistings und innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Namensräume, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter zu verweisen. Wird auch für Befehle, Befehlszeilen-Dienstprogramme und ROS-Pakete, Knoten, Themen usw. verwendet.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
Hinweis
Dieses Symbol zeigt eine allgemeine Notiz an.
Tipp
Dieses Symbol steht für einen Tipp oder eine Anregung.
Warnung
Dieses Symbol weist auf eine Warnung oder Vorsicht hin.
Code-Beispiele verwenden
Zusätzliches Material (Code-Beispiele, Übungen usw.) steht zum Download bereit: https://github.com/osrf/rosbook.
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Zu diesem Zweck stehen die Beispiele im oben verlinkten Repository unter der Apache 2.0 License zur Verfügung, die eine weitgehende Wiederverwendung des Codes erlaubt.
Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Programming Robots with ROS by Morgan Quigley, Brian Gerkey, and William D. Smart (O'Reilly). Copyright 2015 Morgan Quigley, Brian Gerkey, and William D. Smart, 978-1-4493-2389-9."
Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
Safari® Bücher Online
Hinweis
Safari Books Online ist eine digitale On-Demand-Bibliothek, die Experteninhalte in Buch- und Videoform von weltweit führenden Autoren aus den Bereichen Technologie und Wirtschaft liefert.
Technologieexperten, Softwareentwickler, Webdesigner sowie Geschäfts- und Kreativprofis nutzen Safari Books Online als Hauptressource für Recherchen, Problemlösungen, Lernen und Zertifizierungsschulungen.
Safari Books Online bietet eine Reihe von Plänen und Preisen für Unternehmen, Behörden, Bildungseinrichtungen und Privatpersonen.
Mitglieder haben Zugang zu Tausenden von Büchern, Schulungsvideos und Manuskripten von Verlagen wie O'Reilly Media, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, Course Technology und Hunderten mehr in einer vollständig durchsuchbaren Datenbank. Wenn du mehr über Safari Books Online erfahren möchtest, besuche uns bitte online.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://bit.ly/prog_robots_w_ros aufrufen .
Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an bookquestions@oreilly.com.
Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://www.youtube.com/oreillymedia
Danksagungen
Zuallererst möchten wir uns bei unseren Redakteuren bei O'Reilly, Mike Loukides, Meg Blanchette und Dawn Schanafelt, bedanken, die bei der Zusammenstellung dieses Buches viel Geduld und ungewöhnliche Zurückhaltung gezeigt haben. Wir möchten auch allen danken, die uns Feedback zu frühen Entwürfen des Buches gegeben haben, insbesondere Andreas Bihlmaier, Jon Bohren, Zach Dodds und Kat Scott. Ihre Kommentare und Vorschläge haben dieses Buch viel besser gemacht.
Vielen Dank auch an alle, die uns geholfen haben, herauszufinden, wie wir ROS auf unseren Robotern richtig einsetzen können. Mike Ferguson hat uns bei den Fetch-Beispielen geholfen, Steve Peters, Nate Koenig und John Hsu von der Open Source Robotics Foundation (OSRF) haben uns einige knifflige Fragen zur Gazebo-Simulation beantwortet. William Woodall und Tully Foote (beide von der OSRF) beantworteten eine Reihe von allgemeinen ROS-Hacking-Fragen.
Vielen Dank auch an Dylan Jones, der in letzter Minute, bevor das Buch in Druck ging, einen Code-Fehler entdeckt hat.
Zum Schluss möchten wir uns bei allen Autoren, Betreuern und Nutzern der weltweiten ROS-Community bedanken. Ohne sie wäre ROS nicht das, was es heute ist, und wir würden dieses Vorwort nicht schreiben.
Get Programmierung von Robotern mit ROS now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.