Kurze Tutorials

DLR CalDe

  1. Vorbereitung.
    a) Erstellen Sie ein Kalibrierungsmuster mit "Optionen->Kalibrierungsmuster erstellen" oder nehmen Sie eines der mitgelieferten Muster. Die Größe des Musters sollte entsprechend der Objektivblende sowie dem Bereich für die scharfe Abbildung gewählt werden. In der Regel genügt ein größeres Kalibrierungsmuster den Anforderungen. Allerdings sollte das Muster anschließend auf eine ebene Fläche geklebt werden, was bei großen Objekten möglicherweise nicht möglich ist.
    b) Nehmen Sie 3 bis 10 Bilder des Kalibrierungsmusters von Aussichtspunkten mit unterschiedlichen Ausrichtungen und Entfernungen entweder mit monokularen oder synchronisierten Stereokameras auf. Eine korrekte Kalibrierung kann erreicht werden, wenn das Kalibrierungsmuster das gesamte Bild ausfüllt.
    c) Speichern Sie die Bilder als Portable Network Graphics (PNG)-Dateien unter dem Namen "<alphanumeric#i>.(left|right|upper|lower|0|1).*png". Speichern Sie zusätzlich die entsprechende Tool-Center-Point (TCP) zu Roboterbasis 3x4 Transformationsmatrix in Textdateien "<alphanumeric#i>.coords", wenn Sie an der extrinsischen Hand-Augen-Kalibrierung interessiert sind.
  2. Laden Sie die Daten.
    a) Laden Sie die Konfiguration, die dem jeweiligen Kalibrierungsmuster entspricht, unter "Optionen->Einstellungen" und BEARBEITEN Sie die GEMESSENE Größe der Schachbrett-Rechtecke, da die Drucker die Abmessungen des Musters nicht unbedingt beibehalten. Bitte beachten Sie, dass die Kreise auf dem Kalibrierungsmuster die Richtungen der x/y-Achse sowie den Ursprung angeben. Hier steht die z-Achse senkrecht zur Kalibrierungsebene und zeigt immer ins Innere des Objekts.
    b) Laden Sie die PNG-Bilder.
  3. Erkennen Sie die Eckpunkte in den Bildern.
    a) Führen Sie die automatische Eckpunkterkennung für das erste Bild/den ersten Reiter aus.
    b) Wenn die Kreise des Kalibrierungsmusters nicht erkannt wurden, geben Sie entweder unter "Optionen->Einstellungen" einen geeigneten Binarisierungsschwellenwert ein und kehren zu Schritt 2.a) zurück oder führen Sie die halbautomatische Erkennung aus und klicken Sie die Kreise des Kalibrierungsmusters an.
    c) Wenn trotz korrekt erkannter zentraler Punkte keine oder zu wenige Ecken des Kalibrierungsmusters erkannt wurden, senken Sie den Vertrauensschwellenwert unter "Optionen->Einstellungen" und kehren Sie zu 2.a) zurück. Die Bilder weisen wahrscheinlich einen geringen Kontrast auf.
    d) Führen Sie die Eckpunkterkennung für alle Bilder/Tabs mit der obigen Konfiguration aus.
    e) Prüfen Sie das Ergebnis, indem Sie z.B. das "Raster neu malen"-Symbol oben in der Tabelle verwenden. Die erkannten Eckpunkte werden dann durch eine Linie mit ihren horizontalen und vertikalen Nachbarn verbunden. Falsch identifizierte Punkte können leicht erkannt werden. Entweder
    i) wählen Sie diese Punkte in der Tabelle auf der rechten Seite aus und klicken Sie auf das "Punkt löschen"-Symbol, um diese Punkte zu entfernen oder
    ii) passen Sie die Parameter wie in 2.b) oder 2.c) an, um die vollautomatische Erkennung zu wiederholen.
    Das letzte Hilfsmittel für wirklich schlechte Bilder ist die manuelle Lokalisierung von Eckpunkten. Wählen Sie dazu einen Eckpunkt in der Tabelle auf der rechten Seite aus und klicken Sie dann auf den entsprechenden Punkt im Bild. Diese Art von Anpassungen sind jedoch nur sehr selten erforderlich.
  4. Daten speichern.
    Speichern Sie die ermittelten Eckpunkte für alle Bilder/Tabs, indem Sie auf das Symbol "Punkte aller Tabs speichern" klicken.

