Verbessern Sie die Autonomie Ihres Roboters mit ROS 2 und Unity

DEVIN MILLER / UNITY TECHNOLOGIESContributor
Aug 13, 2021|10 Min.
Verbessern Sie die Autonomie Ihres Roboters mit ROS 2 und Unity
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.

Unity freut sich, unsere offizielle Unterstützung von ROS 2 bekannt zu geben, dessen robustes Framework in Verbindung mit Simulation unzählige neue Anwendungsfälle ermöglichen wird.

Das Robot Operating System (ROS) ist seit 2007 ein beliebtes Framework zur Entwicklung von Roboteranwendungen. Obwohl es ursprünglich zur Beschleunigung der Roboterforschung konzipiert wurde, fand es bald breite Anwendung in der industriellen und kommerziellen Robotik. ROS 2 baut auf dem zuverlässigen Framework von ROS auf und verbessert gleichzeitig die Unterstützung für moderne Anwendungen wie Multirobotersysteme, Echtzeitsysteme und Produktionsumgebungen. Unity erweitert seinen offiziellen Support des ROS-Ökosystems auf ROS 2.

In der modernen Robotik verschiebt sich der Schwerpunkt hin zur „Autonomie“, also der Untersuchung und Entwicklung von Algorithmen, die Entscheidungen auch ohne die strengen, von einem menschlichen Entwickler festgelegten Regeln treffen können. Die Simulation unterstützt diesen Übergang, indem sie eine größere Flexibilität und schnellere Experimente als Tests in der realen Welt ermöglicht. Wir haben ein Beispiel, Robotics-Nav2-SLAM, entwickelt, um zu demonstrieren, wie Sie mit der Simulation der gleichzeitigen Lokalisierung und Kartierung (SLAM) und Navigation für eine autonome mobile Robotik (AMR) mit Unity und ROS 2 beginnen können.

ROS 2 treibt moderne Robotik voran

ROS ist zwar nach wie vor ein hervorragendes Framework für die Prototypenentwicklung in der Robotik, es erreicht jedoch das Ende seiner Lebensdauer und es fehlen einige Funktionen, die für die Weiterentwicklung von Prototypen und die groß angelegte Produktion und Bereitstellung eines Robotersystems erforderlich sind. Der technische Fahrplan für ROS 2 wurde von einem Komitee aus Branchenveteranen erstellt und wird von diesem gepflegt. Dabei wurden explizite Grundsätze definiert, um sicherzustellen, dass ROS 2 ein geeignetes Framework für Endbenutzer der Robotik ist. ROS 2 unterstützt mehr Betriebssysteme und Kommunikationsprotokolle und ist stärker verteilt als ROS.

Simulation ermöglicht Autonomie

Viele der neuen Anwendungsfälle für ROS 2 konzentrieren sich auf Autonomie. Die Einführung von Autonomie bedeutet, dass die Entscheidungen eines Roboters und die Ergebnisse dieser Entscheidungen nicht mehr genau vorhersagbar sind, wenn man nur einen Zustandsautomaten und eine Sammlung mathematischer Formeln verwendet, wie dies in vielen Anwendungsfällen der industriellen Robotik der Fall sein kann. Im Vergleich zu Industrierobotern ist die Betriebsumgebung eines autonomen Roboters exponentiell größer. Die Permutationen der Eingaben, auf die es stößt, übertreffen bei weitem das, was in einer kontrollierten Laborumgebung reproduziert werden kann. Um vollständig zu bestätigen, dass sich ein autonomer Roboter wie erwartet verhält, können Sie dies entweder am Roboter tun, in Ihrer eigenen persönlichen Taschendimension, in der Zeit keine Bedeutung hat und die Realität alles und nichts gleichzeitig ist, oder Sie benötigen die nächstbeste Lösung: eine entsprechend robuste Simulation.

Wenn ein Roboter eine Umgebung erfassen soll, muss eine Simulation in der Lage sein, diese Sensoren genau zu modellieren, ohne Kompromisse bei der Genauigkeit der simulierten Topologie und Physik der Umgebung einzugehen. Wenn sich in dieser Umgebung andere Agenten befinden, also Menschen oder andere Roboter, muss die Simulation in der Lage sein, das Verhalten der Agenten zu modellieren und gleichzeitig die Genauigkeit der Sensorsimulation, der Topologiedarstellung und der physikalischen Modellierung beizubehalten. Um einen Roboter umfassend auf alle möglichen Szenarien vorzubereiten, muss diese Simulation viele, viele, viele Male durchgeführt werden. Damit ist gesagt, dass die Simulation zur Unterstützung autonomer Robotik vier Dinge erfordert, die in der industriellen Robotik oft nicht gefragt sind: Flexibilität, Erweiterbarkeit, Skalierbarkeit und Genauigkeit – und das alles ohne Einbußen bei der Leistung. Unity befindet sich an der Schnittstelle all dieser Anforderungen. Aus diesem Grund bauen wir weitere Funktionen in unsere Plattform ein, um die Entwicklung autonomer Roboter zu unterstützen.

