DE102021201880A1 - Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts - Google Patents

Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts Download PDF

Info

Publication number
DE102021201880A1
DE102021201880A1 DE102021201880.7A DE102021201880A DE102021201880A1 DE 102021201880 A1 DE102021201880 A1 DE 102021201880A1 DE 102021201880 A DE102021201880 A DE 102021201880A DE 102021201880 A1 DE102021201880 A1 DE 102021201880A1
Authority
DE
Germany
Prior art keywords
camera image
camera
pose
vertices
model
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021201880.7A
Other languages
English (en)
Inventor
Markus Spies
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102021201880.7A priority Critical patent/DE102021201880A1/de
Priority to US17/677,015 priority patent/US11941846B2/en
Priority to CN202210176740.5A priority patent/CN114972498A/zh
Publication of DE102021201880A1 publication Critical patent/DE102021201880A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/06Topological mapping of higher dimensional structures onto lower dimensional surfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0014Image feed-back for automatic industrial control, e.g. robot with camera
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/75Determining position or orientation of objects or cameras using feature-based methods involving models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30108Industrial image inspection
    • G06T2207/30164Workpiece; Machine component

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Robotics (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

Gemäß verschiedenen Ausführungsformen wird ein Verfahren zum Verfahren zum Ermitteln der Pose eines Objekts beschrieben, aufweisend aufnehmen eines ersten und eines zweiten Kamerabilds des Objekt, Ermitteln einer Korrespondenz zwischen Kamerabildpunkten der Kamerabilder und Vertices eines 3D-Modells des Objekts und Ermitteln der Pose des Objekts aus einer Menge von Posen durch Minimieren, über die Menge von Posen, einer Verlustfunktion, wobei die Verlustfunktion für eine Pose gegeben ist durch Akkumulieren von Abstandsmaßen zwischen Projektionen des Objekts in der Pose auf die jeweilige Kamerabildebene und den entsprechenden Bildpunkten des jeweiligen Kamerabilds.

Description

  • Verschiedene Ausführungsbeispiele betreffen allgemein eine Vorrichtung und ein Verfahren zum Ermitteln der Pose eines Objekts .
  • Um eine flexible Herstellung oder Bearbeitung von Objekten durch einen Roboter zu ermöglichen, ist es wünschenswert, dass der Roboter in der Lage ist, ein Objekt ungeachtet der Stellung, mit der das Objekt in den Arbeitsraum des Roboters platziert wird, zu handhaben. Daher sollte der Roboter fähig sein, zu erkennen, welche Teile des Objektes sich an welchen Positionen befinden, sodass er zum Beispiel das Objekt an der korrekten Stelle greifen kann, um es z. B. an einem anderen Objekt zu befestigen, oder das Objekt am aktuellen Ort zu schweißen. Dies bedeutet, dass der Roboter fähig sein sollte, die Pose (Position und Orientierung) des Objekts zum Beispiel aus einem Bild, das beispielsweise durch ein am Roboter befestigtes Bild aufgenommen wird, zu erkennen. Bei Kenntnis der Pose der Kamera und einer Korrespondenz zwischen Bildpunkten und Stellen des Objekts (z.B. Vertices eines 3D-Objektmodells) lässt sich auf die Pose des Objekts rückschließen. Aufgrund von Problemen wie Verdeckung und Symmetrien ist diese Aufgabe jedoch im Allgemeinen nicht einfach zu lösen. Dementsprechend sind verbesserte Herangehensweisen zum Ermitteln der Pose eines Objekts wünschenswert.
  • Gemäß verschiedenen Ausführungsformen wird ein Verfahren zum Ermitteln der Pose eines Objekts bereitgestellt, das aufweist: Ermitteln eines 3D-Modells des Objekts, wobei das 3D-Modell ein Gitter von Vertices aufweist, Aufnehmen eines ersten Kamerabilds des Objekt aus einer ersten Perspektive, Aufnehmen eines zweiten Kamerabilds des Objekts aus einer zweiten Perspektive, die sich von der ersten Perspektive unterscheidet, Ermitteln einer Korrespondenz zwischen Kamerabildpunkten des ersten Kamerabilds und Vertices des 3D-Modells, Ermitteln einer Korrespondenz zwischen Kamerabildpunkten des zweiten Kamerabilds und Vertices des 3D-Modells und Ermitteln der Pose des Objekts aus einer Menge von Posen durch Minimieren, über die Menge von Posen, einer Verlustfunktion, wobei die Verlustfunktion für eine Pose gegeben ist durch: Projizieren von Vertices des 3D-Modells in die Kamerabildebene gemäß der ersten Perspektive, für den Fall, dass sich das 3D-Modell in der Pose befindet, Projizieren von Vertices des 3D-Modells in die Kamerabildebene gemäß der zweiten Perspektive, für den Fall, dass sich das 3D-Modell in der Pose befindet, Berechnen von Abstandsmaßen zwischen den Projektionen der gemäß der ersten Perspektive projizierten Vertices und den Kamerabildpunkten des ersten Kamerabilds, die den gemäß der ersten Perspektive projizierten Vertices zugeordnet sind, Berechnen von Abstandsmaßen zwischen den Projektionen der gemäß der zweiten Perspektive projizierten Vertices und den Kamerabildpunkten des zweiten Kamerabilds, die den gemäß der zweiten Perspektive projizierten Vertices zugeordnet sind und Akkumulieren der berechneten Abstandsmaße zu der Verlustfunktion.
  • Das oben beschriebene Verfahren ermöglicht ein verbesserte Ermittlung (bzw. Schätzung) der Pose eines Objekts und dementsprechend eine sicherere Behandlung eines Objekts durch einen Roboter, da beispielsweise vermieden werden kann, dass die Pose eines Objekts falsch ermittelt wird und an einer falschen (z.B. empfindlichen) Stelle gegriffen oder behandelt (lackiert, geschweißt, etc.) wird..
  • Ausführungsbeispiel 1 ist ein Verfahren zum Ermitteln der Pose eines Objekts wie oben beschrieben.
  • Ausführungsbeispiel 2 ist das Verfahren nach Ausführungsbeispiel 1, wobei das Ermitteln der Korrespondenz zwischen Kamerabildpunkten des ersten Kamerabilds und Vertices des 3D-Modells und das Ermitteln der Korrespondenz zwischen Kamerabildpunkten des zweiten Kamerabilds und Vertices des 3D-Modells durch Abbilden des von Kamerabildpunkten des ersten Kamerabilds und des zweiten Kamerabilds auf jeweilige Deskriptorwerte und Zuordnen zu den Kamerabildpunkten Vertices des 3D-Modells, denen die jeweiligen Deskriptorwerte zugeordnet sind, erfolgt.
  • Das Abbilden von Bildpunkten auf Deskriptorwerte (d.h. das Abbilden der Kamerabilder auf Deskriptorbilder) ermöglicht das Erfassen der Struktur (z.B. Topologie) des Objekts unabhängig von der Pose des Objekts und somit die Zuordnung von Kamerabildpunkten zu 3D-Modell-Vertices.
  • Ausführungsbeispiel 3 ist das Verfahren nach Ausführungsbeispiel 2, wobei das Abbilden durch ein maschinelles Lernmodell erfolgt, das unter Verwendung des 3D-Modells und den den Vertices des 3D-Modells zugeordneten Deskriptorwerten trainiert wird.
  • Ein maschinelles Lernmodell, wie beispielsweise ein neuronales Netz, kann effektiv zum Ermitteln von Deskriptorwerten trainiert werden. Ein Beispiel hierfür ist dichtes Objektnetz (Dense Object Net).
  • Ausführungsbeispiel 4 ist das Verfahren nach einem der Ausführungsbeispiele 1 bis 3, aufweisend Aufnehmen einer Vielzahl von Kamerabildern des Objekts, wobei jedes Kamerabild der Vielzahl von Kamerabildern aus einer jeweiligen Perspektive einer Vielzahl von paarweise unterschiedlichen Perspektiven aufgenommen wird, Ermitteln, für jedes Kamerabild der Vielzahl von Kamerabildern, einer Korrespondenz zwischen Kamerabildpunkten des ersten und Vertices des 3D-Modells und Ermitteln der Pose des Objekts aus einer Menge von Posen durch Minimieren, über die Menge von Posen, einer Verlustfunktion, wobei die Verlustfunktion für eine Pose gegeben ist durch:
    • - Für jedes Kamerabild der Vielzahl von Kamerabildern, Projizieren von Vertices des 3D-Modells in die Kamerabildebene gemäß der jeweiligen Perspektive, für den Fall, dass sich das 3D-Modell in der Pose befindet;
    • - Für jedes Kamerabild der Vielzahl von Kamerabildern, Berechnen von Abstandsmaßen zwischen den Projektionen der gemäß der jeweiligen Perspektive projizierten Vertices und den Kamerabildpunkten des Kamerabilds, die den gemäß der jeweiligen Perspektive projizierten Vertices zugeordnet sind; und
    • - Akkumulieren der berechneten Abstandsmaße zu der Verlustfunktion.
  • Durch Verwendung von mehr als zwei Kamerabildern zur Objektposenschätzung kann die Genauigkeit der Schätzung weiter erhöht werden.
  • Ausführungsbeispiel 5 ist ein Verfahren zum Steuern eines Roboters, das Folgendes aufweist: Ermitteln der Pose eines Objekts gemäß einem der Ausführungsbeispiele 1 bis 4 und Steuern des Roboters in Abhängigkeit von der ermittelten Pose des Objekts.
  • Ausführungsbeispiel 6 ist das Verfahren nach Ausführungsbeispiel 5, wobei das Bestimmen der Pose des Objekts das Bestimmen der Position eines bestimmten Teils des Objekts aufweist, und wobei das Steuern des Roboters in Abhängigkeit von der ermittelten Pose des Objekts Steuern eines Endeffektors des Roboters, sich zu der Position des Teils des Objekts zu bewegen und mit dem Teil des Objekts zu interagieren, aufweist.
  • Ausführungsbeispiel 7 ist ein Software- oder Hardware-Agent, insbesondere Roboter, der Folgendes aufweist: eine Kamera, die zum Aufnehmen von Kamerabildern eines Objekts eingerichtet ist; und eine Steuereinrichtung, die zum Durchführen des Verfahrens gemäß einem der Ausführungsbeispiele 1 bis 6 eingerichtet ist.
  • Ausführungsbeispiel 8 ist der Software- oder Hardware-Agent nach Ausführungsbeispiel 7, der mindestens einen Aktor aufweist, wobei die Steuereinrichtung zum Steuern des mindestens einen Aktors abhängig von der ermittelten Pose des Objekts eingerichtet ist.
  • Ausführungsbeispiel 9 ist ein Computerprogramm, das Anweisungen aufweist, die bei Ausführung durch einen Prozessor veranlassen, dass der Prozessor ein Verfahren nach einem der Ausführungsbeispiele 1 bis 6 durchführt.
  • Ausführungsbeispiel 10 ist ein Computerlesbares Medium, das Anweisungen speichert, die bei Ausführung durch einen Prozessor veranlassen, dass der Prozessor ein Verfahren nach einem der Ausführungsbeispiele 1 bis 6 durchführt.
  • Ausführungsbeispiele der Erfindung sind in den Figuren dargestellt und werden im Folgenden näher erläutert. In den Zeichnungen beziehen sich gleiche Bezugszeichen überall in den mehreren Ansichten allgemein auf dieselben Teile. Die Zeichnungen sind nicht notwendig maßstabsgerecht, wobei der Schwerpunkt stattdessen allgemein auf die Darstellung der Prinzipien der Erfindung liegt.
    • 1 zeigt einen Roboter.
    • 2 veranschaulicht das Ermitteln des Pose eines Objekts aus einem Kamerabild des Objekts.
    • 3 veranschaulicht die Objektposenschätzung aus zwei Kamerabildern gemäß einem Ausführungsbeispiel.
    • 4 zeigt ein Ablaufdiagramm für ein Verfahren zum Ermitteln der Pose eines Objekts gemäß einer Ausführungsform.
  • Die verschiedenen Ausführungsformen, insbesondere die im Folgenden beschriebenen Ausführungsbeispiele, können mittels ein oder mehrerer Schaltungen implementiert werden. In einer Ausführungsform kann eine „Schaltung“ als jede Art von Logikimplementierender Entität verstanden werden, welche Hardware, Software, Firmware oder eine Kombination davon sein kann. Daher kann in einer Ausführungsform eine „Schaltung“ eine hartverdrahtete Logikschaltung oder eine programmierbare Logikschaltung, wie beispielsweise ein programmierbarer Prozessor, zum Beispiel ein Mikroprozessor sein. Eine „Schaltung“ kann auch Software sein, die von einem Prozessor implementiert bzw. ausgeführt wird, zum Beispiel jede Art von Computerprogramm. Jede andere Art der Implementierung der jeweiligen Funktionen, die im Folgenden ausführlicher beschrieben werden, kann in Übereinstimmung mit einer alternativen Ausführungsform als eine „Schaltung“ verstanden werden.
  • 1 zeigt einen Roboter 100.
  • Der Roboter 100 beinhaltet einen Roboterarm 101, zum Beispiel einen Industrieroboterarm zum Handhaben oder Montieren eines Arbeitsstücks (oder eines oder mehrerer anderer Objekte). Der Roboterarm 101 beinhaltet Manipulatoren 102, 103, 104 und eine Basis (oder Stütze) 105, mittels der die Manipulatoren 102, 103, 104 gestützt werden. Der Ausdruck „Manipulator“ bezieht sich auf die bewegbaren Bauteile des Roboterarms 101, deren Betätigung eine physische Interaktion mit der Umgebung ermöglicht, um z. B. eine Aufgabe auszuführen. Zur Steuerung beinhaltet der Roboter 100 eine (Roboter-) Steuereinrichtung 106, die zum Implementieren der Interaktion mit der Umgebung gemäß einem Steuerprogramm ausgelegt ist. Das letzte Bauteil 104 (das am weitesten von der Stütze 105 entfernt ist) der Manipulatoren 102, 103, 104 wird auch als der Endeffektor 104 bezeichnet und kann ein oder mehrere Werkzeuge beinhalten, wie etwa einen Schweißbrenner, ein Greifinstrument, ein Lackiergerät oder dergleichen.
  • Die anderen Manipulatoren 102, 103 (die sich näher an der Basis 105 befinden) können eine Positionierungsvorrichtung bilden, sodass, zusammen mit dem Endeffektor 104, der Roboterarm 101 mit dem Endeffektor 104 an seinem Ende bereitgestellt ist. Der Roboterarm 101 ist ein mechanischer Arm, der ähnliche Funktionen wie ein menschlicher Arm bereitstellen kann (möglicherweise mit einem Werkzeug an seinem Ende).
  • Der Roboterarm 101 kann Gelenkelemente 107, 108, 109 beinhalten, die die Manipulatoren 102, 103, 104 miteinander und mit der Basis 105 verbinden. Ein Gelenkelement 107, 108, 109 kann ein oder mehrere Gelenke aufweisen, die jeweils eine drehbare Bewegung (d. h. Drehbewegung) und/oder translatorische Bewegung (d. h. Verlagerung) für assoziierte Manipulatoren relativ zueinander bereitstellen können. Die Bewegung der Manipulatoren 102, 103, 104 kann mittels Aktoren initiiert werden, die durch die Steuereinrichtung 106 gesteuert werden.
  • Der Ausdruck „Aktor“ kann als eine Komponente verstanden werden, die als Reaktion auf ihren Antrieb zum Bewirken eines Mechanismus oder Prozesses ausgebildet ist. Der Aktor kann durch die Steuereinrichtung 106 erstellte Anweisungen (die sogenannte Aktivierung) in mechanische Bewegungen implementieren. Der Aktor, z. B. ein elektromechanischer Wandler, kann dazu ausgelegt sein, als Reaktion auf seinen Antrieb elektrische Energie in mechanische Energie umzuwandeln.
  • Der Ausdruck „Steuereinrichtung“ kann als ein beliebiger Typ von logikimplementierender Entität verstanden werden, die zum Beispiel eine Schaltung und/oder einen Prozessor beinhalten kann, die/der in der Lage ist, in einem Speicherungsmedium gespeicherte Software, Firmware oder eine Kombination davon auszuführen, und die/der Anweisungen, z. B. zu einem Aktor im vorliegenden Beispiel, ausstellen kann. Die Steuereinrichtung kann zum Beispiel durch Programmcode (z. B. Software) konfiguriert werden, um den Betrieb eines Systems, eines Roboters im vorliegenden Beispiel, zu steuern.
  • Im vorliegenden Beispiel beinhaltet die Steuereinrichtung 106 einen oder mehrere Prozessoren 110 und einen Speicher 111, der Code und Daten speichert, basierend auf denen der Prozessor 110 den Roboterarm 101 steuert. Gemäß verschiedenen Ausführungsformen steuert die Steuereinrichtung 106 den Roboterarm 101 auf Basis eines maschinellen Lernmodells 112, das im Speicher 111 gespeichert ist.
  • Zum Behandeln (z.B. Greifen) eines Objekts 113, das zum Beispiel in einen Arbeitsraum des Roboterarms 101 platziert ist, ermittelt die Steuereinrichtung 106 die Pose (Position und Orientierung) des Objekts 113. In Abhängigkeit von der ermittelten Pose kann die Steuereinrichtung 106 beispielsweise entscheiden, welcher Teil des Objekts 113 durch den Endeffektor 109 gegriffen werden sollte.
  • Die Steuereinrichtung 106 ermittelt die Pose unter Verwendung von Kamerabildern des Objekts 113. Der Roboter 100 kann zum Beispiel mit einer oder mehreren Kameras 114 ausgestattet sein, die es ihm ermöglichen, Bilder seines Arbeitsraums aufzunehmen. Die Kamera 114 ist zum Beispiel an dem Roboterarm 101 befestigt, sodass der Roboter Bilder des Objekts 113 von verschiedenen Perspektiven aus aufnehmen kann, indem er den Roboterarm 101 herumbewegt. Es können aber auch ein oder mehrere fixe Kameras vorgesehen sein.
  • Das maschinelle Lernmodell 112 ist beispielsweise ein (tiefes) neuronales Netzwerk, das für ein Kamerabild eine Merkmalskarte, z.B. in Form eines Bilds in einem Merkmalsraum, erzeugt, die es ermöglicht, Punkte im (2D) Kamerabild Punkten des (3D) Objekts zuzuordnen.
  • Beispielsweise kann das maschinelle Lernmodell 112 trainiert sein, ein bestimmten Ecke des Objekts einen bestimmten (eindeutigen) Merkmalswert (auch als Deskriptorwert bezeichnet) im Merkmalsraum zuzuweisen. Wird dem maschinellen Lernmodell 112 dann ein Kamerabild zugeführt und das maschinelle Lernmodell 112 ordnet einem Punkt des Kamerabilds diesen Merkmalswert zu, so kann man folgern, dass sich an dieser Stelle die Ecke befindet (also an einer Stelle im Raum, deren Projektion auf die Kameraebene dem Punkt im Kamerabild entspricht). Kennt man so die Position mehrerer Punkte des Objekts im Kamerabild (in anderen Worten die Zuordnung von Bildpunkten zu Stellen, z.B. Vertices, des Objekts), kann die Pose des Objekts im Raum (die sogenannte 6D-Pose) beispielsweise durch Verwendung eines PnP(perspective n-point)-Lösungsverfahrens ermittelt werden. Hierin werden wie im Zusammenhang mit 3D-Modellen üblich die Gitterpunkte eines 3D-Objektmodells als „Vertices“ (Einzahl „Vertex“) bezeichnet.
  • Das PnP-Problem ist das Problem, eine 6D-Pose (d.h. Position und Orientierung) eines Objekts aus einem 2D-Bild zu ermitteln, wenn die Zuordnung zwischen Punkten der 2D-Darstellung des Objekts im 2D-Bild und Punkten (typischerweise Vertices) des 3D-Objekts bekannt ist.
  • 2 veranschaulicht das PnP-Problem.
  • Eine Kamera 201 nimmt ein Bild 202 eines Würfels 203 auf. Der Würfel 203 wird somit auf die Kamerabildebene 204 projiziert. Unter der Annahme, dass die Ecken des Würfels eindeutig sind (weil sie beispielsweise unterschiedliche Farben haben), kann die Zuordnung zwischen den Vertices des 3D-Modells (d.h. CAD-Modells) des Würfels 203 und den Pixeln im Bild 202 angegeben werden. Das PnP-Problem ist es, die Pose der Kamera 201 relativ zum Objekt 203 bzw. äquivalent die Pose des Objekts 203 relativ zur Kamera 201 (je nachdem welches Koordinatensystem als Referenz verwendet wird) zu ermitteln.
  • Die Lösung des PnP-Problems erfordert die Zuordnung von Punkten im 2D-Objektbild 202 zu 3D-Objekt-Punkten (z.B. Vertices des 3D-Modells). Um diese zu bekommen, kann wie oben erläutert ein maschinelles Lernmodell verwendet werden, das Punkten im 2D-Objektbild 202 Deskriptorwerte zuordnet, wobei bekannt ist, welche 3D-Objekt-Punkte welche Deskriptorwerte haben, was die Zuordnung ermöglicht.
  • Ein Beispiel für ein maschinelles Lernmodell 112 zur Objekterkennung ist ein dichtes Objektnetz. Ein dichtes Objektnetz bildet ein Bild (z. B. ein durch die Kamera 114 bereitgestelltes RGB-Bild) auf ein beliebiges dimensionales (Dimension D) Deskriptorraumbild ab. Es können aber auch andere maschinelle Lernmodelle 112 verwendet werden, insbesondere solche, die nicht notwendigerweise eine „dichte“ Merkmalskarte erzeugen, sondern lediglich bestimmten Punkten (z.B. Ecken) des Objekts Deskriptorwerte zuordnen.
  • Hat die Steuereinrichtung 106 die Zuordnung von Bildpunkten des Objektbilds 202 und Vertices des 3D-Modells ermittelt (mittels eines maschinellen Lernmodells 112 oder auf andere Art), so kann sie nun die Pose des Objekts berechnen durch Lösen von m i n { R , T } i L ( ƒ ( y i , R , T ) , x i )
    Figure DE102021201880A1_0001
    wobei die yi Punkte des 3D-Modells sind, xi die zugehörigen 2D-Bildpunkte, ƒ die Projektion von 3D-Bildpunkten auf die Kamerabildebene 204 gegeben die Orientierung R und die Position T (z.B. als Rotation und Translation ausgehend von einer Standard-Pose) und L eine Entfernung, d.h. ein Abstandsmaß (gemäß einer Metrik, z.B. der Euklidischen Metrik oder Maximumsmetrik), zwischen zwei Punkten in der Kamerabildebene 204 sind.
  • Dieses Problem kann unter Verwendung verschiedener Verfahren (Löser) gelöst werden.
  • Gemäß verschiedenen Ausführungsformen wird das Ermitteln der Objektpose, wie z.B. wie oben beschrieben, auf eine Anordnung erweitert, in der zwei (oder mehr) Kamerabilder aus unterschiedlichen Perspektiven zur Verfügung stehen (d.h. beispielsweise eine Stereo-Anordnung).
  • Kamerabilder aus unterschiedlichen Positionen können durch mehrere Kameras (mit unterschiedlichen Posen) erzeugt werden oder auch von einer Kamera, die zwischen verschiedenen Posen bewegt wird (z.B. eine Kamera, die am Roboterarm 101 befestigt ist).
  • Pro Kamerabild kann die Zuordnung zwischen 2D-Bildpunkten und 3D-Modell-Punkten (z.B. Vertices) wie für ein einzelnes Kamerabild ermittelt werden, z.B. wie oben beschrieben mittels eines maschinellen Lernmodells 112, z.B. einem entsprechend trainierten neuronalen Netz. Ein beliebiges Verfahren, das eine Zuordnung von 2D-Bildpunkten zu 3D-Objektpunkten ermittelt und ein beliebiges PnP-Lösungsverfahren können durch Hinzufügen eines zweiten (oder auch mehrerer) Kamerabilder aus anderer Perspektive erweitert werden.
  • Die Verwendung von mehreren Kamerabildern verbessert erheblich die Schätzung der Objektpose im Vergleich zur Verwendung eines einzelnen Bilds. Gemäß verschiedenen Ausführungsformen werden beispielsweise zwei RBG-Bilder zur Schätzung einer Obj ektpose verwendet.
  • Im Folgenden wird ein Beispiel genauer beschrieben, bei dem zwei Kamerabilder eines Objekts aus unterschiedlichen Perspektiven verwendet werden. Dieses kann durch eine analoge Erweiterung (wie von einem Kamerabild zu zwei Kamerabildern) auf drei oder mehr Kamerabilder aus unterschiedlichen Perspektiven erweitert werden.
  • Bei zwei Kamerabildern (ein linkes und ein rechtes) wird anstatt der obigen Formel die Objektpose ermittelt durch Lösen von m i n { R , T } ( i L ( ƒ ) ( y i l , R , T ) , x i l ) + i L ( ƒ ( y i r , R + R ' , T + T ' ) , x i r ) )
    Figure DE102021201880A1_0002
    wobei die y i l
    Figure DE102021201880A1_0003
    Punkte des 3D-Modells mit zugehörigen Bildpunkten x i l
    Figure DE102021201880A1_0004
    im linken Kamerabild sind, die y i r
    Figure DE102021201880A1_0005
    Punkte des 3D-Modells mit zugehörigen Bildpunkten x i r
    Figure DE102021201880A1_0006
    im rechten Kamerabild sind, wie oben ƒ die Projektion von 3D-Bildpunkten auf die Kamerabildebene 204 gegeben die Orientierung R und die Position T bzw. R+R' und T + R' und wie oben L eine Entfernung (d.h. ein Abstandsmaß) zwischen zwei Punkten in der Kamerabildebene 204 sind.
  • R' und T' geben die relative Pose der linken Kamera zur rechten Kamera an.
  • 3 veranschaulicht die Objektposenschätzung aus zwei Kamerabildern 301, 302 gemäß einem Ausführungsbeispiel.
  • Die Steuereinrichtung 106 verarbeitet beide Kamerabilder 301, 302 separat mittels einer Pipeline, die die jeweilige Zuordnung 303, 304 von 2D-Bildpunkten und 3D-Bildpunkten berechnet. Durch Optimieren der kombinierten Verlustfunktion 305 wie oben angegeben ermittelt die Steuereinrichtung 106 die Objektpose 306.
  • Zusammenfassend wird gemäß verschiedenen Ausführungsformen ein Verfahren bereitgestellt, wie es im Folgenden mit Bezug auf 4 beschrieben wird.
  • 4 zeigt ein Ablaufdiagramm 400 für ein Verfahren zum Ermitteln der Pose eines Objekts.
  • In 401 wird ein 3D-Modells des Objekts ermittelt, wobei das 3D-Modell ein Gitter von Vertices aufweist.
  • In 402 werden ein erstes Kamerabild des Objekt aus einer ersten Perspektive und ein zweites Kamerabilds des Objekts aus einer zweiten Perspektive, die sich von der ersten Perspektive unterscheidet, aufgenommen.
  • In 403 werden eine Korrespondenz zwischen Kamerabildpunkten des ersten Kamerabilds und Vertices des 3D-Modells ermittelt und eine Korrespondenz zwischen Kamerabildpunkten des zweiten Kamerabilds und Vertices des 3D-Modells ermittelt.
  • In 404 wird die Pose des Objekts aus einer Menge von Posen ermittelt durch Minimieren, über die Menge von Posen, einer Verlustfunktion, wobei die Verlustfunktion für eine Pose gegeben ist (bzw. ermittelt wird, z.B. durch die Steuereinrichtung 106) durch:
    • - Projizieren von Vertices des 3D-Modells in die Kamerabildebene gemäß der ersten Perspektive, für den Fall, dass sich das 3D-Modell in der Pose befindet;
    • - Projizieren von Vertices des 3D-Modells in die Kamerabildebene gemäß der zweiten Perspektive, für den Fall, dass sich das 3D-Modell in der Pose befindet;
    • - Berechnen von Abstandsmaßen zwischen den Projektionen der gemäß der ersten Perspektive projizierten Vertices und den Kamerabildpunkten des ersten Kamerabilds, die den gemäß der ersten Perspektive projizierten Vertices zugeordnet sind;
    • - Berechnen von Abstandsmaßen zwischen den Projektionen der gemäß der zweiten Perspektive projizierten Vertices und den Kamerabildpunkten des zweiten Kamerabilds, die den gemäß der zweiten Perspektive projizierten Vertices zugeordnet sind; und
    • - Akkumulieren der berechneten Abstandsmaße zu der Verlustfunktion.
  • Gemäß verschiedenen Ausführungsformen wird die Pose eines Objekts aus einer Menge von Posen durch Minimieren, über die Menge von Posen, einer Verlustfunktion ermittelt, wobei die Verlustfunktion für eine Pose gegeben ist durch Akkumulieren von Abstandsmaßen zwischen Projektionen des Objekts in der Pose auf die jeweilige Kamerabildebene und den entsprechenden Bildpunkten des jeweiligen Kamerabildes.
  • Die Kamerabilder sind beispielsweise RGB-Bilder, können aber auch andere Arten von Kamerabildern wie Tiefenbilder oder Wärmebilder sein. Die Objektpose wird beispielsweise zur Steuerung eines Roboters ermittelt, z.B. für den Zusammenbau eines größeren Objekts aus Teilobjekten, das Bewegen von Objekten etc.
  • Unter „Roboter“ kann jegliches physisches System (mit einem mechanischen Teil, dessen Bewegung gesteuert wird), wie eine computergesteuerte Maschine, ein Fahrzeug, ein Haushaltsgerät, ein Elektrowerkzeug, eine Fertigungsmaschine, ein persönlicher Assistent oder ein Zugangskontrollsystem verstanden werden.
  • Das Verfahren ist gemäß einer Ausführungsform Computer-implementiert.
  • Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.

