-
Verschiedene Ausführungsbeispiele betreffen allgemein eine Vorrichtung und ein Verfahren zum Trainieren eines neuronalen Netzwerks zum Steuern eines Roboters.
-
Um eine flexible Herstellung oder Bearbeitung von Objekten durch einen Roboter zu ermöglichen, ist es wünschenswert, dass der Roboter in der Lage ist, ein Objekt ungeachtet der Pose, mit der das Objekt in den Arbeitsraum des Roboters platziert ist, zu handhaben. Daher sollte eine Steuereinrichtung fähig sein, Steuerungsparameter für den Roboter für die jeweilige Pose (d.h. Position und Orientierung) des Objekts korrekt zu erzeugen, sodass der Roboter zum Beispiel das Objekt an der korrekten Stelle greifen kann, um es z. B. an einem anderen Objekt zu befestigen, oder das Objekt an der korrekten Stelle auf sonstige Art behandeln (schweißen, lackieren etc.) kann. Dies bedeutet, dass die Steuereinrichtung aus Sensorinformation, die die die Pose des Objekts wiederspiegeln, zum Beispiel aus einem oder mehreren Kamerabildern, die durch eine am Roboter oder in der Nähe des Roboters befestigte Kamera aufgenommen werden, geeignete Steuerungsparameter erzeugen können soll.
-
Gemäß verschiedenen Ausführungsformen wird ein Verfahren zum Trainieren eines neuronalen Netzwerks zum Steuern eines Roboters bereitgestellt, aufweisend Ermitteln einer Kamerapose in einer Roboterzelle und eines Unsicherheitsbereichs um die ermittelte Kamerapose, Ermitteln eines Objektbereichs in der Roboterzelle, der Positionen für ein von dem Roboter zu behandelndes Objekt enthält, Erzeugen von Trainings-Kamerabildern, wobei für jedes Trainings-Kamerabild eine Trainings-Kamerabild-Kamerapose zufällig in dem Unsicherheitsbereich um die ermittelte Kamerapose festgelegt wird, eine Trainings-Kamerabild-Objektpose zufällig in dem Objektbereich festgelegt wird und das Trainings-Kamerabild erzeugt wird, sodass es das Objekt mit der Trainings-Kamerabild-Objektpose aus Sicht einer Kamera mit der Trainings-Kamerabild-Kamerapose zeigt, Erzeugen von Trainingsdaten aus den Trainings-Kamerabildern, wobei jedem Trainings-Kamerabild ein oder mehrere Trainings-Roboter-Steuerungsparameter zum Behandeln des Objekts in der Trainings-Kamerabild-Objektpose des Trainings-Kamerabilds zugeordnet wird und Trainieren des neuronalen Netzwerks unter Verwendung der Trainingsdaten, wobei das neuronale Netzwerk dazu trainiert wird, aus einem Kamerabild, dass das Objekt zeigt, eine Angabe von ein oder mehreren Roboter-Steuerungsparametern zum Behandeln des Objekts auszugeben.
-
Die oben beschriebene Herangehensweise verwendet Eigenschaften der Roboter-Anordnung, wie sie in der Praxis verwendet wird (insbesondere die Kameraposition), um einen Trainingsdatensatz für eine Robotersteuerung (z.B. zum Greifen eines Objekts) zu erzeugen. Dabei wird erreicht, dass die simulierten Kamerabilder denen, wie sie in der Praxis (für entsprechende Objektposen) auftreten oder auftreten würden, sehr nahekommen. Die Verwendung der Kamerabilder für einen Trainingsdatensatz für ein neuronales Netzwerk ermöglicht so ein Training des neuronalen Netzwerks, sodass es in der Lage ist, präzise Vorhersagen für Steuerungsparameter zu erzeugen, z.B. eine Greifposition für ein Szenario, in der ein Roboter ein Objekt aus einem Objektbereich (z.B. einer Kiste) aufnehmen soll.
-
Im Folgenden werden verschiedene Ausführungsbeispiele angegeben.
-
Ausführungsbeispiel 1 ist ein Verfahren zum Trainieren eines neuronalen Netzwerks zum Steuern eines Roboters wie oben beschrieben.
-
Ausführungsbeispiel 2 ist das Verfahren nach Ausführungsbeispiel 1, wobei der Unsicherheitsbereich der ermittelten Kamerapose einen Unsicherheitsbereich für die ermittelte Kameraposition und/oder einen Unsicherheitsbereich für die ermittelte Kameraorientierung aufweist.
-
Es können somit Unsicherheiten sowohl bei der Positionierung als auch der Orientierung bei der Kamerakalibrierung berücksichtigt werden. Da beide Unsicherheiten typischerweise in der Praxis auftreten, ermöglicht dies die Erzeugung von Trainingsdaten für ein Training des neuronalen Netzwerks, das gegenüber beiden Arten von Unsicherheiten robust ist.
-
Ausführungsbeispiel 3 ist das Verfahren nach Ausführungsbeispiel 2, wobei das zufällige Auswählen der Trainings-Kamerabild-Kamerapose gemäß einer Normalverteilung entsprechend dem Unsicherheitsbereich für die ermittelte Kameraposition und/oder gemäß einer Normalverteilung entsprechend dem Unsicherheitsbereich für die ermittelte Kameraorientierung erfolgt.
-
Die Normalverteilung liefert eine physikalisch realistische Variation um die ermittelte Kamerapose, wie sie sich bei Fehlern der Kalibrierung typischerweise ergibt.
-
Ausführungsbeispiel 4 ist das Verfahren nach einem der Ausführungsbeispiele 1 bis 3, aufweisend Ermitteln eines Unsicherheitsbereichs um die ermittelte Objektbereichs-Pose und wobei das Festlegen der Trainings-Kamerabild-Objektpose das zufällige Auswählen einer Kamerabild-Objektbereichs-Pose in dem Objektbereichs-Unsicherheitsbereich und das zufällige Festlegen der Trainings-Kamerabild-Objektpose in dem Objektbereich an der Kamerabild-ausgewählten Objektbereichs-Pose aufweist.
-
Dadurch werden auch Unsicherheiten bei der Kalibrierung des Objektbereichs berücksichtigt.
-
Ausführungsbeispiel 5 ist das Verfahren nach Ausführungsbeispiel 4, wobei das zufällige Auswählen der Trainings-Kamerabild-Objektbereichs-Pose gemäß einer Normalverteilung entsprechend dem Unsicherheitsbereich für die ermittelte Objektbereichs-Pose erfolgt.
-
Wie im Fall der Kamera liefert die Normalverteilung eine physikalisch realistische Variation um die ermittelten Objektbereichs-Pose.
-
Ausführungsbeispiel 6 ist das Verfahren nach einem der Ausführungsbeispiele 1 bis 5, wobei das Festlegen der Trainings-Kamerabild-Objektpose durch Festlegen einer Trainings-Kamerabild-Objektpose gemäß einer Gleichverteilung von Objektposen in dem Objektbereich erfolgt.
-
Dies ermöglicht ein gleichmäßiges Training des neuronalen Netzwerks für alle Objektposen, die im Betrieb auftreten.
-
Ausführungsbeispiel 7 ist das Verfahren nach einem der Ausführungsbeispiele 1 bis 6, wobei das Festlegen der Trainings-Kamerabild-Objektpose durch Festlegen einer Trainings-Kamerabild-Objektpose gemäß einer Transformation in den Objektbereich erfolgt.
-
Innerhalb des Objektbereichs kann die Trainings-Kamerabild-Objektpose (Position und Orientierung) zufällig, z.B. gleichverteilt, gewählt werden. Dies ermöglicht ein gleichmäßiges Training des neuronalen Netzwerks für alle Objektorientierungen, die im Betrieb auftreten können.
-
Ausführungsbeispiel 8 ist das Verfahren zum Steuern eines Roboters aufweisend Trainieren eines neuronalen Netzwerks gemäß einem der Ausführungsbeispiele 1 bis 7, Empfangen von einem Kamerabild, das ein von dem Roboter zu behandelndes Objekt zeigt, Zuführen des Kamerabilds zu dem neuronalen Netzwerk und Steuern des Roboters gemäß den von der Ausgabe des neuronalen Netzwerk angegebenen Roboter-Steuerungsparametern.
-
Ausführungsbeispiel 9 ist eine Vorrichtung, die eingerichtet ist, das Verfahren nach einem der Ausführungsbeispiele 1 bis 8 auszuführen.
-
Ausführungsbeispiel 10 ist ein Computerprogramm, aufweisend Programminstruktionen, die, wenn sie von ein oder mehreren Prozessoren ausgeführt werden, die ein oder mehreren Prozessoren dazu bringen, ein Verfahren gemäß einem der Ausführungsbeispiele 1 bis 8 durchzuführen.
-
Ausführungsbeispiel 11 ist ein computerlesbares Speichermedium, auf dem Programminstruktionen gespeichert sind, die, wenn sie von ein oder mehreren Prozessoren ausgeführt werden, die ein oder mehreren Prozessoren dazu bringen, ein Verfahren gemäß einem der Ausführungsbeispiele 1 bis 8 durchzuführen.
-
Ausführungsbeispiele der Erfindung sind in den Figuren dargestellt und werden im Folgenden näher erläutert. In den Zeichnungen beziehen sich gleiche Bezugszeichen überall in den mehreren Ansichten allgemein auf dieselben Teile. Die Zeichnungen sind nicht notwendig maßstabsgerecht, wobei der Schwerpunkt stattdessen allgemein auf die Darstellung der Prinzipien der Erfindung liegt.
- 1 zeigt einen Roboter.
- 2 zeigt Komponenten einer Roboterzelle in Hinblick auf eine Simulationsbasierte Erzeugung von Trainings-Kamerabildern.
- 3 zeigt ein Ablaufdiagramm für ein Verfahren zum Erzeugen von Trainings-Kamerabildern.
- 4 zeigt ein Ablaufdiagramm für ein Verfahren zum Trainieren eines neuronalen Netzwerks zum Steuern eines Roboters.
-
Die verschiedenen Ausführungsformen, insbesondere die im Folgenden beschriebenen Ausführungsbeispiele, können mittels ein oder mehrerer Schaltungen implementiert werden. In einer Ausführungsform kann eine „Schaltung“ als jede Art von Logikimplementierender Entität verstanden werden, welche Hardware, Software, Firmware oder eine Kombination davon sein kann. Daher kann in einer Ausführungsform eine „Schaltung“ eine hartverdrahtete Logikschaltung oder eine programmierbare Logikschaltung, wie beispielsweise ein programmierbarer Prozessor, zum Beispiel ein Mikroprozessor sein. Eine „Schaltung“ kann auch Software sein, die von einem Prozessor implementiert bzw. ausgeführt wird, zum Beispiel jede Art von Computerprogramm. Jede andere Art der Implementierung der jeweiligen Funktionen, die im Folgenden ausführlicher beschrieben werden, kann in Übereinstimmung mit einer alternativen Ausführungsform als eine „Schaltung“ verstanden werden.
-
Gemäß verschiedenen Ausführungsformen wird ein Industrierobotersystem verwendet bestehend aus Industrieroboter mit Greifendeffektor, Kamera und Kiste mit Greifobjekten. Ein Beispiel wird im Folgenden mit Bezug auf 1 und 2 beschrieben. Dabei ist die Art und Ausführung der Roboterkinematik nicht festgelegt. (Es könnte z.B. eine serielle oder parallele Kinematik mit verschiedener Art und Anzahl von Gelenken sein)
-
1 zeigt einen Roboter 100.
-
Der Roboter 100 beinhaltet einen Roboterarm 101, zum Beispiel einen Industrieroboterarm zum Handhaben oder Montieren eines Arbeitsstücks (oder eines oder mehrerer anderer Objekte). Der Roboterarm 101 beinhaltet Armelemente 102, 103, 104 und eine Basis (oder Halterung) 105, mittels der die Armelemente 102, 103, 104 gestützt werden. Der Ausdruck „Armelement“ bezieht sich auf die bewegbaren Bauteile des Roboterarms 101, deren Betätigung eine physische Interaktion mit der Umgebung ermöglicht, um z. B. eine Aufgabe auszuführen. Zur Steuerung beinhaltet der Roboter 100 eine (Roboter-) Steuereinrichtung 106, die zum Implementieren der Interaktion mit der Umgebung gemäß einem Steuerprogramm ausgelegt ist. Die letzte Komponente 104 (das in der kinematischen Kette am weitesten von der Basis 105 entfernt ist) der Armelemente 102, 103, 104 wird auch als der Endeffektor 104 bezeichnet und kann ein oder mehrere Werkzeuge beinhalten, wie etwa einen Schweißbrenner, ein Greifinstrument, ein Lackiergerät oder dergleichen.
-
Die anderen Armelemente 102, 103 (die sich näher an der Stütze 105 befinden) können eine Positionierungsvorrichtung bilden, sodass, zusammen mit dem Endeffektor 104, der Roboterarm 101 mit dem Endeffektor 104 an seinem Ende bereitgestellt ist. Der Roboterarm 101 ist ein mechanischer Arm, der ähnliche Funktionen wie ein menschlicher Arm bereitstellen kann (möglicherweise mit einem Werkzeug an seinem Ende).
-
Der Roboterarm 101 kann Gelenkelemente 107, 108, 109 beinhalten, die die Armelemente 102, 103, 104 miteinander und mit der Stütze 105 verbinden. Ein Gelenkelement 107, 108, 109 kann ein oder mehrere Gelenke aufweisen, die jeweils eine drehbare Bewegung (d. h. Drehbewegung) und/oder translatorische Bewegung (d. h. Verlagerung) für assoziierte Armelemente relativ zueinander bereitstellen können. Die Bewegung der Armelemente 102, 103, 104 kann mittels Aktoren initiiert werden, die durch die Steuereinrichtung 106 gesteuert werden.
-
Der Ausdruck „Aktor“ kann als eine Komponente verstanden werden, die als Reaktion auf ihren Antrieb zum Bewirken eines Mechanismus oder Prozesses ausgebildet ist. Der Aktor kann durch die Steuereinrichtung 106 erstellte Anweisungen (die sogenannte Aktivierung) in mechanische Bewegungen implementieren. Der Aktor, z. B. ein elektromechanischer Wandler, kann dazu ausgelegt sein, als Reaktion auf seinen Antrieb elektrische Energie in mechanische Energie umzuwandeln.
-
Der Ausdruck „Steuereinrichtung“ kann als ein beliebiger Typ von logikimplementierender Entität verstanden werden, die zum Beispiel eine Schaltung und/oder einen Prozessor beinhalten kann, die/der in der Lage ist, in einem Speicherungsmedium gespeicherte Software, Firmware oder eine Kombination davon auszuführen, und die/der Anweisungen, z. B. zu einem Aktor im vorliegenden Beispiel, ausstellen kann. Die Steuereinrichtung kann zum Beispiel durch Programmcode (z. B. Software) konfiguriert werden, um den Betrieb eines Systems, eines Roboters im vorliegenden Beispiel, zu steuern.
-
Im vorliegenden Beispiel beinhaltet die Steuereinrichtung 106 einen oder mehrere Prozessoren 110 und einen Speicher 111, der Code und Daten speichert, basierend auf denen der Prozessor 110 den Roboterarm 101 steuert. Gemäß verschiedenen Ausführungsformen steuert die Steuereinrichtung 106 den Roboterarm 101 auf Basis eines maschinellen Lernmodells 112, das im Speicher 111 gespeichert ist.
-
Gemäß verschiedenen Ausführungsformen ist das maschinelle Lernmodell 112 dazu ausgelegt und trainiert, für ein oder mehrere Kamerabilder, die ihm zugeführt werden, Steuerparameter für den Roboterarm 101 anzugeben (bzw. vorherzusagen).
-
Der Roboter 100 und/oder die Roboterzelle, in der der Roboter 100 angeordnet ist, kann zum Beispiel mit einer oder mehreren Kameras 114 ausgestattet sein, die eingerichtet sind, Bilder des Arbeitsraums des Roboters 100 und eines in dem Arbeitsraum angeordnete Objekts 113 (oder auch mehrerer Objekte) aufzunehmen.
-
Das maschinelle Lernmodell ist beispielsweise ein neuronales Konvolutionsnetzwerk, dem die ein oder mehreren Bildern (z.B. Tiefenbilder zugeführt werden). Vor dem Einsatz in der Praxis wird das Konvolutionsnetzwerk mit Trainingsdaten trainiert, damit die Steuereinrichtung jeweils für verschiedene Posen (Positionen und Orientierungen) des Objekts 113 geeignete Steuerparameter angibt.
-
Die Trainingsdaten weisen beispielsweise eine Vielzahl von Trainingsdatenelementen auf, wobei jedes Trainingsdatenelement ein Kamerabild (oder auch mehrere Kamerabilder) und zugehörige (d.h. Ground Truth) Steuerparameter enthält. Die Steuerparameter weisen beispielsweise eine Position, die der Endeffektor 104 zum Behandeln des Objekts 113 einnehmen soll. Das neuronale Netzwerk kann dann mittels überwachtem Lernen trainiert werden.
-
Gemäß verschiedenen Ausführungsformen werden verschiedene Trainingsdatenbilder für verschiedene Objektposen und zugehörige Steuerparameter erzeugt. Wird beispielsweise für ein Trainingsdatenbild eine bestimmte zufällige Objektpose angenommen, können daraus die korrekten Steuerparameter unmittelbar berechnet werden (z.B., weil aus der Objektpose bekannt ist, an welche Stelle der Endeffektor 104 zu bewegen ist bzw. an welcher Stelle das Objekt zu greifen ist). Damit kann die Hauptaufgabe für die Erzeugung eines Trainingsdatenelements darin gesehen werden, für eine bestimmte (zufällige) Objektpose ein passendes Kamerabild (für eine jeweilige Kamera im Fall mehrerer Kameras) zu erzeugen, sodass, wenn in der Praxis das Objekt die Objektpose hätte, die (jeweilige) Kamera 114 dieses Bild aufnehmen würde.
-
Gemäß verschiedenen Ausführungsformen wird dafür eine Herangehensweise zum Berechnen der Transformation zwischen Kamerapose und Objektpose zur Erzeugung eines Kamerabilds bereitgestellt (z.B. für einen Trainingsdatensatz mit virtuellen Tiefenbildern zur Eingabe für ein neuronales Konvolutionsnetzwerk für das Steuern des Greifens des Objekts durch den Roboterarm 101).
-
Gemäß verschiedenen Ausführungsformen werden dabei Kalibrierungsparameter (die typischerweise für eine Roboterzelle in der Praxis verfügbar sind) verwendet und es werden Unsicherheiten (z.B. der Kamerapose) physikalisch plausibel berücksichtigt. Damit wird ein Verfahren zur Simulation-basierten Erzeugung eines Trainingsdatensatzes bereitgestellt, das Hardware-bewusst ist, d.h. die Eigenschaften der vorhandenen Hardware (wie der Kamera) berücksichtigt.
-
Das Objekt kann eine beliebige Geometrie haben. Die Kamerabilder sind beispielsweise Tiefenbilder. Die Kamera ist beispielsweise eine Lochkamera und die Kamerabilder sind entsprechende Bilder.
-
Gemäß verschiedenen Ausführungsformen wird außerdem eine Robustheitsmetrik bei dem Trainingsdatenerzeugungsprozess berechnet, die die Wahrscheinlichkeit für ein erfolgreiches Zugreifen (Aufnehmen) für den speziellen Endeffektor (d.h. Greifertyp) des Roboters repräsentiert. Die Position und Orientierung des Greifers für erfolgreiches Zugreifen ist in dem Kamerabild (bzw. mehreren Kamerabildern) durch die jeweilige Verschiebung, Rotation und Größe des Bildinhalts (d.h. speziell des aufzunehmenden Objekts) im Kamerabild codiert. Beim Training wird das neuronale Netzwerk (z.B. tiefe Konvolutionsnetzwerk) beispielsweise trainiert, die Werte der Robustheitsmetrik für verschiedene Greifpositionen für die Kamerabilder vorherzusagen. Diese Werte der Robustheitsmetrik können als Angabe von Roboter-Steuerungsparametern angesehen werden, beispielsweise als derjenigen Greifposition, für die das neuronalen Netzwerk den höchsten Wert der Robustheitsmetrik ausgibt.
-
Nach dem Training, also im Betrieb (praktische Anwendung), wird das trainierte neuronale Netzwerk zur Inferenz verwendet, also für verschiedene Zugriffsmöglichkeiten (z.B. Endeffektorposen) die Robustheitswerte aus einem real aufgenommenen Kamerabild vorherzusagen. Der Steuereinrichtung kann dann beispielsweise die Zugriffsmöglichkeit mit dem maximalen Robustheitswert auswählen und den Roboter entsprechend steuern.
-
Bei der Erzeugung von (simulierten) Kamerabildern für eine Kamera für verschiedene Objektposen werden die Kalibrierungsergebnisse für die Kamera in der realen Roboter-Anordnung (d.h. Roboterzelle) verwendet. Eine Kamerakalibrierung wird typischerweise beim Aufbau eines Robotersystems in einer Roboterzelle oder vor einem Verarbeitungsprozess, der von einem Roboter durchgeführt werden soll, durchgeführt, um die Genauigkeit der Kenntnis der Kamerapose zu erhöhen und damit auch der Roboter-Aktionen (Roboter-Steuerung), die aus den durch die Kamera erzeugten Bilder ermittelt wird.
-
Gemäß verschiedenen Ausführungsformen werden extrinsische Kamerakalibrierungswerte bei der Erzeugung von Trainings-Kamerabildern verwendet, nämlich dreidimensionale (z.B. kartesische) Verschiebungs- und Rotationswerte der Kamera in Bezug auf das WeltKoordinatensystem der Roboterzelle (d.h. ein globales Referenz-Koordinatensystem der Roboterzelle). Diese Parameterwerte können beispielsweise durch typische Optimierungsbasierte Kalibrierungsverfahren erhalten werden. Darüber hinaus werden gemäß verschiedenen Ausführungsformen Unsicherheitsparameter der Kamerakalibrierung, die während des Kalibrierungsprozesses ermittelt werden können, verwendet. Die Unsicherheitsparameter repräsentieren die Genauigkeit der Verschiebungswerte und Rotationswerte, die bei der Kalibrierung ermittelt wurden. Zudem können intrinsische Kameraparameter (Kameramatrix und Rauschwerte) der in der Roboterzelle verwendeten realen Kamera genutzt werden, um in der Simulation die Erzeugung der virtuellen Kamerabilder den Bildern der realen Kamera möglichst anzunähern. Außerdem wird Information über die Pose und die Größe des Objektbereichs, in dem sich das Objekt 113 befinden kann (z.B. eine Kiste), ermittelt und als Eingabe für die Erzeugung der Trainings-Kamerabilder verwendet.
-
2 zeigt Komponenten einer Roboterzelle 200 in Hinblick auf eine Simulationsbasierte Erzeugung von Trainings-Kamerabildern.
-
Eine Kamera 201 hat ein Koordinatensystem KK, ein Objekt 202 hat ein Koordinatensystem KO, ein Objektbereich (z.B. eine Kiste oder Schachtel) 203 hat ein Koordinatensystem KB, der Roboter hat ein Koordinatensystem KR in seiner Basis, der durch den Roboter bewegte Endeffektor (Greifer) hat ein Koordinatensystem KG und die Roboterzelle 200 hat ein globales Koordinatensystem KW, das ein fixes Bezugssystem in der Roboterzelle 200 repräsentiert. Die Koordinatensysteme der Komponenten 201, 202, 203 sind jeweils fest für die jeweilige Komponente und definieren so die Pose der jeweiligen Komponente innerhalb der Roboterzelle. Für die Erzeugung von Trainings-Kamerabildern wird die Kamera als virtuelle Lochkamera modelliert mit einer perspektivischen Projektion, die die Oberfläche eines Objektoberflächenmodells misst.
-
Die Kamera 201 weist einen Sichtbereich 204 auf.
-
3 zeigt ein Ablaufdiagramm 300 für ein Verfahren zum Erzeugen von Trainings-Kamerabildern.
-
Das Verfahren kann von der Steuereinrichtung 106 durchgeführt werden oder von einer externen Datenverarbeitungsvorrichtung, die die Trainingsdaten erzeugt. Die Steuereinrichtung 106 oder wiederum eine externe Datenverarbeitungsvorrichtung kann das neuronale Netzwerk 112 dann unter Verwendung der Trainingsdaten trainieren.
-
Die Eingangsdaten für die Erzeugung eines Kamerabilds sind die externen Kamera-Kalibrierungsparameterwerte pK = (xK, yK, zK, AK, BK, CK), die die Pose (Position und Orientierung) des Kamera-Koordinatensystems KK im globalen Koordinatensystem KW angeben, sowie zugehörige Unsicherheiten der Verschiebungswerte und der Rotationswerte, z.B. uK = (tK, rK), wobei zur Einfachheit hier die Unsicherheit in der Verschiebung tK und die Unsicherheit in der Rotation rK für alle Koordinaten bzw. Winkel in diesem Beispiel als gleich angenommen wird. Diese Unsicherheiten stehen typischerweise als Ergebnis des Kamera-Kalibrierungsprozesses zur Verfügung. Die Winkel AK, BK, CK sind beispielsweise die Eulerwinkel, aber es können auch andere Repräsentationsformen für die räumliche Orientierung verwendet werden.
-
Zusätzliche Eingangsdaten sind die intrinsischen Kameraparameter in Form einer Kameramatrix K, die typischerweise nach einer intrinsischen Kamerakalibrierung aus der Kamera ausgelesen werden kann sowie der Rauschwert in Kamerablickrichtung σK, der typischerweise durch den Kamerahersteller spezifiziert wird.
-
Weitere Eingabedaten sind die erwartete Objektbereichs-Position pB = (xB, yB, zB, AB, BB, CB), die die Lage des Zentrums des in diesem Beispiel quaderförmigen Objektbereichs im globalen Koordinatensystem angibt, und die Größe des Objektbereichs bB = (hB, wB, dB). Diese Parameterwerte sind typischerweise durch die Konfiguration der Roboterzelle gegeben.
-
In 301 wird eine Anfangs-Kamera-Transformation
basierend auf den Kamera-Kalibrierungsparameterwerten p
K berechnet, d.h. eine Verschiebung und eine Rotation, die eine Standard-Kamerapose auf die durch die durch die Kalibrierungsparameterwerte p
K gegebene Kamerapose abbildet.
-
In 302 wird eine zusätzliche Kamerarotation Rot
K berechnet, die die Unsicherheit in der Rotation bei der Kamerakalibrierung berechnet. Die Rotation Rot
K wird beispielsweise basierend auf der Konvention von Rotationsachse und Drehwinkel berechnet, der zu Grunde liegt, dass jede Drehung im dreidimensionalen Raum durch eine geeignete Rotationsachse und einen Drehwinkel um die Rotationsachse dargestellt werden kann. Zur Berechnung der Rotation Rot
K wird die Rotationsachse aus einer Gleichverteilung der Einheitsvektoren im dreidimensionalen Raum gesampelt. Der Drehwinkel wird aus einer Normalverteilung mit Mittelwert Null und Standardabweichung r
K (d.h. der Unsicherheit in der Orientierung der Kamera) gesampelt. Dann wird eine Transformation
berechnet.
-
In 303 wird eine zusätzliche Kameraverschiebung Trans
K berechnet, die die Unsicherheit in der Verschiebung der Kamerakalibrierung berücksichtigt. Dafür wird eine Verschiebungsrichtung aus einer Gleichverteilung der Einheitsvektoren im dreidimensionalen Raum gesampelt. Die Länge der Verschiebung wird aus einer Normalverteilung mit Mittelwert Null und Standardabweichung t
K (d.h. der Unsicherheit in der Position der Kamera) gesampelt. Dann wird die finale Kamera-Transformation
berechnet.
-
In 304 wird eine Objektbereich-Transformation
basierend auf der Objektbereichs-Pose p
B berechnet, d.h. eine Verschiebung und eine Rotation, die eine Standard-Objektbereichs-Pose auf die durch die Parameterwerte p
B gegebene Objektbereichs-Pose abbildet. Hierbei können wie bei der Kamerapose zusätzlich Unsicherheiten der Objektbereichs-Pose berücksichtigt werden.
-
In 305 wird eine zusätzliche Objektrotation Rot
O berechnet. Dafür wird eine Rotation aus einer Gleichverteilung von Rotationen gesampelt, um eine zufällige Rotation des Objekts 202 im Objektbereich 203 zu berücksichtigen. Dies ist beispielsweise relevant in dem Fall, dass Objekte in Haufen angeordnet sind, in denen jedes Objekt eine zufällige Rotation im dreidimensionalen Raum haben kann. Falls erwartet werden kann, dass das Objekt stets auf einer ebenen Oberfläche (und nicht in Haufen) liegt kann auch eine feste Orientierung verwendet werden. Zudem wird eine Objektverschiebung Trans
O berechnet durch Samplen aus einer Gleichverteilung über den Objektbereich U([-h
B/2, +h
B/2] × [-w
B/2, +w
B/2] × [d
B/2, +d
B/2]), um zu berücksichtigen, dass das Objekt 202 eine zufällige Position innerhalb des Objektbereichs 203 haben kann. In dem Fall von Objekthaufen können die Objektrotation und Objektverschiebung der einzelnen Objekte in dem Haufen bezogen auf den Objektbereich alternativ auch durch eine Physiksimulation bestimmt werden. Durch Objektrotation und Objektverschiebung ergibt sich damit die Transformation
-
In 306 wird das Objekt 202 mit der Pose des Objektbereichs 203 transformiert. Dabei wird die Objekttransformation bezogen auf das Weltkoordinatensystem mittels
berechnet.
-
In 307 wird die Kameratransformation in Bezug auf das Objektkoordinatensystem berechnet als
Diese Transformation wird dann verwendet, um die virtuelle Kamera im Simulationsraum zu positionieren. Das Objekt (d.h. das Oberflächenmodell des Objekts) wird im Ursprung des Simulationsraums positioniert. Das Kamerabild wird durch eine virtuelle Messung erzeugt, indem die so erzeugte Simulationsszene (insbesondere mit der positionierten virtuellen Kamera) gerendert wird (z.B. zum Erzeugen eines Tiefenbilds). Dazu wird die Kameramatrix K verwendet und die Messdaten mit einem normalverteilten Rauschen mit dem Rauschparameter σ
K beaufschlagt.
-
Die Erzeugung eines Kamerabilds auf diese Weise wird mehrmals durchgeführt, um eine Vielzahl von Kamerabildern für einen Trainingsdatensatz 308 zu erzeugen.
-
Da die Kamerapose und die Objektpose, die verwendet werden, physikalisch Parameterwerte aus der realen Roboterzelle mit zugehörigen Unsicherheiten repräsentieren, führt dies zu einem Trainingsdatensatz, der der realen physikalischen Konfiguration der Roboterzelle entspricht.
-
Zusammenfassend wird gemäß verschiedenen Ausführungsformen ein Verfahren bereitgestellt, wie es im Folgenden mit Bezug auf 4 beschrieben ist.
-
4 zeigt ein Ablaufdiagramm 400 für ein Verfahren zum Trainieren eines neuronalen Netzwerks zum Steuern eines Roboters.
-
In 401 werden eine Kamerapose in einer Roboterzelle und eines Unsicherheitsbereichs um die ermittelte Kamerapose ermittelt.
-
In 402 wird ein Objektbereich in der Roboterzelle ermittelt, der Positionen für ein von dem Roboter zu behandelndes Objekt enthält.
-
In 403 werden Trainings-Kamerabilder erzeugt.
-
Dabei wird für jedes Trainings-Kamerabild in 404 eine Trainings-Kamerabild-Kamerapose zufällig in dem Unsicherheitsbereich um die ermittelte Kamerapose festgelegt, in 405 eine Trainings-Kamerabild-Objektpose zufällig in dem Objektbereich festgelegt und in 406 das Trainings-Kamerabild erzeugt, sodass es das Objekt mit der Trainings-Kamerabild-Objektpose aus Sicht einer Kamera mit der Trainings-Kamerabild-Kamerapose zeigt.
-
In 407 werden Trainingsdaten aus den Trainings-Kamerabildern erzeugt, wobei jedem Trainings-Kamerabild ein oder mehrere Trainings-Roboter-Steuerungsparameter zum Behandeln des Objekts in der Trainings-Kamerabild-Objektpose des Trainings-Kamerabilds zugeordnet werden.
-
In 408 wird das neuronale Netzwerk unter Verwendung der Trainingsdaten trainiert, wobei das neuronale Netzwerk dazu trainiert wird, aus einem Kamerabild, dass das Objekt zeigt, eine Angabe von ein oder mehreren Roboter-Steuerungsparametern zum Behandeln des Objekts auszugeben.
-
Das Verfahren erzeugt synthetische Sensordaten. Diese können Sensordaten entsprechend verschiedener optischer Sensoren sein wie Stereo-Kameras, Time-of-Flight-Kameras und Laserscanner.
-
Ausführungsformen können dazu verwendet werden, ein maschinelles Lernsystem zu trainieren und einen Roboter autonom zu steuern, um verschiedene Manipulationsaufgaben unter verschiedenen Szenarien zu erreichen. Insbesondere sind Ausführungsformen für die Steuerung und Überwachung der Ausführung von Manipulationsaufgaben, z.B. in Fließbändern, anwendbar. Sie können z.B. nahtlos in eine traditionelle GUI für einen Steuerungsprozess integriert werden.
-
Unter „Roboter“ kann jegliches physisches System (mit einem mechanischen Teil, dessen Bewegung gesteuert wird), wie eine computergesteuerte Maschine, ein Fahrzeug, ein Haushaltsgerät, ein Elektrowerkzeug, eine Fertigungsmaschine, ein persönlicher Assistent oder ein Zugangskontrollsystem verstanden werden.
-
Das neuronale Netzwerk kann ein Konvolutionsnetzwerk zur Regression oder Klassifikation von Daten sein.
-
Verschiedene Ausführungsformen können Sensorsignale von verschiedenen optischen Sensoren empfangen und verwenden, um z.B. Sensordaten über Demonstrationen oder Systemzustände (Roboter und Objekt) sowie Konfigurationen und Szenarien zu erhalten. Die Sensordaten können verarbeitet werden. Dies kann eine Klassifizierung der Sensordaten oder die Durchführung einer semantischen Segmentierung der Sensordaten beinhalten, z.B. um die Anwesenheit von Objekten (in der Umgebung, in der die Sensordaten gewonnen wurden) zu erkennen. Ausführungsformen können dazu verwendet werden, ein maschinelles Lernsystem zu trainieren und einen Roboter autonom zu steuern, um verschiedene Manipulationsaufgaben unter verschiedenen Szenarien zu erreichen. Insbesondere sind Ausführungsformen für die Steuerung und Überwachung der Ausführung von Manipulationsaufgaben, z.B. in Fließbändern, anwendbar. Sie können z.B. nahtlos in eine traditionelle GUI für einen Steuerungsprozess integriert werden.
-
Das Verfahren ist gemäß einer Ausführungsform Computer-implementiert.
-
Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.