create_calib_data
— Anlegen eines generischen HALCON-Kalibrierdatenmodells.
create_calib_data( : : CalibSetup, NumCameras, NumCalibObjects : CalibDataID)
Der Operator create_calib_data
erstellt ein generisches Modell
für Kalibrierdaten. Das Modell speichert:
Beschreibung des Kameraaufbaus,
Einstellungen des Kalibrierverfahrens,
Kalibrierdaten, und
Ergebnisse der Kamerakalibrierung oder der Hand-Auge-Kalibrierung.
Im Parameter CalibSetup
wird der generische Typ des
Kalibrieraufbaus gesetzt. Derzeit werden fünf Typen unterstützt.
Ein Modell vom Typ 'calibration_object' wird benutzt um
die internen Kameraparameter und -posen
von einer oder mehreren Kameras anhand der metrische Information,
die aus Beobachtungen von Kalibrierkörpern gemessen wird, zu kalibrieren.
Ein Modell vom Typ 'hand_eye_moving_cam' , 'hand_eye_stationary_cam' , 'hand_eye_scara_moving_cam' oder 'hand_eye_scara_stationary_cam' wird benutzt um eine Hand-Auge-Kalibrierung basierend auf Beobachtungen eines Kalibrierkörpers und den zugehörigen Posen des Robotertools im Roboterbasiskoordinatensystem durchzuführen. Diese vier zuletzt genannten Modelle unterscheiden zum einen, ob die Kamera oder der Kalibrierkörper vom Roboter bewegt wird und zum anderen, ob ein anthropomorpher oder ein SCARA-Roboter kalibriert wird. Der Arm eines anthropomorphen Roboters hat 3 Drehgelenke, die typischerweise 6 Freiheitsgrade abdecken (3 Translationen und 3 Rotationen). SCARA-Roboter besitzen dagegen nur zwei parallele Drehgelenke und ein paralleles Schubgelenk, die nur 4 Freiheitsgrade (3 Translationen und 1 Rotation) abdecken. Grob gesagt ist ein anthropomorpher Roboter im Gegensatz zum SCARA-Roboter in der Lage, seinen Endeffektor zu verkippen.
NumCameras
setzt die Anzahl der Kameras ein, die gleichzeitig
im Aufbau kalibriert werden. NumCalibObjects
setzt die Anzahl
der Kalibrierkörper ein, die von den Kameras beobachtet werden. Bei
Kamerakalibrierungen ist zu beachten, dass für telezentrische Flächenkameras,
sowie für Zeilenkameras nur ein Kalibrierkörper unterstützt wird
(NumCalibObjects
=1). Bei Hand-Auge-Kalibrierungen ist zu beachten,
dass derzeit nur zwei Setups unterstützt werden: eine Kamera
(NumCameras
=1) und ein Kalibrierkörper
(NumCalibObjects
=1) oder ein allgemeiner Sensor ohne
Kalibrierobjekt (NumCameras
=0, NumCalibObjects
=0).
Der Ausgabeparameter CalibDataID
gibt einen Handle des neuen
Kalibrierdatenmodell zurück. Dieser Handle wird im Anschluss weiteren
Operatoren übergeben, um die Aufbaubeschreibung, die
Kalibriereinstellungen und -data ins Modell zu speichern. Für
Kamerakalibrierungen wird der Handle in calibrate_cameras
eingegeben.
Dieser führt die eigentliche Kamerakalibrierung aus und speichert die
Kalibrierergebnisse wiederum im Modell. Für weitere Information über
den Kalibrierprozess, siehe das Kapitel Kalibrierung.
Für Hand-Auge-Kalibrierungen, wird der
Handle an calibrate_hand_eye
weitergegeben. Dieser führt die
eigentliche Hand-Auge-Kalibrierung durch und speichert die
Kalibrierergebnisse wiederum im Modell. Für weitere Information über
den Kalibrierprozess, siehe die Beschreibung vom Operator
calibrate_hand_eye
.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
CalibSetup
(input_control) string →
(string)
Generischer Typ des Kalibrieraufbaus.
Defaultwert: 'calibration_object'
Werteliste: 'calibration_object' , 'hand_eye_moving_cam' , 'hand_eye_scara_moving_cam' , 'hand_eye_scara_stationary_cam' , 'hand_eye_stationary_cam'
NumCameras
(input_control) number →
(integer)
Gesetzte Anzahl der Kameras im Kalibrieraufbau.
Defaultwert: 1
Restriktion: NumCameras >= 0
NumCalibObjects
(input_control) number →
(integer)
Gesetzte Anzahl der Kalibrierkörper im Kalibrieraufbau.
Defaultwert: 1
Restriktion: NumCalibObjects >= 0
CalibDataID
(output_control) calib_data →
(handle)
Handle des Kalibriermodells.
set_calib_data_cam_param
,
set_calib_data_calib_object
Calibration