get_calib_dataget_calib_dataGetCalibDataget_calib_dataGetCalibDataGetCalibData — Abfragen der Kalibrierdaten, -einstellungen und -ergebnisse eines
Kalibrierdatenmodells.
Es ist zu beachten, dass im Folgenden alle 3D-Pose-Ergebnisse relativ zur
Referenzkamera des Modells zurückgegeben werden. Die Referenzkamera
wird mit dem Operator set_calib_dataset_calib_dataSetCalibDataset_calib_dataSetCalibDataSetCalibData eingestellt und mit dem Operator
get_calib_dataget_calib_dataGetCalibDataget_calib_dataGetCalibDataGetCalibData abgefragt. Standardmäßig wird die erste Kamera
(Kameraindex 0) als Referenzkamera benutzt.
Das Kalibrierdatenmodell beinhaltet verschiedene Arten von Daten. Wie
die einzelnen Daten abgefragt werden, wird für verschiedene Kategorien von
Daten beschrieben:
Bevor die einzelnen abzufragenden Daten im Detail beschrieben werden, erfolgt
eine Übersicht über die Daten, die nach den jeweiligen Schritten der
Kalibrierprozesse im Modell verfügbar sind. Werden Kameras oder
Hand-Auge-Systeme kalibriert, werden verschiedene Operatoren aufgerufen, die
Schritt für Schritt das Kalibrierdatenmodell mit Inhalt füllen. Im Folgenden
wird pro Prozess für jeden Operator tabellarisch aufgelistet, welche Daten
zum Modell zugefügt werden und wie die Werte für ItemTypeItemTypeItemTypeItemTypeItemTypeitemType,
ItemIdxItemIdxItemIdxItemIdxItemIdxitemIdx und DataNameDataNameDataNameDataNameDataNamedataName kombiniert werden müssen, um die
Information mit get_calib_dataget_calib_dataGetCalibDataget_calib_dataGetCalibDataGetCalibData wieder abzurufen. Für die
verschiedenen Indices in den Tabellen werden folgende Abkürzungen
bzw. mögliche Variablennamen benutzt:
Kameraindex: CameraIdx
Kalibrierkörperindex: CalibObjIdx
Kalibrierkörperposeindex: CalibObjPoseIdx
Detailliertere Beschreibungen zu den abzufragenden Daten finden sich dann in
den Abschnitten zu den jeweiligen Datenkategorien.
Inhalt des Kalibrierdatenmodells während der Kamerakalibrierung
Für Standard-HALCON-Kalibrierplatten werden dem Modell noch weitere
Kalibrierplatten-spezifische Informationen zugefügt, die nicht über
get_calib_dataget_calib_dataGetCalibDataget_calib_dataGetCalibDataGetCalibData abgerufen werden können, aber direkt aus der
jeweiligen Kalibrierkörperbeschreibungsdatei entnommen werden können (für
Details zu den Kalibrierkörperbeschreibungsdateien siehe die Beschreibung
von create_caltabcreate_caltabCreateCaltabcreate_caltabCreateCaltabCreateCaltab für eine Kalibrierplatte mit hexagonal
angeordneten Kalibriermarken und gen_caltabgen_caltabGenCaltabgen_caltabGenCaltabGenCaltab für eine Kalibrierplatte
mit rechtwinklig angeordneten Kalibriermarken).
Generischer Typ des Kalibrierdatenmodells. Derzeit werden die
fünf Typen 'calibration_object'"calibration_object""calibration_object""calibration_object""calibration_object""calibration_object",
'hand_eye_moving_cam'"hand_eye_moving_cam""hand_eye_moving_cam""hand_eye_moving_cam""hand_eye_moving_cam""hand_eye_moving_cam",
'hand_eye_stationary_cam'"hand_eye_stationary_cam""hand_eye_stationary_cam""hand_eye_stationary_cam""hand_eye_stationary_cam""hand_eye_stationary_cam",
'hand_eye_scara_moving_cam'"hand_eye_scara_moving_cam""hand_eye_scara_moving_cam""hand_eye_scara_moving_cam""hand_eye_scara_moving_cam""hand_eye_scara_moving_cam" und
'hand_eye_scara_stationary_cam'"hand_eye_scara_stationary_cam""hand_eye_scara_stationary_cam""hand_eye_scara_stationary_cam""hand_eye_scara_stationary_cam""hand_eye_scara_stationary_cam" unterstützt.
Referenzkamera für das Kalibrierdatenmodell. Alle 3D-Posen,
sowohl für die Kameras, als auch für die Kalibrierkörper, werden
relativ zu diesem Kamerakoordinatensystem ausgegeben.
Nach einer erfolgreichen Hand-Auge-Kalibrierung wird der
Lagefehler über die komplette Transformationskette
zurückgegeben. Genau genommen wird ein Tuple mit vier Elementen
zurückgegeben, welches zuerst den mittleren, quadratischen
Fehler der Translation, dann den mittleren, quadratischen Fehler
der Rotation, an dritter Stelle den maximalen Fehler der
Translation und schließlich an vierter Stelle den maximalen
Fehler der Rotation angibt. Die zurückgegebenen Fehlerwerte sind
identisch mit den von calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEye zurückgegebenen
Werten.
Die Parameter 'reference_camera'"reference_camera""reference_camera""reference_camera""reference_camera""reference_camera" und 'optimization_method'"optimization_method""optimization_method""optimization_method""optimization_method""optimization_method"
können mit set_calib_dataset_calib_dataSetCalibDataset_calib_dataSetCalibDataSetCalibData gesetzt werden. Die anderen Parameter
werden während der Modellgenerierung gesetzt oder sind Ergebnisse des
Kalibrierungsprozesses und können nicht modifiziert werden.
Die folgenden Parameter können nur für einzelne Kameras abgefragt
werden, d.h. ein gültiger Kameraindex muss in ItemIdxItemIdxItemIdxItemIdxItemIdxitemIdx
übergeben werden:
Standardabweichungen der optimierten Kameraparameter, berechnet
am Ende der Kamerakalibrierung. Wenn das Tupel, das für
'params'"params""params""params""params""params" zurückgegeben wird, Elemente
enthält, enthält das Tupel, das für 'params_deviations'"params_deviations""params_deviations""params_deviations""params_deviations""params_deviations"
zurückgegeben wird, Elemente, da der
Kameratyp im ersten Element des Kameraparametertupels
gespeichert wird, während dies bei'params_deviations'"params_deviations""params_deviations""params_deviations""params_deviations""params_deviations"
nicht der Fall ist.
Kovarianzmatrix der optimierten Kameraparameter, berechnet am
Schluss der Kamerakalibrierung. Wenn das Tupel, das für
'params'"params""params""params""params""params" zurückgegeben wird, Elemente
enthält, enthält das Tupel, das für
'params_covariances'"params_covariances""params_covariances""params_covariances""params_covariances""params_covariances" zurückgegeben wird, Elemente, da der Kameratyp im
ersten Element des Kameraparametertupels gespeichert wird,
während dies bei 'params_covariances'"params_covariances""params_covariances""params_covariances""params_covariances""params_covariances" nicht der Fall
ist.
Kameratyp-spezifische Liste mit den Namen einzelner
Kameraparameter, die von 'params'"params""params""params""params""params" zurückgegeben wird.
Diese Liste enthält den Wert 'camera_type'"camera_type""camera_type""camera_type""camera_type""camera_type" als erstes
Element. Wenn das erste Element der Liste entfernt wird,
bezieht sich die Liste von Namen auf
'params_deviations'"params_deviations""params_deviations""params_deviations""params_deviations""params_deviations" und die Zeilen und Spalten von
'params_covariances'"params_covariances""params_covariances""params_covariances""params_covariances""params_covariances".
Initiale externe Kameraparameter, berechnet am Anfang der
Kamerakalibrierung. Die zurückgegebene 3D-Pose ist relativ zur
Referenzkamera.
'pose'"pose""pose""pose""pose""pose":
Optimierte Kamerapose, relativ zur Referenzkamera. Bei
Kalibrierung einer einzelnen telezentrischen Kamera wird die
Translation in z-Richtung auf den Wert 0.0 gesetzt. Bei mehr als
einer telezentrischen Kamera, werden die Kameraposen so lange
entlang ihrer z-Achse verschoben, bis sie alle auf einer Kugel
mit Zentrum in der ersten beobachteten Kalibrierplatte
liegen. Der Radius der Kugel entspricht dabei dem größten
Abstand einer Kamera zur ersten beobachteten
Kalibrierplatte. Sollte dieser berechnete Abstand kleiner als 1
m sein, so wird der Radius auf 1 m gesetzt.
ItemIdxItemIdxItemIdxItemIdxItemIdxitemIdx legt fest, ob generische Einstellungen aller
Kalibrierkörperposen oder Einstellungen einzelner Kalibrierkörperposen
abgefragt werden. Mit ItemIdxItemIdxItemIdxItemIdxItemIdxitemIdx='general'"general""general""general""general""general" wird der
Standardwert eines Parameters für alle Posen des Kalibrierkörpers
zurückgegeben. Wenn im Gegensatz dazu ein gültiger Kalibrierkörperposeindex,
d.h. ein Tupel mit gültigem Indexpaar [CalibObjIdx,
CalibObjPoseIdx], eingegeben wird, wird nur der Parameterwert für die
ausgewählte Kalibrierkörperpose zurückgegeben.
Beim Auswählen eines der folgenden Parameter in DataNameDataNameDataNameDataNameDataNamedataName
kann abgefragt werden, welche Kalibrierkörperposeparameter für
die Optimierung markiert, bzw. optimiert worden sind.
Die folgenden Parameter können nur für einzelne Posen eines
Kalibrierkörpers abgefragt werden, d.h. ein gültiges Poseindexpaar
[CalibObjIdx, CalibObjPoseIdx] muss in ItemIdxItemIdxItemIdxItemIdxItemIdxitemIdx
eingegeben werden:
Es ist zu beachten, dass die Z-Translation von
'obj_in_base_pose' im Rahmen der Kalibrierung von
SCARA-Robotern nicht eindeutig bestimmt werden kann. Um diese
Mehrdeutigkeit aufzulösen, wird die Z-Translation von
'obj_in_base_pose' intern auf 0.0 gesetzt und
'tool_in_cam_pose' entsprechend berechnet. Es ist
notwendig, die tatsächliche Translation in Z nach der
Kalibrierung zu bestimmen (siehe calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEye).
Die Standardabweichungen und Kovarianzmatrizen der 6 Poseparameter beider
Posen können mit 'tool_in_cam_pose_deviations'"tool_in_cam_pose_deviations""tool_in_cam_pose_deviations""tool_in_cam_pose_deviations""tool_in_cam_pose_deviations""tool_in_cam_pose_deviations",
'tool_in_cam_pose_covariances'"tool_in_cam_pose_covariances""tool_in_cam_pose_covariances""tool_in_cam_pose_covariances""tool_in_cam_pose_covariances""tool_in_cam_pose_covariances"
(ItemTypeItemTypeItemTypeItemTypeItemTypeitemType='camera'"camera""camera""camera""camera""camera"),
'obj_in_base_pose_deviations'"obj_in_base_pose_deviations""obj_in_base_pose_deviations""obj_in_base_pose_deviations""obj_in_base_pose_deviations""obj_in_base_pose_deviations" und
'obj_in_base_pose_covariances'"obj_in_base_pose_covariances""obj_in_base_pose_covariances""obj_in_base_pose_covariances""obj_in_base_pose_covariances""obj_in_base_pose_covariances"
(ItemTypeItemTypeItemTypeItemTypeItemTypeitemType='calib_obj'"calib_obj""calib_obj""calib_obj""calib_obj""calib_obj") abgefragt werden. Wie die
Poseparameter selbst werden auch diese in den Einheiten [m] und [°]
angegeben.
Es ist zu beachten, dass die Z-Translation von
'obj_in_tool_pose' im Rahmen der Kalibrierung von
SCARA-Robotern nicht eindeutig bestimmt werden kann. Um diese
Mehrdeutigkeit aufzulösen, wird die Z-Translation von
'obj_in_tool_pose' intern auf 0.0 gesetzt und
'base_in_cam_pose' entsprechend berechnet. Es ist
notwendig, die tatsächliche Translation in Z nach der
Kalibrierung zu bestimmen (siehe calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEye).
Die Standardabweichungen und Kovarianzmatrizen der 6 Poseparameter beider
Posen können mit 'base_in_cam_pose_deviations'"base_in_cam_pose_deviations""base_in_cam_pose_deviations""base_in_cam_pose_deviations""base_in_cam_pose_deviations""base_in_cam_pose_deviations",
'base_in_cam_pose_covariances'"base_in_cam_pose_covariances""base_in_cam_pose_covariances""base_in_cam_pose_covariances""base_in_cam_pose_covariances""base_in_cam_pose_covariances"
(ItemTypeItemTypeItemTypeItemTypeItemTypeitemType='camera'"camera""camera""camera""camera""camera"),
'obj_in_tool_pose_deviations'"obj_in_tool_pose_deviations""obj_in_tool_pose_deviations""obj_in_tool_pose_deviations""obj_in_tool_pose_deviations""obj_in_tool_pose_deviations" und
'obj_in_tool_pose_covariances'"obj_in_tool_pose_covariances""obj_in_tool_pose_covariances""obj_in_tool_pose_covariances""obj_in_tool_pose_covariances""obj_in_tool_pose_covariances"
(ItemTypeItemTypeItemTypeItemTypeItemTypeitemType='calib_obj'"calib_obj""calib_obj""calib_obj""calib_obj""calib_obj") abgefragt werden. Wie die
Poseparameter selbst werden auch diese in den Einheiten [m] und [°]
angegeben.
* Get the camera type of camera 0.
get_calib_data (CalibDataID, 'camera', 0, 'type', CameraType)
* Get the optimized (calibrated) pose of pose 1 of the
* calibration object 2.
get_calib_data (CalibDataID, 'calib_obj_pose', [2,1], 'pose', CalobjPose)