Claims (10)

  1. Verfahren zum Ermitteln der Pose eines Objekts aufweisend: Ermitteln eines 3D-Modells des Objekts, wobei das 3D-Modell ein Gitter von Vertices aufweist; Aufnehmen eines ersten Kamerabilds des Objekt aus einer ersten Perspektive; Aufnehmen eines zweiten Kamerabilds des Objekts aus einer zweiten Perspektive, die sich von der ersten Perspektive unterscheidet; Ermitteln einer Korrespondenz zwischen Kamerabildpunkten des ersten Kamerabilds und Vertices des 3D-Modells; Ermitteln einer Korrespondenz zwischen Kamerabildpunkten des zweiten Kamerabilds und Vertices des 3D-Modells; und Ermitteln der Pose des Objekts aus einer Menge von Posen durch Minimieren, über die Menge von Posen, einer Verlustfunktion, wobei die Verlustfunktion für eine Pose gegeben ist durch: - Projizieren von Vertices des 3D-Modells in die Kamerabildebene gemäß der ersten Perspektive, für den Fall, dass sich das 3D-Modell in der Pose befindet; - Projizieren von Vertices des 3D-Modells in die Kamerabildebene gemäß der zweiten Perspektive, für den Fall, dass sich das 3D-Modell in der Pose befindet; - Berechnen von Abstandsmaßen zwischen den Projektionen der gemäß der ersten Perspektive projizierten Vertices und den Kamerabildpunkten des ersten Kamerabilds, die den gemäß der ersten Perspektive projizierten Vertices zugeordnet sind; - Berechnen von Abstandsmaßen zwischen den Projektionen der gemäß der zweiten Perspektive projizierten Vertices und den Kamerabildpunkten des zweiten Kamerabilds, die den gemäß der zweiten Perspektive projizierten Vertices zugeordnet sind; und - Akkumulieren der berechneten Abstandsmaße zu der Verlustfunktion.
  2. Verfahren nach Anspruch 1, wobei das Ermitteln der Korrespondenz zwischen Kamerabildpunkten des ersten Kamerabilds und Vertices des 3D-Modells und das Ermitteln der Korrespondenz zwischen Kamerabildpunkten des zweiten Kamerabilds und Vertices des 3D-Modells durch Abbilden des von Kamerabildpunkten des ersten Kamerabilds und des zweiten Kamerabilds auf jeweilige Deskriptorwerte und Zuordnen zu den Kamerabildpunkten Vertices des 3D-Modells, denen die jeweiligen Deskriptorwerte zugeordnet sind, erfolgt.
  3. Verfahren nach Anspruch 2, wobei das Abbilden durch ein maschinelles Lernmodell erfolgt, das unter Verwendung des 3D-Modells und den den Vertices des 3D-Modells zugeordneten Deskriptorwerten trainiert wird.
  4. Verfahren nach einem der Ansprüche 1 bis 3, aufweisend Aufnehmen einer Vielzahl von Kamerabildern des Objekts, wobei jedes Kamerabild der Vielzahl von Kamerabildern aus einer jeweiligen Perspektive einer Vielzahl von paarweise unterschiedlichen Perspektiven aufgenommen wird; Ermitteln, für jedes Kamerabild der Vielzahl von Kamerabildern, einer Korrespondenz zwischen Kamerabildpunkten des ersten und Vertices des 3D-Modells; Ermitteln der Pose des Objekts aus einer Menge von Posen durch Minimieren, über die Menge von Posen, einer Verlustfunktion, wobei die Verlustfunktion für eine Pose gegeben ist durch: - Für jedes Kamerabild der Vielzahl von Kamerabildern, Projizieren von Vertices des 3D-Modells in die Kamerabildebene gemäß der jeweiligen Perspektive, für den Fall, dass sich das 3D-Modell in der Pose befindet; - Für jedes Kamerabild der Vielzahl von Kamerabildern, Berechnen von Abstandsmaßen zwischen den Projektionen der gemäß der jeweiligen Perspektive projizierten Vertices und den Kamerabildpunkten des Kamerabilds, die den gemäß der jeweiligen Perspektive projizierten Vertices zugeordnet sind; und - Akkumulieren der berechneten Abstandsmaße zu der Verlustfunktion.
  5. Verfahren zum Steuern eines Roboters, das Folgendes aufweist: Ermitteln der Pose eines Objekts gemäß einem der Ansprüche 1 bis 4; und Steuern des Roboters in Abhängigkeit von der ermittelten Pose des Objekts.
  6. Verfahren nach Anspruch 5, wobei das Bestimmen der Pose des Objekts das Bestimmen der Position eines bestimmten Teils des Objekts aufweist, und wobei das Steuern des Roboters in Abhängigkeit von der ermittelten Pose des Objekts Steuern eines Endeffektors des Roboters, sich zu der Position des Teils des Objekts zu bewegen und mit dem Teil des Objekts zu interagieren, aufweist.
  7. Software- oder Hardware-Agent, insbesondere Roboter, der Folgendes aufweist: eine Kamera, die zum Aufnehmen von Kamerabildern eines Objekts eingerichtet ist; eine Steuereinrichtung, die zum Durchführen des Verfahrens gemäß einem der Ansprüche 1 bis 6 eingerichtet ist.
  8. Software- oder Hardware-Agent nach Anspruch 7, der mindestens einen Aktor aufweist, wobei die Steuereinrichtung zum Steuern des mindestens einen Aktors abhängig von der ermittelten Pose des Objekts eingerichtet ist.
  9. Computerprogramm, das Anweisungen aufweist, die bei Ausführung durch einen Prozessor veranlassen, dass der Prozessor ein Verfahren nach einem der Ansprüche 1 bis 6 durchführt.
  10. Computerlesbares Medium, das Anweisungen speichert, die bei Ausführung durch einen Prozessor veranlassen, dass der Prozessor ein Verfahren nach einem der Ansprüche 1 bis 6 durchführt.
