Mit Unity Robotern das Sehen beibringen

SARAH WOLF / UNITY TECHNOLOGIESContributor
Mar 2, 2021|8 Min.
Mit Unity Robotern das Sehen beibringen
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.

Die Welt der Robotik ist voll von Unbekannten! Vom Sensorrauschen bis hin zur genauen Positionierung wichtiger Objekte müssen Roboter die Welt um sie herum verstehen, um präzise und robust arbeiten zu können. Wir haben bereits eine Pick-and-Place-Aufgabe in Unity demonstriert, bei der der Roboter Niryo One einen Würfel mit bekannter Position und Ausrichtung aufnimmt. Diese Lösung wäre in der realen Welt nicht sehr robust, da die genaue Position eines Objekts selten von vornherein bekannt ist. In unserer neuen Demo zur Schätzung der Objektposition zeigen wir Ihnen, wie Sie mit dem Unity Computer Vision Perception Package Daten sammeln und ein Deep-Learning-Modell trainieren, um die Position eines bestimmten Objekts vorherzusagen. Anschließend zeigen wir Ihnen, wie Sie das trainierte Modell mit einem virtuellen UR3-Roboterarm in Unity integrieren, um das komplette Pick-and-Place-System für Objekte mit unbekannten und beliebigen Posen zu simulieren.

In der realen Welt arbeiten Roboter oft in dynamischen Umgebungen und müssen sich an diese anpassen. Solche Anwendungen erfordern häufig, dass Roboter relevante Objekte wahrnehmen und mit ihnen interagieren. Ein wichtiger Aspekt bei der Wahrnehmung von und der Interaktion mit Objekten ist das Verständnis ihrer Position und Orientierung in Bezug auf ein Koordinatensystem, auch als "Pose" bezeichnet. Frühe Ansätze zur Bestimmung der Körperhaltung stützten sich häufig auf klassische Computer-Vision-Techniken und benutzerdefinierte Passermarken. Diese Lösungen sind für den Einsatz in bestimmten Umgebungen konzipiert, versagen aber oft, wenn sich ihre Umgebung ändert oder von den Erwartungen abweicht. Die Lücken, die durch die Beschränkungen der traditionellen Computer Vision entstehen, werden durch vielversprechende neue Deep Learning-Techniken geschlossen. Diese neuen Methoden schaffen Modelle, die durch Lernen aus vielen Beispielen die richtige Ausgabe für eine bestimmte Eingabe vorhersagen können.

In diesem Projekt wird anhand von Bildern und eindeutigen Posenangaben ein Modell zur Vorhersage der Objektposition trainiert. Zur Laufzeit kann das trainierte Modell die Pose eines Objekts aus einem Bild vorhersagen, das es noch nie zuvor gesehen hat. In der Regel müssen Zehntausende oder mehr Bilder gesammelt und beschriftet werden, damit die Deep-Learning-Modelle eine ausreichende Leistung erbringen können. Die Erfassung dieser Daten in der realen Welt ist mühsam, teuer und in einigen Fällen, wie der 3D-Objektlokalisierung, von Natur aus schwierig. Selbst wenn diese Daten gesammelt und beschriftet werden können, kann sich der Prozess als einseitig, fehleranfällig, langwierig und teuer erweisen. Wie können Sie also leistungsstarke Ansätze des maschinellen Lernens auf Ihr Problem anwenden, wenn die gewünschten Daten unerreichbar sind oder für Ihre Anwendung noch gar nicht existieren?

Mit Unity Computer Vision können Sie synthetische Daten als effiziente und effektive Lösung für Ihre Datenanforderungen im Bereich des maschinellen Lernens erzeugen. Dieses Beispiel zeigt, wie wir in Unity automatisch beschriftete Daten generiert haben, um ein maschinelles Lernmodell zu trainieren. Dieses Modell wird dann in Unity auf einem simulierten UR3-Roboterarm unter Verwendung des Robot Operating System (ROS) eingesetzt, um Pick-and-Place mit einem Würfel zu ermöglichen, dessen Position unbekannt ist.

Synthetische Daten generieren
Würfel mit Buchstaben