Mit den Robotikpaketen von Unity haben Sie Zugriff auf die Schnittstellen, die wir bereits erstellt haben, um die Kommunikation mit ROS oder ROS 2 zu vereinfachen. Mit unserem URDF-Importeurkönnen Sie vorhandene Roboterkonfigurationen direkt aus URDF-Dateien importieren und Ihren Roboter mit der hochwertigen, hocheffizienten Rendering-Pipeline von Unity und einer leistungsstarken und präzisen Physiksimulation testen. Über den Asset Store von Unity haben Sie Zugriff auf eine Vielzahl zusätzlicher, vorgefertigter Umgebungen und Requisiten, die Ihnen dabei helfen, die spezifische Umgebung und Aufgabe Ihres Roboters zu modellieren. Mit wenigen Klicks kann die von Ihnen zusammengestellte Simulation erstellt und auf jedem gängigen Betriebssystem bereitgestellt werden, sei es Windows 10, Mac OS oder Linux. Mithilfe von C#-Skripting, visuellem Bolt-Skripting oder einem der zahlreichen im Asset Store verfügbaren Skript- und Dienstprogramm-Toolkits können Sie die Funktionalität Ihrer jeweiligen Simulation weiter an Ihren spezifischen Anwendungsfall anpassen.

One-Click-ROS-2-Unterstützung

Das Verschieben Ihres Unity-Projekts auf ROS 2 ist ganz einfach. Im ROS-TCP-Connector- Paket haben wir ein Dropdown-Menü hinzugefügt, mit dem Sie das Paket zwischen ROS- und ROS 2-Integration umschalten können. Beim Ändern des Protokolls kompiliert Unity das Paket automatisch entsprechend den von Ihnen ausgewählten Nachrichtendefinitionen und dem Serialisierungsprotokoll neu. Um es auszuprobieren, nehmen Sie diese Änderung einfach in Ihrem eigenen Projekt vor oder laden Sie unser Beispiel-Repository Robotics-Nav2-SLAMherunter, das die erforderlichen Komponenten enthält, um Unity als simulierte Quelle von Sensor- und Odometrieinformationen für das Nav2-Tutorial „Navigieren während der Kartierung“verwenden zu können.

ros2-Einstellungen

Dieses Beispielprojekt zeigt, wie man mit Unity ein Navigationssystem simuliert, das in ROS 2 läuft. Das Konzept der Navigation ist unkompliziert und ändert sich im Kontext der autonomen Robotik nicht wesentlich. Navigationsalgorithmen zielen darauf ab, einen Weg von Ihrem aktuellen Standort zu Ihrem gewünschten Zielzu finden. Um jedoch von dort, wo man ist, zu dem Ziel zu gelangen, muss man zunächst SLAM durchführen – simultane Lokalisierung und Kartierung. SLAM beschreibt eine Sammlung von Algorithmen, die entwickelt wurden, um die Frage zu beantworten: „Wo bin ich gerade und wo war ich?“ Menschen führen SLAM ständig als wesentlichen Bestandteil der Verarbeitungskette zwischen unseren Sinnen und unserem Gehirn durch. Für autonome Roboter ist die Durchführung präziser SLAM-Operationen in den meisten realen Umgebungen noch immer eine Herausforderung. Was genau ein autonomer mobiler Roboter benötigt, damit er immer weiß, wo er sich befindet – im Verhältnis zu allen Orten, an denen er jemals gewesen ist – ist immer noch Gegenstand aktiver Forschung. Die einzige Möglichkeit, diese Frage für einen bestimmten Anwendungsfall wirklich zu beantworten, besteht darin, viele verschiedene Dinge (Sensoren, Algorithmen usw.) auszuprobieren und zu sehen, was hängen bleibt.

In unserem Beispiel finden Sie eine einfache Lagerumgebung, ein vollständig artikuliertes Modell eines mobilen Roboters Turtlebot 3 mit simulierten LIDAR- und Motorsteuerungen und eine Docker-Datei zum Erstellen eines Images mit allen ROS 2-Abhängigkeiten, die zum Testen der Nav2- und slam_toolbox-Stacks anhand unserer Simulation erforderlich sind. Die Schritte der Nav2-Tutorials bieten einen nützlichen Kontext, wenn Sie ROS 2 noch nie verwendet oder zuvor mit SLAM-Algorithmen gearbeitet haben. Damit Sie sehen können, wie dieses Beispiel in Unity funktioniert, finden Sie alle Anweisungen zum Einstieg und zur Ausführung des Projekts in unserem Repository.

Links: RViz-Anzeige von ROS 2-Nachrichten, die in Unity generiert und gesendet werden. Right: TurtleBot 3 führt SLAM und autonome Navigation in Unity aus.
Legen Sie noch heute los

Robotiker, die noch keine Erfahrung mit Unity haben, und Unity-Entwickler, die noch keine Erfahrung mit Robotik haben, werden ermutigt, unsere ROS 2-Integration auszuprobieren und mit Robotics-Nav2-SLAMeine autonome Navigation durchzuführen. Dies ist nur ein kleines Beispiel dessen, was Sie durch die Integration unserer Robotik-Tools und der vielen anderen leistungsstarken Pakete von Unity erstellen können. Parallel dazu entwickelt und veröffentlicht das Unity Robotics-Team weiterhin Funktionen, die explizit gängige Anwendungsfälle der Robotik unterstützen, wobei der Schwerpunkt auf Skalierbarkeit und Erweiterbarkeit liegt.

Unity wird dieses Jahr auf der ROSCon auch einen Workshop veranstalten, der das Nav2-SLAM-Example erweitert, um die Zusammenarbeit mehrerer Roboter mit spezialisierten Rollen zur Erfüllung einer bestimmten Aufgabe zu unterstützen.