DLR CalLab

  1. Vorbereitung.
    Führen Sie DLR CalDe oder ein ähnliches Programm aus, um die Merkmale eines bestimmten Kalibrierungsobjekts zu erkennen und zu identifizieren.
  2. Laden Sie die Daten.
    Laden Sie die PNG-Bilddateien wie in DLR CalDe. Die Anwendung ist flexibel in Bezug auf die verwendeten Namen und Nummern. Es werden mindestens drei Bilder (oder Stereobildpaare) benötigt. Sie können mehrere Dateien gleichzeitig auswählen, indem Sie die SHIFT-Taste drücken und die erste und die letzte Datei auswählen, oder indem Sie die STRG-Taste drücken und jede Datei auswählen. Laden Sie die entsprechenden Punktedateien für die Bilder wie in DLR CalDe.
  3. 1.Kalibrierungsstufe.
    Die allgemeinen Einstellungen sollten in einem Standard-Kalibrierungsfall eigentlich nicht verändert werden. Die Dokumentation zu diesem Thema steht noch aus. Wenn Sie für die Parameterschätzung bereit sind (sehen Sie sich die Textausgabe an), fahren Sie mit der ersten Kalibrierungsstufe fort. Intrinsische Kameraparameter (einschließlich der Kamera-#1-zu-Kamera-#n-Transformation(en) im Falle eines Stereokamera-Rigs) werden nun geschätzt. Zu Beginn wird eine erste Schätzung auf der Grundlage von Homographien vorgenommen (siehe die Arbeiten von Zhang oder Sturm und Maybank). Dann wird diese Schätzung numerisch optimiert. Danach werden die Projektionsfehler der Punkte über die Bilder gelegt. Sie können durch die Bilder blättern, um nach falsch erkannten Punkten zu suchen. Dazu ist es nützlich, das eigentliche Bild auszublenden (klicken Sie auf 'Monochromes Bild umschalten') und die Fehlerpfeile zu vergrößern (klicken Sie auf 'Fehlerzoom'). Außerdem können Sie die Histogramme zum schnellen Auffinden falsch erkannter Punkte verwenden. Wiederholen Sie diese 1. Kalibrierungsstufe, wenn Sie einen Punkt entfernt haben.
  4. Zweite Kalibrierungsstufe.
    Die 2. Kalibrierungsstufe liefert die TCP-zu-Kamera-Transformation, mit anderen Worten die Hand-zu-Auge-Transformation. Diese Transformation wird vom Benutzer nicht immer benötigt und kann nur im Verhältnis zu den TCP-zu-Roboter-Basis-Transformationen für jedes Kalibrierungsbild geschätzt werden. Diese Transformationen wurden bereits in DLR CalDe eingelesen und auch in die Punktedatei eingebettet. DLR CalLab bietet verschiedene Algorithmen zur Schätzung dieser Transformationen an ("Einstellungen->Allgemeine Einstellungen"):
    a) Zum einen können Sie die Methode von Strobl und Hirzinger [Strobl06] verwenden, die die Fehler bei der fehlerhaften Welt-zu-TCP-Transformation minimiert. Hier verwenden wir eine spezielle Implementierung, bei der die Restfehler in der Entfernung hauptsächlich oben am Manipulator vermutet werden – siehe Papierkram. Der Algorithmus verwendet eine lineare Lösung der kleinsten Quadrate für die erste Schätzung.
    b) Auf der anderen Seite können Sie die Projektionsfehler der Merkmale minimieren. Dies ist nur bei stark verrauschten Kameras mit sehr geringer Bildauflösung eine gute Lösung.
  5. 3.Kalibrierungsstufe.
    Die 3. Kalibrierungsstufe überprüft nur die korrekte Schätzung in den letzten Schritten und erzeugt darüber hinaus Genauigkeitsschätzungen für das Positionierungsgerät (z.B. Robotermanipulator, Infrarot-Trackingsystem, usw.), das für die Welt-zu-TCP-Schätzungen verantwortlich ist.
  6. Daten speichern.
    "Datei->Speichern" speichert die Kalibrierungsergebnisse in dem gewünschten Ausgabeformat. Informationen zu diesen Formaten finden Sie im Text unter "Hilfe->Dokumentation" in DLR CalLab.