Simulatoren wie Unity sind ein leistungsfähiges Instrument zur Bewältigung der Herausforderungen bei der Datenerfassung durch die Erzeugung synthetischer Daten. Mit Unity Computer Vision können große Mengen perfekt beschrifteter und unterschiedlicher Daten mit minimalem Aufwand erfasst werden, wie bereits gezeigt. Für dieses Projekt sammeln wir viele Beispielbilder des Würfels in verschiedenen Posen und Lichtverhältnissen. Diese Methode der Randomisierung von Aspekten der Szene wird als Domänenrandomisierung1bezeichnet. Mehr unterschiedliche Daten führen in der Regel zu einem robusteren Deep-Learning-Modell.

Um Daten mit dem Würfel in verschiedenen Stellungen in der realen Welt zu sammeln, müssten wir den Würfel manuell bewegen und ein Foto machen. Unser Modell wurde mit über 30.000 Bildern trainiert. Wenn wir dies in nur 5 Sekunden pro Bild tun könnten, würden wir über 40 Stunden brauchen, um diese Daten zu sammeln! Und in dieser Zeit ist die notwendige Kennzeichnung noch nicht enthalten. Mit Unity Computer Vision können wir 30.000 Trainingsbilder und weitere 3.000 Validierungsbilder mit entsprechenden Beschriftungen in nur wenigen Minuten erzeugen! Die Kamera, der Tisch und die Position des Roboters sind in diesem Beispiel fixiert, während die Beleuchtung und die Position des Würfels in jedem aufgenommenen Bild zufällig variieren. Die Beschriftungen werden in einer entsprechenden JSON-Datei gespeichert, in der die Pose durch eine 3D-Position (x,y,z) und eine Quaternionenausrichtung (qx,qy,qz,qw) beschrieben wird. Während in diesem Beispiel nur die Position des Würfels und die Beleuchtung der Umgebung variiert werden, können Sie mit Unity Computer Vision auf einfache Weise verschiedene Aspekte der Szene zufällig hinzufügen. Für die Posenschätzung verwenden wir ein überwachtes maschinelles Lernverfahren, um die Daten zu analysieren und ein trainiertes Modell zu erstellen.

Verwendung von Deep Learning zur Vorhersage der Körperhaltung
Grafik

Beim überwachten Lernen lernt ein Modell, wie es ein bestimmtes Ergebnis vorhersagen kann, indem es eine Reihe von Eingaben und entsprechenden Ausgaben trainiert, in unserem Fall Bilder und Posenbeschriftungen. Vor einigen Jahren stellteein Forscherteam2ein neuronales Faltungsnetzwerk (CNN) vor, das die Position eines Objekts vorhersagen konnte. Da wir an einer 3D-Pose für unseren Würfel interessiert sind, haben wir diese Arbeit erweitert, um die Orientierung des Würfels in die Ausgabe des Netzwerks einzubeziehen. Um das Modell zu trainieren, minimieren wir den kleinsten quadratischen Fehler (L2-Abstand) zwischen der vorhergesagten Pose und der tatsächlichen Pose. Nach dem Training konnte das Modell die Lage des Würfels mit einer Genauigkeit von 1 cm und die Ausrichtung mit einer Genauigkeit von 2,8 Grad (0,05 Radiant) vorhersagen. Nun wollen wir sehen, ob dies für unseren Roboter genau genug ist, um die Aufgabe des Aufnehmens und Platzierens erfolgreich durchzuführen!

Bewegungsplanung in ROS
Grafik

Der Roboter, den wir in diesem Projekt verwenden, ist ein UR3-Roboterarm mit einem Robotiq 2F-140-Greifer, der mit dem Unity Robotics URDF Importer-Paket in unsere Unity-Szene gebracht wurde. Für die Kommunikation wird das Unity Robotics ROS-TCP Connector Paket verwendet, während das ROS MoveIt Paket die Bewegungsplanung und -steuerung übernimmt.

