Industry

Hergestellt mit Unity: Erstellen und Trainieren eines digitalen Zwillingsroboters

ANTHONY NAVARRO / UNITY TECHNOLOGIESSenior Technical Product Manager
Oct 11, 2021|8 Min.
Hergestellt mit Unity: Erstellen und Trainieren eines digitalen Zwillingsroboters
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.

Unsere Made with Unity: In der Serie AI werden Unity-Projekte vorgestellt, die von Entwicklern für eine Reihe von Zwecken erstellt wurden, bei denen unsere Produkte für künstliche Intelligenz zum Einsatz kommen. In diesem Beispiel stellen wir eine aktuelle Einreichung für den OpenCV Spatial AI Wettbewerb vor, die Robotik, Computer Vision, Reinforcement Learning und Augmented Reality in Unity in einer beeindruckenden Reihe von Beispielen zeigt.

Unity verfügt über eine 3D-Echtzeit-Engine von Weltklasse. Während die Engine und die Tools, die wir entwickelt haben, traditionell Spieleentwickler unterstützt haben, entwickelt die AI@Unity-Gruppe Tools für Bereiche wie maschinelles Lernen, Computer Vision und Robotik, um Anwendungen außerhalb von Spielen zu ermöglichen, insbesondere solche, die auf künstlicher Intelligenz und 3D-Umgebungen in Echtzeit basieren.

Gerard Espona und das Kauda-Team haben in ihrem Beitrag zum OpenCV Spatial AI-Wettbewerb viele unserer KI-Tools und -Pakete für mehrere Beispiele verwendet. Sie nutzten unser Perception Package, um Computer-Vision-Modelle zu trainieren, und das ML-Agents Toolkit, um ihre maschinellen Lernmodelle zu trainieren und eine sim2reale Demonstration eines Roboterarms durchzuführen. Wir haben Gerard interviewt, um herauszufinden, was ihn zu diesem Projekt inspiriert hat. Lesen Sie weiter, um mehr darüber zu erfahren, wie er dieses Projekt in Unity und in der realen Welt zum Leben erweckt hat.

OpenCV-Projekt

Woher haben Sie den Namen Kauda Team?

Das Kauda Team besteht aus Giovanni Lerda und mir (Gerard Espona). Der Name leitet sich von dem freien und quelloffenen 3D-druckbaren 5-Achsen-Roboterarm ab, den Giovanni unter dem Namen Kauda entwickelt hat. Das ist ein großartiger Desktop-Roboterarm, den jeder bauen kann und der es uns ermöglichte, aus der Ferne an diesem Projekt mitzuarbeiten.

Roboterarm
Wie haben Sie einen digitalen Zwilling von Kauda in Unity erhalten?

Wir haben Kauda Studio entwickelt, eine Unity-Anwendung, die den digitalen Zwilling Kauda betreibt. Es bietet eine voll funktionsfähige, genaue Simulation von Kauda mit inverser Kinematik (IK), USB/Bluetooth-Verbindung zum echten Kauda und kann mehrere OpenCV OAK-D Kameras unterstützen.

Was ist die OAK-D-Kamera und wie wurde sie in Unity eingesetzt?

Die OAK-D-Kamera kombiniert zwei Stereo-Tiefenkameras und eine 4K-Farbkamera mit integrierter Verarbeitung (angetrieben durch Intel MyriadX VPU), um eine Vielzahl von Merkmalen automatisch zu verarbeiten. Im Rahmen des Wettbewerbs haben wir ein Unity-Plug-in für OAK-Geräte entwickelt, aber wir wollten auch einen digitalen Zwilling in Unity haben. Der digitale Zwilling OAK-D Unity lieferte eine virtuelle 3D-Kamera mit einer genauen Simulation, die für die synthetische Datenerfassung verwendet werden konnte. Außerdem können virtuelle Bilder in die Pipeline des realen Geräts eingespeist werden. Wir konnten das Unity Perception Package nutzen, um mit der virtuellen OAK-D-Kamera synthetische Elemente für das Training zu sammeln.

Grauer Hintergrund mit 3D-Modellen von Geräten
Unity-Modell der OAK-D-Kamera
Welche Bedeutung hat ein digitaler Zwilling in Unity?

Der digitale Zwilling ermöglichte es uns, zusätzliche Funktionen auf Kauda zu aktivieren. Sie können auch die Augmented Reality (AR)-Funktionen von Unity nutzen, um mit einem virtuellen Roboter in der realen Welt zu interagieren. Eine Anwendung besteht darin, zu lernen, wie man Wartungsarbeiten an einem Roboter durchführt, ohne dass ein Roboter vor Ort sein muss. Dies ermöglicht auch die Programmierung von sequentiellen Aufgaben mit einem no-code Ansatz, der eine virtuelle und genaue Darstellung des Roboters hat.

Der digitale Zwilling ermöglichte uns das Training des Reinforcement Learning (RL). RL ist ein zeitaufwändiger Prozess, der für alles, was über extrem einfache Beispiele hinausgeht, eine Simulation erfordert. Mit Kauda in Unity haben wir das ML-Agents Toolkit verwendet, um RL-Training für die Steuerung durchzuführen.