Hinweise zur Kalibrierung:

  • Stellen Sie sicher, dass die Kamera(s) starr aneinander befestigt sind (im Falle eines Stereo-Kamera-Rigs)

    oder in Bezug auf das Pose-Tracking-Gerät (z.B. ein Robotermanipulator oder ein Infrarot-Tracking-System).

  • Fokussieren Sie die Kameras auf ihren möglichen Einsatzbereich. Wählen Sie eine größere Blendengröße, wenn Sie viel Licht (oder kürzere Verschlusszeiten) benötigen und sich einen reduzierten Schärfebereich leisten können. Wählen Sie eine kleinere Blendengröße, wenn Sie über einen längeren Bereich scharf sehen möchten. Fixieren Sie diese Einstellungen z.B. mit Schrauben. Die Handkamera-Kalibrierung verlangt größere Blendenwerte für kürzere Verschlusszeiten. Die statische Kamerakalibrierung hat eher kleinere Blendengrößen für erweiterte Schärfebereiche. Generell sollten die Kameraparameter so eingestellt werden, dass sie den späteren betrieblichen Anforderungen entsprechen und nicht, um die Kalibrierungsleistung zu optimieren.
  • Wählen Sie Belichtungszeiten, die die weißen Bereiche des Musters nicht überbelichten – zielen Sie eher auf Grau als auf Weiß. Andernfalls kommt es zu einer Sättigung der Sensorelemente (Sels) und, was noch schlimmer ist, zu einer Beeinträchtigung der benachbarten Sels, was zu verzerrten Erkennungsergebnissen mit DLR CalDe führt. In der Regel ist es sinnvoll, automatische Belichtungszeiten für die Kamera zu wählen, um diese dynamisch zu maximieren, ohne dass es zu einer Sättigung der Pixel kommt.

  • Versuchen Sie, die Bilder mit Ecken zu füllen. Es macht nichts aus, wenn ein Teil des Kalibrierungsmusters nicht zu sehen ist. Eine vollständige Abdeckung des Bildbereichs ist bei so vielen Bildern wie möglich von größter Bedeutung. Wenn das Muster zu klein ist (z.B. wenn die Kamera auf größere Entfernungen fokussiert ist und Ihr Muster in kleinere Bereiche projiziert wird – selbst wenn es die Größe A2 oder A1 hat), sollten Sie sich für zentrale Projektionen entscheiden.
       
       
  • Beachten Sie, dass bei extrem kurzen Entfernungen das Lochkameramodell nicht mehr gilt und stattdessen der tatsächliche Lichtweg durch die Linseneinheit berücksichtigt werden muss. Es wird allgemein angenommen, dass das Lochkameramodell nur für kurze Entfernungen von etwa dem 30-fachen der Brennweite gilt (Luhmann et al., 2006; Magill, 1955; Brown, 1966; Fryer; Duane C. Brown, 1986) – ich persönlich halte diesen Wert für zu konservativ. Größere Blendenöffnungen können das Problem verschlimmern und komplexere Kameramodelle wie das Modell mit dünner Linse oder sogar das Modell mit dicker Linse erforderlich machen.
  • Machen Sie schräge Bilder in Bezug auf das Kalibrierungsmuster. Wenn Sie orthogonale Bilder verwenden, ist es für den Kalibrierungsalgorithmus unmöglich, die Reichweite des Musters anhand der Brennweite der Kamera (d.h. der Vergrößerung) oder des absoluten Maßstabs des Musters (falls freigegeben) zu erkennen. Sie können davon ausgehen, dass orthonormale Bilder für die Kalibrierung weder nachteilig noch vorteilhaft sind (natürlich sind sie für die Schätzung der Verzeichnungsparameter vorteilhaft), aber Simulationen zeigen, dass sie der Kalibrierungsgenauigkeit bei Vorhandensein von Rauschen tatsächlich abträglich sind.

  • Sie können DLR CalDe mehrfach starten und verschiedene Bildsätze parallel verarbeiten (die optimale Anzahl von DLR CalDes kann 3-4 betragen). Dies kann hilfreich sein, da DLR CalDe (im Gegensatz zu DLR CalDe++) nicht wirklich auf die Verwendung paralleler Threads programmiert ist. Denken Sie daran, dass gleichzeitige Bilder von verschiedenen Kameras des Stereo-Rigs innerhalb derselben DLR CalDe-Instanz verarbeitet werden müssen. Speichern Sie nach erfolgreicher Erkennung alle Punktdateien im selben Ordner. Oder verwenden Sie die C++ Version von CalDe.
  • Für den Fall, dass DLR CalDe aufgrund des geringen Kontrasts der Bilder schlecht abschneidet, können Sie hier das GIMP-Skript von Florian Steidle zum Strecken der Helligkeitsstufen von Kalibrierungsbildern verwenden: gimp_stretchlevels.sh.zip (es werden PNG-Dateien erwartet).
  • Machen Sie sich nicht die Mühe, fehlerhaft erkannte Ecken in DLR CalDe zu löschen. DLR CalLab ist dafür am besten geeignet, indem es die Histogramme der Residuen auf der rechten Seite nach einem Standardkalibrierungsversuch einschließlich fehlerhafter Daten verwendet.
  • Verwenden Sie ein genaues Kalibrierungsmuster, z.B. aus massivem, metallischem Material.

    Wenn Sie keine präzise Kalibrierungsplatte verwenden, können Sie die Optionen zur Strukturabschätzung von DLR CalLab nutzen ( Einstellungen -> Allgemeine Einstellungen -> Objektstruktur verfeinern ). Wenn Sie die Optionen zur Strukturabschätzung nicht verwenden möchten, stellen Sie sicher, dass Sie die Kalibrierungsplatte genau messen und die Daten in DLR CalDe eingeben oder eine .cfg Datei erstellen. Um die Kalibrierungsplatte zu messen, messen Sie nicht nur ein Quadrat, sondern so viele wie möglich, und teilen Sie dann das Ergebnis durch die Anzahl der Quadrate – in beiden Hauptrichtungen. Wenn Ihre Kalibrierungsplatte nicht starr ist, sollten Sie die Kamera um die (statische) Platte herum bewegen. Wenn Ihre Stereokamera nicht synchronisiert ist, sollten Sie die Platte um das Sichtfeld der Kamera herum bewegen (und sie an Ort und Stelle halten). (Wenn beides der Fall ist, sind Sie aufgeschmissen, mein Freund.)
  • Wenn Sie während der extrinsischen Kamerakalibrierung nicht völlig frei sind, die optimalen Bilder der intrinsischen Kamerakalibrierung aufzunehmen, schlagen wir vor, die intrinsische von der extrinsischen Kamerakalibrierung zu trennen. Nehmen Sie zunächst die optimalen intrinsischen Kalibrierungsbilder auf und führen Sie die intrinsische Kalibrierung durch. Speichern Sie die Ergebnisse im RMC-Dateiformat. Nehmen Sie dann die optimalen extrinsischen Kalibrierungsbilder auf, laden Sie sie in CalLab und laden Sie auch die ehemalige intrinsische Kamerakalibrierungsdatei. Gehen Sie zu Einstellungen->Intrinsische Kameraparameter und fixieren Sie alle intrinsischen Parameter (vielleicht von beiden Kameras). Fahren Sie dann sowohl mit einer (eingeschränkten) intrinsischen Kamerakalibrierung als auch mit einer extrinsischen Kalibrierung fort. Das Endergebnis wird die optimalen intrinsischen Kameraparameter enthalten, die zuvor geschätzt wurden.
  • Bei der extrinsischen Kalibrierung kann der Benutzer die Transfomation auswählen, bei der Fehler zu erwarten sind -- die Fehler werden gemäß Ref. strobl:2006iros minimiert. Im Falle von Eye-in-Hand-Robotern ist es üblich, die Fehler auf dem Robotermanipulator zu erwarten, daher sollte base->tcp als fehlerhaft angesehen werden. Es gibt jedoch Gelegenheiten, bei denen die Fehler im Algorithmus zur Schätzung der Kameraposition (z.B. intrinsische Kamerakalibrierung) erwartet werden, z.B. bei Kameras mit engem Sichtfeld (siehe strobl@2009iros_) und Präzisions-Positionsverfolgungssystemen (z.B. Laser Tracker). In diesem Fall werden Fehler bei der Kamera->Objekt-Transformation erwartet, und zwar insbesondere Translationsfehler bei der Position des Objektrahmens.
  • Sie können DLR CalLab problemlos verwenden, um die Pose des Kalibrierungsmusters mit höchster Genauigkeit zu schätzen: Indem Sie die intrinsischen Parameter auf zuvor optimierte Parameter festlegen (indem Sie eine frühere Kalibrierungsdatei laden), optimiert DLR CalLab nur die extrinsische Pose der Kalibrierungsplatte in Bezug auf die Kamera(s). Diese Schätzung ist sogar noch genauer als bei der Kamerakalibrierung, da die intrinsischen Parameter bereits festgelegt und optimal sind. Es ist erwähnenswert, dass DLR CalLab für die Initialisierung der Parameter immer noch die gleichen Methoden wie bei der regulären Kamerakalibrierung verwendet, so dass mindestens drei verschiedene Bilder benötigt werden. Sie können einfach zwei Bilder der letzten Kamerakalibrierung zusammen mit dem aktuellen Bild, aus dem Sie die Pose schätzen möchten, verwenden. Danach werden die optimalen extrinsischen Posen entweder in der Konsole oder durch Speichern der Kalibrierungsergebnisse im Matlab-Format erzeugt.