Da wir nun die Pose des Würfels mit unserem Deep Learning-Modell genau vorhersagen können, können wir diese vorhergesagte Pose als Zielpose in unserer Pick-and-Place-Aufgabe verwenden. Wir erinnern uns, dass wir uns in unserer vorherigen Pick-and-Place-Demo auf die wahre Pose des Zielobjekts verlassen haben. Der Unterschied besteht darin, dass der Roboter die Aufgabe des Aufnehmens und Platzierens ohne Vorwissen über die Position des Würfels ausführt und nur eine vorhergesagte Position vom Deep-Learning-Modell erhält. Das Verfahren umfasst 4 Schritte:

Ein Bild mit dem Zielwürfel wird von Unity erfasst

Das Bild wird an ein trainiertes Deep-Learning-Modell weitergeleitet, das eine vorhergesagte Pose ausgibt

Die vorhergesagte Pose wird an den MoveIt-Bewegungsplaner gesendet

ROS gibt eine Flugbahn an Unity zurück, die der Roboter ausführen soll, um den Würfel aufzunehmen

Bei jeder Iteration der Aufgabe wird der Würfel an eine zufällige Stelle verschoben. Obwohl wir in der Simulation die Lage des Würfels kennen, haben wir in der realen Welt nicht den Vorteil dieser Information. Um also die Grundlage für die Übertragung dieses Projekts auf einen realen Roboter zu schaffen, müssen wir die Haltung des Würfels allein aus sensorischen Daten bestimmen. Unser Posenschätzungsmodell macht dies möglich, und in unseren Simulationstests können wir den Würfel in 89 % der Fälle in Unity zuverlässig erfassen!

Fazit
Roboterarm, der Dinge aufhebt

Unsere Object Pose Estimation Demo zeigt, wie Sie mit Unity synthetische Daten generieren, ein Deep-Learning-Modell trainieren und ROS nutzen können, um einen simulierten Roboter zu steuern und ein Problem zu lösen. Wir haben die Unity Computer Vision Tools verwendet, um synthetische, beschriftete Trainingsdaten zu erstellen und ein einfaches Deep-Learning-Modell zu trainieren, um die Pose eines Würfels vorherzusagen. Die Demo bietet ein Tutorial, das Sie durch die Erstellung dieses Projekts führt, das Sie durch Anwendung weiterer Zufallsgeneratoren erweitern können, um komplexere Szenen zu erstellen. Wir haben die Unity-Robotik-Tools verwendet, um mit einem ROS-Inferenzknoten zu kommunizieren, der das trainierte Modell zur Vorhersage der Position eines Würfels verwendet. Diese und andere Tools ermöglichen es Ihnen, Lösungen zu erforschen, zu testen, zu entwickeln und lokal einzusetzen. Wenn Sie bereit sind, Ihre Lösung zu skalieren, spart Unity Simulation im Vergleich zu lokalen Systemen sowohl Zeit als auch Geld.

Und wussten Sie schon, dass sowohl die Unity Computer Vision als auch die Unity Robotics Tools kostenlos genutzt werden können? Schauen Sie sich die Demo zur Objektposenschätzung an, um noch heute damit zu beginnen!

Weiter schaffen

Da wir nun Objekte mit einer unbekannten Pose aufnehmen können, stellen Sie sich vor, wie Sie dies noch erweitern könnten! Was ist, wenn es Hindernisse auf dem Weg gibt? Oder mehrere Objekte in der Szene? Überlegen Sie, wie Sie damit umgehen könnten, und halten Sie die Augen offen für unseren nächsten Beitrag!

Ich kann es kaum erwarten, den nächsten Beitrag zu lesen!? Melden Sie sich an, um per E-Mail über unsere Arbeit im Bereich Robotik und Computer Vision informiert zu werden.

Weitere Robotik-Projekte finden Sie auch auf unserem Unity Robotics GitHub.

Weitere Computer Vision Projekte finden Sie auf unserer Unity Computer Vision Seite.

Unser Team würde sich freuen, von Ihnen zu hören, wenn Sie Fragen, Feedback oder Vorschläge haben! Bitte wenden Sie sich an unity-robotics@unity3d.com.

Zitate

J. Tobin, R. Fong, A. Ray, J. Schneider, W. Zaremba, P. Abbeel, "Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World" arXiv:1703.06907, 2017

J. Tobin, W. Zaremba, and P. Abbeel, "Domain randomization and generative models for robotic grasping," arXiv preprint arXiv:1710.06425, 2017