DE102021201880.7A 2021-02-26 2021-02-26 Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts Pending DE102021201880A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102021201880.7A DE102021201880A1 (de) 2021-02-26 2021-02-26 Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts
US17/677,015 US11941846B2 (en) 2021-02-26 2022-02-22 Device and method for ascertaining the pose of an object
CN202210176740.5A CN114972498A (zh) 2021-02-26 2022-02-25 用于确定对象的姿势的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021201880.7A DE102021201880A1 (de) 2021-02-26 2021-02-26 Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts

Publications (1)

Publication Number Publication Date
DE102021201880A1 true DE102021201880A1 (de) 2022-09-01

Family

ID=82799416

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021201880.7A Pending DE102021201880A1 (de) 2021-02-26 2021-02-26 Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts

Country Status (3)

Country Link
US (1) US11941846B2 (de)
CN (1) CN114972498A (de)
DE (1) DE102021201880A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021201880A1 (de) * 2021-02-26 2022-09-01 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150100289A1 (en) * 2013-10-09 2015-04-09 Technion Research & Development Foundation Limited Method and system for shapewise comparison
EP3944183A1 (de) * 2020-07-20 2022-01-26 Hexagon Technology Center GmbH Verfahren und system zur verbesserung von bildern unter verwendung von maschinellem lernen
DE102021201880A1 (de) * 2021-02-26 2022-09-01 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts
US11941738B2 (en) * 2021-10-28 2024-03-26 Shanghai United Imaging Intelligence Co., Ltd. Systems and methods for personalized patient body modeling