Wir begannen auch damit, die Zusammenarbeit zwischen Mensch und Maschine und die Sicherheitsverfahren zu testen, indem wir den Roboter in Unity nachbauten und mit den Kameras maßen, wo sich der Mensch innerhalb des Roboterbereichs aufhielt. Sie können sich vorstellen, dass dies für einen großen Roboter gilt, der Menschen verletzen kann, wenn Fehler auftreten. Mit der Simulationsumgebung können wir diese Szenarien testen, ohne Menschen in Gefahr zu bringen.

Wie haben Sie das ML-Agents Toolkit in diesem Projekt eingesetzt?

Wir glauben, dass RL ein leistungsfähiges Framework für die Robotik ist, und Unity ML-Agents ist ein großartiges Toolkit, mit dem unser digitaler Zwilling lernen und komplexe Aufgaben ausführen kann. Aufgrund des begrenzten Zeitrahmens des Wettbewerbs bestand das Ziel darin, eine einfache RL-"Berührungs"-Aufgabe zu implementieren und das daraus resultierende Modell so umzuwandeln, dass die Inferenz auf dem OAK-D-Gerät läuft. Mithilfe von ML-Agents lernte der Roboter mit Hilfe der IK-Steuerung den optimalen Weg, um ein erkanntes 3D-Objekt dynamisch zu berühren.

Unity ML Agents Schulung über digitale Zwillinge

Um dies zu erreichen, haben wir zunächst einen 3D-Objektdetektor mit dem räumlich winzigen YOLO implementiert. Das RL-Modell (PPO) verwendet die resultierende Erkennung und die Position des IK-Kontrollpunkts als Eingangsbeobachtungen. Als Ausgabeaktionen haben wir die 3-Achsen-Bewegung des IK-Kontrollpunkts. Das Belohnungssystem basierte auf einer kleinen Strafe bei jedem Schritt und einer großen Belohnung (1,0), wenn der Roboter das Objekt berührte. Um das Training zu beschleunigen, haben wir den Vorteil genutzt, dass mehrere Agenten gleichzeitig lernen und ein virtuelles räumliches Tiny YOLO mit denselben Ergebnissen wie das reale räumliche Tiny YOLO entwickeln.

Sobald das Modell trainiert war, wandelten wir es mit dem OpenVino-Toolkit in das OpenVino IR- und Myriad Blob-Format um, um das Modell auf ein OAK-D-Gerät zu laden und die Inferenz durchzuführen. Die endgültige Pipeline ist ein räumlich winziges YOLO- und RL-Modell. Dank unseres Unity-Plugins konnten wir die Inferenz mit ML-Agents und OAK-D-Agenten in Unity nebeneinander vergleichen.

Wie haben Ihnen die synthetischen Daten bei diesem Projekt geholfen?

Die erste Stufe unserer Pipeline ist ein 3D-Objektdetektor, der ein sehr häufiger Ausgangspunkt für KI-basierte Computer Vision- und Roboteraufgaben ist. In unserem Fall haben wir ein vortrainiertes winziges YOLO v3-Modell verwendet, und dank des Unity Perception-Pakets konnten wir eine eigene Kategorie trainieren. Damit konnten wir innerhalb weniger Minuten einen großen synthetischen Datensatz von 3D-Modellen mit automatischer Bounding-Box-Beschriftung erzeugen. Normalerweise erfolgt die Erfassung und Kennzeichnung manuell und ist sehr zeitaufwändig. Die Möglichkeit, einen umfangreichen Datensatz mit zahlreichen Zufallsoptionen zu generieren, um verschiedene Drehungen, Beleuchtungsbedingungen, Texturvariationen und mehr zu erhalten, ist ein großer Schritt nach vorn.

Sind Sie auf irgendwelche Schwierigkeiten gestoßen?

Das Timing, das für die Synchronisierung von virtuellen und realen Gegenständen erforderlich ist, war manchmal ein wenig daneben. Wir sind der Meinung, dass dieses Problem in Zukunft durch die Verwendung von ROS gelöst werden könnte, und es ist schön, dass Unity nun offiziell ROS unterstützt.

Erfahre mehr

Gerard hat eine vollständige Wiedergabeliste mit Videos, die ihre Reise dokumentieren, mit einigen bemerkenswerten Videos, darunter ein Webinar mit OpenCV und das abschließende Video der Wettbewerbseinreichung. Er hat auch das OAK-D Unity Plug-in auf Github veröffentlicht, um anderen den Einstieg in ihr Projekt zu erleichtern.

Wir freuen uns darauf, dass unsere Werkzeuge Projekte wie dieses zum Leben erwecken können! Wenn Sie Ihre Projekte in Unity mit künstlicher Intelligenz ausstatten möchten, finden Sie bei uns viele Beispiele und Tutorials, die Ihnen den Einstieg erleichtern! Mit dem Unity Perception Package können Sie auf einfache Weise synthetische Daten in Unity sammeln. Der Unity Robotics Hub bietet Tutorials und Pakete für den Einstieg in die ROS-Integration und Robotersimulation. Und das ML-Agents Toolkit macht das Reinforcement Learning mit vielen Umgebungen für den Einstieg einfach.