-
BEREICH DER OFFENLEGUNG
-
Diese Offenlegung bezieht sich im Allgemeinen auf autonome Roboter und im Besonderen auf Methoden und Apparate für komplexe Montage mittels autonomer Roboter, die Verstärkungs-Lernaktionsprimitive verwenden.
-
HINTERGRUND
-
Roboter werden routinemäßig für die Konstruktion von Baugruppen von Objekten in einer Vielzahl von industriellen Anwendungen eingesetzt. Solche Anwendungen umfassen die Herstellung und Montage von Automobilkomponenten, die Herstellung und Montage von Unterhaltungselektronik usw. Technologien zur Handhabung von Robotern und/oder zur Montage von Objekten sind vielversprechend in neu entstehenden, auf künstlicher Intelligenz (KI) basierenden Anwendungen, wie z.B. intelligente Einzelhandels- und Lagerlogistik, intelligente Fertigungsmontagelinien usw. In einem intelligenten Einzelhandelsgeschäft können z.B. autonome Roboter eingesetzt werden, um Produkte in Regalen aufzufüllen, nachzufüllen und/oder wieder aufzufüllen und/oder Produkte automatisch in bestimmten Formen oder Mustern für die Ausstellung anzuordnen.
-
Figurenliste
-
- BILD 1 veranschaulicht eine Beispielumgebung, in der ein Beispielroboter gemäß den Lehren dieser Offenbarung implementiert werden kann, um eine komplexe Baugruppe unter Verwendung von Verstärkungslern-Aktions-Primitiven zu konstruieren.
- BILD 2 veranschaulicht eine komplexe Beispielbaugruppe, die vom Beispielroboter aus BILD 1 konstruiert wurde.
- BILD 3 ist ein Blockdiagramm des Beispielroboters aus BILD 1 und 2, der in Übereinstimmung mit den Lehren dieser Offenbarung konstruiert wurde.
- 4 ist ein Blockdiagramm einer primitiven Handlungsgrundsatzbibliothek, die vom Entwickler der Beispielsgrundsatzbibliothek von 3 entwickelt wurde.
- BILD 5 veranschaulicht den Beispielroboter aus BILD 1-3, der ein Beispielobjekt mit einer primitiven Aktionsplattform zur Aufnahme und Platzierung von Objekten ausführt.
- BILD 6 veranschaulicht den Beispielroboter aus BILD 1-3 und 5, der ein Objekt-Push-Action-Primitiv ausführt.
- BILD 7 zeigt den Beispielroboter aus BILD 1-3, 5 und 6 bei der Ausführung eines Beispiels für eine Objekt-Rotationsaktionsprimitivs.
- BILD 8 illustriert den Beispielroboter aus BILD 1-3 und 5-7, der ein Beispielobjekt-Sortieraktionsprimitiv ausführt.
- BILD 9 ist ein Blockdiagramm des Beispielkartengenerators aus BILD 3.
- BILD 10 illustriert eine Beispielkonturkarte, die vom Beispielkartengenerator von BILD 3 und 9 auf der Grundlage eines Beispielbildes einer Beispielmontage von Beispiel Objekten erzeugt wurde.
- BILD 11 illustriert eine semantische Beispielsegmentierung, die durch den Beispielsegmentierungsgenerator von BILD 3 auf der Grundlage eines Beispielbildes einer Beispielsammlung von Beispiel Objekten erzeugt wurde.
- BILD 12 veranschaulicht eine Beispieldarstellung von Beispielobjekten, die in einer Beispielzielbaugruppe enthalten sind.
- BILD 13 illustriert eine Beispielobjekt-zu-Ziel-Abbildung, die vom Beispielobjekt-zu-Ziel-Mapper von BILD 3 generiert wurde.
- BILD 14 zeigt eine Beispielobjekt-Platzierungssequenz, die durch den Beispiel-Platzierungssequenzbestimmer von BILD 3 bestimmt wurde.
- BILD 15 zeigt eine Beispiel-Ziel-zu-Primitiv-Korrelationstabelle, auf die mit dem Beispiel-Aktions-Primitivsequenz-Bestimmer von BILD 3 zugegriffen wird.
- BILD 16 illustriert eine erste Beispielsequenz von Aktions-Primitiven, die durch den Beispiel-Aktions-Primitivsequenz-Bestimmer von BILD 3 bestimmt, vom Beispiel-Ausgabemanager von BILD 3 ausgegeben und/oder vom Beispiel-Bewegungsmanager von BILD 3 aufgerufen wird.
- illustriert eine zweite Beispielsequenz von Aktions-Primitiven, die durch den Beispiel-Aktions-Primitivsequenz-Bestimmer von bestimmt, vom Beispiel-Ausgabemanager von ausgegeben und/oder vom Beispiel-Bewegungsmanager von aufgerufen wird.
- BILD 18 ist ein Flussdiagramm, das für maschinenlesbare Beispielbefehle repräsentativ ist, die ausgeführt werden können, um den Beispielroboter von BILD 1-3 und 5-8 zu implementieren, um eine komplexe Baugruppe unter Verwendung von Verstärkungslern-Aktions-Primitiven zu konstruieren.
- BILD 19 ist ein Flussdiagramm, das maschinenlesbare Beispielanweisungen darstellt, die zur Implementierung des Beispielroboters aus BILD 1-3 und 5-8 ausgeführt werden können, um eine Bibliothek mit primitiven Handlungsanweisungen zu entwickeln.
- BILD 20 ist ein Flussdiagramm, das für maschinenlesbare Beispielanweisungen steht, die zur Implementierung des Beispielroboters aus BILD 1-3 und 5-8 ausgeführt werden können, um ein Bild zusammengesetzter Objekte zu zerlegen.
- BILD 21 ist ein Flussdiagramm, das für maschinenlesbare Beispielanweisungen steht, die ausgeführt werden können, um den Beispielroboter aus BILD 1-3 und 5-8 zu implementieren, um Sequenzen von Verstärkungs-Lernaktionsprimitiven für das Zusammensetzen von Objekten zu bestimmen.
- BILD 22 ist ein Flussdiagramm, das maschinenlesbare Beispielanweisungen darstellt, die zur Implementierung des Beispielroboters aus BILD 1-3 und 5-8 ausgeführt werden können, um eine Konturkarte der zusammengesetzten Objekte zu erzeugen.
- 23 ist ein Blockdiagramm einer Beispiel-Prozessorplattform, die so strukturiert ist, dass die Beispielanweisungen von 18-22 ausgeführt werden können, um den Beispielroboter von 1-3 und 5-8 zu implementieren.
-
Bestimmte Beispiele werden in den oben genannten Abbildungen gezeigt und unten im Detail beschrieben. Bei der Beschreibung dieser Beispiele werden identische Referenznummern verwendet, um die gleichen oder ähnliche Elemente zu identifizieren. Die Abbildungen sind nicht unbedingt maßstabsgerecht, und bestimmte Merkmale und bestimmte Ansichten der Abbildungen können aus Gründen der Klarheit und/oder Prägnanz übertrieben dargestellt werden.
-
Die Deskriptoren „erste“, „zweite“, „dritte“ usw. werden hier verwendet, wenn mehrere Elemente oder Komponenten identifiziert werden, auf die separat Bezug genommen werden kann. Sofern nicht anders angegeben oder aufgrund ihres Verwendungskontextes verstanden, sollen solche Deskriptoren keine Bedeutung von Priorität oder zeitlicher Ordnung unterstellen, sondern lediglich als Bezeichnungen für die getrennte Bezugnahme auf mehrere Elemente oder Komponenten dienen, um die offengelegten Beispiele leichter verständlich zu machen. In einigen Beispielen kann der Deskriptor „first“ verwendet werden, um auf ein Element in der detaillierten Beschreibung zu verweisen, während dasselbe Element in einem Anspruch mit einem anderen Deskriptor wie „second“ oder „third“ bezeichnet werden kann. In solchen Fällen sollte verstanden werden, dass solche Deskriptoren lediglich zur Erleichterung des Verweises auf mehrere Elemente oder Komponenten verwendet werden.
-
DETAILLIERTE BESCHREIBUNG
-
Robotische Technologien für die Handhabung von Objekten und/oder die Montage von Objekten sind vielversprechend in neu entstehenden KI-basierten Anwendungen wie z.B. intelligente Einzelhandels- und Lagerlogistik, intelligente Fertigungsstraßen usw. Eine große Herausforderung beim Einsatz von autonomen Robotern für KI-basierte Objekt-Handhabungs- und/oder Objekt-Montageanwendungen ist die konventionelle Notwendigkeit einer umfangreichen manuellen Programmierung und teuren Anpassung der Kinematik und Manipulationslogik, die zur Steuerung des Roboters erforderlich ist (z.B. Steuerung der Objekt-Handhabung und/oder -Platzierung durch den Roboter, Steuerung der Bewegungen und/oder Aktionen des Roboters usw.). So muss beispielsweise bei konventionellen programmierbasierten (z.B. nicht lernenden) Lösungen, bei denen eine Montageaufgabe von einem Roboter ausgeführt werden soll, die Montageaufgabe selbst zunächst manuell in eine Folge von Anweisungen zerlegt (z.B. dekonstruiert) werden, und der Roboter muss anschließend auf der Grundlage dieser Anweisungen programmiert und/oder angepasst werden, um die Montageaufgabe auszuführen. Diese Programmier- und/oder Anpassungsherausforderung wird noch verstärkt, wenn ein Roboter hochkomplizierte Aktionen in komplexen Montageabläufen mit einer großen Anzahl von Objekten mit sehr unterschiedlichen physikalischen Eigenschaften (z.B. Größen, Formen usw.) ausführen muss.
-
Eine weitere Herausforderung beim Einsatz autonomer Roboter für KI-basierte Objekt-Handhabungs- und/oder Objekt-Montageanwendungen ist die Unfähigkeit, den Roboter leicht an sich ändernde und/oder variierende Anwendungen innerhalb einer Umgebung anzupassen und/oder zu skalieren. Beispielsweise kann eine Lagerregalauffüllungsumgebung extrem große und häufig wechselnde Anzahl, Typen und/oder Konfigurationen von Produkten und/oder Baugruppen beinhalten. Die manuelle Programmierung eines Roboters für die Handhabung (z.B. Interaktion mit und/oder Reaktion auf) solche häufig wechselnden Anzahlen, Typen und/oder Konfigurationen von Produkten und/oder Baugruppen innerhalb der Umgebung würde eine enorme Menge an Ressourcen (z.B. Zeit, Geld, Arbeitskraft usw.) verbrauchen und wäre wahrscheinlich unerschwinglich teuer.
-
Darüber hinaus ist die Verwendung von KI-basierten Lösungen zwar eine attraktive Alternative zu den oben beschriebenen konventionellen, auf brutaler Gewalt basierenden programmiertechnischen Methoden, doch bestehende KI-Techniken wie das End-to-End Reinforcement Learning (RL) scheitern oft, wenn ein Roboter versucht, komplexe Aufgaben zu lernen (z.B. durch Erkundung oder Nachahmung). Fehlschläge des Roboters in dieser Hinsicht ergeben sich typischerweise aus einer hohen Dimensionalität (z.B. Größe und/oder Komplexität) des Zustands-Aktionsraumes und einer extrem spärlichen Belohnungsstruktur. Die Behebung der oben genannten Herausforderungen bei der Implementierung und/oder dem Einsatz ist entscheidend, um eine vollständige End-to-End-Automatisierung eines KI-basierten Objektmontageprozesses zu erreichen.
Im Gegensatz zu den oben beschriebenen bekannten Lösungen ermöglichen die hier vorgestellten Beispiele vorteilhaft eine komplexe Montage durch autonome Roboter unter Verwendung von RL-Aktions-Primitiven, die relativ einfachen (z.B. nicht-komplexen) Roboteraktionen und/oder Roboterbewegungen entsprechen. Die offengelegten Beispiele ermöglichen es einem Roboter, individuell die jeweiligen RL-Aktions-Primitive zu erlernen. Die hier offengelegten Beispiele können verschiedene der gelernten RL-Aktions-Primitive auf intelligente Weise zu einer oder mehreren Aktions-Primitiv-Richtlinien kombinieren, die vom Roboter befolgt und/oder implementiert werden. Nachdem ein Roboter die RL-Aktions-Primitive gelernt hat, können die hier vorgestellten Beispiele komplexe Montageaufgaben, die der Roboter ausführen soll, in eine Sequenz der RL-Aktions-Primitive zerlegen (z.B. zerlegen). Offengelegte Beispiele können die Sequenz der RL-Aktions-Primitive mit einer oder mehreren der Aktions-Primitiv-Politiken verbinden und den Roboter dazu veranlassen, die zugehörigen Aktions-Primitiv-Politiken zu befolgen und/oder zu implementieren, um eine komplexe Baugruppe zu konstruieren, die der komplexen Montageaufgabe entspricht.
Einige Beispiele, die hier offengelegt werden, zerlegen (z.B. dekonstruieren) automatisch ein Bild (z.B. durch den Roboter erfasst oder anderweitig in den Roboter eingegeben) einer Baugruppe von Objekten in eine Vielzahl von konstituierenden Objekten, die Objektpositionsziele (z.B. Zielobjektpositionen) und zugehörige Baugruppenziele (z.B. Zielobjekt-Baugruppenparameter wie auf einem Regal, unter einem Regal, auf einem anderen Objekt, unter einem anderen Objekt, vor einem anderen Objekt, hinter einem anderen Objekt usw.) haben. Basierend auf den Objektpositionszielen und den zugehörigen Montagezielen bestimmen die hier aufgeführten Beispiele eine Objektplatzierungssequenz, die vom und/oder am Roboter implementiert, aufgerufen und/oder ausgeführt werden muss, um die konstituierenden Objekte nacheinander in einem Raum zu platzieren. Für jedes Objekt in der Objektplatzierungssequenz bestimmen die hierin enthaltenen Beispiele eine primitive Handlungssequenz, die vom und/oder am Roboter implementiert, aufgerufen und/oder ausgeführt werden kann, um eine physische Anordnung von Objekten zu konstruieren, die der abgebildeten Anordnung von Objekten entspricht. Jede primitive Handlungssequenz enthält ein oder mehrere RL-Aktions-Primitive, die zuvor vom Roboter gelernt und als eine oder mehrere entsprechende primitive Handlungsrichtlinien in einer Bibliothek für primitive Handlungsrichtlinien gespeichert wurden. Die hierin offengelegten Beispiele greifen auf die primitiven Handlungsrichtlinien zu, die der primitiven Handlungssequenz entsprechen, und implementieren, rufen diese primitiven Handlungsrichtlinien auf und/oder führen sie am Roboter aus, um die physische Baugruppe von Objekten zu konstruieren.
Die hierin offengelegten Beispiele für die komplexe Montage durch autonome Roboter unter Verwendung von RL-Aktions-Primitiven bieten zahlreiche Vorteile im Vergleich zu den oben beschriebenen bekannten Lösungen. Durch die Bereitstellung eines RL-basierten Ansatzes reduzieren (z.B. eliminieren) die offengelegten Beispiele vorteilhaft den mühsamen und arbeitsintensiven Prozess der manuellen Programmierung von Robotern zur Durchführung komplexer Montageaufgaben. Ein weiteres Beispiel: Durch die Bereitstellung eines RL-basierten Ansatzes, der relativ einfache (z.B. nichtkomplexe) RL-Aktions-Primitive verwendet, reduzieren (z.B. eliminieren) die hier offengelegten Beispiele vorteilhaft die Lernfehler, die häufig in Verbindung mit bekannten End-to-End-RL-basierten Lösungen auftreten, die den ansonsten komplexen Lernprozess, der inhärent mit einer komplexen Montageaufgabe verbunden ist, nicht segmentieren. Ein weiteres Beispiel: Durch die Bereitstellung eines RL-basierten Ansatzes, der relativ einfache und nicht-komplexe RL-Aktions-Primitive verwendet, die sich zu einer Vielzahl von Konfigurationen und/oder Sequenzen kombinieren lassen, bieten die hier vorgestellten Beispiele vorteilhaft eine Lösung, die leicht an Umgebungen und/oder Anwendungen angepasst und/oder skaliert werden kann, die eine sich häufig ändernde und/oder variierende Anzahl, Art und/oder Konfiguration von Objekten und/oder Objektbaugruppen aufweisen. Ein weiteres Beispiel: Durch die Bereitstellung eines RL-basierten Ansatzes, der die automatische Zerlegung (z.B. Dekonstruktion) einer abgebildeten Anordnung von Objekten als Grundlage für die Konstruktion einer physischen Anordnung von Objekten entsprechend der abgebildeten Anordnung beinhaltet, bieten die hier vorgestellten Beispiele vorteilhaft eine vollständige End-to-End-Automatisierung für die robotergestützte Konstruktion komplexer Objektanordnungen.
-
BILD 1 veranschaulicht eine Beispielumgebung 100, in der ein Beispielroboter 102 gemäß den Lehren dieser Offenlegung implementiert werden kann, um eine komplexe Baugruppe unter Verwendung von RL-Aktions-Primitiven zu konstruieren. Im illustrierten Beispiel von 1 umfasst die Umgebung 100 den Roboter 102, ein Beispiel-Computergerät 104 und ein Beispiel-Regal 106. In anderen Beispielen kann die Rechenvorrichtung 104 und/oder das Regal 106 in der Umgebung 100 fehlen. Die Umgebung 100 von 1 kann durch jede Art von Umgebung implementiert werden, einschließlich z.B. einer Produktions- und/oder Montageanlage für ein Produkt (z.B. Autos, Unterhaltungselektronik, usw.), einem Lager zur Lagerung von Produkten und/oder Materialien, einem Warenhaus, einem Lebensmitteleinzelhandel, usw. In dem illustrierten Beispiel von BILD 1 ist die Umgebung 100 ein Lebensmitteleinzelhandelsgeschäft.
-
Der Beispielroboter 102 von BILD 1 kann durch und/oder als jede Art von autonomen Roboter implementiert werden, der so konfiguriert werden kann, dass er eine oder mehrere Montageaufgaben lernt und/oder ausführt. In dem illustrierten Beispiel von BILD 1 enthält der Roboter 102 einen Beispielroboterarm 108 (z.B. einen Roboterarm mit sechs Freiheitsgraden (6DOF)) mit einem Beispiel-Endeffektor 110, der so konfiguriert ist, dass er Objekte (z.B. durch Greifen, Einrasten, Schieben, Ziehen, Drehen usw.) in Verbindung mit der Konstruktion einer Baugruppe von Objekten bewegt (z.B. Teile, Komponenten, Unterbaugruppen, fertige Baugruppen usw.). Die Bewegungen des Roboterarms 108 und/oder des Roboters 102 von BILD 1 werden auf kontrollierte Weise durchgeführt, basierend auf der Betätigung und/oder Aktivierung eines oder mehrerer Motoren, die operativ mit dem Roboterarm 108 des Roboters 102 gekoppelt sind.
Die Beispiel-Rechenvorrichtung 104 von BILD 1 kann von und/oder als jede Art von Rechenvorrichtung implementiert werden, einschließlich z.B. einem Laptop-Computer, einem Desktop-Computer, einem Tablett, einem Smartphone usw. In dem illustrierten Beispiel von BILD 1 enthält die Recheneinheit 104 ein Beispiel für die Anzeige 112. Die Beispielanzeige 112 von BILD 1 kann durch und/oder als jede Art von Anzeige implementiert werden, einschließlich z.B. eines Kathodenstrahlröhren-(CRT)-Monitors, eines Flüssigkristallanzeige-(LCD)-Monitors, eines Leuchtdioden-(LED)-Monitors, eines Touchscreens usw. In dem illustrierten Beispiel von BILD 1 ist das Rechengerät 104 ein Tablett und die Anzeige 112 ein LCD-Touchscreen.
-
Das Beispielregal 106 von BILD 1 kann durch und/oder als jede beliebige Anzahl (1, 2, 4, 10, 20 usw.), Art, Größe und/oder Form von Regalen, die auf beliebige Weise innerhalb der Umgebung 100 angeordnet und/oder konfiguriert sind, realisiert werden. In dem illustrierten Beispiel von BILD 1 umfasst das Regal 106 ein Beispiel für das erste Regal 114, ein Beispiel für das zweite Regal 116, das sich über dem ersten Regal 114 befindet, ein Beispiel für das dritte Regal 118, das sich über dem zweiten Regal 116 befindet, ein Beispiel für das vierte Regal 120, das sich über dem dritten Regal 118 befindet, und ein Beispiel für das fünfte Regal 122, das sich über dem vierten Regal 120 befindet. Wie in BILD 1 dargestellt, ist/sind das erste Regal 114, das zweite Regal 116, das dritte Regal 118, das vierte Regal 120 und das fünfte Regal 122 und/oder, allgemeiner, das Regal 106 als Beispiel für ein zusammengebautes Regal 124 angeordnet und/oder konfiguriert. In einigen Beispielen kann die Regaleinheit 124 und/oder, allgemeiner, das Regal 106 selbst eine komplexe Anordnung von Objekten darstellen, die vom Roboter 102 von 1 unter Verwendung von RL-Aktionsprimitiven, wie unten näher beschrieben, zusammengebaut wurde.
-
Der Roboter 102 von BILD 1 ist so konfiguriert, dass er ein Bild (z.B. Bilddaten) einer Anordnung von Objekten erhält. In einigen Beispielen enthält der Roboter 102 von BILD 1 eine Kamera, die für die Aufnahme von Bildern konfiguriert ist. In einigen Beispielen kann die Kamera ein Bild von einer Gruppe von Objekten erfassen, die sich im Sichtfeld der Kamera befinden. In anderen Beispielen kann die Kamera ein Bild einer Baugruppe aufnehmen, das über einen Bildschirm eines Computergeräts im Sichtfeld der Kamera dargestellt wird. Wie in gezeigt, kann beispielsweise eine Kamera des Roboters 102 ein Bild eines Beispielbildes der Baugruppe 126 aufnehmen, das über das Display 112 der Recheneinheit 104, die sich in der Umgebung 100 befindet, dargestellt wird. In dem abgebildeten Beispiel von BILD 1 zeigt das Montagebild 126 eine Anordnung von Objekten (z.B. Milchkrüge, Saft-, Sodaflaschen und Wasserflaschen), die auf Regalen in einem Lebensmittelgeschäft positioniert sind.
-
Der Roboter 102 von BILD 1 zerlegt und/oder zerlegt das erhaltene Bild in eine Vielzahl von konstituierenden Objekten, die Objektpositionsziele (z.B. Zielobjektpositionen) und zugehörige Montageziele (z.B. Zielobjekt-Montageparameter wie auf einem Regal, unter einem Regal, auf einem anderen Objekt, unter einem anderen Objekt, vor einem anderen Objekt, hinter einem anderen Objekt usw.) haben. Beispielsweise kann der Roboter 102 von BILD 1 das Montagebild 126 von BILD 1 (z.B. unter Verwendung eines oder mehrerer Zerlegungsalgorithmen) in eine Vielzahl von Milchkrügen, Saft-, Soda- und Wasserflaschen zerlegen und/oder zerlegen (z.B. unter Verwendung eines oder mehrerer Zerlegungsalgorithmen), wobei jeder Krug und/oder jede Flasche ein Objektpositionsziel und ein zugehöriges Montageziel hat.
Auf der Grundlage der Objektpositionsziele und der zugehörigen Montageziele bestimmt der Roboter 102 von BILD 1 eine Objektplatzierungssequenz, die von und/oder am Roboter 102 zu implementieren, aufzurufen und/oder auszuführen ist, um die einzelnen Objekte nacheinander in einem Raum zu platzieren. Für jedes Objekt in der Objektplatzierungssequenz bestimmt der Roboter 102 von BILD 1 eine primitive Handlungssequenz, die von und/oder am Roboter 102 implementiert, aufgerufen und/oder ausgeführt werden kann, um eine physikalische Baugruppe von Objekten zu konstruieren, die der abgebildeten Baugruppe von Objekten entspricht. Jede primitive Handlungssequenz enthält ein oder mehrere RL-Aktions-Primitive, die zuvor vom Roboter 102 gelernt und als eine oder mehrere entsprechende primitive Handlungsrichtlinien in einer Bibliothek für primitive Handlungsrichtlinien gespeichert wurden. Der Roboter 102 in BILD 1 greift auf die der primitiven Handlungssequenz entsprechenden primitiven Handlungsrichtlinien zu und implementiert, ruft diese primitiven Handlungsrichtlinien auf und/oder führt sie aus, um die physische Anordnung von Objekten zu konstruieren.
-
BILD 2 veranschaulicht ein Beispiel für eine komplexe Baugruppe 200, die vom Beispielroboter 102 aus BILD 1 konstruiert wurde. In dem illustrierten Beispiel von BILD 2 entspricht die komplexe Baugruppe 200 dem Beispiel-Baugruppe Bild 126, das auf dem Bildschirm 112 der Rechenanlage 104 von BILD 1 dargestellt ist. Wie in BILD 2 dargestellt, enthält die komplexe Baugruppe 200 Beispielmilchkrüge 202, die sich auf dem ersten Regalboden 114 des Regals 124 und/oder dem Regalboden 106 befinden, Beispielsaftflaschen 204, die sich auf dem zweiten Regalboden 116 des Regals 124 und/oder dem Regalboden 106 befinden, Beispielsodaflaschen 206, die sich auf dem dritten Regalboden 118 des Regals 124 und/oder dem Regalboden 106 befinden, und Beispielwasserflaschen 208, die sich auf dem vierten Regalboden 120 des Regals 124 und/oder dem Regalboden 106 befinden. Der Roboter 102 von 1 und 2 konstruiert die komplexe Baugruppe 200 von 2, indem er jeweils ein physisches Objekt (z.B. jeweils auf die Milchkrüge 202, die Saftflaschen 204, die Sodaflaschen 206 und die Wasserflaschen 208) in und/oder auf das Regal 124 und/oder Regal 106 bewegt, basierend auf einer Objektplatzierungssequenz und einer Vielzahl von primitiven Aktionssequenzen, wie oben beschrieben. In dem illustrierten Beispiel von 2 ist der Roboter 102 dabei, bestimmte der Saftflaschen 204 auf das zweite Regalfach 116 des Regals 124 und/oder das Regalfach 106 gemäß der Objektplatzierungssequenz und einer oder mehrerer primitiver Aktionssequenzen zu bewegen, die vom Roboter 102 implementiert, aufgerufen und/oder ausgeführt werden.
-
3 ist ein Blockdiagramm des Beispielroboters 102 aus 1 und 2, der gemäß den Lehren dieser Offenlegung konstruiert wurde. Im illustrierten Beispiel von 3 enthält der Roboter 102 einen oder mehrere Beispielmotor(en) 302, eine Beispielkamera 304, einen Beispielbibliotheksentwickler 306, einen Beispielzerlegungsmanager 308, einen Beispielkonstruktionsmanager 310, einen Beispielbewegungsmanager 312, eine Beispielbenutzerschnittstelle 314 und einen Beispielspeicher 316. Die Beispiel-Richtlinienbibliothek-Entwickler 306 von enthält einen Beispiel-Aktions-Primitivselektor 318, einen Beispiel-Richtliniengenerator 320, einen Beispiel-Richtlinienoptimierer 322 und einen Beispiel-Bibliotheksmanager 324. Der Beispielzerlegungsmanager 308 von BILD 8 enthält einen Beispielbildmanager 326, einen Beispielobjektdetektor 328, einen Beispielabbildungsgenerator 330, einen Beispielsegmentierungsgenerator 332, einen Beispielstandortzielbestimmer 334 und einen Beispielbaugruppenzielbestimmer 336. Der Beispielkonstruktionsmanager 310 von BILD 3 enthält einen Beispielobjekt-zu-Ziel-Mapper 338, einen Beispiel-Platzierungssequenzbestimmer 340, einen Beispiel-Platzierungssequenzmanager 342, einen Beispielzielkennzeichner 344, einen Beispiel-Aktionsprimitivsequenzbestimmer 346 und einen Beispiel-Ausgabemanager 348. Die Beispielbenutzeroberfläche 314 von BILD 3 enthält ein oder mehrere Beispieleingabegerät(e) 350 und ein oder mehrere Beispielausgabegerät(e) 352. Andere Beispielimplementierungen des Roboters 102 aus BILD 3 können jedoch weniger oder zusätzliche Strukturen enthalten.
In dem illustrierten Beispiel von BILD 3 kann die Implementierung des Roboters 102 von BILD 3 weniger oder zusätzliche Strukturen enthalten. 3 sind der/die Motor(en) 302, die Kamera 304, der Richtlinienbibliothek-Entwickler 306 (einschließlich des Aktionsprimitiv-Selektors 318, des Richtliniengenerators 320, des Richtlinienoptimierers 322 und des Bibliotheksmanagers 324), der Zerlegungsmanager 308 (einschließlich des Bildmanagers 326, des Objektdetektors 328, des Kartengenerators 330, des Segmentierungsgenerators 332, des Ortszielbestimmers 334 und des Montagezielbestimmers 336), der Konstruktionsmanager 310 (einschließlich des Objekt-zu-Ziel-Mappers 338, des Platzierungssequenz-Bestimmers 340, des Platzierungssequenz-Managers 342, des Zielkennzeichens 344, des Aktionsprimitivsequenz-Bestimmers 346 und des Ausgabemanagers 348), der Bewegungsmanager 312, die Benutzerschnittstelle 314 (einschließlich der Eingabevorrichtung(en) 350 und der Ausgabevorrichtung(en) 352) und/oder der Speicher 316 sind operativ gekoppelt (e.g., bei der elektrischen Kommunikation) über einen Beispiel-Kommunikationsbus 354.
Der/die Beispielmotor(en) 302 von BILD 3 ermöglicht/eröglichen eine oder mehrere Bewegungen und/oder eine oder mehrere physikalische Operationen des Roboters 102, die mit der Konstruktion einer Baugruppe von Objekten verbunden sind. In einigen Beispielen können der/die Motor(en) 302 des Roboters 102 auf einem Roboterarm (z.B. dem Roboterarm 108 von 1) des Roboters 102 montiert und/oder in diesen integriert werden. In solchen Beispielen kann der Motor/die Motoren 302 so konfiguriert werden, dass er/sie den Roboterarm auf der Grundlage eines oder mehrerer Signale, Befehle und/oder Instruktionen, die vom Beispiel-Konstruktionsleiter 310 des Roboters 102 erzeugt werden, bewegt (z.B. Position, Neupositionierung, Orientierung, Neuausrichtung usw.), wie im Folgenden näher beschrieben. Der/die Motor(en) 302 von BILD 3 kann/können über eine beliebige Anzahl und/oder Art von Motor(en) und/oder Bewegungskomponente(n) implementiert werden, einschließlich z.B. über einen oder mehrere Servomotor(en), der/die so konfiguriert ist/sind, dass er/sie einen Roboterarm des Roboters 102 in Übereinstimmung mit verschiedenen, dem Roboterarm zugeordneten Freiheitsgraden bewegt.
-
Die Beispielkamera 304 von 3 ist am Roboter 102 von 1-3 montiert. Die Kamera 304 ist so konfiguriert und/oder positioniert, dass sie Bilder von Objekten erfasst, die sich innerhalb eines Sichtfeldes der Kamera 304 befinden. In einigen Beispielen kann die Kamera 304 ein Bild von einer Gruppe von Objekten erfassen, die sich innerhalb des Sichtfeldes der Kamera 304 befinden. In anderen Beispielen kann die Kamera 304 ein Bild einer Baugruppe aufnehmen, das über einen Bildschirm eines Rechengeräts (z.B. das Bild 126 der Baugruppe, das über den Bildschirm 112 des Rechengeräts 104 von dargestellt wird), das sich im Sichtfeld der Kamera 304 befindet. In einigen Beispielen sind die von der Kamera 304 aufgenommenen Bilder RGB-Bilder. Die von der Kamera 304 erfassten Bilder und/oder Bilddaten können einer oder mehreren lokalen Zeit(en) (z.B. mit Zeitstempel) zugeordnet werden, zu der/denen die Bilddaten von der Kamera 304 erfasst wurden. Die von der Kamera 304 aufgenommenen Bilder und/oder Bilddaten können in beliebiger Menge, Art, Form und/oder Format vorliegen und auf einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Entwickler der Beispiel-Richtlinienbibliothek 306 von BILD 3 erstellt und/oder entwickelt eine Bibliothek mit einer oder mehreren primitiven Richtlinien, die vom Roboter 102 (z.B. über einen RL-basierten Algorithmus) gelernt wurden. Wie oben erwähnt, enthält der Entwickler der Richtlinienbibliothek 306 von den Action Primitive Selector 318, den Richtliniengenerator 320, den Richtlinienoptimierer 322 und den Bibliotheksverwalter 324 von , die im Folgenden jeweils näher beschrieben werden. Der Richtlinien-Bibliotheksentwickler 306 aus BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Die von dem Entwickler der Policy-Bibliothek 306 gebaute und/oder entwickelte Action Primitive Policy-Bibliothek kann von jedem Typ, jeder Form und/oder jedem Format sein und kann auf einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden. Aktions-Primitive, Aktions-Primitivdaten, Aktions-Primitivrichtlinien und/oder Aktions-Primitivrichtliniendaten, auf die der Entwickler der Richtlinienbibliothek 306 zugreift, die von ihm und/oder bei ihm erzeugt und/oder verarbeitet werden, können von beliebiger Menge, beliebigem Typ, beliebiger Form und/oder beliebigem Format sein und auf einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von gespeichert werden.
-
ist ein Blockdiagramm einer primitiven Beispiel-Aktionsrichtlinie 400, die vom Entwickler der Beispielrichtlinie 306 von entwickelt wurde. In dem illustrierten Beispiel von enthält die primitive Handlungsrichtlinien-Bibliothek 400 eine Beispielsrichtlinie 402 für die Aufnahme und Platzierung von Objekten, eine Beispielsrichtlinie 404 für die Verschiebung von Objekten, eine Beispielsrichtlinie 406 für die Rotation von Objekten und eine Beispielsrichtlinie 408 für die Sortierung von Objekten. Wie in BILD 4 weiter dargestellt, kann die Bibliothek für primitive Richtlinien 400 eine beliebige Anzahl anderer primitiver Richtlinien 410 enthalten. Primitive Handlungsrichtlinien, die in der Bibliothek für primitive Handlungsrichtlinien (z.B. die Bibliothek für primitive Handlungsrichtlinien 400 von ) gespeichert sind, die vom Entwickler der Richtlinienbibliothek 306 von erstellt und/oder entwickelt wurden, sind jeweils von entsprechenden RL-Aktions-Primitiven (z.B. grundlegende Roboterbewegungen) des Roboters 102 abgeleitet.
-
Zum Beispiel illustriert BILD 5 den Beispielroboter 102 aus BILD 1-3, der ein Beispiel für das Objekt Pick-and-Place-Aktions-Primitiv 500 ausführt. Das Primitiv 500 der Objektaufnahme- und -platzierungsaktion von BILD 5 beinhaltet, dass der Roboter 102 ein Beispielobjekt 502 von einem ersten Standort 504 aufnimmt und das Objekt 502 zu und/oder in einen zweiten Standort 506 bewegt und/oder platziert. Wie in BILD 5 gezeigt, entspricht die Objekt-Pick&Place-Richtlinie 402, die in der Bibliothek 400 von BILD 4 für Aktionsprimitive gespeichert werden soll, dem Objekt-Pick&Place-Aktionsprimitiv 500 von BILD 4 und/oder wird auf der Grundlage dieses Primitivs erzeugt.
Als weiteres Beispiel zeigt BILD 6 den Beispielroboter 102 aus BILD 1-3 und 5, der ein Beispiel für ein Objekt-Push-Aktionsprimitiv 600 ausführt. Das Objekt-Schiebeaktionsprimitiv 600 aus BILD 6 beinhaltet, dass der Roboter 102 ein Beispielobjekt 602 von einem ersten Standort 604 zu einem zweiten Standort 606 schiebt. Wie in BILD 6 gezeigt, entspricht die Objekt-Schiebe-Richtlinie 404, die in der Bibliothek 400 der primitiven Aktionsprimitive von BILD 4 gespeichert werden soll, der Objekt-Schiebe-Aktions-Primitiv 600 und/oder wird auf der Grundlage dieser Primitiv-Datei erzeugt.
Als weiteres Beispiel zeigt BILD 7 den Beispielroboter 102 aus BILD 1-3, 5 und 6, der ein Beispiel für ein Objektrotationsprimitiv 700 ausführt. Bei der Objektrotation Aktionsprimitiv 700 von BILD 7 dreht der Roboter 102 ein Beispielobjekt 702 von einer ersten Orientierung 704 in eine zweite Orientierung 706. Wie in BILD 7 gezeigt, entspricht die Objektrotationsvorschrift 406, die in der Bibliothek für primitive Handlungsanweisungen 400 von BILD 4 gespeichert werden soll, der Objektrotationsvorschrift 700 und/oder wird auf der Grundlage dieser Vorlage erzeugt.
Als weiteres Beispiel zeigt BILD 8 den Beispielroboter 102 aus BILD 1-3 und 5-7, der ein Beispiel für die Objektsortieraktion Primitiv 800 ausführt. Bei der Objektsortieraktion Primitiv 800 aus BILD 8 bewegt der Roboter 102 ein erstes Beispielobjekt 802 an eine erste Beispielstelle 804 und ein zweites Beispielobjekt 806, das sich (z.B. auf der Grundlage einer oder mehrerer physikalischer Eigenschaften) vom ersten Objekt 802 unterscheidet, an eine zweite Beispielstelle 808, die sich von der ersten Stelle 804 unterscheidet. Wie in BILD 8 dargestellt, entspricht die Objektsortierrichtlinie 408, die in der Bibliothek 400 der primitiven Richtlinien der Aktion von BILD 4 gespeichert werden soll, der Objektsortieraktionsprimitiv 800 und/oder wird auf der Grundlage dieser Aktionsprimitiv 800 erzeugt.
Um auf das Beispiel von zurückzukommen, wählt der Beispiel-Aktions-Primitiv-Selektor 318 des Entwicklers der Richtlinienbibliothek 306 von ein RL-Aktions-Primitiv (z.B. eine grundlegende Roboterbewegung) des Roboters 102 aus. Beispielsweise kann der Selektor für das Aktions-Primitiv 318 ein Primitiv für die Objektaufnahme und - platzierung (z.B. das in 5 gezeigte Primitiv für die Objektaufnahme und -platzierung 500), ein Primitiv für die Objekt-Schiebeaktion (z.B. das in 6 gezeigte Primitiv für die Objekt-Schiebeaktion 600), ein Primitiv für die Objekt-Drehaktion (z.B. das in 7 gezeigte Primitiv für die Objekt-Drehaktion 700) oder ein Primitiv für die Objektsortieraktion (z.B. das in 8 gezeigte Primitiv für die Objektsortieraktion 800) auswählen. In einigen Beispielen wählt der Selektor für das Aktions-Primitiv 318 ein RL-Aktions-Primitiv des Roboters 102 aus, für das noch keine entsprechende Richtlinie für das Aktions-Primitiv generiert wurde. Das Aktions-Primitiv 318 von BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller usw.) implementiert werden. RL-Aktions-Primitive und/oder RL-Aktions-Primitivdaten, auf die mit dem Aktions-Primitiv-Selektor 318 zugegriffen wird, die von diesem ausgewählt und/oder verarbeitet werden, können von beliebiger Menge, Typ, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Beispiel-Richtliniengenerator 320 des Richtlinienbibliotheks-Entwicklers 306 von erzeugt eine primitive Richtlinie, die dem RL-Aktions-Primitiv entspricht und/oder auf diesem basiert, das durch den Aktionsprimitiv-Auswähler 318 von ausgewählt wurde. Beispielsweise kann der Richtliniengenerator 320 die Beispielobjekt-Pick&Place-Richtlinie 402 von und auf der Grundlage des Beispielobjekt-Pick&Place-Aktions-Primitivs 500 von erzeugen. Als weiteres Beispiel kann der Richtliniengenerator 320 die Beispielobjekt-Push-Richtlinie 404 aus BILD 4 und 6 auf der Grundlage des Beispielobjekt-Push-Aktions-Primitivs 600 aus BILD 6 erzeugen. Als weiteres Beispiel kann der Richtliniengenerator 320 die Beispielobjekt-Rotationsrichtlinie 406 von und auf der Grundlage des Beispielobjekt-Rotationsaktionsprimitivs 700 von erzeugen. Ein weiteres Beispiel: Der Richtliniengenerator 320 kann die Beispielsortierrichtlinie 408 von und auf der Grundlage des Objekt-Sortieraktionsprimitivs 800 von erzeugen.
-
In einigen Beispielen implementiert, ruft der Richtliniengenerator 320 aus einen RL-Algorithmus einschließlich eines tiefen deterministischen Richtliniengradienten (DDPG) in Kombination mit einem Nachbetrachtungs-Erfahrungswiederholungs-Algorithmus (HER) (z.B. kombiniert als DDPG+HER-Algorithmus), um die primitive Handlungsrichtlinie zu trainieren, und wendet ihn an und/oder verwendet ihn. In solchen Beispielen lernt der Roboter 102 die primitive Handlungsstrategie auf der Grundlage des DDPG+HER-Algorithmus. Der Policy-Generator 320 aus BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Action Primitive Policies, Action Primitive Policy-Daten und/oder RL-Algorithmen, auf die der Policy-Generator 320 zugreift, sie aufruft, anwendet, generiert, trainiert und/oder verarbeitet, können jede Menge, jeden Typ, jede Form und/oder jedes Format haben und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Beispielrichtlinien-Optimierer 322 des Richtlinienbibliotheks-Entwicklers 306 von optimiert die vom Richtliniengenerator 320 von generierte und/oder trainierte primitive Handlungsrichtlinie. Beispielsweise kann der Richtlinienoptimierer 322 die Anzahl der Roboteraktionen und/oder Roboterbewegungen, die in der generierten und/oder trainierten primitiven Richtlinie enthalten sind, auf eine geringere Anzahl (z.B. eine Mindestanzahl) von Roboteraktionen und/oder Roboterbewegungen reduzieren, die zur Ausführung des zugrunde liegenden RL-Aktions-Primitivs erforderlich sind. Der Policy-Optimierer 322 aus BILD 3 kann von jedem Typ und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Optimierte Action-Primitiv-Policies und/oder Action-Primitiv-Policy-Optimierungsdaten, auf die der Policy-Optimierer 322 zugreift, die von ihm erzeugt und/oder verarbeitet werden, können von beliebiger Menge, Typ, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Beispielbibliotheksverwalter 324 des Entwicklers der Richtlinienbibliothek 306 von 3 verwaltet und/oder steuert die vom Entwickler der Richtlinienbibliothek 306 von 3 erstellte und/oder entwickelte Action Primitive Policy Library. Beispielsweise kann der Bibliotheksverwalter 324 veranlassen, dass die vom Richtliniengenerator 320 erzeugte und/oder trainierte primitive Handlungsrichtlinie, die vom Richtlinienoptimierer 322 von 3 optimiert wurde, zur primitiven Handlungsrichtlinie 400 von 4 hinzugefügt und/oder darin gespeichert wird. In einigen Beispielen kann der Bibliotheksverwalter 324 veranlassen, dass zwei oder mehr primitive Handlungsanweisungen, die in der Bibliothek für primitive Handlungsanweisungen gespeichert sind, zu einer neuen primitiven Handlungsanweisung kombiniert werden (z.B. in einer geordneten Reihenfolge), die mit der Bibliothek für primitive Handlungsanweisungen gespeichert wird. Der Bibliotheksverwalter 324 von BILD 3 kann von jedem Typ bzw. jeder Art und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Bibliotheksverwaltungsdaten, auf die der Bibliotheksverwalter 324 zugreift, die von ihm und/oder bei ihm erzeugt und/oder verarbeitet werden, können von beliebiger Menge, Art, Form und/oder Format sein und auf einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
In einigen Beispielen veranlasst der Bibliotheksverwalter 324 von , dass die oben beschriebenen Operationen des Aktionsprimitiv-Selektors 318, des Richtliniengenerators 320, des Richtlinienoptimierers 322 und/oder des Bibliotheksverwalters 324 iterativ durchgeführt und/oder ausgeführt werden, bis die Bibliothek der Aktionsprimitiv-Richtlinien Aktionsprimitiv-Richtlinien enthält, die allen RL-Aktionsprimitiven innerhalb einer vorgegebenen Gruppe von RL-Aktionsprimitiven des Roboters 102 entsprechen. In einigen Beispielen kann die vorbestimmte Gruppe alle RL-Aktions-Primitive des Roboters 102 enthalten. In anderen Beispielen kann die vorgegebene Gruppe eine Untergruppe aller RL-Aktions-Primitive des Roboters 102 enthalten.
-
Der Beispiel-Zerlegungsmanager 308 aus BILD 3 zerlegt und/oder dekonstruiert (z.B. über einen Zerlegungsalgorithmus) ein Bild einer Anordnung von Objekten in Objektpositionsziele und zugehörige Zusammenbauziele, die der Anordnung der im Bild dargestellten und/oder durch das Bild repräsentierten Objekte entsprechen. Wie oben erwähnt, umfasst der Zerlegungsmanager 308 von BILD 3 den Bildmanager 326, den Objektdetektor 328, den Kartengenerator 330, den Segmentierungsgenerator 332, den Standortzielbestimmer 334 und den Montagezielbestimmer 336 von BILD 3, von denen jeder weiter unten beschrieben wird. Der Zerlegungsmanager 308 von BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Die Zerlegungsdaten und/oder Zerlegungsalgorithmen, auf die der Zerlegungsmanager 308 zugreift, sie aufruft, anwendet, erzeugt und/oder verarbeitet, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Beispielbildmanager 326 des Zerlegungsmanagers 308 von BILD 3 verwaltet und/oder steuert den Betrieb der Kamera 304 von BILD 3 und/oder, allgemeiner, verwaltet und/oder steuert den Prozess des Zugriffs auf und/oder des Erhalts von Bildern und/oder Bilddaten. Beispielsweise kann der Bildmanager 326 der Kamera 304 signalisieren, befehlen und/oder anweisen, ein Bild zu einer bestimmten Zeit, an einem bestimmten Ort und/oder als Reaktion auf das Eintreten eines bestimmten Ereignisses aufzunehmen. In einigen Beispielen signalisiert, befiehlt und/oder weist der Bildmanager 326 von BILD 3 die Kamera 304 von BILD 3 an, als Reaktion auf eine oder mehrere Benutzereingaben, die über die unten beschriebene Beispiel-Benutzerschnittstelle 314 von BILD 3 empfangen werden, ein Bild aufzunehmen. In anderen Beispielen kann der Bildmanager 326 den Roboter 102 veranlassen und/oder befähigen, auf Bilddaten über die Benutzerschnittstelle 314 von BILD 3 und/oder über eine Netzwerkschnittstelle des Roboters 102 zuzugreifen, diese zu erhalten und/oder zu empfangen, ohne die Kamera 304 von BILD 3 zu verwenden. Der Bildmanager 326 von BILD 3 kann von jedem Typ und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Bilder und/oder Bilddaten, auf die der Bildmanager 326 zugreift, die er erhält, empfängt und/oder verarbeitet, können von beliebiger Menge, Art, Form und/oder Format sein und auf einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Der Beispielobjektdetektor 328 des Zerlegungsmanagers 308 von BILD 3 erkennt und/oder identifiziert ein oder mehrere Objekte, die im Bild der Anordnung von Objekten dargestellt sind, auf die der Bildmanager 326 von BILD 3 zugreift und/oder die er erhalten hat. Zum Beispiel kann der Objektdetektor 328 ein oder mehrere Objekte, die im Bild der Anordnung von Objekten dargestellt sind, erkennen und/oder identifizieren, indem er einen Objekterkennungsalgorithmus (z.B. einen You Only Look Once (YOLO) Objekterkennungsalgorithmus) auf das Bild der Anordnung von Objekten anwendet. Der Objektdetektor 328 von BILD 3 kann durch jeden Typ bzw. jede Art und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Objektdaten und/oder Objekterkennungsalgorithmen, auf die der Objektdetektor 328 zugreift, die von ihm implementiert, aufgerufen, angewendet, erkannt, identifiziert und/oder verarbeitet werden, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Der Beispielkartengenerator 330 des Zerlegungsmanagers 308 von BILD 3 erzeugt eine Konturkarte für Objekte, die vom Objektdetektor 328 von BILD 3 in dem Bild der Anordnung von Objekten, auf die der Bildmanager 326 von BILD 3 zugreift und/oder die er erhält, erkannt werden. BILD 9 ist ein Blockdiagramm des Beispielkartengenerators 330 aus BILD 3. In dem illustrierten Beispiel von BILD 9 enthält der Kartengenerator 330 einen Beispielbildwandler 902, einen Beispielpixelintensitätsdetektor 904, einen Beispielschwellenwert 906, einen Beispielpixelintensitätskomparator 908 und einen Beispielkonturgenerator 910, die im Folgenden näher beschrieben werden. Andere Beispielimplementierungen des Kartengenerators 330 aus BILD 3 und 9 können jedoch weniger oder zusätzliche Strukturen enthalten. Der Kartengenerator 330 aus BILD 3 kann durch jeden Typ bzw. jede Art und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Konturkarten und/oder Konturkartendaten, auf die der Kartengenerator 330 zugreift, die er erzeugt und/oder verarbeitet, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Beispielbildkonverter 902 des Kartengenerators 330 aus BILD 3 und 9 wandelt das Bild, auf das der Bildmanager 326 aus BILD 3 zugreift und/oder das er erhalten hat, in ein Graustufenbild um. Zum Beispiel kann der Bildkonverter 902 ein RGB-Bild (z.B. RGB-Bilddaten), auf das der Bildmanager 326 zugreift und/oder das er erhalten hat, in ein Graustufenbild (z.B. Graustufenbilddaten) konvertieren. Der Bildwandler 902 von BILD 9 kann von jedem Typ und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Konvertierte Bilder (z.B. Graustufenbilder) und/oder konvertierte Bilddaten (z.B. Graustufenbilddaten), auf die der Bildkonverter 902 zugreift, die von ihm erzeugt und/oder verarbeitet werden, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Das Beispiel des Pixel-Intensitätsdetektors 904 des Kartengenerators 330 aus BILD 3 und 9 erkennt und/oder bestimmt Pixel-Intensitätswerte für Pixel des Graustufenbildes, das durch den Bildwandler 902 aus BILD 9 erzeugt und/oder verarbeitet wird. Zum Beispiel kann der Pixelintensitätsdetektor 904 Pixel-Intensitätswerte für Pixel des Graustufenbildes erkennen und/oder bestimmen, indem er einen Binarisierungsalgorithmus (z.B. Otsu-Algorithmus) auf das Graustufenbild anwendet. Der Pixel-Intensitätsdetektor 904 von BILD 9 kann durch jede Art und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Pixelintensitäten, Pixelintensitätsdaten und/oder Binarisierungsalgorithmen, auf die der Zugriff, die Implementierung, der Aufruf, die Anwendung, die Bestimmung, die Erkennung, die Erzeugung und/oder die Verarbeitung durch den und/oder am Pixelintensitätsdetektor 904 erfolgen kann, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Der Beispiel-Schwellenwertgeber 906 des Kartengenerators 330 aus BILD 3 und 9 schränkt die vom Pixelintensitätsdetektor 904 aus BILD 9 ermittelten Pixelintensitätswerte adaptiv ein. Zum Beispiel kann der Thresholder 906 die Pixel-Intensitätswerte durch Anwendung eines adaptiven Schwellwert-Algorithmus auf die Pixel-Intensitätswerte adaptiv schwellen. Der Schwellenwert-Halter 906 von BILD 9 kann von jedem Typ und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Adaptiv geschwellte Pixel-Intensitätswerte, adaptiv geschwellte Pixel-Intensitätswertdaten und/oder adaptive Schwellwert-Algorithmen, auf die der Zugriff, die Implementierung, der Aufruf, die Anwendung, die Generierung und/oder die Verarbeitung durch und/oder am Schwellwerthalter 906 erfolgen kann, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Der Beispielpixel-Intensitätskomparator 908 des Kartengenerators 330 aus BILD 3 und 9 erkennt und/oder bestimmt Bereiche mit übereinstimmenden (z.B. statistisch ähnlichen) adaptiv geschwellten Pixel-Intensitätswerten, die durch den Schwellenwerthalter 906 aus BILD 9 adaptiv geschwellt wurden. Zum Beispiel kann der Pixel-Intensitätskomparator 908 Bereiche mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten erkennen und/oder bestimmen, indem er die adaptiv geschwellten Pixel-Intensitätswerte benachbarter Pixel auf statistische Ähnlichkeit und/oder Ähnlichkeit vergleicht. Der Pixel-Intensitätskomparator 908 von BILD 9 kann von jedem Typ und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Bereiche und/oder Bereichsdaten mit übereinstimmenden, adaptiv geschwellten Pixel-Intensitätswerten, auf die der Pixel-Intensitätskomparator 908 zugreift, die von und/oder am Pixel-Intensitätskomparator 908 bestimmt, detektiert, erzeugt und/oder verarbeitet werden, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Der Beispielkonturgenerator 910 des Kartengenerators 330 von BILD 3 und 9 erzeugt Konturen auf der Grundlage der Bereiche übereinstimmender, adaptiv geschwellter Pixel-Intensitätswerte, die vom Pixel-Intensitätskomparator 908 von BILD 9 erfasst und/oder bestimmt werden. Zum Beispiel kann der Konturgenerator 910 eine oder mehrere Kontur(en) auf der Grundlage der Bereiche mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten erzeugen, die durch und/oder als ein oder mehrere gerade und/oder gekrümmte Liniensegmente dargestellt werden können. Der Konturgenerator 910 von BILD 9 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Konturen und/oder Konturdaten, auf die der Konturgenerator 910 zugreift, die von ihm erzeugt und/oder verarbeitet werden, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Im illustrierten Beispiel von BILD 9 erzeugt der Beispielkartengenerator 330 eine Konturkarte auf der Grundlage der vom Konturgenerator 910 von BILD 9 erzeugten Konturen. Beispielsweise kann der Kartengenerator 330 eine Konturkarte erzeugen, die die vom Konturgenerator 910 erzeugten Konturen enthält und/oder einbezieht. In einigen Beispielen repräsentiert und/oder zeigt die vom Kartengenerator 330 erzeugte Konturkarte eine oder mehrere Grenzen und/oder physikalische Eigenschaften (z.B. eine Größe, eine Form, eine Kante, eine relative Position, eine relative Orientierung usw.) eines oder mehrerer Objekte, die vom Objektdetektor 328 von BILD 3 erfasst und/oder in das Bild der Anordnung von Objekten eingeschlossen sind, auf die der Bildmanager 326 von BILD 3 zugreift und/oder die er erhalten hat. BILD 10 illustriert beispielsweise eine Beispielkonturkarte 1000, die vom Beispielkartengenerator 330 der BILD 3 und 9 auf der Grundlage eines Beispielbildes 1002 einer Beispielsanordnung 1004 von Beispiel Objekten 1006 erzeugt wurde. In dem illustrierten Beispiel von BILD 10 enthält die Konturkarte 1000 Beispielkonturen 1008. Die Konturen 1008 der Konturkarte 1000 stellen Grenzen und/oder physikalische Eigenschaften (z.B. Größen, Formen, Kanten, relative Positionen, relative Orientierungen usw.) der Objekte 1006 dar, die in dem Bild 1002 der Baugruppe 1004 der Objekte 1006 enthalten sind.
Um auf das Beispiel von BILD 3 zurückzukommen, erzeugt der Beispielsegmentierungsgenerator 332 des Zerlegungsmanagers 308 von BILD 3 eine semantische Segmentierung für Objekte, die vom Objektdetektor 328 von BILD 3 in dem Bild der Anordnung von Objekten erkannt werden, auf die der Bildmanager 326 von BILD 3 zugreift und/oder die er erhält. Zum Beispiel kann der Segmentierungsgenerator 332 eine semantische Segmentierung des Bildes der Anordnung von Objekten erzeugen, indem er einen semantischen Segmentierungsalgorithmus (z.B. einen Region Convoluted Neural Network (R-CNN)-Segmentierungsalgorithmus) auf das Bild der Anordnung von Objekten anwendet. In einigen Beispielen stellt die vom Segmentierungsgenerator 332 erzeugte semantische Segmentierung eine oder mehrere Grenzen und/oder physikalische Eigenschaften (z.B. eine Größe, eine Form, eine Kante, eine relative Position, eine relative Orientierung usw.) eines oder mehrerer Objekte dar und/oder zeigt diese an, die vom Objektdetektor 328 von BILD 3 erkannt und/oder in das Bild der Objektgruppe aufgenommen wurden, auf das der Bildmanager 326 von BILD 3 zugreift und/oder das er erhalten hat. Der Segmentierungsgenerator 332 von BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller usw.) implementiert werden. Semantische Segmentierungen, semantische Segmentierungsdaten und/oder semantische Segmentierungsalgorithmen, auf die der Segmentierungsgenerator 332 zugreift, sie implementiert, aufruft, anwendet, erzeugt und/oder verarbeitet, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
In einigen Beispielen enthält die vom Segmentierungsgenerator 332 aus BILD 3 erzeugte semantische Segmentierung (z.B. in Form von Tags, Etiketten usw.) Objektkennungen (z.B. Objekttypkennungen) für die jeweiligen Objekte, die in einem Bild einer Objektgruppe enthalten sind. BILD 11 veranschaulicht z.B. eine semantische Segmentierung 1100, die vom Beispielsegmentierungsgenerator 332 aus BILD 3 anhand eines Beispielbildes 1102 einer Beispielbaugruppe 1104 von Beispiel Objekten 1106 erzeugt wurde. Im illustrierten Beispiel von BILD 11 enthält die semantische Segmentierung 1100 (z.B. in Form von Tags, Etiketten usw.) Beispielobjektkennungen 1108 (z.B. Objekttypkennungen) für die jeweiligen Objekte 1106, die im Bild 1102 der Baugruppe 1104 der Objekte 1106 enthalten sind. Wie in gezeigt, wurden bestimmte der Objekte 1106, die im Bild 1102 der Baugruppe 1104 der Objekte 1106 enthalten sind, mit einer „Flaschen“-Objektkennung und andere der Objekte 1106, die im Bild 1102 der Baugruppe 1104 der Objekte 1106 enthalten sind, mit einer „Krug“-Objektkennung verknüpft.
Um auf das Beispiel von BILD 3 zurückzukommen, kann die Zerlegungskrippe 308 in einigen Beispielen den Kartengenerator 330 von BILD 3 oder den Segmentierungsgenerator 332 von BILD 3 aufrufen, aber nicht beide. Zum Beispiel kann der Zerlegungsmanager 308 von BILD 3 den Kartengenerator 330 von BILD 3 aufrufen, um eine Konturkarte zu erzeugen, wenn die Formen und/oder Geometrien der vom Objektdetektor 328 von BILD 3 erfassten Objekte relativ komplex sind. Als weiteres Beispiel kann der Zerlegungsmanager 308 von BILD 3 den Segmentierungsgenerator 332 von BILD 3 anstelle des Kartengenerators 330 von BILD 3 aufrufen, wenn die Formen und/oder Geometrien der vom Objektdetektor 328 von BILD 3 erkannten Objekte relativ einfach sind.
Der Beispiel-Ortszielbestimmer 334 des Zerlegungsmanagers 308 aus BILD 3 bestimmt Objekt-Ortsziele (z.B. Zielobjektpositionen) für die jeweiligen Objekte, die in der vom Kartengenerator 330 aus BILD 3 erzeugten Konturkarte und/oder der vom Segmentierungsgenerator 332 aus BILD 3 erzeugten semantischen Segmentierung enthalten sind und/oder durch diese repräsentiert werden. Zum Beispiel kann die Standortzielbestimmung 334 Objektstandortziele für die jeweiligen Objekte bestimmen, die in der Konturkarte und/oder der semantischen Segmentierung enthalten sind und/oder durch diese repräsentiert werden, indem ein geometriebasierter Packungsalgorithmus (z.B. ein konturbasierter Packungsalgorithmus) auf die Konturkarte und/oder die semantische Segmentierung angewendet wird. Die Positionszielbestimmung 334 von BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Objekt-Lokalisierungsziele, Objekt-Lokalisierungszieldaten und/oder geometriebasierte Packungsalgorithmen, auf die der Zugriff, die Implementierung, der Aufruf, die Anwendung, die Bestimmung, die Generierung und/oder die Verarbeitung durch und/oder an der Standortzielbestimmungseinrichtung 334 erfolgen kann, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Beispielmontagezielbestimmer 336 des Zerlegungsmanagers 308 aus BILD 3 bestimmt Montageziele (z.B. Zielobjekt-Montageparameter wie auf einem Regal, unter einem Regal, auf einem anderen Objekt, unter einem anderen Objekt, vor einem anderen Objekt, hinter einem anderen Objekt usw.) für die jeweiligen Objekte, die in der vom Kartengenerator 330 aus BILD 3 erzeugten Konturkarte und/oder der vom Segmentierungsgenerator 332 aus BILD 3 erzeugten semantischen Segmentierung enthalten sind und/oder durch diese repräsentiert werden. Beispielsweise kann der Montagezielbestimmer 336 Montageziele für die jeweiligen Objekte bestimmen, die in der Konturkarte und/oder der semantischen Segmentierung enthalten sind und/oder durch diese repräsentiert werden, indem ein Objektlokalisierungsalgorithmus auf die Konturkarte und/oder die semantische Segmentierung angewendet wird. In einigen Beispielen verbindet der Montagezielbestimmer 336 von BILD 3 die jeweiligen Montageziele mit den entsprechenden Zielen der Objektpositionierung, die durch den Zielbestimmer 334 von BILD 3 bestimmt werden. Versammlungsziele, Versammlungszieldaten und/oder Objektlokalisierungsalgorithmen, auf die der Versammlungszielbestimmer 336 zugreift, sie implementiert, aufruft, anwendet, bestimmt, erzeugt und/oder verarbeitet, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
12 zeigt eine Beispieldarstellung 1200 von Beispiel Objekten 1202, die in einer Beispielzielbaugruppe 1204 enthalten sind. In dem illustrierten Beispiel von BILD 12 haben die jeweiligen Objekte 1202 in der Darstellung 1200 ein Objekt-Ortsziel (z.B. ein Objekt-Ortsziel, das durch die Ortszielbestimmung 334 von BILD 3 bestimmt wird) und ein zugehöriges Baugruppenziel (z.B. ein zugehöriges Baugruppenziel, das durch die Baugruppenzielbestimmung 336 von BILD 3 bestimmt wird). Zum Beispiel in der Darstellung 1200 von 12 wird ein erstes Beispiel 1206 der Objekte 1202 als an einer ersten Beispielstelle 1208 auf einem ersten Regal 1210 der Zielbaugruppe 1204 gelegen gezeigt, ein zweites Beispiel 1212 der Objekte 1202 als an einer zweiten Beispielstelle 1214 unter dem ersten Regal 1210 der Zielbaugruppe 1204 gelegen, ein drittes Beispiel 1216 der Objekte 1202 wird als an einer dritten Position 1218 auf einem zweiten Regal 1220 der Zielbaugruppe 1204 gezeigt, das über und hinter dem ersten Regal 1210 der Zielbaugruppe 1204 positioniert ist, und ein viertes Beispiel 1222 der Objekte 1202 wird als an einer vierten Position 1224 auf einem dritten Regal 1226 der Zielbaugruppe 1204 gezeigt, das über und hinter dem zweiten Regal 1220 der Zielbaugruppe 1204 positioniert ist.
Um auf das Beispiel von BILD 3 zurückzukommen, bestimmt der Beispielkonstruktionsleiter 310 von BILD 3 eine oder mehrere Sequenz(en) von RL-Aktions-Primitiven für die Konstruktion einer Baugruppe von Objekten auf der Grundlage der Objektpositionsziele und der zugehörigen Baugruppenziele, die vom Zerlegungsleiter 308 von BILD 3 bestimmt wurden. Beispielsweise kann der Konstruktionsleiter 310 auf der Grundlage der durch den Ortszielbestimmer 334 des Zerlegungsleiters 308 bestimmten Objektpositionsziele und der durch den Montagezielbestimmer 336 des Zerlegungsleiters 308 bestimmten zugehörigen Montageziele eine oder mehrere Sequenz(en) von RL-Aktions-Primitiven zur Konstruktion einer Anordnung von Objekten bestimmen, die der Anordnung von Objekten entspricht, die in dem durch den Zerlegungsleiter 308 von BILD 3 zerlegten (z.B. dekonstruierten) Bild dargestellt und/oder durch dieses Bild repräsentiert wird. Wie oben erwähnt, enthält der Konstruktionsmanager 310 von BILD 3 den Objekt-zu-Ziel-Mapper 338, den Platzierungssequenz-Bestimmer 340, den Platzierungssequenz-Manager 342, den Zielkennzeichner 344, den Aktionsprimitivsequenz-Bestimmer 346 und den Ausgabemanager 348 von BILD 3, die im Folgenden jeweils näher beschrieben werden. Der Konstruktionsmanager 310 von BILD 3 kann von jedem Typ bzw. jeder Art und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Aktions-Primitivsequenzen und/oder Aktions-Primitivsequenzdaten, auf die der Konstruktionsleiter 310 zugreift, die er bestimmt, erzeugt und/oder verarbeitet, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem nachstehend beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Der Beispielspeicher 338 des Bauleiters 310 von BILD 3 erzeugt eine Objekt-zu-Ziel-Karte auf der Grundlage der durch die Standortzielbestimmung 334 von BILD 3 bestimmten Objektstandortziele und der zugehörigen Montageziele, die durch die Montagezielbestimmung 336 von BILD 3 bestimmt werden, und ferner auf der Grundlage der Anfangsstandorte der Objekte (z.B. physische Objekte), die zur Konstruktion einer Baugruppe von Objekten verwendet werden sollen. Beispielsweise kann der Objekt-zu-Ziel-Mapper 338 eine Objekt-zu-Ziel-Karte erzeugen, die die jeweiligen physischen Objekte mit entsprechenden Anfangsstandorten logisch zu und/oder mit den jeweiligen Standortzielen der Objekte und den entsprechenden zugehörigen Montagezielen zuordnet, verknüpft und/oder assoziiert. Der Objekt-zu-Ziel-Mapper 338 von BILD 3 kann von jedem Typ und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Objekt-zu-Ziel-Abbildungen und/oder Objekt-zu-Ziel-Abbildungsdaten, auf die der Objekt-zu-Ziel-Mapper 338 zugreift, die von ihm und/oder am Objekt-zu-Ziel-Mapper 338 erzeugt und/oder verarbeitet werden, können von beliebiger Menge, Typ, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
13 zeigt eine Beispielobjekt-zu-Ziel-Karte 1300, die mit dem Beispielobjekt-zu-Ziel-Mapper 338 aus 3 erzeugt wurde. In dem illustrierten Beispiel von BILD 13 basiert die Objekt-zu-Ziel-Karte 1300 auf logischen Zuordnungen, Verknüpfungen und/oder Assoziationen, die (z.B. durch den Objekt-zu-Ziel-Mapper 338) zwischen physikalischen Beispielobjekten (z.B, ein erstes Beispielobjekt 1302, ein zweites Beispielobjekt 1304, ein drittes Beispielobjekt 1306 und ein viertes Beispielobjekt 1308) mit entsprechenden Anfangsstandorten und Beispielobjekt-Standortzielen (z.B. ein erstes Beispielobjekt-Standortziel 1310, ein zweites Beispielobjekt-Standortziel 1312, ein drittes Beispielobjekt-Standortziel 1314 und ein viertes Beispielobjekt-Standortziel 1316) mit entsprechenden zugehörigen Montagezielen. Wie in 13 gezeigt, enthält die Objekt-zu-Ziel-Karte 1300 eine erste Beispielassoziation 1318, die zwischen dem ersten Objekt 1302 und dem ersten Objektstandortziel 1310 erzeugt und/oder gebildet wird, eine zweite Beispielassoziation 1320, die zwischen dem zweiten Objekt 1304 und dem zweiten Objektstandortziel 1312 erzeugt und/oder gebildet wird, eine dritte Beispielassoziation 1322, die zwischen dem dritten Objekt 1306 und dem dritten Objektstandortziel 1314 erzeugt und/oder gebildet wird, und eine vierte Beispielassoziation 1324, die zwischen dem vierten Objekt 1308 und dem vierten Objektstandortziel 1316 erzeugt und/oder gebildet wird.
-
Der Beispiel-Platzierungsreihenfolgebestimmer 340 des Bauleiters 310 von BILD 3 bestimmt eine Objektplatzierungsreihenfolge auf der Grundlage der Objekt-zu-Ziel-Karte, die vom Objekt-zu-Ziel-Mapper 338 von BILD 3 erzeugt wurde. Beispielsweise kann der Platzierungsreihenfolge-Bestimmer 340 eine Objektplatzierungsreihenfolge erzeugen, die den jeweiligen Objekten der über die Objekt-zu-Ziel-Karte abgebildeten Objekt-zu-Ziel-Paare eine logische Reihenfolge zuordnet und/oder festlegt. In einigen Beispielen ist die vom Platzierungsreihenfolge-Bestimmer 340 von BILD 3 bestimmte Objektplatzierungsfolge so optimiert, dass die jeweiligen Objekte auf einem möglichst kurzen Weg platziert werden können. Der Platzierungssequenzbestimmer 340 von BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Objektplatzierungssequenzen und/oder Objektplatzierungssequenzdaten, auf die der Platzierungssequenzbestimmer 340 zugreift, sie bestimmt, erzeugt und/oder verarbeitet, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
BILD 14 zeigt ein Beispiel für die Platzierungsreihenfolge 1400, die durch den Beispiel-Platzierungsreihenfolge-Bestimmer 340 aus BILD 3 bestimmt wird. Im illustrierten Beispiel von BILD 14 basiert die Objektplatzierungsfolge 1400 auf der oben beschriebenen Beispielkarte 1300 von BILD 13. Wie in BILD 14 gezeigt, enthält die Objektplatzierungsfolge 1400 ein erstes Beispielsegment (z.B. zeitlich und/oder in der Reihenfolge zuerst), das der vierten Assoziation 1324 der Objekt-zu-Ziel-Karte 1300 entspricht, ein zweites Beispielsegment (z.B. zeitlich und/oder in der Reihenfolge zweitens), das der dritten Assoziation 1322 der Objekt-zu-Ziel-Karte 1300 entspricht, und ein drittes Beispielsegment (z.B., ein drittes Beispielsegment (z.B. drittes in Zeit und/oder Reihenfolge), das der zweiten Assoziation 1320 der Objekt-Ziel-Karte 1300 entspricht, und ein viertes Beispielsegment (z.B. viertes in Zeit und/oder Reihenfolge), das der ersten Assoziation 1318 der Objekt-Ziel-Karte 1300 entspricht.
-
Der Beispiel-Platzierungsreihenfolge-Manager 342 des Bauleiters 310 von BILD 3 verwaltet und/oder steuert einen Verarbeitungszyklus, der mit der Objektplatzierungsreihenfolge verbunden ist, die durch den Platzierungsreihenfolge-Bestimmer 340 von BILD 3 bestimmt wird. Beispielsweise kann der Platzierungssequenz-Manager 342 für jedes Objekt, das in der durch den Platzierungssequenzbestimmer 340 von BILD 3 bestimmten Objektplatzierungssequenz enthalten ist, iterativ eine oder mehrere Operationen des Beispielzielkennzeichens 344, des primitiven Aktionssequenzbestimmers 346 und des unten beschriebenen Beispielausgabemanagers 348 von BILD 3 in geordneter und/oder sequentieller Weise aufrufen. In einigen Beispielen kann der Platzierungsreihenfolge-Manager 342 durch Vergleich der jüngsten Ausgabe des Ausgabemanagers 348 aus BILD 3 mit der durch den Platzierungsreihenfolge-Bestimmer 340 aus BILD 3 bestimmten Objektplatzierungsreihenfolge feststellen, dass ein oder mehrere in der Objektplatzierungsreihenfolge enthaltene(s) Objekt(e) noch zu verarbeiten ist/sind. Der Platzierungsreihenfolge-Manager 342 aus BILD 3 kann von jedem Typ bzw. jeder Art und/oder jeder Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Bestückungsreihenfolge-Verwaltungsdaten, auf die der Bestückungsreihenfolge-Manager 342 zugreift, die von ihm bestimmt, erzeugt und/oder verarbeitet werden, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Die Beispielzielkennung 344 des Bauleiters 310 von BILD 3 identifiziert das Montageziel für jedes Objekt, das in der durch den Platzierungsreihenfolgebestimmer 340 von BILD 3 bestimmten Objektplatzierungsfolge enthalten ist. Beispielsweise kann der Zielkennzeichner 344 ein Montageziel für ein spezifiziertes, in der Objektplatzierungssequenz enthaltenes Objekt auf der Grundlage einer Korrelation identifizieren, die von den abgebildeten Objekt-Ziel-Paaren bereitgestellt wird, die vom Objekt-Ziel-Mapper 338 von BILD 3 erzeugt wurden. Die Zielkennung 344 von BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Montageziele und/oder Montagezieldaten, auf die durch und/oder an der Zielkennung 344 zugegriffen wird, die von und/oder an der Zielkennung 344 bestimmt, identifiziert und/oder verarbeitet werden, können von beliebiger Menge, Typ, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Beispiel-Aktions-Primitivsequenzbestimmer 346 des Konstruktionsleiters 310 von BILD 3 bestimmt eine Sequenz von Aktions-Primitiven, die mit jedem durch die Zielkennung 344 von BILD 3 identifizierten Montageziel verbunden sind. Beispielsweise kann der primitive Aktionssequenzbestimmer 346 eine Sequenz von Aktions-Primitiven für ein spezifiziertes Montageziel auf der Grundlage einer Assoziation und/oder Korrelation bestimmen, die durch eine Ziel-Primitiv-Korrelationstabelle bereitgestellt wird. Der Action-Primitiv-Sequenz-Bestimmer 346 aus BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Aktions-Primitivsequenzen und/oder Aktions-Primitivsequenzdaten, auf die der Aktions-Primitivsequenzbestimmer 346 zugreift, sie bestimmt, erzeugt und/oder verarbeitet, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
zeigt ein Beispiel für eine Ziel-Primitiv-Korrelationstabelle 1500, auf die der Beispiel-Aktions-Primitiv-Sequenzbestimmer 346 aus zugreift. In dem illustrierten Beispiel von BILD 15 liefert die Korrelationstabelle 1500 zwischen Ziel und Primitivsequenz Assoziationen und/oder Korrelationen zwischen Baugruppenzielen und Sequenzen von Handlungsprimitiven. Beispielsweise assoziiert und/oder korreliert eine erste Beispielreihe 1502 der Korrelationstabelle 1500 ein erstes Montageziel (z.B. ein Montageziel „im Regal“) mit einer Sequenz von Aktions-Primitiven, die ein Objektrotations-Handlungsprimitiv enthält, dem zeitlich und/oder in der Reihenfolge ein Objekt-Pick&Place-Aktionsprimitiv folgt. Eine zweite Beispielreihe 1504 der Korrelationstabelle 1500 für die Korrelation von Ziel zu Primitiv assoziiert und/oder korreliert ein zweites Montageziel (z.B. ein Montageziel „unter dem Regal“) mit einer Sequenz von Aktions-Primitiven, die ein Objektrotations-Handlungsprimitiv enthält, dem in Zeit und/oder Sequenz ein Objekt-Push-Aktionsprimitiv folgt. Eine dritte Beispielreihe 1506 der Korrelationstabelle 1500 für die Korrelation von Ziel zu Primitiv assoziiert und/oder korreliert ein drittes Montageziel (z.B. ein Montageziel „über einem bereits im Regal befindlichen Objekt“) mit einer Sequenz von Aktions-Primitiven, die ein Objektrotations-Handlungsprimitiv enthält, dem in Zeit und/oder Sequenz ein Objekt-Pick-and-Place-Aktionsprimitiv folgt.
-
Der Beispiel-Ausgabemanager 348 des Konstruktionsleiters 310 von BILD 3 gibt jeweils eine der Sequenzen von Aktions-Primitiven aus, die durch den Aktions-PrimitivSequenzbestimmer 346 von BILD 3 bestimmt werden. Beispielsweise kann der Ausgabemanager 348 eine Sequenz von Aktions-Primitiven, die durch den Aktions-Primitivsequenzbestimmer 346 bestimmt wird, an den unten beschriebenen Beispiel-Bewegungsmanager 312 aus BILD 3 ausgeben. Der Ausgabemanager 348 aus BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Aktions-Primitivsequenzen und/oder Aktions-Primitivsequenzdaten, auf die der Output-Manager 348 zugreift, die von ihm ausgegeben und/oder verarbeitet werden, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
Der Beispiel-Bewegungsmanager 312 von BILD 3 verwaltet und/oder steuert den/die Motor(en) 302 und/oder die Bewegung(en) des Roboters 102. In einigen Beispielen befiehlt der Bewegungsmanager 312 dem Roboter 102, eine Baugruppe von Objekten auf der Grundlage der Sequenz(en) von RL-Aktions-Primitiven zu konstruieren, die vom Konstruktionsleiter 310 von BILD 3 festgelegt wurde(n). Beispielsweise kann der Bewegungsmanager 312 ein oder mehrere Signale, Befehle und/oder Instruktionen erzeugen, die einen oder mehrere Motoren 302 des Roboters 102 dazu veranlassen, den Roboter 102 gemäß der/den vom Konstruktionsleiter 310 festgelegten Sequenz(en) von RL-Aktions-Primitiven zu bewegen (z.B. Position, Neupositionierung, Orientierung, Neuausrichtung usw.) (z.B. die vom Ausgangsmanager 348 des Konstruktionsleiters 310 von BILD 3 ausgegebene(n) Sequenz(en)). In einigen Beispielen wurden die RL-Aktions-Primitive, die in der/den Sequenz(en) der Aktions-Primitive enthalten sind, zuvor vom Roboter 102 gelernt und als eine oder mehrere entsprechende Aktions-Primitiv-Richtlinien in der Bibliothek der Aktions-Primitiv-Richtlinien gespeichert, die vom Entwickler der Richtlinien-Bibliothek 306 von 3 entwickelt wurde. In solchen Beispielen kann der Bewegungsmanager 312 von BILD 3 auf die primitiven Handlungsrichtlinien zugreifen, die der/den Sequenz(en) der RL-Aktions-Primitive entsprechen, und Signale, Befehle und/oder Instruktionen erzeugen, die den/die Motor(en) 302 des Roboters veranlassen, solche primitiven Handlungsrichtlinien zu implementieren, aufzurufen und/oder auszuführen, um die physische Anordnung von Objekten zu konstruieren. Gesteuerte Bewegungen des Roboters 102 über den/die Motor(en) 302 von BILD 3, gemäß der/den vom Konstruktionsleiter 310 von BILD 3 festgelegten Sequenz(en) und/oder als Reaktion auf das/die Signal(e), den/die Befehl(e) und/oder die Instruktion(en), die vom Bewegungsleiter 312 von BILD 3 erzeugt werden, führen dazu, dass der Roboter 102 eine Baugruppe von Objekten konstruiert, die der Baugruppe von Objekten entspricht, die in dem vom Zerlegungsleiter 308 von BILD 3 zerlegten (z.B. zerlegten) Bild dargestellt sind und/oder durch dieses Bild repräsentiert werden. Der Bewegungsmanager 312 von BILD 3 kann durch jeden Typ und/oder jede Anzahl von Halbleiterbauelementen (z.B. Mikroprozessor(en), Mikrocontroller(n) usw.) implementiert werden. Bewegungssignal(e), Befehl(e), Anweisung(en) und/oder Daten, auf die der Bewegungsmanager 312 zugreift, die von ihm und/oder am Bewegungsmanager 312 erzeugt und/oder verarbeitet werden, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem unten beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
-
BILD 16 zeigt eine erste Beispielsequenz 1600 von Aktions-Primitiven, die durch den Beispiel-Aktions-Primitivsequenz-Bestimmer 346 von BILD 3 bestimmt, durch den Beispiel-Ausgabemanager 348 von BILD 3 ausgegeben und/oder durch den Beispiel-Bewegungsmanager 312 von BILD 3 aufgerufen wird. Im illustrierten Beispiel von BILD 16 enthält die erste Sequenz 1600 von Aktionsprimitiven das Beispielobjekt Rotate Action Primitive 700 von BILD 7, gefolgt von dem Beispielobjekt Pick-and-Place Action Primitive 500 von BILD 5. Wie in BILD 16 weiter dargestellt, kann der Bewegungsmanager 312 von BILD 3 die erste Sequenz 1600 von Aktionsprimitiven implementieren, indem er die Objektrotationspolitik 406 von BILD 4 und 7 aufruft und/oder ausführt und anschließend die Objektbestückungspolitik 402 von BILD 4 und 5 aufruft und/oder ausführt.
-
17 zeigt eine zweite Beispielsequenz 1700 von Aktionsprimitiven, die durch den Beispiel-Aktions-Primitivsequenzbestimmer 346 von 3 bestimmt, vom Beispiel-Ausgabemanager 348 von 3 ausgegeben und/oder durch den Beispiel-Bewegungsmanager 312 von 3 aufgerufen wird. Im illustrierten Beispiel von BILD 17 enthält die zweite Sequenz 1700 von Aktionsprimitiven das Beispielobjekt Rotate Action Primitive 700 von BILD 7, gefolgt von dem Beispielobjekt Push Action Primitive 600 von BILD 6. Wie in BILD 17 weiter dargestellt, kann der Bewegungsmanager 312 von BILD 3 die zweite Sequenz 1700 von Aktionsprimitiven implementieren, indem er die Objektrotationspolitik 406 von BILD 4 und 7 aufruft und/oder ausführt und anschließend die Objektstoßpolitik 404 von BILD 4 und 6 aufruft und/oder ausführt. Die Beispielbenutzerschnittstelle 314 von 3 erleichtert die Interaktion und/oder Kommunikation zwischen einem Endbenutzer und dem Roboter 102. Die Benutzerschnittstelle 314 enthält ein oder mehrere Eingabegerät(e) 350, über die der Benutzer Informationen und/oder Daten in den Roboter 102 eingeben kann. Das/die Eingabegerät(e) 350 kann/können z.B. eine Taste, einen Schalter, ein Mikrofon und/oder einen Touchscreen umfassen, die es dem Benutzer ermöglichen, Daten und/oder Befehle an den Entwickler der Beispielrichtlinienbibliothek 306, den Beispielzerlegungsmanager 308, den Beispielbauleiter 310 und/oder den Beispielbewegungsmanager 312 von BILD 3 und/oder, allgemeiner, an den Roboter 102 von BILD 1-3 und 5-8 zu übermitteln. Die Benutzerschnittstelle 314 von BILD 3 enthält auch ein oder mehrere Ausgabegerät(e) 352, über das/die die Benutzerschnittstelle 314 dem Benutzer Informationen und/oder Daten in visueller und/oder akustischer Form präsentiert. Die Ausgabeeinrichtung(en) 352 kann (können) beispielsweise eine Leuchtdiode, einen Berührungsbildschirm und/oder eine Flüssigkristallanzeige zur Darstellung visueller Informationen und/oder einen Lautsprecher zur Darstellung akustischer Informationen enthalten. Daten und/oder Informationen, die über die Benutzerschnittstelle 314 präsentiert und/oder empfangen werden, können von beliebiger Menge, Art, Form und/oder Format sein und in einem computerlesbaren Speichermedium wie dem nachstehend beschriebenen Beispielspeicher 316 von BILD 3 gespeichert werden.
Der Beispielspeicher 316 von BILD 3 kann durch jeden Typ und/oder jede Anzahl von Speichergeräten wie z.B. ein Speicherlaufwerk, einen Flash-Speicher, einen Nur-Lese-Speicher (ROM), einen Direktzugriffsspeicher (RAM), einen Cache und/oder jedes andere physikalische Speichermedium, in dem Informationen für eine beliebige Dauer (z.B. für längere Zeiträume, permanent, kurze Instanzen, zur vorübergehenden Pufferung und/oder zum Caching der Informationen) gespeichert werden, implementiert werden. Die im Speicher 316 gespeicherten Informationen können in jedem Datei- und/oder Datenstrukturformat, Organisationsschema und/oder Anordnung gespeichert werden. In einigen Beispielen speichert der Speicher 316 Bilder und/oder Bilddaten, die von der Kamera 304 von BILD 3 erfasst wurden. In einigen Beispielen speichert der Speicher 316 Aktions-Primitive, Aktions-Primitivdaten, Aktions-Primitivrichtlinien und/oder Aktions-Primitivrichtliniendaten, auf die der Entwickler der Richtlinienbibliothek 306 von zugreift, sie erzeugt und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 RL-Aktions-Primitive und/oder RL-Aktions-Primitivdaten, auf die der Entwickler 318 von zugreift, die von ihm ausgewählt und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 action primitive Richtlinien, action primitive Richtliniendaten und/oder RL-Algorithmen, auf die der Richtliniengenerator 320 von BILD 3 zugreift, sie aufruft, anwendet, generiert, trainiert und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 optimierte primitive Handlungsrichtlinien und/oder Daten zur Optimierung von Handlungsrichtlinien, auf die der Richtlinienoptimierer 322 von zugreift, sie generiert und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 Bibliotheksverwaltungsdaten, auf die der Bibliotheksverwalter 324 von BILD 3 zugreift, die von ihm erzeugt und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 Zerlegungsdaten und/oder Zerlegungsalgorithmen, auf die der Zerlegungsmanager 308 von 3 zugreift, sie aufruft, anwendet, erzeugt und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 Bilder und/oder Bilddaten, auf die vom und/oder im Bildmanager 326 von BILD 3 zugegriffen wird, die von diesem abgerufen, empfangen und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 Objektdaten und/oder Objekterkennungsalgorithmen, auf die zugegriffen wird, die implementiert, aufgerufen, angewendet, erkannt, identifiziert und/oder verarbeitet werden durch und/oder am Objektdetektor 328 von BILD 3. In einigen Beispielen speichert der Speicher 316 Konturkarten und/oder Konturkartendaten, auf die der Kartengenerator 330 von BILD 3 und 9 zugreift, sie erzeugt und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 konvertierte Bilder (z.B. Graustufenbilder) und/oder konvertierte Bilddaten (z.B. Graustufenbilddaten), auf die der Bildwandler 902 von BILD 9 zugreift, sie erzeugt und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 Pixel-Intensitäten, Pixel-Intensitätsdaten und/oder Binarisierungsalgorithmen, auf die zugegriffen wird, die implementiert, aufgerufen, angewendet, bestimmt, detektiert, erzeugt und/oder verarbeitet werden durch und/oder am Pixel-Intensitätsdetektor 904 von BILD 9. In einigen Beispielen speichert der Speicher 316 adaptiv geschätzte Pixel-Intensitätswerte, adaptiv geschätzte Pixel-Intensitätswertdaten und/oder adaptive Schwellwert-Algorithmen, auf die durch und/oder am Schwellenwert-Detektor 906 von BILD 9 zugegriffen, implementiert, aufgerufen, angewendet, erzeugt und/oder verarbeitet wird. In einigen Beispielen speichert der Speicher 316 Bereichsdaten (z.B. Pixelkoordinaten, die Bereiche definieren) von übereinstimmenden Pixel-Intensitätswerten (z.B. übereinstimmender adaptiver Schwellenwert-Pixel-Intensitätswert), die vom und/oder am Pixel-Intensitätskomparator 908 von BILD 9 abgerufen, bestimmt, erkannt, erzeugt und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 Konturen und/oder Konturdaten, die vom und/oder am Konturgenerator 910 von BILD 9 abgerufen, erzeugt und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 semantische Segmentierungen, semantische Segmentierungsdaten und/oder semantische Segmentierungsalgorithmen, auf die der Segmentierungsgenerator 332 von BILD 3 zugreift, sie implementiert, aufruft, anwendet, erzeugt und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 Objektpositionen, Objektpositionsdaten und/oder geometriebasierte Packungsalgorithmen, auf die vom und/oder am Positionszielbestimmer 334 von BILD 3 zugegriffen, implementiert, aufgerufen, angewendet, bestimmt, erzeugt und/oder verarbeitet wird. In einigen Beispielen speichert der Speicher 316 Montageziele, Montagezieldaten und/oder Objektlokalisierungsalgorithmen, auf die durch und/oder am Montagezielbestimmer 336 von BILD 3 zugegriffen, implementiert, aufgerufen, angewendet, bestimmt, erzeugt und/oder verarbeitet wird. In einigen Beispielen speichert der Speicher 316 Aktions-Primitivsequenzen und/oder Aktions-Primitivsequenzdaten, auf die der Konstruktionsleiter 310 von BILD 3 zugreift, sie bestimmt, generiert und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 Objekt-zu-Ziel-Karten und/oder Objekt-zu-Ziel-Kartendaten, auf die der Objekt-zu-Ziel-Mapper 338 von BILD 3 zugreift, die von ihm und/oder bei ihm erzeugt und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 Objekt-Platzierungssequenzen und/oder Objekt-Platzierungssequenzdaten, auf die der Platzierungssequenzbestimmer 340 von BILD 3 zugreift, sie bestimmt, erzeugt und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 Platzierungssequenzverwaltungsdaten, auf die der Platzierungssequenzverwalter 342 von BILD 3 zugreift, sie bestimmt, erzeugt und/oder verarbeitet. In einigen Beispielen speichert der Speicher 316 Montageziele und/oder Montagezieldaten, auf die von und/oder am Zielkennzeichen 344 von 3 zugegriffen wird, die von und/oder am Zielkennzeichen 344 von 3 bestimmt, identifiziert und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 Aktionsprimitivsequenzen und/oder Aktionsprimitivsequenzdaten, auf die von und/oder am Aktionsprimitivsequenzbestimmer 346 von BILD 3 zugegriffen wird, die von und/oder am Aktionsprimitivsequenzbestimmer 346 von BILD 3 bestimmt, erzeugt und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 Aktions-Primitivsequenzen und/oder Daten von Aktions-Primitivsequenzen, auf die der Ausgabemanager 348 von BILD 3 zugreift, die von ihm ausgegeben und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 Bewegungssignal(e), Befehl(e), Anweisung(en) und/oder Daten, auf die der Bewegungsmanager 312 von BILD 3 zugreift, die von ihm erzeugt und/oder verarbeitet werden. In einigen Beispielen speichert der Speicher 316 Daten und/oder Informationen, die über die Benutzerschnittstelle 314 von BILD 3 präsentiert und/oder empfangen werden.
-
Der Speicher 316 von BILD 316 speichert Daten und/oder Informationen, die über die Benutzerschnittstelle 314 von BILD 3. 3 ist zugänglich für den/die Motor(en) 302, die Kamera 304, den Richtlinienbibliotheks-Entwickler 306 (einschließlich des Action-Primitiv-Selektors 318, des Richtliniengenerators 320, des Richtlinienoptimierers 322 und des Bibliotheksmanagers 324), den Zerlegungsmanager 308 (einschließlich des Bildmanagers 326, des Objektdetektors 328, des Kartengenerators 330, des Segmentierungsgenerators 332, des Ortszielbestimmers 334, und der Montagezielbestimmer 336), der Konstruktionsmanager 310 (einschließlich des Objekt-zu-Ziel-Mappers 338, des Platzierungssequenzbestimmers 340, des Platzierungssequenzmanagers 342, des Zielkennzeichens 344, des Aktionsprimitivsequenzbestimmers 346 und des Ausgabemanagers 348), des Bewegungsmanagers 312 und/oder der Benutzerschnittstelle 314 (einschließlich des/der Eingabegerätes/e 350 und des/der Ausgabegerätes/e 352) von BILD 314.3, und/oder, allgemeiner, zum Roboter 102 von 1-3 und 5-8.
-
Der Motor (die Motoren) 302 von BILD 3 ist (sind) ein Mittel zum Bewegen des Roboters 102 von BILD 1-3 und 5-8. Die Kamera 304 von 3 ist ein Mittel zur Aufnahme von Bildern. Der Entwickler der Policy-Bibliothek 306 von BILD 3 ist ein Mittel zur Entwicklung einer Bibliothek mit primitiven Handlungsrichtlinien, die eine oder mehrere primitive Handlungsrichtlinien enthält, die vom Roboter 102 von BILD 1-3 und 5-8 gelernt wurden. Der Selektor für Aktionsprimitive 318 von ist ein Mittel zur Auswahl eines RL-Aktionsprimitivs des Roboters 102 von und . Der Richtliniengenerator 320 von ist ein Mittel zum Trainieren einer primitiven Richtlinie, die einem RL-Algorithmus-Aktions-Primitiv entspricht, das durch den Aktions-Primitiv-Selektor 318 von ausgewählt wurde. Der Richtlinienoptimierer 322 von BILD 3 ist ein Mittel zur Optimierung einer primitiven Handlungsrichtlinie, die vom Richtliniengenerator 320 von BILD 3 trainiert wird. Der Bibliotheksverwalter 324 von BILD 3 ist ein Mittel zur Verwaltung einer Bibliothek mit Action Primitive Policy, die von dem Entwickler der Policy-Bibliothek 306 von BILD 3 entwickelt wurde.
Der Zerlegungsmanager 308 von 3 ist ein Mittel zur Zerlegung eines Bildes einer Anordnung von Objekten in Objektpositionsziele und zugehörige Anordnungsziele, die der im Bild dargestellten Anordnung von Objekten entsprechen. Der Bildmanager 326 von BILD 3 ist ein Mittel zur Verwaltung des Betriebs der Kamera 304 von BILD 3 und/oder zur Verwaltung des Prozesses der Bildgewinnung. Der Objektdetektor 328 von BILD 3 ist ein Mittel zum Erkennen eines oder mehrerer Objekte, die in einem Bild einer Anordnung von Objekten dargestellt sind, das durch den Bildmanager 326 von BILD 3 erhalten wurde. Der Kartengenerator 330 von BILD 3 ist ein Mittel zur Erzeugung einer Konturkarte für Objekte, die durch den Objektdetektor 328 von BILD 3 in einem Bild einer Anordnung von Objekten, das durch den Bildmanager 326 von BILD 3 erhalten wurde, erkannt werden. Der Bildwandler 902 von BILD 9 ist ein Mittel zur Umwandlung eines vom Bildmanager 326 von BILD 3 erhaltenen Bildes in ein Graustufenbild. Der Pixel-Intensitätsdetektor 904 von BILD 9 ist ein Mittel zur Erkennung von Pixel-Intensitätswerten für Pixel eines Graustufenbildes, das durch den Bildwandler 902 von BILD 9 erzeugt wurde. Der Schwellwertgeber 906 von BILD 9 ist ein Mittel zur adaptiven Schwellwertbestimmung von Pixel-Intensitätswerten, die vom Pixel-Intensitätsdetektor 904 von BILD 9 bestimmt werden. Der Pixel-Intensitätskomparator 908 von BILD 9 ist ein Mittel zur Erkennung von Bereichen mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten, die durch den Schwellenwert-Halter 906 von BILD 9 adaptiv geschwellt wurden. Der Konturgenerator 910 von BILD 9 ist ein Mittel zur Erzeugung von Konturen auf der Grundlage von Bereichen mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten, die durch den Pixel-Intensitätskomparator 908 von BILD 9 erkannt wurden. Der Segmentierungsgenerator 332 von BILD 3 ist ein Mittel zur Erzeugung einer semantischen Segmentierung für Objekte, die durch den Objektdetektor 328 von BILD 3 in einem Bild einer Anordnung von Objekten, das durch den Bildmanager 326 von BILD 3 erhalten wurde, erkannt wurden. Der Standortzielbestimmer 334 von BILD 3 ist ein Mittel zur Bestimmung von Objekt-Standortzielen für die jeweiligen Objekte, die durch eine vom Kartengenerator 330 von BILD 3 erzeugte Konturkarte und/oder eine vom Segmentierungsgenerator 332 von BILD 3 erzeugte semantische Segmentierung dargestellt werden. Der Montagezielbestimmer 336 von BILD 3 ist ein Mittel zur Bestimmung von Montagezielen für entsprechende Objekte, die durch eine vom Kartengenerator 330 von BILD 3 erzeugte Konturkarte und/oder eine vom Segmentierungsgenerator 332 von BILD 3 erzeugte semantische Segmentierung dargestellt werden.
-
Der Construction Manager 310 von BILD 3 ist ein Mittel zur Bestimmung einer oder mehrerer Sequenz(en) von RL-Aktions-Primitiven zur Konstruktion einer Anordnung von Objekten auf der Grundlage von Objektpositionszielen und zugehörigen Anordnungszielen, die vom Zerlegungsmanager 308 von BILD 3 bestimmt werden. Der Objekt-zu-Ziel-Mapper 338 von 3 ist ein Mittel zur Erzeugung einer Objekt-zu-Ziel-Karte auf der Grundlage von Objektpositionszielen, die durch den Ortszielbestimmer 334 von 3 bestimmt werden, und von zugehörigen Versammlungszielen, die durch den Versammlungszielbestimmer 336 von 3 bestimmt werden, und ferner auf der Grundlage von Anfangspositionen von Objekten, die zur Konstruktion einer Anordnung von Objekten verwendet werden sollen. Der Platzierungssequenzbestimmer 340 von BILD 3 ist ein Mittel zur Bestimmung einer Objektplatzierungssequenz auf der Grundlage einer Objekt-zu-Ziel-Karte, die vom Objekt-zu-Ziel-Mapper 338 von BILD 3 erzeugt wurde. Der Platzierungsreihenfolge-Manager 342 von BILD 3 ist ein Mittel zur Verwaltung eines Verarbeitungszyklus, der mit einer Objektplatzierungsreihenfolge verbunden ist, die durch den Platzierungsreihenfolge-Bestimmer 340 von BILD 3 bestimmt wird. Der Zielkennzeichner 344 von BILD 3 ist ein Mittel zur Identifizierung eines Montageziels für jedes Objekt, das in einer Objektplatzierungssequenz enthalten ist, die durch den Platzierungssequenzbestimmer 340 von BILD 3 bestimmt wird. Der Aktionsprimitiv-Sequenzbestimmer 346 von 3 ist ein Mittel zur Bestimmung einer Sequenz von Aktionsprimitiven, die mit jedem durch die Zielkennung 344 von 3 identifizierten Montageziel verbunden sind. Der Ausgabemanager 348 von 3 ist ein Mittel zur Ausgabe einer oder mehrerer Sequenz(en) von Aktions-Primitiven, die durch den Aktions-Primitivsequenz-Bestimmer 346 von 3 bestimmt wird (werden).
-
Der Bewegungsmanager 312 von BILD 3 ist ein Mittel zur Steuerung des Motors (der Motoren) 302 und/oder der Bewegung(en) des Roboters 102 von BILD 1-3 und 5-8. Die Benutzerschnittstelle 314 von BILD 3 ist ein Mittel zur Erleichterung von Interaktionen und/oder Kommunikation zwischen einem Endbenutzer und dem Roboter 102 von BILD 1-3 und 5-8. Das/die Eingabegerät(e) 350 von BILD 3 ist/sind ein Mittel zur Eingabe von Informationen und/oder Daten in den Roboter 102 der BILDER 1-3 und 5-8. Das/die Ausgabegerät(e) 352 von 3 ist/sind ein Mittel zur Darstellung von Informationen und/oder Daten in visueller und/oder akustischer Form über den Roboter 102 von 1-3 und 5-8. Der Speicher 316 von 3 ist ein Mittel zur Speicherung von Informationen und/oder Daten.
Während eine beispielhafte Art und Weise der Implementierung des Roboters 102 in BILD 1-3 und 5-8 dargestellt ist, können ein oder mehrere der in BILD 1-3 und 5-8 dargestellten Elemente, Prozesse und/oder Vorrichtungen kombiniert, geteilt, neu angeordnet, weggelassen, eliminiert und/oder auf andere Weise implementiert werden. Weiterhin der/die Beispielmotor(en) 302, die Beispielkamera 304, der Beispielbibliotheksentwickler 306, der Zerlegungsmanager 308, der Konstruktionsmanager 310, der Bewegungsmanager 312, die Benutzerschnittstelle 314, der Speicher 316, der primitive Aktionsselektor 318, der Richtliniengenerator 320, der Richtlinienoptimierer 322, der Bibliotheksmanager 324, der Bildmanager 326, der Objektdetektor 328, der Kartengenerator 330, der Segmentierungsgenerator 332, der Ortszielbestimmer 334, das Beispiel Montagezielbestimmer 336, das Beispiel Objekt-zu-Ziel-Mapper 338, das Beispiel Platzierungssequenzbestimmer 340, das Beispiel Platzierungssequenzmanager 342, das Beispiel Zielkennung 344, das Beispiel Aktionsprimitivsequenzbestimmer 346, das Beispiel Ausgabemanager 348, das/die Beispieleingabegerät(e) 350, das/die Beispielausgabegerät(e) 352, der Beispielbildwandler 902, der Beispielpixelintensitätsdetektor 904, der Beispielschwellenwertgeber 906, der Beispielpixelintensitätskomparator 908 und der Beispielkonturgenerator 910 und/oder, allgemeiner, der Beispielroboter 102 von 1-3 und 5-8 können durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. So z.B. jeder der Beispielmotoren 302, die Beispielkamera 304, der Beispielbibliotheksentwickler 306, der Beispielszerlegungsmanager 308, der Beispielkonstruktionsmanager 310, der Beispielbewegungsmanager 312, die Beispielbenutzerschnittstelle 314, der Beispielspeicher 316, der Beispielsaktionsprimitivselektor 318, der Beispielsrichtliniengenerator 320, der Beispielsrichtlinienoptimierer 322, der Beispielbibliotheksmanager 324, der Beispielbildmanager 326, der Beispielobjektdetektor 328, der Beispielkartengenerator 330, der Beispielsegmentierungsgenerator 332, der Beispielsortierzielbestimmer 334, das Beispiel Montagezielbestimmer 336, das Beispiel Objekt-zu-Ziel-Mapper 338, das Beispiel Platzierungssequenzbestimmer 340, das Beispiel Platzierungssequenzmanager 342, das Beispiel Zielkennung 344, das Beispiel Aktionsprimitivsequenzbestimmer 346, das Beispiel Ausgabemanager 348, das/die Beispieleingabegerät(e) 350, das/die Beispielausgabegerät(e) 352, der Beispielbildwandler 902, der Beispielpixelintensitätsdetektor 904, der Beispielschwellenwertgeber 906, der Beispielpixelintensitätskomparator 908 und der Beispielkonturgenerator 910 und/oder, allgemeiner, der Beispielroboter 102 von 1-3 und 5-8 könnten durch eine oder mehrere analoge oder digitale Schaltung(en), Logikschaltung(en), programmierbaren Prozessor(en), programmierbare Steuerung(en), Grafikverarbeitungseinheit(en) (GPU(s)), digitalen Signalprozessor(en) (DSP(s)), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikbausteine (PLD(s)) und/oder feldprogrammierbare Logikbausteine (FPLD(s)) implementiert werden. Beim Lesen eines der Geräte- oder Systemansprüche dieses Patents, die eine reine Software- und/oder Firmware-Implementierung abdecken, muss mindestens einer der Beispielmotoren 302, der Beispielkamera 304, des Beispielbibliotheksentwicklers 306, des Beispielzerlegungsmanagers 308, des Beispielbaumanagers 310, des Bewegungsmanagers 312, der Beispielbenutzerschnittstelle 314, des Beispielspeichers 316, des Aktionsprimitivselektors 318, des Beispielsrichtliniengenerators 320, des Beispielsrichtlinienoptimierers 322, des Beispielbibliotheksmanagers 324, des Beispielbildmanagers 326, des Beispielobjektdetektors 328, des Beispielkartengenerators 330, den Beispielsegmentierungsgenerator 332, den Beispielsort Zielbestimmer 334, den Beispielbestückungszielbestimmer 336, den Beispielsobjekt-zu-Ziel-Mapper 338, den Beispielsplatzierungssequenzbestimmer 340, den Beispielsplatzierungssequenzverwalter 342, den Beispielzielkennzeichner 344, den Beispielsaktionsprimitivsequenzbestimmer 346, den Beispiel-Ausgabemanager 348, das/die Beispiel-Eingabegerät(e) 350, das/die Beispiel-Ausgabegerät(e) 352, den Beispiel-Bildwandler 902, den Beispiel-Pixelintensitätsdetektor 904, den Beispiel-Schwellenwertgeber 906, den Beispiel-Pixelintensitätskomparator 908 und/oder den Beispiel-Konturgenerator 910 von 1-3 und 5-8 ist/sind hiermit ausdrücklich so definiert, dass sie ein nicht vorübergehendes computerlesbares Speichergerät oder eine Speicherplatte wie einen Speicher, eine digitale vielseitige Platte (DVD), eine Kompaktplatte (CD), eine Blu-ray-Disk usw. einschließlich der Software und/oder Firmware umfassen. Ferner noch der/die Beispielmotor(en) 302, die Beispielkamera 304, der Beispielrichtlinien-Bibliotheksentwickler 306, der Beispiel-Zerlegungsmanager 308, der Beispiel-Konstruktionsmanager 310, der Beispiel-Bewegungsmanager 312, die BeispielBenutzerschnittstelle 314, der Beispiel-Speicher 316, der Beispiel-Aktions-Primitivselektor 318, der Beispiel-Richtliniengenerator 320, der Beispiel-Richtlinienoptimierer 322, der Beispiel-Bibliotheksmanager 324, der Beispiel-Bild-Manager 326, der BeispielObjektdetektor 328, der Beispiel-Kartengenerator 330, der BeispielSegmentierungsgenerator 332, der Beispiel-Standortziel-Bestimmer 334, das Beispiel Montagezielbestimmer 336, das Beispiel Objekt-zu-Ziel-Mapper 338, das Beispiel Platzierungssequenzbestimmer 340, das Beispiel Platzierungssequenzmanager 342, das Beispiel Zielkennung 344, das Beispiel Aktionsprimitivsequenzbestimmer 346, das Beispiel Ausgabemanager 348, das/die Beispieleingabegerät(e) 350, das/die Beispielausgabegerät(e) 352, der Beispielbildwandler 902, der Beispielpixelintensitätsdetektor 904, der Beispielschwellenwertgeber 906, der Beispielpixelintensitätskomparator 908 und der Beispielkonturgenerator 910 und/oder, allgemeiner, der Beispielroboter 102 von FIGS. Die und können ein oder mehrere Elemente, Verfahren und/oder Geräte zusätzlich zu oder anstelle der in den und dargestellten Elemente, Verfahren und/oder Geräte enthalten und/oder mehr als eines oder alle der dargestellten Elemente, Verfahren und Geräte enthalten. Der Ausdruck „in Kommunikation“, wie er hier verwendet wird, schließt direkte Kommunikation und/oder indirekte Kommunikation über eine oder mehrere Zwischenkomponente(n) ein und erfordert keine direkte physische (z.B. verdrahtete) Kommunikation und/oder konstante Kommunikation, sondern schließt zusätzlich selektive Kommunikation in periodischen Abständen, geplanten Abständen, aperiodischen Abständen und/oder einmaligen Ereignissen ein.
-
Flussdiagramme, die Beispiele für Hardware-Logik, maschinenlesbare Befehle, hardwareimplementierte Zustandsautomaten und/oder eine beliebige Kombination davon zur Implementierung des Roboters 102 der BILDER 1-3 und 5-8 darstellen, sind in BILDER 18-22 dargestellt. Bei den maschinenlesbaren Befehlen kann es sich um ein oder mehrere ausführbare Programme oder Teile von ausführbaren Programmen zur Ausführung durch einen Computerprozessor wie den Beispielprozessor 2302 handeln, der in dem unten in Verbindung mit 23 besprochenen Beispielprozessor Plattform 2300 gezeigt wird. Das/die Programm(e) kann/können in Software verkörpert sein, die auf einem nicht vorübergehenden, computerlesbaren Speichermedium wie einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einer Blu-ray-Disk oder einem dem Prozessor 2302 zugeordneten Speicher gespeichert ist, aber das gesamte Programm/die gesamten Programme und/oder Teile davon können alternativ auch von einem anderen Gerät als dem Prozessor 2302 ausgeführt werden und/oder in Firmware oder spezieller Hardware verkörpert sein. Obwohl das (die) Beispielprogramm(e) unter Bezugnahme auf die in dargestellten Flussdiagramme beschrieben ist (sind), können alternativ viele andere Methoden zur Implementierung des Beispielroboters 102 aus und verwendet werden. Beispielsweise kann die Reihenfolge der Ausführung der Blöcke geändert werden, und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können einige oder alle Blöcke durch eine oder mehrere Hardwareschaltung(en) (z.B. diskrete und/oder integrierte analoge und/oder digitale Schaltungen, ein FPGA, ein ASIC, ein Komparator, ein Operationsverstärker (OP-Verstärker), eine Logikschaltung usw.) implementiert werden, die so strukturiert sind, dass sie die entsprechende Operation ohne Ausführung von Software oder Firmware durchführen. Die hierin beschriebenen maschinenlesbaren Anweisungen können in einem oder mehreren komprimierten, verschlüsselten, fragmentierten oder gepackten Formaten usw. gespeichert werden. Die hier beschriebenen maschinenlesbaren Anweisungen können als Daten (z.B. Teile von Anweisungen, Code, Code-Darstellungen usw.) gespeichert werden, die zur Erstellung, Herstellung und/oder Produktion von maschinenausführbaren Anweisungen verwendet werden können. Beispielsweise können die maschinenlesbaren Anweisungen fragmentiert und auf einem oder mehreren Speichergeräten und/oder Computergeräten (z.B. Servern) gespeichert werden. Die maschinenlesbaren Anweisungen können eine oder mehrere Installationen, Modifikationen, Anpassungen, Aktualisierungen, Kombinationen, Ergänzungen, Konfigurationen, Entschlüsselungen, Dekomprimierungen, Entpackungen, Verteilungen, Neuzuweisungen usw. erfordern, um sie direkt durch ein Rechengerät und/oder eine andere Maschine lesbar und/oder ausführbar zu machen. Beispielsweise können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert werden, die einzeln komprimiert, verschlüsselt und auf getrennten Rechengeräten gespeichert werden, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und kombiniert werden, einen Satz ausführbarer Anweisungen bilden, die ein Programm wie das hier beschriebene implementieren. In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert werden, in dem sie von einem Computer gelesen werden können, aber die Hinzufügung einer Bibliothek (z.B. einer Dynamic Link Library (DLL)), eines Software Development Kit (SDK), einer Anwendungsprogrammier-Schnittstelle (API) usw. erfordern, um die Anweisungen auf einem bestimmten Computergerät oder einer anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen möglicherweise konfiguriert werden (z.B. gespeicherte Einstellungen, Dateneingabe, aufgezeichnete Netzwerkadressen usw.), bevor die maschinenlesbaren Anweisungen und/oder das/die entsprechende(n) Programm(e) ganz oder teilweise ausgeführt werden können. Die offengelegten maschinenlesbaren Befehle und/oder das/die entsprechende(n) Programm(e) sollen daher solche maschinenlesbaren Befehle und/oder Programme unabhängig vom besonderen Format oder Zustand der maschinenlesbaren Befehle und/oder Programme bei der Speicherung oder anderweitig im Ruhezustand oder während der Übertragung umfassen.
Wie oben erwähnt, können die Beispielprozesse der mit Hilfe von ausführbaren Befehlen (z.B. Computer- und/oder maschinenlesbare Befehle) implementiert werden, die auf einem nichtflüchtigen Computer und/oder maschinenlesbaren Medium wie einem Festplattenlaufwerk, einem Flash-Speicher, einem Nur-Lese-Speicher, einer Kompaktplatte, einer digitalen vielseitigen Platte, einem Cache, einem Direktzugriffsspeicher und/oder einem anderen Speichergerät oder einer Speicherplatte, in dem/der Informationen für eine beliebige Dauer gespeichert werden, gespeichert sind (z.B, für längere Zeiträume, dauerhaft, für kurze Zeiträume, zur vorübergehenden Pufferung und/oder zum Caching der Informationen). Der hier verwendete Begriff des nicht vorübergehenden computerlesbaren Mediums wird ausdrücklich definiert, um jede Art von computerlesbarem Speichergerät und/oder Speicherplatte einzuschließen und um sich ausbreitende Signale und Übertragungsmedien auszuschließen.
-
„Einschließlich‟ und „umfassend“ (und alle Formen und Zeitformen davon) werden hier als offene Begriffe verwendet. Wann immer ein Anspruch irgendeine Form von „einschließen“ oder „umfassen“ (z.B. umfassen, einschließen, einschließen, einschließen, haben, usw.) als Präambel oder innerhalb einer Anspruchs-Rezitation jeglicher Art verwendet, ist es daher so zu verstehen, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne dass sie aus dem Anwendungsbereich des entsprechenden Anspruchs oder der entsprechenden Rezitation herausfallen. Wenn, wie hier verwendet, der Ausdruck „mindestens“ als Übergangsbegriff z.B. in der Präambel eines Anspruchs verwendet wird, ist er in der gleichen Weise offen, wie die Begriffe „umfassen“ und „einschließen“ offen sind. Der Begriff „und/oder“ bezieht sich, wenn er beispielsweise in einer Form wie A, B und/oder C verwendet wird, auf jede Kombination oder Teilmenge von A, B, C wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C. Wie hier im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, soll sich der Ausdruck „mindestens eines von A und B“ auf Implementierungen beziehen, die (1) mindestens ein A, (2) mindestens ein B und (3) mindestens ein A und mindestens ein B enthalten. Ähnlich wie hier im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, soll sich der Ausdruck „mindestens eines von A oder B“ auf Implementierungen beziehen, die (1) mindestens ein A, (2) mindestens ein B und (3) mindestens ein A und mindestens ein B enthalten. Wie hier im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll sich der Ausdruck „mindestens eines von A und B“ auf Implementierungen beziehen, die (1) mindestens ein A, (2) mindestens ein B und (3) mindestens ein A und mindestens ein B umfassen. Ähnlich wie hier im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll sich der Ausdruck „mindestens eines von A oder B“ auf Implementierungen beziehen, die (1) mindestens ein A, (2) mindestens ein B und (3) mindestens ein A und mindestens ein B enthalten.
-
BILD 18 ist ein Flussdiagramm, das die maschinenlesbaren Beispielanweisungen 1800 darstellt, die ausgeführt werden können, um den Beispielroboter 102 der BILDER 1-3 und 5-8 zu implementieren, um eine komplexe Baugruppe unter Verwendung von RL-Aktions-Primitiven zu konstruieren. Das Beispielprogramm 1800 von BILD 18 beginnt, wenn der Entwickler der Beispielrichtlinienbibliothek 306 von BILD 3 eine Bibliothek mit Aktionsprimitiven entwickelt (Block 1802). Beispielsweise kann der Entwickler der Richtlinienbibliothek 306 eine Bibliothek mit primitiven Handlungsanweisungen erstellen und/oder entwickeln, die eine oder mehrere primitive Handlungsanweisungen enthält, die (z.B. über einen RL-basierten Algorithmus) vom Roboter 102 gelernt wurden. In einigen Beispielen kann die Bibliothek für primitive Handlungsanweisungen die Beispielsrichtlinie 402 für die Objektauswahl und -platzierung, die Beispielsrichtlinie 404 für die Objektverlagerung, die Beispielsrichtlinie 406 für die Objektrotation, die Beispielsrichtlinie 408 für die Objektsortierung und/oder die andere primitive Handlungsrichtlinie 410 der Bibliothek für primitive Handlungsanweisungen 400 von enthalten. Primitive Handlungsrichtlinien, die in der Bibliothek für primitive Handlungsrichtlinien gespeichert sind, die vom Entwickler der Richtlinienbibliothek 306 von erstellt und/oder entwickelt wurden, werden jeweils von entsprechenden RL-Aktions-Primitiven (z.B. grundlegende Roboterbewegungen) des Roboters 102 abgeleitet. Ein Beispielprozess, der zur Implementierung des Blocks 1802 des Beispielprogramms 1800 von BILD 18 verwendet werden kann, wird im Zusammenhang mit BILD 19 weiter unten ausführlicher beschrieben. Nach dem Satz 1802 geht die Steuerung des Beispielprogramms 1800 von BILD 18 zum Satz 1804 über.
Im Block 1804 erhält der Beispielbildmanager 326 von BILD 3 ein Bild einer Anordnung von Objekten. Beispielsweise kann der Bildmanager 326 der Kamera 304 signalisieren, befehlen und/oder sie anweisen, ein Bild (z.B. ein Bild einer Gruppe von Objekten) zu einer bestimmten Zeit, an einem bestimmten Ort und/oder als Reaktion auf das Eintreten eines bestimmten Ereignisses zu erfassen. In einigen Beispielen signalisiert, befiehlt und/oder weist der Bildmanager 326 von BILD 3 die Kamera 304 von BILD 3 an, als Reaktion auf eine oder mehrere Benutzereingaben, die über die Benutzerschnittstelle 314 von BILD 3 empfangen werden, ein Bild aufzunehmen. In anderen Beispielen kann der Bildmanager 326 den Roboter 102 veranlassen, auf ein Bild (z.B. ein Bild einer Baugruppe von Objekten) über die Benutzerschnittstelle 314 von BILD 3 und/oder über eine Netzwerkschnittstelle des Roboters 102 zuzugreifen, es zu erhalten und/oder zu empfangen, ohne die Kamera 304 von BILD 3 zu verwenden. Nach dem Block 1804 geht die Steuerung des Beispielprogramms 1800 aus BILD 18 in den Block 1806 über.
Im Block 1806 zerlegt und/oder dekonstruiert der Beispielzerlegungsmanager 308 aus BILD 3 das Bild des Zusammenbaus von Objekten in Objektlageziele und zugehörige Montageziele. Beispielsweise kann der Zerlegungsmanager 308 das Bild der Anordnung von Objekten (z.B. über einen Zerlegungsalgorithmus) in Objektpositionsziele und zugehörige Zusammenbauziele zerlegen und/oder dekonstruieren, die der im Bild dargestellten und/oder durch das Bild repräsentierten Anordnung von Objekten entsprechen. Ein Beispielprozess, der zur Implementierung des Blocks 1806 des Beispielprogramms 1800 von BILD 18 verwendet werden kann, wird im Folgenden in Verbindung mit BILD 20 näher beschrieben. Im Anschluss an den Block 1806 geht die Steuerung des Beispielprogramms 1800 von BILD 18 in den Block 1808 über.
Im Block 1808 bestimmt der Beispielkonstruktionsleiter 310 von BILD 3 eine oder mehrere Sequenz(en) von RL-Aktions-Primitiven zur Konstruktion einer Baugruppe von Objekten auf der Grundlage der Objektpositionsziele und der zugehörigen Baugruppenziele, die vom Zerlegungsleiter 308 von BILD 3 bestimmt wurden. Zum Beispiel kann der Konstruktionsleiter 310 auf der Grundlage der durch den Ortszielbestimmer 334 des Zerlegungsleiters 308 bestimmten Objektpositionsziele und der durch den Montagezielbestimmer 336 des Zerlegungsleiters 308 bestimmten zugehörigen Montageziele eine oder mehrere Sequenz(en) von RL-Aktions-Primitiven zur Konstruktion einer Anordnung von Objekten bestimmen, die der Anordnung von Objekten entspricht, die in dem durch den Zerlegungsleiter 308 von BILD 3 zerlegten (z.B. dekonstruierten) Bild dargestellt und/oder durch dieses Bild repräsentiert wird. Ein Beispielprozess, der zur Implementierung des Blocks 1808 des Beispielprogramms 1800 von BILD 18 verwendet werden kann, wird im Zusammenhang mit BILD 21 weiter unten ausführlicher beschrieben. Nach dem Block 1808 geht die Kontrolle des Beispielprogramms 1800 von BILD 18 in den Block 1810 über.
Im Block 1810 befiehlt der Beispiel-Bewegungsmanager 312 von BILD 3 dem Roboter 102, eine Baugruppe von Objekten auf der Grundlage der vom Konstruktionsleiter 310 von BILD 3 festgelegten Sequenz(en) von RL-Aktions-Primitiven zu konstruieren. Beispielsweise kann der Bewegungsmanager 312 ein oder mehrere Signale, Befehle und/oder Instruktionen erzeugen, die einen oder mehrere der Motoren 302 des Roboters 102 veranlassen, den Roboter 102 gemäß der/den vom Konstruktionsleiter 310 festgelegten Sequenz(en) von RL-Aktions-Primitiven zu bewegen (z.B. Position, Neupositionierung, Orientierung, Neuorientierung usw.). In einigen Beispielen wurden die RL-Aktions-Primitive, die in der/den Sequenz(en) der Aktions-Primitive enthalten sind, zuvor vom Roboter 102 gelernt und als eine oder mehrere entsprechende Aktions-Primitiv-Richtlinien in der Bibliothek der Aktions-Primitiv-Richtlinien gespeichert, die vom Entwickler der Richtlinien-Bibliothek 306 von BILD 3 entwickelt wurde. In solchen Beispielen kann der Bewegungsmanager 312 von BILD 3 auf die primitiven Handlungsrichtlinien zugreifen, die der/den Sequenz(en) der RL-Aktions-Primitive entsprechen, und Signale, Befehle und/oder Instruktionen erzeugen, die den/die Motor(en) 302 des Roboters veranlassen, solche primitiven Handlungsrichtlinien zu implementieren, aufzurufen und/oder auszuführen, um die physische Anordnung von Objekten zu konstruieren. Gesteuerte Bewegungen des Roboters 102 über den/die Motor(en) 302 von BILD 3, gemäß der/den vom Konstruktionsleiter 310 von BILD 3 festgelegten Sequenz(en) und/oder als Reaktion auf das/die Signal(e), den/die Befehl(e) und/oder die Instruktion(en), die vom Bewegungsleiter 312 von BILD 3 erzeugt werden, führen dazu, dass der Roboter 102 eine Baugruppe von Objekten konstruiert, die der Baugruppe von Objekten entspricht, die in dem vom Zerlegungsleiter 308 von BILD 3 zerlegten (z.B. zerlegten) Bild dargestellt sind und/oder durch dieses Bild repräsentiert werden. Nach dem Block 1810 endet das Beispielprogramm 1800 von BILD 18.
-
BILD 19 ist ein Flussdiagramm, das die maschinenlesbaren Beispielanweisungen 1802 darstellt, die ausgeführt werden können, um den Beispielroboter 102 von BILD 1-3 und 5-8 zu implementieren, um eine Bibliothek mit primitiven Handlungsanweisungen zu entwickeln. Beispieloperationen der Blöcke 1902, 1904, 1906, 1908, 1910 und 1912 von 19 können zur Implementierung des Blocks 1802 von 18 verwendet werden. Das Beispielprogramm 1802 von BILD 19 beginnt, wenn der Beispielbibliotheksverwalter 324 von BILD 3 einen Verarbeitungszyklus initiiert, der iterativ für jedes RL-Aktions-Primitiv innerhalb einer vorgegebenen Gruppe von RL-Aktions-Primitiven des Roboters 102 (Block 1902) ausgeführt wird. In einigen Beispielen kann die vorgegebene Gruppe alle RL-Aktions-Primitive des Roboters 102 enthalten. In anderen Beispielen kann die vorgegebene Gruppe eine Untergruppe aller RL-Aktions-Primitive des Roboters 102 enthalten. Der vom Bibliotheksverwalter 324 im Block 1902 eingeleitete Verarbeitungszyklus umfasst die Blöcke 1904, 1906, 1908, 1910 und 1912, wie unten näher beschrieben.
Im Block 1904 wählt der Beispiel-Aktions-Primitiv-Selektor 318 in ein RL-Aktions-Primitiv des Roboters 102 aus der vorgegebenen Gruppe von RL-Aktions-Primitiven aus. Beispielsweise kann der Selektor 318 für das Aktions-Primitiv ein Primitiv für die Objektaufnahme und -platzierung (z.B. das in 5 gezeigte Primitiv für die Objektaufnahme und -platzierung 500), ein Primitiv für die Objektschiebeaktion (z.B. das in 6 gezeigte Primitiv für die Objektschiebeaktion 600), ein Primitiv für die Objektrotation (z.B. das in 7 gezeigte Primitiv für die Objektrotation 700) oder ein Primitiv für die Objektsortieraktion (z.B. das in 8 gezeigte Primitiv für die Objektsortieraktion 800) auswählen. In einigen Beispielen wählt der Selektor für das Aktions-Primitiv 318 ein RL-Aktions-Primitiv des Roboters 102 aus, für das noch keine entsprechende Richtlinie für das Aktions-Primitiv durch den Richtliniengenerator 320 von generiert und/oder in der Bibliothek für das Aktions-Primitiv gespeichert wurde. Nach dem Block 1904 geht die Steuerung des Beispielprogramms 1802 von BILD 19 zum Block 1906 über.
Im Block 1906 erzeugt und/oder trainiert der Beispielrichtlinien-Generator 320 von eine primitive Richtlinie für das RL-Aktions-Primitiv, das vom Selektor 318 von auf der Grundlage eines RL-Algorithmus ausgewählt wurde. Beispielsweise kann der Richtliniengenerator 320 die Beispielobjekt-Pick&Place-Richtlinie 402 von und auf der Grundlage des Beispielobjekt-Pick&Place-Aktions-Primitivs 500 von erzeugen. Als weiteres Beispiel kann der Richtliniengenerator 320 die Beispielobjekt-Push-Richtlinie 404 aus und auf der Grundlage des Beispielobjekt-Push-Aktions-Primitivs 600 aus erzeugen. Als weiteres Beispiel kann der Richtliniengenerator 320 die Beispielobjekt-Rotationsrichtlinie 406 von und auf der Grundlage des Beispielobjekt-Rotationsaktionsprimitivs 700 von erzeugen. Ein weiteres Beispiel: Der Richtliniengenerator 320 kann die Beispielsortierrichtlinie 408 von und auf der Grundlage des Objekt-Sortieraktionsprimitivs 800 von erzeugen. In einigen Beispielen implementiert, ruft der Richtliniengenerator 320 aus BILD 3 einen RL-Algorithmus einschließlich eines DDPG-Algorithmus (Deep Deterministic Policy Gradient) in Kombination mit einem HER-Algorithmus (Backspight Experience Replay) (z.B. kombiniert als DDPG+HER-Algorithmus), um die primitive Handlungsrichtlinie zu trainieren, und wendet ihn an und/oder verwendet ihn. In solchen Beispielen lernt der Roboter 102 die primitive Handlungsstrategie auf der Grundlage des DDPG+HER-Algorithmus. Nach dem Block 1906 geht die Steuerung des Beispielprogramms 1802 von BILD 19 zum Block 1908 über.
Im Block 1908 optimiert der Beispiel-Policy-Optimierer 322 aus BILD 3 die vom Policy-Generator 320 aus BILD 3 erzeugte und/oder trainierte Action Primitive Policy. Beispielsweise kann der Richtlinienoptimierer 322 die Anzahl der Roboteraktionen und/oder Roboterbewegungen, die in der generierten und/oder trainierten primitiven Richtlinie enthalten sind, auf eine geringere Anzahl (z.B. eine Mindestanzahl) von Roboteraktionen und/oder Roboterbewegungen reduzieren, die für die Ausführung des zugrunde liegenden RL-Aktions-Primitivs erforderlich sind. Nach Block 1908 geht die Kontrolle des Beispielprogramms 1802 von BILD 19 auf Block 1910 über.
Im Block 1910 veranlasst der Bibliotheksverwalter 324 von , dass die vom Richtliniengenerator 320 erzeugte und/oder trainierte und/oder vom Richtlinienoptimierer 322 von optimierte primitive Handlungsanweisung zu einer Bibliothek für primitive Handlungsanweisungen hinzugefügt und/oder darin gespeichert wird. Beispielsweise kann der Bibliotheksmanager 324 bewirken, dass die Beispielobjekt-Pick&Place-Richtlinie 402 von 4 und 5 der Beispiel-Aktions-Primitiv-Richtlinienbibliothek 400 von 4 hinzugefügt wird. Ein weiteres Beispiel: Der Bibliotheksverwalter 324 kann veranlassen, dass die Beispielobjekt-Push-Richtlinie 404 aus 4 und 6 der Bibliothek 400 der primitiven Richtlinien der Beispielaktion aus 4 hinzugefügt wird. Ein weiteres Beispiel: Der Bibliotheksverwalter 324 kann die Objektrotationspolitik 406 von 4 und 7 der Bibliothek 400 von 4 hinzufügen, die als Beispiel für eine primitive Handlungsrichtlinie dient. Ein weiteres Beispiel: Der Bibliotheksverwalter 324 kann die Beispielsobjektsortierrichtlinie 408 aus 4 und 8 der Bibliothek 400 der primitiven Handlungsrichtlinie aus 4 hinzufügen. Nach dem Block 1910 geht die Kontrolle des Beispielprogramms 1802 von BILD 19 zum Block 1912 über.
Im Block 1912 bestimmt der Beispielbibliotheksleiter 324 von , ob die Bibliothek mit den primitiven Handlungsrichtlinien für alle RL-Aktions-Primitiven innerhalb der vorgegebenen Gruppe von Handlungsprimitiven enthält. Beispielsweise kann der Bibliotheksverwalter 324 durch Vergleich des Inhalts der Bibliothek mit einer Liste der RL-Aktions-Primitive des Roboters 102 feststellen, dass eine oder mehrere primitive Richtlinien, die einem oder mehreren RL-Aktions-Primitiven entsprechen, noch in der Bibliothek der Aktions-Primitive gespeichert werden müssen. Wenn der Bibliotheksverwalter 324 im Block 1912 feststellt, dass die Bibliothek der primitiven Aktionsprimitive keine primitiven Aktionsprinzipien für alle RL-Aktionsprimitive innerhalb der vorgegebenen Gruppe enthält, kehrt die Steuerung des Beispielprogramms 1802 von zum Block 1904 zurück. Wenn der Bibliotheksverwalter 324 stattdessen im Block 1910 feststellt, dass die Bibliothek der primitiven Aktionsprimitive für alle RL-Aktionsprimitive innerhalb der vorgegebenen Gruppe primitive Aktionsprinzipien enthält, kehrt die Steuerung des Beispielprogramms 1802 von zu einem Funktionsaufruf wie dem Block 1802 des Beispielprogramms 1800 von zurück.
-
BILD 20 ist ein Flußdiagramm, das die maschinenlesbaren Beispielanweisungen 1806 darstellt, die ausgeführt werden können, um den Beispielroboter 102 der BILD 1-3 und 5-8 zu implementieren, um ein Bild zusammengesetzter Objekte in Objektpositionsziele und zugehörige Montageziele zu zerlegen. Beispieloperationen der Blöcke 2002, 2004, 2006, 2008, 2010 und 2012 von 20 können zur Implementierung des Blocks 1806 von 18 verwendet werden. Das Beispielprogramm 1806 von BILD 20 beginnt, wenn der Beispielobjektdetektor 328 von BILD 3 ein oder mehrere Objekte erkennt und/oder identifiziert, die in dem Bild der Baugruppe von Objekten dargestellt sind, auf die der Bildmanager 326 von BILD 3 (Block 2002) zugreift und/oder die er sich beschafft hat. Zum Beispiel kann der Objektdetektor 328 ein oder mehrere im Bild der Objektgruppe abgebildete(s) Objekt(e) erkennen und/oder identifizieren, indem er einen Objekterkennungsalgorithmus (z.B. einen You Only Look Once (YOLO)-Objekterkennungsalgorithmus) auf das Bild der Objektgruppe anwendet. Nach dem Block 2002 geht die Steuerung des Beispielprogramms 1806 aus BILD 20 zum Block 2004 über.
Im Block 2004 bestimmt das Beispiel Dekompositionskrippe 308 aus BILD 3, ob der Kartengenerator 330 aus BILD 3 zur Erzeugung einer Konturkarte aufgerufen werden soll. Beispielsweise kann der Zerlegungsmanager 308 von BILD 3 den Kartengenerator 330 von BILD 3 aufrufen, um eine Konturkarte zu erzeugen, wenn die Formen und/oder Geometrien der vom Objektdetektor 328 von BILD 3 erfassten Objekte relativ komplex sind. Als weiteres Beispiel kann der Zerlegungsmanager 308 von BILD 3 den Segmentierungsgenerator 332 von BILD 3 anstelle des Kartengenerators 330 von BILD 3 aufrufen, wenn die Formen und/oder Geometrien der vom Objektdetektor 328 von BILD 3 erkannten Objekte relativ einfach sind. Wenn die Zerlegungskammer 308 im Block 2004 beschließt, den Kartengenerator 330 aus BILD 3 aufzurufen, um eine Konturkarte zu erzeugen, wird die Steuerung des Beispielprogramms 1806 aus BILD 20 auf die Uhr 2006 verlagert. Wenn der Zerlegungsmanager 308 stattdessen im Block 2004 beschließt, den Kartengenerator 330 aus BILD 3 nicht aufzurufen, um eine Höhenlinienkarte zu erzeugen, fährt die Steuerung des Beispielprogramms 1806 aus BILD 20 mit dem Block 2008 fort.
Im Block 2006 erzeugt der Beispielkartengenerator 330 von BILD 3 eine Konturkarte für Objekte, die vom Objektdetektor 328 von BILD 3 im Bild der Anordnung von Objekten erkannt wurden, auf die der Bildmanager 326 von BILD 3 zugreift und/oder die er erhalten hat. Ein Beispielprozess, der zur Implementierung des Blocks 2006 des Beispielprogramms 1806 von BILD 20 verwendet werden kann, wird im Folgenden in Verbindung mit BILD 22 näher beschrieben. Nach dem Block 2006 geht die Kontrolle des Beispielprogramms 1806 von BILD 20 in den Block 2010 über.
Im Block 2008 erzeugt der Beispielsegmentierungsgenerator 332 von BILD 3 eine semantische Segmentierung für Objekte, die vom Objektdetektor 328 von BILD 3 im Bild der Anordnung von Objekten erkannt werden, auf die der Bildmanager 326 von BILD 3 zugreift und/oder die er erhalten hat. Zum Beispiel kann der Segmentierungsgenerator 332 eine semantische Segmentierung des Bildes der Anordnung von Objekten erzeugen, indem er einen semantischen Segmentierungsalgorithmus (z.B. einen Region Convoluted Neural Network (R-CNN)-Segmentierungsalgorithmus) auf das Bild der Anordnung von Objekten anwendet. In einigen Beispielen stellt die vom Segmentierungsgenerator 332 erzeugte semantische Segmentierung eine oder mehrere Grenzen und/oder physikalische Eigenschaften (z.B. eine Größe, eine Form, eine Kante, eine relative Position, eine relative Orientierung usw.) eines oder mehrerer Objekte dar und/oder zeigt diese an, die vom Objektdetektor 328 von BILD 3 erkannt und/oder in das Bild der Objektgruppe aufgenommen wurden, auf das der Bildmanager 326 von BILD 3 zugreift und/oder das er erhalten hat. In einigen Beispielen enthält die vom Segmentierungsgenerator 332 von BILD 3 erzeugte semantische Segmentierung (z.B. in Form von Tags, Etiketten usw.) Objektkennungen (z.B. Objekttypkennungen) für die jeweiligen Objekte, die im Bild der Objektgruppe enthalten sind. Nach dem Block 2008 geht die Kontrolle des Beispielprogramms 1806 von BILD 20 in den Block 2010 über.
Im Block 2010 bestimmt der Beispiel-Ortszielbestimmer 334 aus BILD 3 Objekt-Ortsziele (z.B. Zielobjektorte) für die jeweiligen Objekte, die in der vom Kartengenerator 330 aus BILD 3 erzeugten Konturkarte oder der vom Segmentierungsgenerator 322 aus BILD 3 erzeugten semantischen Segmentierung enthalten sind und/oder durch diese repräsentiert werden. Zum Beispiel kann die Standortzielbestimmung 334 Objektstandortziele für die jeweiligen Objekte bestimmen, die in der Konturkarte oder der semantischen Segmentierung enthalten sind und/oder durch diese dargestellt werden, indem ein geometriebasierter Packalgorithmus auf die Konturkarte oder die semantische Segmentierung angewendet wird. Nach dem Block 2010 geht die Kontrolle des Beispielprogramms 1806 von BILD 20 auf den Block 2012 über.
Im Block 2012 bestimmt der Beispielmontagezielbestimmer 336 aus BILD 3 Montageziele (z.B. Zielobjekt-Montageparameter wie auf einem Regal, unter einem Regal, auf einem anderen Objekt, unter einem anderen Objekt, vor einem anderen Objekt, hinter einem anderen Objekt usw.) für die jeweiligen Objekte, die in der vom Kartengenerator 330 aus BILD 3 erzeugten Konturkarte oder der vom Segmentierungsgenerator 332 aus BILD 3 erzeugten semantischen Segmentierung enthalten sind und/oder durch diese repräsentiert werden. Zum Beispiel kann der Montagezielbestimmer 336 Montageziele für die jeweiligen Objekte bestimmen, die in der Konturkarte oder der semantischen Segmentierung enthalten sind und/oder durch diese repräsentiert werden, indem ein Objektlokalisierungsalgorithmus auf die Konturkarte oder die semantische Segmentierung angewendet wird. Der Montagezielbestimmer 336 von BILD 3 verbindet die jeweiligen Montageziele mit den entsprechenden Zielen der Objektlokalisierung, die durch den Lagezielbestimmer 334 von BILD 3 bestimmt werden. Nach dem Block 2012 kehrt die Steuerung des Beispielprogramms 1806 von BILD 20 zu einem Funktionsaufruf wie dem Block 1806 des Beispielprogramms 1800 von BILD 18 zurück.
-
BILD 21 ist ein Flussdiagramm, das für die maschinenlesbaren Beispielanweisungen 1808 repräsentativ ist, die ausgeführt werden können, um den Beispielroboter 102 aus BILD 1-3 und 5-8 zu implementieren, um Sequenzen von RL-Aktions-Primitiven für die Montage von Objekten zu bestimmen. Beispieloperationen der Blöcke 2102, 2104, 2106, 2108, 2110, 2112 und 2114 von 21 können zur Implementierung des Blocks 1808 von 18 verwendet werden. Das Beispielprogramm 1808 von BILD 21 beginnt, wenn der Beispielprogrammierer 338 von BILD 3 eine Objekt-zu-Ziel-Karte auf der Grundlage der durch die Standortzielbestimmung 334 von BILD 3 bestimmten Objektstandortziele und der zugehörigen, durch die Montagezielbestimmung 336 von BILD 3 bestimmten Montageziele und ferner auf der Grundlage der Anfangsstandorte der Objekte (z.B. physische Objekte), die zur Konstruktion einer Montage von Objekten verwendet werden sollen (Block 2102), erzeugt. Zum Beispiel kann der Objekt-zu-Ziel-Mapper 338 eine Objekt-zu-Ziel-Karte (z.B. die Objekt-zu-Ziel-Karte 1300 von BILD 13) erzeugen, die die jeweiligen physischen Objekte mit entsprechenden Anfangsstandorten logisch zu und/oder mit den jeweiligen Objektstandortzielen und den entsprechenden zugehörigen Versammlungszielen zuordnet, verknüpft und/oder assoziiert. Nach Block 2102 geht die Kontrolle des Beispielprogramms 1808 von BILD 21 auf Block 2104 über.
Im Block 2104 bestimmt der Beispiel-Platzierungssequenzbestimmer 340 von BILD 3 eine Objektplatzierungssequenz auf der Grundlage der Objekt-zu-Ziel-Karte, die vom Objekt-zu-Ziel-Mapper 338 von BILD 3 erzeugt wurde. Zum Beispiel kann der PlatzierungssequenzBestimmer 340 eine Objektplatzierungssequenz (z.B. die Objektplatzierungssequenz 1400 von BILD 14) erzeugen, die den jeweiligen Objekten der über die Objekt-zu-Ziel-Karte abgebildeten Objekt-zu-Ziel-Paare eine logische Sequenz zuordnet und/oder festlegt. In einigen Beispielen ist die durch den Platzierungsreihenfolge-Bestimmer 340 von BILD 3 bestimmte Objektplatzierungsreihenfolge so optimiert, dass die jeweiligen Objekte auf einem möglichst kurzen Weg platziert werden. Nach dem Block 2104 geht die Steuerung des Beispielprogramms 1808 aus BILD 21 zum Block 2106 über.
Im Block 2106 initiiert der Beispiel-Platzierungsreihenfolge-Manager 342 aus BILD 3 einen Verarbeitungszyklus, der iterativ für jedes in der Objekt-Platzierungsreihenfolge enthaltene Objekt ausgeführt wird. Der vom Platzierungsreihenfolge-Manager 342 im Block 2106 initiierte Verarbeitungszyklus umfasst die Blöcke 2108, 2110, 2112 und 2114, wie im Folgenden näher beschrieben.
Im Block 2108 identifiziert der Beispielzielkennzeichner 344 von BILD 3 ein Montageziel für das Objekt der Objektplatzierungssequenz, das gegenwärtig über den vom Platzierungssequenzverwalter 342 von BILD 3 aufgerufenen Verarbeitungszyklus verarbeitet wird. Beispielsweise kann der Zielkennzeichner 344 ein Montageziel für ein spezifiziertes Objekt in der Objektplatzierungssequenz (z.B. die Objektplatzierungssequenz 1400 von BILD 14) auf der Grundlage einer Korrelation identifizieren, die von den abgebildeten Objekt-Ziel-Paaren der Objekt-Ziel-Karte (z.B. die Objekt-Ziel-Karte 1300 von BILD 13) bereitgestellt wird, die vom Objekt-Ziel-Mapper 338 von BILD 3 erzeugt wurde. Nach dem Block 2108 geht die Steuerung des Beispielprogramms 1808 aus BILD 21 zum Block 2110 über.
Im Block 2110 bestimmt der Beispiel-Aktions-Primitivsequenz-Bestimmer 346 von BILD 3 eine Sequenz von Aktions-Primitiven, die mit dem Montageziel des Objekts verbunden sind, wie es durch die Zielkennung 344 von BILD 3 identifiziert wird. Beispielsweise kann der primitive Aktionssequenzbestimmer 346 eine Sequenz von Aktions-Primitiven für ein spezifiziertes Montageziel auf der Grundlage einer Assoziation und/oder Korrelation bestimmen, die durch eine Ziel-Primitiv-Korrelationstabelle (z.B. die Ziel-Primitiv-Tabelle 1500 von ) bereitgestellt wird. Nach Block 2110 geht die Steuerung des Beispielprogramms 1808 von BILD 21 zu Block 2112 über.
Im Block 2112 gibt der Beispiel-Ausgabemanager 348 von BILD 3 die Sequenz der Aktions-Primitive für das Objekt aus, wie sie durch den Aktions-Primitivsequenz-Bestimmer 346 von BILD 3 bestimmt wird. Zum Beispiel kann der Ausgabemanager 348 die Sequenz der Aktions-Primitive, die durch den Aktions-Primitivsequenzbestimmer 346 bestimmt wird, an den Bewegungsmanager 312 von BILD 3 ausgeben. Nach dem Block 2112 geht die Steuerung des Beispielprogramms 1808 von BILD 21 zum Block 2114 über.
Im Block 2114 bestimmt der Beispiel-Platzierungsreihenfolge-Manager 342 von BILD 3, ob alle Objekte in der Objektplatzierungsreihenfolge verarbeitet wurden. Beispielsweise kann der Platzierungsreihenfolge-Manager 342 durch Vergleich der jüngsten Ausgabe von Block 2112 mit der in Block 2104 ermittelten Objektplatzierungsreihenfolge feststellen, dass ein oder mehrere in der Objektplatzierungsreihenfolge enthaltene Objekte noch verarbeitet werden müssen. Wenn der Platzierungsreihenfolge-Manager 342 in Block 2114 feststellt, dass nicht alle in der Objektplatzierungsfolge enthaltenen Objekte verarbeitet wurden, kehrt die Steuerung des Beispielprogramms 1808 aus BILD 21 zu Block 2106 zurück. Wenn der Platzierungsreihenfolge-Manager 342 stattdessen im Block 2114 feststellt, dass alle in der Objektplatzierungsfolge enthaltenen Objekte verarbeitet wurden, kehrt die Steuerung des Beispielprogramms 1808 aus BILD 21 zu einem Funktionsaufruf wie dem Block 1808 des Beispielprogramms 1800 aus BILD 18 zurück.
-
BILD 22 ist ein Flußdiagramm, das für die maschinenlesbaren Beispielbefehle repräsentativ ist, die ausgeführt werden können, um den Beispielroboter 102 von BILD 1-3 und 5-8 zu implementieren, um eine Konturkarte für Objekte zu erzeugen, die vom Objektdetektor 328 von BILD 3 in dem Bild der Anordnung von Objekten erkannt wurden, auf die der Bildmanager 326 von BILD 3 zugreift und/oder die er erhalten hat. Beispieloperationen der Blöcke 2202, 2204, 2206, 2208, 2210 und 2212 von BILD 22 können zur Implementierung des Blocks 2006 von BILD 20 verwendet werden. Das Beispielprogramm 2006 von BILD 22 beginnt, wenn der Beispielbildkonverter 902 von BILD 9 ein Bild, auf das der Bildmanager 326 von BILD 3 zugreift und/oder das er erhalten hat, in ein Graustufenbild (Block 2202) umwandelt. Zum Beispiel kann der Bildkonverter 902 ein RGB-Bild (z.B. RGB-Bilddaten), auf das der Bildmanager 326 zugreift und/oder das er erhalten hat, in ein Graustufenbild (z.B. Graustufenbilddaten) konvertieren. Nach Block 2202 geht die Steuerung des Beispielprogramms 2006 von BILD 22 zum Block 2204 über. Im Block 2204 erkennt und/oder bestimmt das Beispiel des Pixelintensitätsdetektors 904 von BILD 9 Pixel-Intensitätswerte für Pixel des Graustufenbildes, die vom Bildwandler 902 von BILD 9 erzeugt und/oder verarbeitet werden. Zum Beispiel kann der Pixelintensitätsdetektor 904 Pixelintensitätswerte für Pixel des Graustufenbildes erkennen und/oder bestimmen, indem er einen Binarisierungsalgorithmus (z.B. den Otsu-Algorithmus) auf das Graustufenbild anwendet. Nach dem Block 2204 geht die Steuerung des Beispielprogramms 2006 von BILD 22 zum Block 2206 über.
Im Block 2206 setzt der Beispiel-Schwellenwertgeber 906 von BILD 9 die vom Pixelintensitätsdetektor 904 von BILD 9 ermittelten Pixelintensitätswerte adaptiv auf einen Schwellenwert. Beispielsweise kann der Schwellenwerthalter 906 die Pixel-Intensitätswerte durch Anwendung eines adaptiven Schwellwert-Algorithmus auf die Pixel-Intensitätswerte adaptiv schwellen. Im Anschluss an Block 2206 geht die Steuerung des Beispielprogramms 2006 von BILD 22 zum Block 2208 über.
Im Block 2208 erkennt und/oder bestimmt der Beispielpixel-Intensitätskomparator 908 von BILD 9 Bereiche mit übereinstimmenden (z.B. statistisch ähnlichen) adaptiv geschwellten Pixel-Intensitätswerten, die durch den Schwellenwerthalter 906 von BILD 9 (Block 2208) adaptiv geschwellt wurden. Zum Beispiel kann der Pixel-Intensitätskomparator 908 Bereiche mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten erkennen und/oder bestimmen, indem er die adaptiv geschwellten Pixel-Intensitätswerte benachbarter Pixel auf statistische Ähnlichkeit und/oder Ähnlichkeit vergleicht. Nach Block 2208 geht die Steuerung des Beispielprogramms 2006 von BILD 22 in Block 2210 über.
Im Block 2210 erzeugt der Beispielkonturgenerator 910 von BILD 9 Konturen auf der Grundlage der Bereiche übereinstimmender, adaptiv geschwellter Pixel-Intensitätswerte, die vom Pixel-Intensitätskomparator 908 von BILD 9 erfasst und/oder bestimmt wurden. Zum Beispiel kann der Konturgenerator 910 eine oder mehrere Kontur(en) auf der Grundlage der Bereiche übereinstimmender Pixel-Intensitätswerte mit adaptivem Schwellenwert erzeugen, die durch und/oder als ein oder mehrere gerade und/oder gekrümmte Liniensegmente dargestellt werden können. Nach dem Block 2210 geht die Steuerung des Beispielprogramms 2006 von BILD 22 zum Block 2212 über.
Im Block 2212 erzeugt der Beispielkartengenerator 330 aus BILD 3 und 9 eine Konturkarte auf der Grundlage der vom Konturgenerator 910 aus BILD 9 erzeugten Konturen. Zum Beispiel kann der Kartengenerator 330 eine Konturkarte (z.B. die Konturkarte 1000 aus BILD 10) erzeugen, die die vom Konturgenerator 910 erzeugten Konturen enthält und/oder einbezieht. In einigen Beispielen repräsentiert und/oder zeigt die vom Kartengenerator 330 erzeugte Konturkarte eine oder mehrere Grenzen und/oder physikalische Eigenschaften (z.B. eine Größe, eine Form, eine Kante, eine relative Position, eine relative Orientierung usw.) eines oder mehrerer Objekte, die vom Objektdetektor 328 von BILD 3 erfasst und/oder in das Bild der Anordnung von Objekten eingeschlossen sind, auf das der Bildmanager 326 von BILD 3 zugreift und/oder das er erhalten hat. Nach dem Block 2212 kehrt die Steuerung des Beispielprogramms 2006 von BILD 22 zu einem Funktionsaufruf wie dem Block 2006 des Beispielprogramms 1806 von BILD 20 zurück.
-
BILD 23 ist ein Blockdiagramm einer Beispiel-Prozessorplattform 2300, die so strukturiert ist, dass sie die Beispielanweisungen 1800 von BILD 18-22 ausführt, um den Beispielroboter 102 von BILD 1-3 und 5-8 zu implementieren. Die Prozessorplattform 2300 des gezeigten Beispiels enthält einen Prozessor 2302. Der Prozessor 2302 des illustrierten Beispiels ist Hardware. Der Prozessor 2302 kann zum Beispiel durch eine oder mehrere integrierte Schaltung(en), Logikschaltung(en), Mikroprozessor(en), GPU(s), DSP(s), Mikrocontroller, Prozessor(en) oder Mikrocontroller jeder gewünschten Familie oder jedes gewünschten Herstellers implementiert werden. Der Hardware-Prozessor kann ein Halbleiter-basiertes (z.B. Silizium-basiertes) Gerät sein. In diesem Beispiel implementiert der Prozessor 2302 den Beispiel-Policy-Bibliotheksentwickler 306, den BeispielZerlegungsmanager 308, den Beispiel-Konstruktionsmanager 310, den Beispiel-Bewegungsmanager 312, den Beispiel-Aktions-Primitivselektor 318, den Beispiel-Policy-Generator 320, den Beispiel-Policy-Optimierer 322, den Beispiel-Bibliotheksmanager 324, den Beispiel-Bild-Manager 326, den Beispiel-Objektdetektor 328, den Beispiel-Map-Generator 330, den Beispiel-Segmentierungsgenerator 332, den Beispiel-Lokationszielbestimmer 334, der Beispiel-Baugruppenziel-Bestimmer 336, der BeispielObjekt-zu-Ziel-Mapper 338, der Beispiel-Platzierungsreihenfolge-Bestimmer 340, der Beispiel-Platzierungsreihenfolge-Manager 342, der Beispiel-Zielkennzeichner 344, der Beispiel-Aktions-Primitivreihenfolge-Bestimmer 346, der Beispiel-Ausgabe-Manager 348, der Beispiel-Bildwandler 902, der Beispiel-Pixelintensitäts-Detektor 904, der Beispiel-Schwellenwertgeber 906, der Beispiel-Pixelintensitäts-Komparator 908 und der BeispielKonturgenerator 910 von 3 und 9.
-
Der Prozessor 2302 des abgebildeten Beispiels enthält einen lokalen Speicher 2304 (z.B. einen Cache). Der Prozessor 2302 steht über einen Bus 2306 in Kommunikation mit dem/den Beispielmotor(en) 302 und der Beispielkamera 304 aus BILD 3. Der Prozessor 2302 steht auch mit einem Hauptspeicher einschließlich eines flüchtigen Speichers 2308 und eines nichtflüchtigen Speichers 2310 über den Bus 2306 in Verbindung. Der flüchtige Speicher 2308 kann durch einen synchronen dynamischen Speicher mit wahlfreiem Zugriff (SDRAM), einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM), einen RAMBUS® dynamischen Speicher mit wahlfreiem Zugriff (RDRAM®) und/oder jede andere Art von Speicher mit wahlfreiem Zugriff implementiert werden. Der nichtflüchtige Speicher 2310 kann durch Flash-Speicher und/oder jeden anderen gewünschten Speichertyp implementiert werden. Der Zugriff auf den Hauptspeicher 2308, 2310 wird durch einen Speicher-Controller gesteuert.
-
Die Prozessorplattform 2300 des abgebildeten Beispiels enthält auch einen oder mehrere Massenspeicher 2312 zur Speicherung von Software und/oder Daten. Beispiele für solche Massenspeichergeräte 2312 sind Diskettenlaufwerke, Festplatten, Kompaktplattenlaufwerke, Blu-ray-Diskettenlaufwerke, redundante Arrays von unabhängigen Plattensystemen (RAID) und Digital Versatile Disk (DVD)-Laufwerke. In dem illustrierten Beispiel von implementieren einer oder mehrere der flüchtigen Speicher 2308, der nichtflüchtige Speicher 2310 und/oder die Massenspeicher 2312 den/die Beispielspeicher 316 von .
-
Die Prozessorplattform 2300 des abgebildeten Beispiels enthält auch eine Benutzerschnittstellenschaltung 2314. Die Anwenderschnittstellenschaltung 2314 kann durch jede Art von Schnittstellenstandard implementiert werden, wie z.B. eine Ethernet-Schnittstelle, einen universellen seriellen Bus (USB), eine Bluetooth®-Schnittstelle, eine Nahfeldkommunikationsschnittstelle (NFC) und/oder eine PCI-Express-Schnittstelle. In dem abgebildeten Beispiel sind ein oder mehrere Eingabegerät(e) 350 von BILD 3 an die Benutzerschnittstellenschaltung 2314 angeschlossen. Das/die Eingabegerät(e) 350 erlauben es einem Benutzer, Daten und/oder Befehle in den Prozessor 2302 einzugeben. Das/die Eingabegerät(e) 350 kann/können z.B. durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, einen Isopoint und/oder ein Spracherkennungssystem realisiert werden. Ein oder mehrere Ausgabegerät(e) 352 von BILD 3 sind auch an die Benutzerschnittstellenschaltung 2314 des abgebildeten Beispiels angeschlossen. Das/die Ausgabegerät(e) 352 kann/können z.B. durch ein Anzeigegerät (z.B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), einen Touchscreen usw.), ein taktiles Ausgabegerät und/oder einen Lautsprecher realisiert werden. Die Benutzerschnittstellenschaltung 2314 des abgebildeten Beispiels enthält also typischerweise eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder einen Grafiktreiberprozessor. In dem illustrierten Beispiel implementieren das/die Eingabegerät(e) 350, das/die Ausgabegerät(e) 352 und die Benutzerschnittstellenschaltung 2314 gemeinsam die Beispielbenutzerschnittstelle 314 von BILD 3.
-
Die Prozessorplattform 2300 des illustrierten Beispiels enthält auch eine Netzwerkschnittstellenschaltung 2316. Die Netzwerkschnittstellenschaltung 2316 kann durch jede Art von Schnittstellenstandard implementiert werden, wie z.B. eine Ethernet-Schnittstelle, einen universellen seriellen Bus (USB), eine Bluetooth®-Schnittstelle, eine Nahfeld-Kommunikationsschnittstelle (NFC) und/oder eine PCI-Express-Schnittstelle. Die Netzschnittstellenschaltung 2316 kann einen Funksender, einen Funkempfänger und/oder einen Funktransceiver umfassen, um den Austausch von Daten und/oder Signalen mit externen Maschinen (z.B. einem Server, anderen Computergeräten, anderen Robotern usw.) über ein Netzwerk 2318 (z.B. ein zellulares Netzwerk, ein drahtloses lokales Netzwerk (WLAN) usw.) zu erleichtern.
Die codierten Befehle 2320 einschließlich der maschinenlesbaren Befehle 1800 der können im lokalen Speicher 2304, im flüchtigen Speicher 2308, im nichtflüchtigen Speicher 2310, auf dem/den Massenspeichergerät(en) 2312 und/oder auf einem entfernbaren, nichtflüchtigen, computerlesbaren Speichermedium wie einem Flash-Speicherstick, einer CD oder einer DVD gespeichert werden.
Aus dem Vorstehenden wird ersichtlich, dass Methoden und Apparate offengelegt wurden, die vorteilhaft eine komplexe Montage durch autonome Roboter unter Verwendung von RL-Aktions-Primitiven ermöglichen, die relativ einfachen (z.B. nicht komplexen) Roboteraktionen und/oder Roboterbewegungen entsprechen. Die offengelegten Beispielmethoden und -apparate ermöglichen es einem Roboter, individuell die jeweiligen RL-Aktions-Primitive zu erlernen. Offengelegte Beispielmethoden und -apparate können verschiedene der gelernten RL-Aktions-Primitive intelligent zu einer oder mehreren Aktions-Primitiv-Politiken kombinieren, die vom Roboter befolgt und/oder implementiert werden. Nachdem ein Roboter die RL-Aktions-Primitive gelernt hat, können die offengelegten Methoden und Apparate komplexe Montageaufgaben, die der Roboter ausführen soll, in eine Sequenz der RL-Aktions-Primitive zerlegen (z.B. zerlegen). Offengelegte Beispielmethoden und -apparate können die Sequenz der RL-Aktions-Primitive mit einer oder mehreren der Aktionsprimitiv-Richtlinien verbinden und den Roboter dazu veranlassen, die zugehörigen Aktionsprimitiv-Richtlinien zu befolgen und/oder zu implementieren, um eine komplexe Baugruppe zu konstruieren, die der komplexen Montageaufgabe entspricht.
In einigen Beispielen zerlegen (z.B. dekonstruieren) die hier offengelegten Methoden und Geräte automatisch ein Bild (z.B. durch den Roboter erfasst oder anderweitig in den Roboter eingegeben) einer Baugruppe von Objekten in eine Vielzahl von konstituierenden Objekten, die Objektpositionsziele (z.B. Zielobjektpositionen) und zugehörige Baugruppenziele (z.B. Zielobjekt-Baugruppenparameter wie auf einem Regal, unter einem Regal, auf einem anderen Objekt, unter einem anderen Objekt, vor einem anderen Objekt, hinter einem anderen Objekt usw.) haben. Basierend auf den Objektpositionszielen und den damit verbundenen Montagezielen bestimmen beispielsweise offengelegte Methoden und Geräte eine Objektplatzierungssequenz, die vom Roboter und/oder am Roboter zu implementieren, aufzurufen und/oder auszuführen ist, um die konstituierenden Objekte nacheinander in einem Raum zu platzieren. Für jedes Objekt in der Objektplatzierungssequenz bestimmen beispielsweise die offengelegten Methoden und Vorrichtungen eine primitive Handlungssequenz, die vom und/oder am Roboter implementiert, aufgerufen und/oder ausgeführt werden kann, um eine physische Anordnung von Objekten zu konstruieren, die der abgebildeten Anordnung von Objekten entspricht. Jede primitive Handlungssequenz enthält ein oder mehrere RL-Aktions-Primitive, die zuvor vom Roboter gelernt und als eine oder mehrere entsprechende primitive Handlungsrichtlinien in einer Bibliothek für primitive Handlungsrichtlinien gespeichert wurden. Offenbarte Beispielmethoden und -geräte greifen auf die der primitiven Handlungssequenz entsprechenden primitiven Handlungsrichtlinien zu und implementieren, rufen diese primitiven Handlungsrichtlinien am Roboter auf und/oder führen sie aus, um die physische Anordnung von Objekten zu konstruieren.
-
Offengelegte Beispielmethoden und -apparate für komplexe Zusammenstellungen durch autonome Roboter unter Verwendung von RL-Aktions-Primitiven bieten zahlreiche Vorteile gegenüber den oben beschriebenen bekannten Lösungen. Beispielsweise reduzieren (z.B. eliminieren) die offengelegten Methoden und Apparate durch einen RL-basierten Ansatz vorteilhaft den mühsamen und arbeitsintensiven Prozess der manuellen Programmierung von Robotern zur Ausführung komplexer Montageaufgaben. Ein weiteres Beispiel: Durch die Bereitstellung eines RL-basierten Ansatzes, der relativ einfache (z.B. nicht-komplexe) RL-Aktions-Primitive verwendet, reduzieren (z.B. eliminieren) die offengelegten Methoden und Apparate vorteilhaft die Lernfehler, die häufig in Verbindung mit bekannten End-to-End-RL-basierten Lösungen auftreten, die den ansonsten komplexen Lernprozess, der mit einer komplexen Montageaufgabe verbunden ist, nicht segmentieren. Ein weiteres Beispiel: Durch die Bereitstellung eines RL-basierten Ansatzes, der relativ einfache und nicht-komplexe RL-Aktions-Primitive verwendet, die sich zu einer Vielzahl von Konfigurationen und/oder Sequenzen kombinieren lassen, bieten die offengelegten Methoden und Apparate vorteilhaft eine Lösung, die leicht an Umgebungen und/oder Anwendungen angepasst und/oder skaliert werden kann, die eine sich häufig ändernde und/oder variierende Anzahl, Art und/oder Konfiguration von Objekten und/oder Objektbaugruppen aufweisen. Ein weiteres Beispiel: Durch die Bereitstellung eines RL-basierten Ansatzes, der die automatische Zerlegung (z.B. Dekonstruktion) einer abgebildeten Anordnung von Objekten als Grundlage für die Konstruktion einer physischen Anordnung von Objekten entsprechend der abgebildeten Anordnung beinhaltet, bieten die offengelegten Beispielmethoden und -apparate vorteilhaft eine vollständige End-to-End-Automatisierung für die robotergestützte Konstruktion von komplexen Objektanordnungen.
-
In einigen Beispielen wird ein Apparat offenbart. In einigen offengelegten Beispielen umfasst der Apparat einen Bauleiter und einen Bewegungsleiter. In einigen offengelegten Beispielen bestimmt der Konstruktionsleiter Sequenzen von RL-Aktionsprimitiven (Reinforcement Learning) auf der Grundlage von Objektpositionszielen und zugehörigen Montagezielen, die für die jeweiligen Objekte in einer abgebildeten Montage von Objekten bestimmt wurden. In einigen offengelegten Beispielen soll der Bewegungsmanager einem Roboter befehlen, eine physische Anordnung von Objekten auf der Grundlage der Sequenzen von RL-Aktions-Primitiven zu konstruieren. In einigen offengelegten Beispielen soll der physische Zusammenbau von Objekten dem abgebildeten Zusammenbau von Objekten entsprechen.
-
In einigen offengelegten Beispielen enthält der Apparat ferner einen Objekt-zu-Ziel-Mapper, um eine Objekt-zu-Ziel-Karte auf der Grundlage der Objektpositionsziele, der zugehörigen Montageziele und der Anfangspositionen der physischen Objekte, die in die physische Montage von Objekten einbezogen werden sollen, zu erzeugen. In einigen offengelegten Beispielen enthält der Apparat ferner einen Platzierungssequenzbestimmer, um eine Objektplatzierungssequenz für die physischen Objekte auf der Grundlage der Objekt-zu-Ziel-Abbildung zu bestimmen.
In einigen offengelegten Beispielen enthält der Apparat ferner einen Platzierungssequenz-Manager, um für die jeweiligen physischen Objekte gemäß der Objektplatzierungssequenz iterativ einen Zielidentifikator, einen primitiven Aktionssequenz-Bestimmer und einen Ausgabemanager aufzurufen. In einigen offengelegten Beispielen besteht der Zielidentifikator darin, ein entsprechendes der Montageziele auf der Grundlage der Objekt-zu-Ziel-Abbildung zu identifizieren. In einigen offengelegten Beispielen besteht der primitive Aktionssequenzbestimmer darin, eine entsprechende Sequenz von RL-Aktions-Primitiven zu bestimmen, die mit dem entsprechenden Versammlungsziel verknüpft ist. In einigen offengelegten Beispielen soll der Ausgabemanager die entsprechende Sequenz von RL-Aktions-Primitiven an den Bewegungsmanager ausgeben.
In einigen offengelegten Beispielen soll der Bewegungsmanager dem Roboter befehlen, die physische Baugruppe von Objekten zu konstruieren, indem er die zuvor vom Roboter gelernten Aktions-Primitive aufruft. In einigen offengelegten Beispielen soll der Bewegungsmanager auf die primitiven Handlungsrichtlinien aus einer Bibliothek mit primitiven Handlungsrichtlinien zugreifen.
-
In einigen offengelegten Beispielen enthält der Apparat außerdem einen Richtliniengenerator, um die primitiven Richtlinien der Aktion durch Aufruf eines RL-Algorithmus zu trainieren. In einigen offengelegten Beispielen soll der Roboter die auf dem RL-Algorithmus basierenden primitiven Handlungsrichtlinien lernen. In einigen offengelegten Beispielen enthält der Apparat außerdem einen Bibliotheksmanager, der die vom Richtliniengenerator generierten primitiven Handlungsrichtlinien der Bibliothek der primitiven Handlungsrichtlinien hinzufügt.
-
In einigen offengelegten Beispielen enthält die Vorrichtung außerdem einen Zerlegungsmanager, um ein Bild, das die abgebildete Anordnung von Objekten darstellt, in die Ziele für die Lokalisierung der Objekte und die zugehörigen Anordnungsziele zu zerlegen.
-
In einigen offengelegten Beispielen enthält der Apparat außerdem einen Bildmanager, um das Bild zu erhalten. In einigen offengelegten Beispielen enthält das Gerät außerdem einen Objektdetektor zur Erkennung von Objekten, die mit der abgebildeten Anordnung von Objekten in dem Bild assoziiert sind. In einigen offengelegten Beispielen enthält die Vorrichtung ferner einen Kartengenerator zur Erzeugung einer Konturkarte für die Objekte auf der Grundlage der abgebildeten Anordnung von Objekten, die im Bild dargestellt sind. In einigen offengelegten Beispielen enthält der Apparat ferner einen Ortszielbestimmer, um die Objektpositionsziele auf der Grundlage der Konturkarte zu bestimmen. In einigen offengelegten Beispielen enthält die Vorrichtung ferner einen Montagezielbestimmer, um die zugehörigen Montageziele auf der Grundlage der Konturkarte zu bestimmen.
-
In einigen offengelegten Beispielen enthält die Vorrichtung außerdem eine Kamera. In einigen offengelegten Beispielen soll der Bildmanager der Kamera befehlen, das Bild zu erfassen.
-
In einigen offengelegten Beispielen enthält der Apparat außerdem einen Bildwandler zur Umwandlung des Bildes in ein Graustufenbild. In einigen offengelegten Beispielen enthält das Gerät außerdem einen Pixel-Intensitätsdetektor, um Pixel-Intensitätswerte von Pixeln des Graustufenbildes zu erkennen. In einigen offengelegten Beispielen enthält das Gerät ferner einen Schwellenwerthalter, um durch adaptive Schwellenwertbildung der Pixel-Intensitätswerte adaptive Schwellenwerte zu erzeugen. In einigen offengelegten Beispielen enthält das Gerät außerdem einen Pixel-Intensitätskomparator, um Bereiche mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten zu bestimmen. In einigen offengelegten Beispielen enthält die Vorrichtung ferner einen Konturgenerator, um Konturen auf der Grundlage der Bereiche übereinstimmender Pixel-Intensitätswerte mit adaptivem Schwellenwert zu erzeugen. In einigen offengelegten Beispielen soll der Kartengenerator die Konturkarte auf der Grundlage der Konturen erzeugen.
-
In einigen offengelegten Beispielen enthält der Apparat außerdem einen Bildmanager, um das Bild zu erhalten. In einigen offengelegten Beispielen enthält das Gerät außerdem einen Objektdetektor zur Erkennung von Objekten, die mit der abgebildeten Anordnung von im Bild dargestellten Objekten verbunden sind. In einigen offengelegten Beispielen enthält die Vorrichtung ferner einen Segmentierungsgenerator, um eine semantische Segmentierung für die Objekte auf der Grundlage der abgebildeten Anordnung von im Bild dargestellten Objekten zu erzeugen. In einigen offengelegten Beispielen enthält der Apparat ferner einen Ortszielbestimmer, um die Objektpositionsziele auf der Grundlage der semantischen Segmentierung zu bestimmen. In einigen offengelegten Beispielen enthält der Apparat ferner einen Montagezielbestimmer, um die zugehörigen Montageziele auf der Grundlage der semantischen Segmentierung zu bestimmen.
-
In einigen Beispielen wird ein nicht vorübergehendes computerlesbares Speichermedium mit Anweisungen offengelegt. In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung einen oder mehrere Prozessoren eines Roboters, Sequenzen von RL-Aktions-Primitiven (Reinforcement Learning) auf der Grundlage von Objektpositionszielen und zugehörigen Montagezielen zu bestimmen, die für die jeweiligen Objekte in einer abgebildeten Montage von Objekten bestimmt werden. In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung einen oder mehrere Prozessoren, dem Roboter den Befehl zu erteilen, eine physikalische Baugruppe von Objekten auf der Grundlage der Sequenzen von RL-Aktions-Primitiven zu konstruieren. In einigen offengelegten Beispielen soll die physische Anordnung von Objekten der abgebildeten Anordnung von Objekten entsprechen.
In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den einen oder die mehreren Prozessoren, eine Objekt-zu-Ziel-Abbildung auf der Grundlage der Objektpositionsziele, der zugehörigen Montageziele und der Anfangspositionen der physischen Objekte, die in die physische Montage von Objekten einbezogen werden sollen, zu erzeugen. In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den einen oder die mehreren Prozessoren, eine Objektplatzierungssequenz für die physischen Objekte auf der Grundlage der Objekt-zu-Ziel-Abbildung zu bestimmen.
In einigen offengelegten Beispielen bewirken die Anweisungen bei ihrer Ausführung, dass der eine oder die mehreren Prozessoren für die jeweiligen physischen Objekte gemäß der Objektplatzierungssequenz iterativ: ein entsprechendes der Zusammenbauziele auf der Grundlage der Objekt-zu-Ziel-Abbildung identifizieren; eine entsprechende der Sequenzen von RL-Aktions-Primitiven bestimmen, die mit dem entsprechenden der Zusammenbauziele verknüpft sind; und die entsprechende der Sequenzen von RL-Aktions-Primitiven ausgeben. In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den einen oder mehrere Prozessoren dazu, dem Roboter den Befehl zu erteilen, die physische Baugruppe von Objekten zu konstruieren, indem sie zuvor vom Roboter erlernte Aktionsprimitive aufrufen. In einigen offengelegten Beispielen soll auf die primitiven Handlungsanweisungen aus einer Bibliothek mit primitiven Handlungsanweisungen zugegriffen werden.
In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den einen oder mehrere Prozessoren, die primitiven Handlungsrichtlinien durch Aufruf eines RL-Algorithmus zu trainieren. In einigen offengelegten Beispielen soll der Roboter die auf dem RL-Algorithmus basierenden primitiven Handlungsrichtlinien lernen. In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den einen oder die mehreren Prozessoren, die primitiven Handlungsrichtlinien der Bibliothek der primitiven Handlungsrichtlinien hinzuzufügen.
In einigen offengelegten Beispielen bewirken die Anweisungen bei ihrer Ausführung, dass der eine oder die mehreren Prozessoren ein Bild zerlegen, das die abgebildete Baugruppe von Objekten in die Objektpositionsziele und die zugehörigen Baugruppenziele darstellt.
In einigen offengelegten Beispielen bewirken die Anweisungen bei ihrer Ausführung, dass der eine oder die mehreren Prozessoren das Bild erhalten. In einigen offengelegten Beispielen bewirken die Anweisungen bei ihrer Ausführung, dass der eine oder die mehreren Prozessoren Objekte erkennen, die mit der abgebildeten Anordnung von im Bild dargestellten Objekten verbunden sind. In einigen offengelegten Beispielen veranlassen die Anweisungen, wenn sie ausgeführt werden, den einen oder die mehreren Prozessoren dazu, eine Konturkarte für die Objekte auf der Grundlage der abgebildeten Anordnung von im Bild dargestellten Objekten zu erzeugen. In einigen offengelegten Beispielen veranlassen die Anweisungen, wenn sie ausgeführt werden, den einen oder die mehreren Prozessoren dazu, die Objektpositionsziele auf der Grundlage der Konturkarte zu bestimmen. In einigen offengelegten Beispielen veranlassen die Anweisungen, wenn sie ausgeführt werden, den einen oder die mehreren Prozessoren dazu, die zugehörigen Montageziele auf der Grundlage der Konturkarte zu bestimmen.
In einigen offengelegten Beispielen veranlassen die Anweisungen, wenn sie ausgeführt werden, den einen oder die mehreren Prozessoren dazu, einer Kamera des Roboters den Befehl zu erteilen, das Bild zu erfassen [0158].
-
In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den oder die Prozessoren, das Bild in ein Graustufenbild umzuwandeln. In einigen offengelegten Beispielen veranlassen die Anweisungen, wenn sie ausgeführt werden, den einen oder die mehreren Prozessoren dazu, Pixel-Intensitätswerte von Pixeln des Graustufenbildes zu erkennen. In einigen offengelegten Beispielen veranlassen die Anweisungen, wenn sie ausgeführt werden, den einen oder die mehreren Prozessoren dazu, Pixel-Intensitätswerte mit einem adaptiven Schwellenwert zu erzeugen, indem sie die Pixel-Intensitätswerte adaptiv auf einen Schwellenwert setzen. In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den einen oder die mehreren Prozessoren, Bereiche mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten zu bestimmen. In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den einen oder die mehreren Prozessoren, Konturen auf der Grundlage der Bereiche mit übereinstimmenden Pixel-Intensitätswerten mit adaptivem Schwellenwert zu erzeugen. In einigen offengelegten Beispielen basiert die Erzeugung der Konturkarte auf den Konturen.
In einigen offengelegten Beispielen bewirken die Anweisungen bei ihrer Ausführung, dass der eine oder die mehreren Prozessoren das Bild erhalten. In einigen offengelegten Beispielen bewirken die Anweisungen bei ihrer Ausführung, dass der eine oder die mehreren Prozessoren Objekte erkennen, die mit der abgebildeten Anordnung der im Bild dargestellten Objekte verbunden sind. In einigen offengelegten Beispielen bewirken die Anweisungen bei ihrer Ausführung, dass der eine oder die mehreren Prozessoren eine semantische Segmentierung für die Objekte auf der Grundlage der abgebildeten Anordnung von im Bild dargestellten Objekten erzeugen. In einigen offengelegten Beispielen bewirken die Anweisungen bei ihrer Ausführung, dass der eine oder die mehreren Prozessoren die Ziele für die Lokalisierung der Objekte auf der Grundlage der semantischen Segmentierung bestimmen. In einigen offengelegten Beispielen veranlassen die Anweisungen bei ihrer Ausführung den oder die Prozessoren, die zugehörigen Montageziele auf der Grundlage der semantischen Segmentierung zu bestimmen.
In einigen Beispielen wird eine Methode offengelegt. In einigen offengelegten Beispielen umfasst die Methode die Bestimmung von Sequenzen von RL-Aktions-Primitiven (Reinforcement Learning, Verstärkungslernen) durch die Ausführung einer computerlesbaren Anweisung mit einem oder mehreren Prozessoren eines Roboters auf der Grundlage von Objektpositionszielen und zugehörigen Montagezielen, die für die jeweiligen Objekte in einer abgebildeten Montage von Objekten bestimmt werden. In einigen offengelegten Beispielen beinhaltet die Methode die Anweisung, durch Ausführen einer computerlesbaren Anweisung mit einem oder mehreren Prozessoren dem Roboter zu befehlen, eine physische Anordnung von Objekten auf der Grundlage der Sequenzen von RL-Aktions-Primitiven zu konstruieren. In einigen offengelegten Beispielen soll die physische Anordnung von Objekten der abgebildeten Anordnung von Objekten entsprechen.
In einigen offengelegten Beispielen umfasst die Methode ferner die Erzeugung einer Objekt-zu-Ziel-Abbildung auf der Grundlage der Ziele für die Lokalisierung der Objekte, der zugehörigen Montageziele und der Anfangspositionen der physischen Objekte, die in die physische Montage von Objekten einbezogen werden sollen, durch Ausführung einer computerlesbaren Anweisung mit dem einen oder den mehreren Prozessoren. In einigen offengelegten Beispielen umfasst die Methode ferner die Bestimmung einer Objektplatzierungssequenz für die physischen Objekte auf der Grundlage der Objekt-zu-Ziel-Abbildung durch Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren.
In einigen offengelegten Beispielen beinhaltet die Methode außerdem, iterativ, für die jeweiligen physischen Objekte gemäß der Objektplatzierungssequenz: Identifizieren, durch Ausführen eines computerlesbaren Befehls mit dem einen oder mehreren Prozessoren, eines entsprechenden der Zusammenbauziele auf der Grundlage der Objekt-zu-Ziel-Abbildung; Bestimmen, durch Ausführen eines computerlesbaren Befehls mit dem einen oder mehreren Prozessoren, einer entsprechenden der Sequenzen von RL-Aktions-Primitiven, die mit dem entsprechenden der Zusammenbauziele verbunden sind; und Ausgeben, durch Ausführen eines computerlesbaren Befehls mit dem einen oder mehreren Prozessoren, der entsprechenden der Sequenzen von RL-Aktions-Primitiven.
In einigen offengelegten Beispielen schließt die Anweisung des Roboters, die physische Baugruppe von Objekten zu konstruieren, den Aufruf von Aktionsprimitiven ein, die der Roboter zuvor gelernt hat. In einigen offengelegten Beispielen soll auf die primitiven Handlungsrichtlinien aus einer Bibliothek mit primitiven Handlungsrichtlinien zugegriffen werden.
In einigen offengelegten Beispielen umfasst die Methode außerdem das Training der primitiven Handlungsrichtlinien durch Ausführen einer computerlesbaren Anweisung mit einem oder mehreren Prozessoren, indem ein RL-Algorithmus aufgerufen wird. In einigen offengelegten Beispielen soll der Roboter die auf dem RL-Algorithmus basierenden primitiven Handlungsrichtlinien lernen. In einigen offengelegten Beispielen umfasst die Methode außerdem das Hinzufügen der primitiven Handlungsrichtlinien zur Bibliothek der primitiven Handlungsrichtlinien durch die Ausführung einer computerlesbaren Anweisung mit einem oder mehreren Prozessoren.
In einigen offengelegten Beispielen umfasst die Methode ferner die Zerlegung eines Bildes, das die abgebildete Anordnung von Objekten in die Ziele für die Lokalisierung der Objekte und die zugehörigen Anordnungsziele darstellt, durch die Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren.
In einigen offengelegten Beispielen beinhaltet das Verfahren ferner die Gewinnung des Bildes durch Ausführung eines computerlesbaren Befehls mit einem oder mehreren Prozessoren. In einigen offengelegten Beispielen beinhaltet das Verfahren ferner die Erkennung von Objekten, die mit der abgebildeten Anordnung von Objekten in dem Bild assoziiert sind, durch Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren. In einigen offengelegten Beispielen umfasst das Verfahren ferner die Erzeugung einer Konturkarte für die Objekte auf der Grundlage der abgebildeten Anordnung von Objekten, die in dem Bild dargestellt sind, durch Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren. In einigen offengelegten Beispielen umfasst die Methode ferner die Bestimmung der Objektpositionsziele auf der Grundlage der Konturkarte durch Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren. In einigen offengelegten Beispielen beinhaltet die Methode ferner die Bestimmung der zugehörigen Montageziele auf der Grundlage der Konturkarte durch Ausführung eines computerlesbaren Befehls mit einem oder mehreren Prozessoren.
In einigen offengelegten Beispielen umfasst die Methode ferner die Anweisung, durch Ausführung einer computerlesbaren Anweisung mit dem einen oder den mehreren Prozessoren eine Kamera des Roboters zu steuern, um das Bild zu erfassen.
-
In einigen offengelegten Beispielen umfasst das Verfahren ferner die Umwandlung des Bildes in ein Graustufenbild durch die Ausführung einer computerlesbaren Anweisung mit dem einen oder den mehreren Prozessoren. In einigen offengelegten Beispielen umfasst das Verfahren ferner die Erkennung von Pixel-Intensitätswerten von Pixeln des Graustufenbildes durch die Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren. In einigen offengelegten Beispielen beinhaltet das Verfahren ferner die Erzeugung von Pixel-Intensitätswerten mit adaptivem Schwellenwert durch Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren, indem die Pixel-Intensitätswerte adaptiv mit einem Schwellenwert versehen werden. In einigen offengelegten Beispielen schließt das Verfahren ferner ein, durch Ausführen eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren Bereiche mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten zu bestimmen. In einigen offengelegten Beispielen umfasst das Verfahren ferner die Erzeugung von Konturen durch Ausführen eines computerlesbaren Befehls mit einem oder mehreren Prozessoren auf der Grundlage der Bereiche übereinstimmender Pixel-Intensitätswerte mit adaptivem Schwellenwert. In einigen offengelegten Beispielen basiert die Erzeugung der Konturkarte auf den Konturen.
In einigen offengelegten Beispielen beinhaltet die Methode ferner die Gewinnung des Bildes durch die Ausführung eines computerlesbaren Befehls mit einem oder mehreren Prozessoren. In einigen offengelegten Beispielen beinhaltet die Methode ferner die Erkennung von Objekten, die mit der abgebildeten Anordnung der im Bild dargestellten Objekte verbunden sind, durch Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren. In einigen offengelegten Beispielen umfasst das Verfahren ferner die Erzeugung einer semantischen Segmentierungskarte für die Objekte auf der Grundlage der abgebildeten Anordnung von im Bild dargestellten Objekten durch Ausführung eines computerlesbaren Befehls mit dem einen oder den mehreren Prozessoren. In einigen offengelegten Beispielen umfasst die Methode ferner die Bestimmung der Objektpositionsziele auf der Grundlage der semantischen Segmentierung durch Ausführen eines computerlesbaren Befehls mit einem oder mehreren Prozessoren. In einigen offengelegten Beispielen beinhaltet die Methode ferner die Bestimmung der zugehörigen Zusammenstellungsziele auf der Grundlage der semantischen Segmentierung durch Ausführen eines computerlesbaren Befehls mit einem oder mehreren Prozessoren.
In einigen Beispielen wird ein Apparat offengelegt. In einigen offengelegten Beispielen umfasst der Apparat Mittel zur Bestimmung einer Sequenz von Verstärkungslern-Aktionsprimitiven (RL) auf der Grundlage eines Objektpositionsziels und eines zugehörigen Montageziels, das für ein in einer abgebildeten Montage von Objekten dargestelltes Objekt bestimmt wurde. In einigen offengelegten Beispielen umfasst die Vorrichtung ferner Mittel zum Befehlen eines Roboters, eine physikalische Anordnung von Objekten auf der Grundlage der Sequenz von RL-Aktions-Primitiven zu konstruieren. In einigen offengelegten Beispielen soll die physische Anordnung von Objekten der abgebildeten Anordnung von Objekten entsprechen.
-
In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zum Erzeugen einer Objekt-zu-Ziel-Karte auf der Grundlage (i) von Objektpositionszielen einschließlich des Objektpositionsziels, (ii) zugeordneten Montagezielen einschließlich des zugeordneten Montageziels und (iii) Anfangspositionen von physischen Objekten, die in die physische Montage von Objekten einbezogen werden sollen. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Bestimmung einer Objektplatzierungssequenz für die physischen Objekte auf der Grundlage der Objekt-zu-Ziel-Karte.
In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zum iterativen Aufrufen für die jeweiligen physikalischen Objekte gemäß der Objektplatzierungssequenz: Mittel zum Identifizieren eines entsprechenden der Zusammenbauziele auf der Grundlage der Objekt-zu-Ziel-Karte; Mittel zum Bestimmen einer entsprechenden der Sequenzen von RL-Aktions-Primitiven, die mit dem entsprechenden der Zusammenbauziele verbunden sind; und Mittel zum Ausgeben der entsprechenden der Sequenzen von RL-Aktions-Primitiven an den Bewegungsmanager.
In einigen offengelegten Beispielen besteht das Mittel zum Befehlen darin, dem Roboter zu befehlen, die physische Baugruppe von Objekten zu konstruieren, indem zuvor vom Roboter erlernte Aktionsprimitive aufgerufen werden. In einigen offengelegten Beispielen besteht das Mittel zum Befehlen darin, auf die primitiven Handlungsrichtlinien aus einer Bibliothek mit primitiven Handlungsrichtlinien zuzugreifen.
-
In einigen offengelegten Beispielen enthält der Apparat außerdem Mittel zum Trainieren der primitiven Handlungsrichtlinien. In einigen offengelegten Beispielen besteht das Mittel für das Training darin, einen RL-Algorithmus aufzurufen. In einigen offengelegten Beispielen soll der Roboter die auf dem RL-Algorithmus basierenden primitiven Handlungsrichtlinien lernen. In einigen offengelegten Beispielen enthält der Apparat ferner Mittel zum Hinzufügen der primitiven Handlungsrichtlinien zur Bibliothek der primitiven Handlungsrichtlinien.
In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Zerlegung eines Bildes, das die abgebildete Baugruppe von Objekten in (i) Objektpositionsziele einschließlich des Objektpositionsziels und (ii) zugehörige Baugruppenziele einschließlich des zugehörigen Baugruppenziels darstellt.
In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Gewinnung des Bildes. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zum Erkennen von Objekten, die mit der abgebildeten Anordnung von im Bild dargestellten Objekten verbunden sind. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Erzeugung einer Konturkarte für die Objekte auf der Grundlage der abgebildeten Anordnung von Objekten, die im Bild dargestellt sind. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Bestimmung der Objektpositionsziele auf der Grundlage der Konturkarte. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Bestimmung der zugehörigen Montageziele auf der Grundlage der Konturkarte.
-
In einigen offengelegten Beispielen enthält der Apparat außerdem eine Kamera. In einigen offengelegten Beispielen besteht das Mittel zur Erlangung des Bildes darin, der Kamera den Befehl zu geben, das Bild zu erfassen.
-
In einigen offengelegten Beispielen enthält das Gerät außerdem Mittel zur Umwandlung des Bildes in ein Graustufenbild. In einigen offengelegten Beispielen enthält das Gerät außerdem Mittel zur Erkennung von Pixel-Intensitätswerten von Pixeln des Graustufenbildes. In einigen offengelegten Beispielen enthält das Gerät ferner Mittel zur Erzeugung von Pixel-Intensitätswerten mit adaptiver Schwelle. In einigen offengelegten Beispielen enthält das Gerät ferner Mittel zur Bestimmung von Bereichen mit übereinstimmenden adaptiv geschwellten Pixel-Intensitätswerten. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Erzeugung von Konturen auf der Grundlage der Bereiche übereinstimmender Pixel-Intensitätswerte mit adaptivem Schwellenwert. In einigen offengelegten Beispielen besteht das Mittel zur Erzeugung der Konturkarte darin, die Konturkarte auf der Grundlage der Konturen zu erzeugen.
-
In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Gewinnung des Bildes. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Erkennung von Objekten, die mit der abgebildeten Anordnung von im Bild dargestellten Objekten verbunden sind. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Erzeugung einer semantischen Segmentierung für die Objekte auf der Grundlage der abgebildeten Anordnung der im Bild dargestellten Objekte. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Bestimmung der Objektpositionsziele auf der Grundlage der semantischen Segmentierung. In einigen offengelegten Beispielen enthält die Vorrichtung ferner Mittel zur Bestimmung der zugehörigen Montageziele auf der Grundlage der semantischen Segmentierung.
-
Obwohl bestimmte Beispielmethoden, Vorrichtungen und Herstellungsgegenstände hierin offenbart wurden, ist der Geltungsbereich dieses Patents nicht darauf beschränkt. Im Gegenteil, dieses Patent deckt alle Methoden, Apparate und Herstellungsgegenstände ab, die in angemessener Weise in den Geltungsbereich der Ansprüche dieses Patents fallen.