Also Published As

Publication number Publication date
US11941846B2 (en) 2024-03-26
CN114972498A (zh) 2022-08-30
US20220277483A1 (en) 2022-09-01

Similar Documents

Publication Publication Date Title
DE102014103738B3 (de) Visuelle fehlersuche bei roboteraufgaben
DE102010053002B4 (de) Systeme und Verfahren, die der Handhabung eines Ojekts mit einem Greifer zugeordnet sind
DE102015000587B4 (de) Roboterprogrammiervorrichtung zum Erstellen eines Roboterprogramms zum Aufnehmen eines Bilds eines Werkstücks
DE102015107436B4 (de) Lernfähige Bahnsteuerung
DE102017001131C5 (de) Verfahren und System zum Betreiben eines Roboters
DE102015111080B4 (de) Robotervorrichtung mit maschinellem Sehen
DE102015000589A1 (de) Datenerzeugungsvorrichtung für einen visuellen Sensor und ein Erfassungssimulationssystem
DE102021103726B4 (de) Messparameter-Optimierungsverfahren und -vorrichtung sowie Computersteuerprogramm
DE102017108727A1 (de) Verfahren zur Erstellung einer Datenbank mit Greiferposen, Verfahren zum Steuern eines Roboters, computerlesbares Speichermedium und Handhabungssystem
DE102021109332B4 (de) Vorrichtung und Verfahren zum Steuern eines Roboters zum Einsetzen eines Objekts in eine Einsetzstelle
DE102018129528A1 (de) Schwingungsunterdrückungsvorrichtung
DE102021109334B4 (de) Vorrichtung und Verfahren zum Trainieren eines Neuronalen Netzes zum Steuern eines Roboters für eine Einsetzaufgabe
WO2018193130A1 (de) Verfahren zur erstellung einer datenbank mit greiferposen, verfahren zum steuern eines roboters, computerlesbares speichermedium und handhabungssystem
DE102020212658A1 (de) Vorrichtung und Verfahren zum Steuern einer Robotervorrichtung
DE102021204846B4 (de) Verfahren zum Steuern einer Robotervorrichtung
DE102021201880A1 (de) Vorrichtung und Verfahren zum Ermitteln der Pose eines Objekts
DE102020208211A1 (de) Vorrichtungen und Verfahren zum Trainieren eines maschinellen Lernmodells zum Erkennen einer Objekttopologie eines Objekts aus einem Bild des Objekts
DE102018124671B4 (de) Verfahren und Vorrichtung zur Erstellung eines Robotersteuerprogramms
DE102022201719A1 (de) Vorrichtung und Verfahren zum Trainieren eines maschinellen Lernmodells zum Erzeugen von Deskriptorbildern zu Bildern von Objekten
DE102021212859A1 (de) Vorrichtung und Verfahren zum Trainieren eines maschinellen Lernmodells zum Erzeugen von Deskriptorbildern zu Bildern von Objekten
DE102021201921A1 (de) Vorrichtung und verfahren zum steuern eines roboters zum aufnehmen eines objekts
DE102021109333A1 (de) Vorrichtung und Verfahren zum Trainieren eines Neuronalen Netzes zum Steuern eines Roboters für eine Einsetzaufgabe
DE102018205669B4 (de) Aufnehmen von Nutzlasten mittels eines robotergeführten Werkzeugs
DE102020211053A1 (de) Annotationsvorrichtung
DE102021202337A1 (de) Vorrichtung und Verfahren zum Trainieren eines maschinellen Lernmodells zum Erkennen einer Objekttopologie eines Objekts in einem Bild des Objekts

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06K0009800000

Ipc: G06V0030200000