CalLab Bilder zur Probenkalibrierung
Beispiel eines Kalibrierungsbildsatzes, der aus acht Bildern besteht. Beachten Sie, dass alle Bilder in Bezug auf die Kalibrierungsplatte gekippt sind; beachten Sie, dass zumindest die nächstgelegenen Bilder (obere Reihe) mit Merkmalen gefüllt sind; und beachten Sie, dass die Kippwinkel symmetrisch verteilt sind (oben, unten, rechts, links – von links nach rechts im Bild). Normalerweise nehmen wir einen zweiten Satz von vier Bildern auf, die weiter entfernt sind (untere Reihe), um die Schätzung der relativen Position der Kameras innerhalb eines Stereokamera-Rigs (d.h. den Schielwinkel) weiter einzuschränken. Im Falle von monokularen Kameras reichen jedoch die oberen vier Bilder aus.

Warnungen:

  • Warnen Sie vor einer möglichen Fehlfunktion der Bildlesefunktion in DLR CalDe, wenn Sie TIFF-, PGM- oder PPM-Dateien verwenden. Je nach der Version der IDL Developer Software, in der der Code kompiliert wurde, kann die IDL-Bildlesefunktion diese Bilder in Bezug auf die horizontale Achse spiegeln! Wir empfehlen daher, Ihre Bilder vor der Kalibrierung immer in das PNG-Format zu konvertieren (z.B. mit dem Konvertierungstool in Linux).
  • Beachten Sie, dass bei der Verwendung von Stereokameras die Rotationsmatrix R zwischen den Kameras inv(R) ähnelt, so dass Ihr Code auch dann noch funktionieren könnte, wenn versehentlich die invertierte Rotation verwendet wird. Die Entzerrungsfunktionen von OpenCV erfordern z.B. inv(R) und T.
  • Es gibt ein unerforschtes Problem bei der extrinsischen Kalibrierung (d.h. der Kalibrierung von Hand) von Kameras, die auf einer Schwenk-Neige-Einheit montiert sind. Die Forderung nach zwei Rotationen mit orthogonalen Rotationsachsen gilt nach wie vor. Das Fehlen jeglicher Translation ermöglicht jedoch eine virtuelle, gültige Lösung, wenn world_T_tcp fälschlicherweise als seine Inverse betrachtet wird. Da DLR CalLab beide Richtungen world_T_tcp und tcp_T_world ausprobiert, wenn der Benutzer falsche Daten angibt, und dabei das Ergebnis mit dem niedrigsten RMS beibehält, ist es ziemlich wahrscheinlich, dass Sie bei der symmetrischen, virtuellen Lösung landen, die einen niedrigeren RMS-Fehler liefert, aber nicht der Realität entspricht. Um dies zu vermeiden, stellen Sie sicher, dass Sie die Transformation in der richtigen Richtung (Welt->TCP) bereitstellen und dass Sie die Option, Welt_T_tcp in beide Richtungen zu testen, in Einstellungen->Allgemeine Einstellungen deaktivieren und außerdem eine ausreichende Anzahl von (asymmetrischen?) Bildern aufnehmen.