-
TECHNISCHES GEBIET
-
Die Offenbarung betrifft Roboterarme, die bewegliche Greiforgane einsetzen, und Verfahren zu deren Kalibrierung.
-
HINTERGRUND
-
Die hier bereitgestellte Hintergrundbeschreibung dient dem Zweck einer allgemeinen Darstellung des Kontexts der Offenbarung. Die Arbeit der gegenwärtig genannten Erfinder, sofern sie in diesem Hintergrundabschnitt beschrieben ist, sowie Aspekte der Beschreibung, die zum Zeitpunkt des Einreichens nicht anderweitig als Stand der Technik ausgewiesen sind, werden explizit noch implizit als Stand der Technik gegen die vorliegende Offenbarung anerkannt.
-
Die Genauigkeit einer Roboterkamerakalibrierung ist wesentlich für eine effektive Verwendung von Roboterplattformen, die durch visuelle Sensoren gelenkt werden. Bekannte Verfahren zur Roboterkamerakalibrierung umfassen das Bestimmen äußerlicher Eigenschaften, welche eine relative Position und Orientierung der Kamera mit Bezug auf ein interessierendes Koordinatensystem beschreiben. Bekannte Kalibrierungsverfahren stützen sich auf eine Überwachung durch Menschen, um auf manuelle Weise entsprechende Punkte in einem Bezugsrahmen einer Kamera bereitzustellen, indem Bilder von der Kamera untersucht werden und ein Aufenthaltsort eines Robotergreiforgans oder irgendeiner anderen Bezugsmarkierung markiert wird. Dieses Verfahren kann genau und für eine einmalige Kalibrierung geeignet sein, aber es kann sich als mühsam für eine flexible Fertigungsumgebung herausstellen, bei der eine Kalibrierung häufig ausgeführt werden muss. Andere bekannte Verfahren finden die entsprechenden Punkte durch Verwendung eines Computersehens und durch das Benutzen spezieller Kalibrierungsobjekte, Kalibrierungsmuster oder anderer Bezugsmarken, die im Arbeitsraum des Roboters platziert oder am Greiforgan angebracht sind. Derartige Kalibrierungsobjekte können beispielsweise ein Schachbrettmuster oder eine LED umfassen. Die Benutzung eines Kalibrierungsmusters kann insofern problematisch sein, als sie für eine spezielle Arbeitsumgebung nicht geeignet sein kann, normale Betriebsbedingungen stören kann und Positions- und Musterkalibrierungen erfordern kann, wodurch die Menge der Übereinstimmungen und die Komplexität der Optimierung erhöht werden.
-
ZUSAMMENFASSUNG
-
Ein Verfahren zum Kalibrieren eines beweglichen Greiforgans eines Roboterarms unter Verwendung einer Digitalkamera umfasst, dass dem Greiforgan befohlen wird, mehrere Posen einzunehmen. Bei jeder befohlenen Greiforganpose wird mit der Digitalkamera ein Bild des Greiforgans erfasst und beruhend auf dem erfassten Bild des Greiforgans wird eine Szenepunktwolke erzeugt, die das Greiforgan umfasst. Beruhend auf der befohlenen Greiforganpose wird eine synthetische Punktwolke erzeugt, die das Greiforgan umfasst, und eine erste Position des Greiforgans beruht auf der synthetischen Punktwolke, und es wird eine zweite Position des Greiforgans bestimmt, die der Szenepunktwolke zugeordnet ist. Beruhend auf der ersten Position des Greiforgans und der zweiten Position des Greiforgans für die mehreren befohlenen Greiforganposen wird eine Position des Greiforgans kalibriert.
-
Die vorstehenden Merkmale und Vorteile und andere Merkmale und Vorteile der vorliegenden Lehren ergeben sich leicht aus der folgenden genauen Beschreibung einiger der besten Arten und anderer Ausführungsformen zum Ausführen der vorliegenden Lehren, die in beigefügten Ansprüchen definiert sind, wenn sie in Verbindung mit den beiliegenden Zeichnungen gelesen wird.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Eine oder mehrere Ausführungsformen werden nun anhand von Beispielen mit Bezug auf die beiliegenden Zeichnungen beschrieben, in denen:
-
1 auf schematische Weise eine Robotervorrichtung in Übereinstimmung mit der Offenbarung veranschaulicht, welche ein bewegliches Greiforgan und ein externes Sichtsystem mit einem Bilddetektor (einer Kamera) und mehrere zugehörige Controller zur Überwachung und Steuerung derselben aufweist;
-
2 auf schematische Weise eine Ausführungsform einer Kalibrierungsprozesskonfiguration in Übereinstimmung mit der Offenbarung zeigt, um eine Raumpositionskalibrierung einer Robotervorrichtung zu entwickeln, die ein bewegliches Greiforgan aufweist, mit Bezug auf ein 3D-Bild des beweglichen Greiforgans, welches von einer entfernt montierten Digitalkamera stammt; und
-
3 auf schematische Weise ein Verfahren zum Kalibrieren einer Robotervorrichtung in Übereinstimmung mit der Offenbarung zeigt, welche ein bewegliches Greiforgan mit Bezug auf ein 3D-Bild des beweglichen Greiforgans umfasst, das von einer entfernt montierten Digitalkamera stammt, ohne externe Ziele oder andere Bezugsmarkierungen zu verwenden.
-
GENAUE BESCHREIBUNG
-
Nun mit Bezug auf die Zeichnungen, bei denen die Darstellungen nur zum Zweck der Veranschaulichung bestimmter beispielhafter Ausführungsformen und nicht zum Zweck der Einschränkung derselben gedacht sind, veranschaulicht 1 auf schematische Weise eine Robotervorrichtung 40, die einen Roboterarm 42 mit mehreren Gliedern, der ein bewegliches Greiforgan 44 aufweist, und ein externes Sichtsystem umfasst, welches einen entfernten Bilddetektor (eine Kamera) 10 und mehrere zugehörige Controller zur Überwachung und Steuerung derselben umfasst. Die Kamera 10 ist in der Lage, ein Bild eines Blickfelds (FOV) 12, welches das bewegliche Greiforgan 44 umfasst, zu erfassen, zu verarbeiten und zu speichern.
-
Die Kamera 10 ist vorzugsweise eine Stereovorrichtung, die zum Erfassen eines dreidimensionalen Bilds (3D-Bilds) 15 in der Lage ist, und sie ist mit einem Codierer 20 signaltechnisch verbunden, der mit einem Kameracontroller 30 signaltechnisch verbunden ist. Die Kamera 10 ist an einem Stativ starr befestigt, welches auf einer ersten Bodenoberfläche 11 ruht, die im Kontext eines ersten Bezugsrahmens 16 in der Form eines ersten xyz-Koordinatensystems beschrieben ist, das einen ersten Ursprungspunkt 17 aufweist, welcher der Kamera 10 zugeordnet ist, wobei die x- und y-Koordinaten durch die erste Bodenoberfläche 11 definiert werden und die z-Koordinate orthogonal zu der ersten Bodenoberfläche 11 ist. Die Kamera 10 kann sich an einer beliebigen Position und Orientierung relativ zu der Robotervorrichtung 40 und dem beweglichen Greiforgan 44 im FOV 12 befinden. Die Kamera 10 ist insofern von der Robotervorrichtung 40 entfernt bzw. abgesetzt, als eine Bewegung der Robotervorrichtung 40 keine entsprechende Bewegung der Kamera 10 bewirken wird.
-
Bei einer Ausführungsform ist das 3D-Bild 15, das von der Kamera 10 erfasst wird, eine Bitmap-Bilddatei in der Form eines 24-Bit-Stereobilds, das RGB-Werte (Rot-Grün-Blau-Werte) und Tiefenwerte umfasst, welche das FOV 12 repräsentieren. Andere Ausführungsformen des 3D-Bilds 15 können ein 3D-Bild umfassen, das eine Schwarz-Weiß- oder eine Graustufen-Darstellung des 3D-FOV 12 abbildet, oder andere Bilddarstellungen ohne Einschränkung. Die Kamera 10 umfasst einen Bilderfassungssensor, der mit dem Codierer 20 signaltechnisch verbunden ist, welcher eine digitale Signalverarbeitung (DSP) an dem 3D-Bild 15 ausführt. Der Bilderfassungssensor erfasst Pixel in dem FOV 12 mit einer vorbestimmten Auflösung und der Codierer 20 erzeugt eine Bitmap-Bilddatei 25 des FOV 12, beispielsweise eine 8-Bit-Bitmap der Pixel, welche den FOV 12 mit einer vordefinierten Auflösung darstellt. Der Codierer 20 erzeugt die Bitmap-Bilddatei 25, die an den Kameracontroller 30 übermittelt wird. Die Bitmap-Bilddatei 25 ist bei einer Ausführungsform eine codierte Datendatei, die in einem nicht vorübergehenden digitalen Datenspeichermedium gespeichert ist.
-
Die Bitmap-Bilddatei 25 umfasst eine digitale Darstellung eines 3D-Bilds, welches das bewegliche Greiforgan 44 des Roboterarms 42 umfasst, und sie repräsentiert ein Originalbild des FOV 12, das mit der ursprünglichen Auflösung der Kamera 10 erfasst wurde. Das 3D-Bild 15 des beweglichen Greiforgans 44, welches von der Kamera 10 erfasst wurde, enthält genügend Informationen, damit der Kameracontroller 30 die Position des beweglichen Greiforgans 44 mit Bezug auf die Kamera 10 analysieren und quantifizieren kann. Die wahrgenommene Gestalt des beweglichen Greiforgans 44 hängt von den relativen Blickwinkeln und der Distanz zwischen der Kamera 10 und dem beweglichen Greiforgan 44 ab, nachdem Einflüsse, die mit der Beleuchtung und Reflexion verbunden sind, berücksichtigt worden sind und die Kamera 10 kalibriert worden ist. Der Kameracontroller 30 erzeugt eine Szenepunktwolke 35 aus der Bitmap-Bilddatei 25, welche das bewegliche Greiforgan 44 des Roboterarms 42 umfasst. Bei einer Ausführungsform umfasst die Szenepunktwolke 35 die gesamte Bitmap-Bilddatei 25. Alternativ umfasst die Szenepunktwolke 35 einen Teil der Bitmap-Bilddatei 25, der mit dem beweglichen Greiforgan 44 des Roboterarms 42 verbunden ist, und der aus der Bitmap-Bilddatei 25 extrahiert wurde, um Arbeitsspeicheranforderungen zu verringern. Punktwolken und Punktwolken-Merkmalsextraktionstechniken sind bekannt. Der Kameracontroller 30 übermittelt die Szenepunktwolke 35 an einen Systemcontroller 60.
-
Die Robotervorrichtung 40 ruht vorzugsweise auf einer zweiten Bodenoberfläche 41, die im Kontext eines zweiten Bezugsrahmens 46 in der Form eines zweiten xyz-Koordinatensystems beschrieben ist, welches einen zweiten Ursprungspunkt 47 aufweist, welcher der Robotervorrichtung 40 zugeordnet ist, wobei die x- und y-Koordinaten durch die zweite Bodenoberfläche 41 definiert sind und die z-Koordinate orthogonal zu der zweiten Bodenoberfläche 41 ist. Die Robotervorrichtung 40 umfasst einen steuerbaren Arm 42 mit mehreren Gliedern, an dem das bewegliche Greiforgan 44 angebracht ist. Das Greiforgan 44 ist an dem Ende des Roboterarms 42 als dessen Hand, Werkzeug, Manipulator usw. angebracht. Es ist beweglich, d. h. in der Lage, seine Gelenke zu bewegen und seine Gestalt zu verändern. Der Arm 42 mit mehreren Gliedern und das Greiforgan 44 sind ausgestaltet, um in Ansprechen auf Armbefehle 51 bzw. Greiforganbefehle 53, die von einem Robotercontroller 50 erzeugt werden, selektiv steuerbar zu verschwenken, auszufahren und sich zu drehen. Die Armbefehle 51 steuern eine Bewegung des Arms 42 mit mehreren Gliedern und die Greiforganbefehle 53 steuern eine Bewegung des beweglichen Greiforgans 44. Die Bewegung des Arms 42 mit mehreren Gliedern und des beweglichen Greiforgans 44 wird im Kontext des zweiten Bezugsrahmens 46 beschrieben, bei dem die x- und y-Koordinaten durch die zweite Bodenoberfläche 41 definiert sind und die z-Koordinate orthogonal zu der zweiten Bodenoberfläche 41 ist. Der Arm 42 mit mehreren Gliedern und das bewegliche Greiforgan 44 sind mit Positionserfassungsvorrichtungen in der Form von Winkelmessvorrichtungen an jeder Gelenkverbindung oder mit anderen geeigneten Positionserfassungsvorrichtungen und Verfahren zur Bestimmung von Drehungen an diesen Stellen ausgestattet. Gemessene Armpositionen 55 repräsentieren eine gemessene Position des Arms 42 mit mehreren Gliedern, welche die Winkel umfasst, die mit den Gelenkverbindungen des Arms 42 mit mehreren Gliedern verbunden sind, und befohlene Posen 57 repräsentieren gemessene Winkel, die mit dem beweglichen Greiforgan 44 verbunden sind, wobei die gemessenen Armpositionen 55 im Kontext des zweiten Bezugsrahmens 46 beschrieben sind. Andere Details mit Bezug auf Arme 42 mit mehreren Gliedern und bewegliche Greiforgane 44 und Befehle zu deren Steuerung sind bekannt und werden hier nicht im Detail beschrieben. Der erste Bezugsrahmen 16, der das erste xyz-Koordinatensystem mit dem ersten Ursprungspunkt 17 wie gezeigt umfasst, und der zweite Bezugsrahmen 46, der das zweite xyz-Koordinatensystem mit dem zweiten Ursprungspunkt 47 umfasst, sind veranschaulicht. Andere Bezugsrahmen, welche Positionen der Kamera 10 und der Robotervorrichtung 40 beschreiben, können mit gleichem Effekt verwendet werden. Als Beispiel ohne Einschränkung kann der erste Bezugsrahmen 16 stattdessen den Ursprungspunkt für den ersten Bezugsrahmen 16 an der Kamera 10 lokalisieren.
-
Controller, Steuerungsmodul, Modul, Steuerung, Steuerungseinheit, Prozessor und ähnliche Begriffe bezeichnen eine beliebige oder verschiedene Kombinationen aus einer oder mehreren anwendungsspezifischen integrierten Schaltungen (ASICs), elektronischen Schaltungen, zentralen Verarbeitungseinheiten (vorzugsweise Mikroprozessoren) und zugehörigem Arbeitsspeicher und Massenspeicher (Festwertspeicher, programmierbarer Festwertspeicher, Speicher mit wahlfreiem Zugriff, Festplattenlaufwerk usw.), die ein oder mehrere Software- oder Firmwareprogramme oder Routinen ausführen, kombinatorische Logikschaltungen, Eingabe/Ausgabe-Schaltungen und -Vorrichtungen, geeignete Signalaufbereitungs- und Pufferschaltungen und andere Komponenten, um die beschriebene Funktionalität bereitzustellen, welche Datenspeicherung und Datenanalyse umfasst. Software, Firmware, Programme, Anweisungen, Routinen, Code, Algorithmen und ähnliche Begriffe bezeichnen einen beliebigen von einem Controller ausführbaren Anweisungssatz, der Kalibrierungen und Nachschlagetabellen umfasst. Der Begriff ”Modell” bezeichnet einen auf einem Prozessor beruhenden oder von einem Prozessor ausführbaren Code, der ein physikalisches Objekt oder einen physikalischen Prozess simuliert. Kommunikationen zwischen Controllern und zwischen Controllern, Aktoren und/oder Sensoren können unter Verwendung einer direkt verdrahteten Verbindung, einer Verbindung mit einem vernetzten Kommunikationsbus, einer drahtlosen Verbindung oder einer beliebigen anderen geeigneten Kommunikationsverbindung bewerkstelligt werden.
-
2 zeigt auf schematische Weise eine Ausführungsform einer Kalibrierungsprozesskonfiguration 100 zum Entwickeln einer Kalibrierung der räumlichen Position einer Robotervorrichtung, die ein bewegliches Greiforgan aufweist, mit Bezug auf ein 3D-Bild des beweglichen Greiforgans, das von einer entfernt montierten Digitalkamera stammt. Die Kalibrierungsprozesskonfiguration 100 wird mit Bezug auf die Robotervorrichtung 40, die Kamera 10, den ersten Bezugsrahmen 16, den zweiten Bezugsrahmen 46 und die zugehörigen Kamera-, Roboter- und Systemcontroller 30, 50, 60, welche in 1 beschrieben sind, beschrieben. Die Kalibrierungsprozesskonfiguration 100 verwendet Signale, die von der Kamera 10 erfasst wurden und ein 3D-Bild des beweglichen Greiforgans 44 darstellen und Befehle zum Positionieren des beweglichen Greiforgans 44, um eine gewünschte Position zu erreichen. Die Begriffe ”Kalibrierung”, ”kalibrieren” und verwandte Begriffe bezeichnen ein Ergebnis oder einen Prozess, der eine tatsächliche oder Standardmessung, die mit einer Vorrichtung verbunden ist, mit einer wahrgenommenen oder beobachteten Messung oder einer befohlenen Position vergleicht. Eine Kalibrierung kann, so wie sie hier beschrieben wird, auf eine speicherbare Parametertabelle, auf mehrere ausführbare Gleichungen, oder auf eine andere geeignete Form reduziert werden, die verwendet wird, um eine Position des Greiforgans 44 beruhend auf Signalen zu bestimmen, die von der Kamera 10 erfasst werden, einschließlich einer geometrischen Translation zwischen dem ersten Bezugsrahmen 16 und dem zweiten Bezugsrahmen 46. Die Kalibrierungsprozesskonfiguration 100 umfasst eine Anordnung von Kommunikationen und Befehlssignalen zwischen dem Systemcontroller 60, dem Robotercontroller 50 und dem Kameracontroller 30 und sie umfasst das Benutzen von Signalen von der Kamera 10 zur Bestimmung einer Position des Greiforgans 44.
-
Der Robotercontroller 50 erzeugt und sendet Armbefehle 51 und Greiforganbefehle 53, um das Greiforgan 44 zu positionieren, und er verwendet inverse Kinematiken, um das Greiforgan 44 an diese Positionen zu bewegen. Der Robotercontroller 50 verwendet Vorwärtskinematiken, um die Position des Greiforgans 44 relativ zu dem zweiten Bezugsrahmen 46, welcher der Robotervorrichtung 40 zugeordnet ist, beruhend auf aktuell gemessenen Gelenkwinkeln zu berechnen.
-
Der Robotercontroller 50 enthält einen Bewegungsgenerator 52, um die Armbefehle 51 zu bestimmen, was eine Reihe von Positionen umfasst, an welche der Roboterarm 42 während der Kalibrierung bewegt wird. Die Positionen sind weder koplanar zu noch vor dem Blick der Kamera 10 verborgen, aber ansonsten willkürlich. Der Bewegungsgenerator 52 befiehlt den Roboterarm 42 sequentiell an jeder einer Reihe von gewünschten Punktorten im Raum und stabilisiert ihn zu Zwecken der Messung und Posenerfassung durch die Kamera 10. Jeder der Armbefehle 51 wird mit einem Zeitstempel oder einer anderen Kennung versehen, die zur Korrelation mit der Szenepunktwolke 35, die von der Kamera 10 erfasst wird, in einer Datendatei enthalten sein kann.
-
Der Robotercontroller 50 enthält einen Posengenerator 54, um Greiforganbefehle 53 zu bestimmen, welche eine Reihe von Positionen umfassen, an welche das Greiforgan 44 während einer Kalibrierung bei jedem der Armbefehle 51 bewegt wird, welche hier als befohlene Posen (i, j) bezeichnet werden. Der Posengenerator 54 befiehlt das Greiforgan 44 sequentiell an jede einer Reihe von befohlenen Posen (i, j), bei denen es sich zu Zwecken der Messung und Erfassung der Szenepunktwolke 35 durch die Kamera 10 stabilisiert, wobei jeder der Greiforganbefehle 53 mit einem Zeitstempel oder einer anderen Kennung versehen wird, der bzw. die zur Korrelation mit der Szenepunktwolke 35, die durch die Kamera 10 erfasst wird, in einer Datendatei enthalten sein kann. Die Greiforganbefehle 53 sollen das Greiforgan 44 bewegen, um eine Variabilität bei dessen Gestalt und besser unterscheidbare 3D-Merkmale zu erzeugen, welche die Genauigkeit des Modellabgleichs in der Sichtkomponente verbessern.
-
Der Robotercontroller 50 bestimmt mehrere befohlene Posen 57 für jeden der Greiforganbefehle 53 bei jedem der Armbefehle 51, wobei die tatsächlichen Positionen, die mit den befohlenen Posen 57 verbunden sind, von Positionssensoren im zweiten Bezugsrahmen 46 bestimmt werden. Die mehreren befohlenen Posen 57 werden als Eingaben für einen Modellsynthesizer 58 bereitgestellt.
-
Der Modellsynthesizer 58 erzeugt eine synthetische Punktwolke 59 der Oberfläche des Greiforgans in dessen befohlener bewegter Gestalt. Bei einer Ausführungsform umfasst dies, dass ein Festkörpermodell der Geometrie des Greiforgans von einem computergestützten Konstruktionswerkzeug (CAD-Werkzeug) verwendet wird, um die Punktwolke für jede befohlene Pose 57 zu synthetisieren. Aus der Geometrie des Festkörpermodells werden Punkte zufällig abgetastet, bis die resultierende synthetische Punktwolke 59 eine Dichte aufweist, die zum Modellabgleich ausreicht.
-
Der Kameracontroller 30 erzeugt die Szenepunktwolke 35 beruhend auf einer Signaleingabe von der Kamera 10 für jede der Posen der Robotervorrichtung 40. Eine Szenepunktwolke 35, welche das Greiforgan 44 der Robotervorrichtung 40 umfasst, wird extrahiert, um eine gemessene Pose (i, j) zu bestimmen, die mit Bezug auf den ersten Bezugsrahmen 16 beschrieben ist.
-
Der Systemcontroller 60 enthält eine Sichtkomponente 62 zur Bestimmung einer Position des Greiforgans 44 relativ zu der Kamera 10 für jede befohlene Pose (i, j), welche die Szenepunktwolke 35 und das synthetisierte Punktwolkenmodell 59 verwendet.
-
Die Sichtkomponente 62 verwendet 3D-Modellabgleichsalgorithmen, um das Greiforgan in der Szene zu lokalisieren und dessen Pose zu schätzen. Sie ist in mehreren Stufen implementiert, welche Routinen umfassen, die Fast Point Feature Histogram-Merkmale (FPFH-Merkmale) für das synthetisierte Punktwolkenmodell 59 und die vollständige Szenepunktwolke berechnen, eine grobe Pose des Greiforgans in dem FOV 12 unter Verwendung von Routinen finden, welche Sample Consensus-Initial Alignment-Routinen (SAC-IA-Routinen) auf den Daten implementieren und ausführen, eine vollständige Szene in eine Teilszene durch ein sphärisches Filter mit einem Radius, der das Dreifache des Radius einer Begrenzungskugel des synthetisierten Punktwolkenmodells 59 an der Position ist, die durch SAC-IA gefunden wurde, grob synthetisieren, FPFH-Merkmale für die Teilszene berechnen, SAC-IA verwenden, um die Pose des Greiforgans in der Teilszene zu finden, die Teilszene in eine verfeinerte Szene durch ein sphärisches Filter mit einem Radius, der gleich dem Radius des synthetischen Modells bei der Position ist, die durch Ausführen der SAC-IA-Routine gefunden wurde, segmentieren und eine Pose des Greiforgans in der verfeinerten Szene unter Verwendung einer Iterative Closest Point-Routine (ICP-Routine) schätzen, die bei der Pose startet, die durch die Ausführung der aktuellsten SAC-IA-Routine gefunden wurde, um durch das Sichtsystem detektierte Greiforganpositionen 63 relativ zu der Kamera 10 zu bestimmen. Routinen und Verfahrensweisen, die mit SAC-IA und ICP verbunden sind, sind bekannt und werden hier nicht im Detail beschrieben.
-
Ein FPFH wird aus einem Point Feature Histogram (PFH) abgeleitet, welches benutzt wird, um Punkte mit Bezug auf ihre darunterliegende Oberfläche genau und robust zu klassifizieren. Das FPFH ist ein Histogramm, das die paarweisen Schwenk-, Neige- und Gierwinkel zwischen jedem Paar von Normalen auf einer Oberflächenstelle, die mit einem Blickfeld verbunden ist, sammelt. Das FPFH misst die gleichen Winkelmerkmale wie PFH, aber es schätzt nur die Sätze von Werten zwischen jedem Punkt und dessen Menge k der nächstgelegenen Nachbarn, gefolgt von einer Neugewichtung des resultierenden Histogramms eines Punkts mit den benachbarten Histogrammen, wodurch die Berechnungskomplexität reduziert wird. Die FPFH-Herleitung ist bekannt und wird hier nicht in weiterem Detail erörtert.
-
Eine SAC-IA-Routine wird ausgeführt, um eine Pose des Greiforgans in einem FOV 12 grob zu finden. Das FOV 12 wird durch ein sphärisches Filter mit einem Radius, der das Dreifache des Radius des synthetischen Modells ist, an der Position, die durch die SAC-IA-Routine gefunden wurde, grob in Teil-FOVs segmentiert. Die SAC-IA-Routine ist ein Algorithmus, der FPFH verwendet, um eine erste Ausrichtung zwischen zwei verschiedenen Punktwolken P und Q zu realisieren. Sie enthält drei Hauptschritte. SAC-IA wählt s Abtastpunkte aus der Punktwolke P, wobei sichergestellt wird, dass deren paarweise Distanzen größer als eine bestimmte Minimaldistanz (dmin) sind. Bei einer Ausführungsform ist die paarweise Distanz auf 40 cm eingestellt. SAC-IA findet eine Liste von Punkten in der Punktwolke Q, deren FPFH-Histogramme dem Histogramm der Abtastpunkte für jeden der Abtastpunkte ähneln. Sie wählt zufällig einen aus der Liste und dieser Punkt wird als die Entsprechung des Abtastpunkts betrachtet. SAC-IA berechnet die starre Transformation, die durch die Abtastpunkte und deren Entsprechungen definiert wird, und sie berechnet eine Fehlermetrik für die Punktwolke, die ermöglicht, die Qualität der Transformation herauszufinden.
-
Der Systemcontroller 60 enthält einen Kalibrierungsrechner 64, der die vom Sichtsystem detektierte Greiforganposition 63 relativ zu der Kamera 10 und die gemessenen Armpositionen 55, welche die gemessene Position des Arms 42 mit mehreren Gliedern anzeigt, verwendet, um eine Roboterkamerakalibrierung 65 zu bestimmen. Die vom Sichtsystem detektierte Greiforganposition 63 relativ zu der Kamera 10 erzeugt eine erste Pose, die hier als Szenenpose (i, j) bezeichnet wird, welche im Kontext des ersten Bezugsrahmens 16 beschrieben ist, der einen ersten Ursprungspunkt 17 aufweist, welcher der Kamera 10 zugeordnet ist. Die zweite Pose ist eine gemessene Pose (i, j), welche die gemessenen Armpositionen 55 enthält, die die gemessene Position des Arms 42 mit mehreren Gliedern angeben, und sie ist im Kontext des zweiten Bezugsrahmens 46 beschrieben, der einen zweiten Ursprungspunkt 47 aufweist, welcher der Robotervorrichtung 40 zugeordnet ist.
-
Der Kalibrierungsrechner 64 empfängt den Satz von einander entsprechenden Punkten relativ zu der Kamera 10 und relativ zu der Robotervorrichtung 40. Die Roboter-Kamera-Kalibrierung 64 wird durch eine Transformationsmatrix für starre Körper repräsentiert, die aus einer 3×3-Rotationsmatrix R und einer 3×1-Translation T besteht. Die Transformation für starre Körper umfasst eine paarweise Ausrichtung der vom Sichtsystem detektierten Greiforganposition 63 relativ zu der Kamera 10 für die Pose (i, j) in dem ersten Bezugsrahmen 16 und der gemessenen Position des Greiforgans für die Pose (i, j) in dem zweiten Bezugsrahmen 46 mit Hilfe von geeigneten Rotationen, Translationen, Reflexionen und Kombinationen daraus. Die Transformationsmatrix für starre Körper umfasst eine 3×3-Rotationsmatrix R und eine 3×1-Translation T. Wenn eine N×3-Matrix A der Punkte ai relativ zu der Kamera, d. h. die erfasste Position des Greiforgans 44 relativ zu der Kamera 10 für die Pose (i, j) in dem ersten Bezugsrahmen 16 und eine N×3-Matrix B der Punkte bi relativ zu dem Roboter, d. h. die gemessene Position des Greiforgans für die Pose (i, j) in dem zweiten Bezugsrahmen 46 gegeben ist, kann die Kalibrierung bestimmt werden, indem eine auf einer Singulärwertzerlegung beruhende Transformationsschätzung wie folgt verwendet wird: MittelwertA = 1 / NΣai, MittelwertB = 1 / NΣbi [1]
A = A – MittelwertA, B = B – Mittelwerts
UΣVT = B T A ist eine Singulärwertzerlegung
U(:,2) = U(:,2)·det(UVT) und
R = UVT, T = MittelwertA – R·MittelwertB
wobei U(:,2) die zweite Spalte der Matrix U bezeichnet und det() die Determinante der Matrix bezeichnet.
-
Die Singulärwertzerlegung (SVD von singular value decomposition) ist eine Faktorisierung, die für jede Matrix existiert, wobei sie in drei Matrizen U, Σ und V zerlegt wird, wobei U eine unitäre Matrix ist, Σ eine diagonale Matrix mit einer nicht negativen Diagonalen ist und V eine unitäre Matrix ist. Die Verwendung der SVD hängt nicht von einem beliebigen speziellen Algorithmus zum Berechnen der SVD ab. Ein derartiger Algorithmus umfasst das Reduzieren der Matrix auf eine bidiagonale Form unter Verwendung von Householder-Reflexionen und unter Verwendung des QR-Algorithmus, um die Eigenwerte zu berechnen. Andere Algorithmen können analog verwendet werden.
-
3 zeigt auf schematische Weise ein Kalibrierungsverfahren 200 zum Kalibrieren einer Robotervorrichtung mit einem beweglichen Greiforgan in Bezug auf ein 3D-Bild des beweglichen Greiforgans, welches von einer entfernt montierten Digitalkamera stammt, ohne externe Ziele oder andere Bezugsmarkierungen zu verwenden. Das Kalibrierungsverfahren 200 wird im Kontext einer Ausführungsform der Robotervorrichtung 40 und der Kamera 10, die mit Bezug auf 1 beschrieben sind, und einer Ausführungsform der Kalibrierungsprozesskonfiguration 100, die mit Bezug auf 2 beschrieben ist, zu Veranschaulichungszwecken beschrieben. Die Konzepte des Kalibrierungsverfahrens 200 können ohne Einschränkung effektiv auf andere Konfigurationen angewendet werden. Andere Anordnungen und Konfigurationen können verwendet werden, um eine Raumpositionskalibrierung einer Robotervorrichtung mit einem beweglichen Greiforgan unter Verwendung von Signalen zu erzielen, die von einer Digitalkamera erfasst werden und ein 3D-Bild des beweglichen Greiforgans auf eine Weise repräsentieren, die mit den hier beschriebenen Ausführungsformen konsistent ist.
-
Das Kalibrieren der räumlichen Position einer Robotervorrichtung mit einem beweglichen Greiforgan umfasst das sequentielle Befehlen der Robotervorrichtung durch eine Reihe von Posen, während die Kamera 3D-Bilder eines FOV 12, der das bewegliche Greiforgan umfasst, erfasst und aufzeichnet. Daten von dem Roboterarm und dem Greiforgan werden mit den Sensordaten und dem Computersehen kombiniert, um einen Satz von einander entsprechenden Punkten zu liefern, der zum Berechnen einer Kalibrierungsmatrix der räumlichen Position geeignet ist, welche das bewegliche Greiforgan 44 der Robotervorrichtung mit Bezug auf die Kamera 10 definiert. Dies umfasst das folgende.
-
Das Ergebnis des Kalibrierungsverfahrens
200 besteht darin, den ersten und zweiten Bezugsrahmen
16,
46 zu vereinen, ohne externe Ziele oder andere Bezugsmarkierungen zu verwenden. Eine Bezugsmarkierung ist ein Objekt oder ein in das FOV
12 eingefügtes Bild, und das in dem 3D-Bild erscheint und als Referenzpunkt zur Skalierung und Orientierung verwendet werden kann. Tabelle 1 wird als Schlüssel bereitgestellt, wobei die numerisch beschrifteten Blöcke und die entsprechenden Funktionen wie folgt offengelegt werden und dem Kalibrierungsverfahren
200 entsprechen. Tabelle 1
BLOCK | BLOCKINHALTE |
200 | Kalibrierung |
202 | Für i = 1 bis n Roboterarmpositionen |
204 | Befehle Roboterarm in Position i und miss die Position |
206 | Für j = 1 bis m Greiforganpositionen |
208 | Befehle Greiforgan in Position j und bestimme befohlene Pose (i, j) |
210 | Bestimme gemessene Pose (i, j) unter Verwendung der Kamera |
212 | Erzeuge synthetische Punktwolke mit der gemessenen Pose (i, j) |
214 | Erfasse Szenepunktwolke |
220 | Führe Computersichtalgorithmus aus |
222 | Berechne Fast Point Feature Histogram-Merkmale (FPFH-Merkmale) für das synthetische Modell und die vollständige Szenepunktwolke |
224 | Finde grob die Pose des Greiforgans in der Szene unter Verwendung von Sample Consensus-Initial Alignment (SAC-IA) |
226 | Unterteile die vollständige Szene grob in eine Teilszene durch ein sphärisches Filter mit einem Radius, der das Dreifache des Radius des synthetischen Modells ist, bei der Position, die durch SAC-IA gefunden wurde |
228 | Berechne FPFH-Merkmale für die Teilszene und verwende SAC-IA, um die Pose des Greiforgans in der Teilszene zu finden |
230 | Unterteile die Teilszene in eine verfeinerte Szene durch ein sphärisches Filter mit einem Radius, der gleich dem Radius des synthetischen Modells ist, bei der Position, die durch SAC-IA gefunden wurde |
232 | Bestimme die gemessene Pose (i, j) durch Schätzen der Pose des Greiforgans in der verfeinerten Szene unter Verwendung von Iterative Closest Point, beginnend bei der Pose, die durch die aktuellste SAC-IA gefunden wurde |
234 | Bestimme die Position des Greiforgans relativ zu der Kamera durch Vergleichen der befohlenen Pose (i, j) mit der gemessenen Pose (i, j) |
236 | Inkrementiere j, j = 1 bis m |
238 | Inkrementiere i, i = 1 bis n |
240 | Kalibriere |
-
Das Kalibrierungsverfahren 200 arbeitet wie folgt. Der Index i gibt eine befohlene Roboterarmposition an, die den Armbefehlen 51 entspricht, mit einer Menge von n Roboterarmpositionen (202). Der Roboterarm wird in Position i befohlen und die Position wird unter Verwendung von Positionssensoren am Roboterarm gemessen (204). Der Index j zeigt eine befohlene Greiforganposition an, die den Greiforganbefehlen 53 entspricht, und es gibt eine Menge von m Greiforganpositionen (206).
-
Das Greiforgan wird in Position j befohlen und die Position wird unter Verwendung der Positionssensoren am Roboterarm 42 und am Greiforgan 44 gemessen, was zu einer befohlenen Pose (i, j) führt, die im Kontext des zweiten Bezugsrahmens 46 beschrieben ist (208). Die gemessene Pose (i, j) wird unter Verwendung von Informationen von der Kamera 10 wie folgt bestimmt (210). Eine synthetische Punktwolke 59 wird unter Verwendung der befohlenen Pose (i, j) und eines kinematischen Modells der Robotervorrichtung 40 beruhend auf den aktuell gemessenen Gelenkwinkeln, die mit der befohlenen Pose (i, j) verbunden sind und mit Bezug auf den zweiten Bezugsrahmen 46 beschrieben sind, erzeugt (212). Die synthetische Punktwolke 59 für jede befohlene Pose (i, j) wird beruhend auf einer bekannten strukturellen Konfiguration des Roboterarms 40 bestimmt. Die gemessene Pose (i, j) wird außerdem bei Schritt 240 verwendet, um die Kalibrierung zu berechnen, um eine äußerliche Kalibrierung zwischen dem Greiforgan 44 der Robotervorrichtung 40 und der Kamera 10 zu bestimmen, um eine Hand-Auge-Koordination ohne Verwendung von externen Zielen oder anderen Bezugsmarkierungen zu bewirken.
-
Die Kamera 10 erfasst ein Bild in dem FOV 12 und extrahiert eine Szenepunktwolke 35, die das Greiforgan 44 der Robotervorrichtung 40 bei der befohlenen Pose (i, j) umfasst (214). Die Szenepunktwolke 35 wird verwendet, um eine gemessene Pose (i, j) des Greiforgans 44 zu bestimmen und wird mit Bezug auf den ersten Bezugsrahmen 16 beschrieben. Eine gemessene Pose (i, j) des Greiforgans 44 wird für jede befohlene Pose (i, j) unter Verwendung der Szenepunktwolke 35 und der synthetischen Punktwolke 59 bestimmt. Die gemessene Pose (i, j) wird mit Bezug auf den ersten Bezugsrahmen 16 beschrieben.
-
Folglich werden eine erste Punktwolke, die der Szenepunktwolke 35 entspricht, die mit Bezug auf 2 beschrieben ist, und eine zweite Punktwolke, die der synthetischen Punktwolke 59 entspricht, die mit Bezug auf 2 beschrieben ist, für jede befohlene Pose (i, j) erzeugt.
-
Ein Computersehen wird ausgeführt (220), wie mit Bezug auf die Sichtkomponente 62 von 2 beschrieben ist, um eine Position des Greiforgans 44 relativ zu der Kamera 10 für jede befohlene Pose (i, j) zu bestimmen, indem die Szenepunktwolke 35 und das synthetisierte Punktwolkenmodell 59 verwendet werden. Der Zweck der Schritte des Computersehens (Schritte 220 bis 234) besteht darin, eine gemessene Pose (i, j) des Greiforgans 44 relativ zu der Kamera 10 für jede befohlene Pose (i, j) unter Verwendung der Szenepunktwolke 35 und der synthetischen Punktwolke 59 zu bestimmen.
-
Die Schritte des Computersehens umfassen das Berechnen von Fast Point Feature Histogram-Merkmalen (FPFH-Merkmalen) für die Szenepunktwolke 35 und für das synthetisierte Punktwolkenmodell 59 (222), und das grobe Schätzen oder anderweitige Finden der Pose des Greiforgans in der Szene unter Verwendung einer Sample Consensus-Initial Alignment (SAC-IA) Routine (224). Die vollständige Szene wird in eine Teilszene durch ein sphärisches Filter mit einem Radius unterteilt, der das Dreifache des Radius des synthetischen Modells bei der Position ist, die durch die SAC-IA-Routine gefunden wurde (226), und für die Teilszene werden FPFH-Merkmale berechnet, wobei SAC-IA verwendet wird, um die Pose des Greiforgans in der Teilszene zu finden (228). Die Teilszene wird in eine verfeinerte Szene durch ein sphärisches Filter mit einem Radius segmentiert, der gleich dem Radius des synthetisierten Punktwolkenmodells 59 bei der Position ist, die durch die SAC-IA-Routine gefunden wurde (230). Die Pose des Greiforgans in der verfeinerten Szene wird unter Verwendung eines Iterative Closest Point-Prozesses (ICP-Prozesses) geschätzt, der mit der Pose startet, die durch die zuletzt ausgeführte SAC-IA-Routine gefunden wurde (232). Die befohlene Pose (i, j) wird mit der gemessenen Pose (i, j) verglichen, um die Position des Greiforgans 44 relativ zu der Kamera 10 zu bestimmen, d. h. die gemessene Pose (i, j) im ersten Bezugsrahmen 16 kann bestimmt werden (234). Zu diesem Zeitpunkt wird auch die befohlene Pose (i, j), die mit Bezug auf den zweiten Bezugsrahmen 46 beschrieben ist, erfasst.
-
Der Index j wird bis auf m Greiforganpositionen inkrementiert (236), und die Greiforganposition wird für jede Greiforganposition gemessen und analysiert, indem die Schritte 204 bis 236 iterativ ausgeführt werden.
-
Der Index i wird bis auf n Roboterarmpositionen (238) inkrementiert, und die Greiforganposition wird für jede der j = 1 bis m Greiforganpositionen für jede der i = 1 bis n Roboterarmpositionen gemessen und analysiert, wobei die Schritte 220 bis 234 zu gegebener Zeit iterativ ausgeführt werden und Daten erfasst werden.
-
Der Kalibrierungsrechner empfängt den Satz einander entsprechender Punkte relativ zu der Kamera 10 und relativ zu der Robotervorrichtung 40, d. h. die Position des Greiforgans relativ zu der Kamera für die Pose (i, j) in dem ersten Bezugsrahmen 16 bzw. die gemessene Position des Greiforgans für die Pose (i, j) im zweiten Bezugsrahmen 46. Die Roboter-Kamera-Kalibrierung wird durch eine Transformationsmatrix für starre Körper repräsentiert, wie hier beschrieben ist (240).
-
Zum Testen der Konzepte wurde ein kinematisches Modell einer Ausführungsform der Robotervorrichtung 40 zusammen mit einer willkürlich positionierten simulierten Kamera in eine Simulation platziert. Der Bewegungsgenerator befahl das Robotermodell in eine Reihe von Posen, während der Sensor eine Punktwolke der simulierten Szene bei jeder Pose erfasste. Der Generator der Greiforganposen befahl der Roboterhand, bei jeder Armposition verschiedene Posen einzunehmen, etwa eine geschlossene Faust, eine offene ausgestreckte Hand, oder zwei Finger, die den Daumen berühren. Der Modellsynthesizer erzeugt synthetische Punktwolkenmodelle für jede dieser Handposen. Das Computersichtmodul detektiert die Pose des Handmodells in jeder der Punktwolken. Der Kalibrierungsrechner ist in der Lage, die Position und Orientierung der simulierten Kamera genau zu reproduzieren.
-
Das hier beschriebene Kalibrierungsverfahren zur Vereinigung des ersten und zweiten Bezugsrahmens 16, 46, ohne externe Ziele oder andere Bezugsmarkierungen einzusetzen, stellt die Fähigkeit zur automatischen Bestimmung der äußerlichen Kamerakalibrierung zwischen einem Roboter und einer 3D-Kamera bereit.
-
Der Schlüssel für die Roboter-Kamera-Kalibrierung besteht im Finden eines Satzes einander entsprechender Punkte relativ zum Roboterarm und relativ zu der Kamera. Kurz gesagt wird der Roboterarm durch eine Reihe von Posen bewegt, während die Kamera 3D-Bilder des Arbeitsraums aufzeichnet. Daten vom Roboterarm und vom Greiforgan werden mit den Kameradaten und dem Computersehen kombiniert, um einen Satz von Korrespondenzpunkten zu liefern, der zum Berechnen der Kalibrierungsmatrix geeignet ist. Der Roboterarm bewegt sein Greiforgan in verschiedene Posen, die von der Kamera 10 als 3D-Punktwolken wahrgenommen werden. Das kinematische Vorwärtsmodell des Roboters wird verwendet, um eine Modellpunktwolke des Greiforgans im Koordinatensystem des Roboters zu synthetisieren. Techniken zum Abgleich und zur Ausrichtung von Punktwolkenmerkmalen werden verwendet, um das Greiforgan in der Sensorpunktwolke zu isolieren und um das 3D-Modell abzugleichen. Diese Abgleiche liefern Korrespondenzpunkte zwischen den Sensor- und Roboter-Koordinatensystemen, welche verwendet werden, um die äußerliche Kalibrierung zu berechnen.
-
Das hier beschriebene Kalibrierungsverfahren vereinfacht den Prozess der Roboter-Kamera-Kalibrierung, um die Verwendung von fortschrittlichen wahrnehmungsgelenkten Robotern in flexiblen Fertigungsumgebungen zu ermöglichen. Seine Vorteile liegen im Minimieren des Bedarfs nach menschlichen Eingaben in den Kalibrierungsprozess und im Beseitigen des Bedarfs für Kalibrierungsmuster. Es nutzt vorteilhaft Entwicklungen bei 3D-Sensoren und fingerfertigen Robotermanipulatoren aus. Es ermöglicht eine schnelle Neukonfigurierung für Roboter, deren Fertigungsaufgaben sich verändern, wodurch eine flexible Fertigung erleichtert wird.
-
Die genaue Beschreibung und die Zeichnungen oder Figuren unterstützen und beschreiben die vorliegenden Lehren, aber der Umfang der vorliegenden Lehren wird alleine durch die Ansprüche definiert. Obwohl einige der besten Arten und andere Ausführungsformen zum Ausführen der vorliegenden Lehren im Detail beschrieben wurden, existieren verschiedene alternative Konstruktionen und Ausführungsformen, um die vorliegenden Lehren, die in den beigefügten Ansprüchen definiert sind, in die Praxis umzusetzen.