get_calib_dataT_get_calib_dataGetCalibDataGetCalibDataget_calib_data — 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_dataSetCalibDataSetCalibDataSetCalibDataset_calib_data eingestellt und mit dem Operator
get_calib_dataget_calib_dataGetCalibDataGetCalibDataGetCalibDataget_calib_data 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 ItemTypeItemTypeItemTypeItemTypeitemTypeitem_type,
ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx und DataNameDataNameDataNameDataNamedataNamedata_name kombiniert werden müssen, um die
Information mit get_calib_dataget_calib_dataGetCalibDataGetCalibDataGetCalibDataget_calib_data 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.
Ausführliche Informationen über den Kalibriervorgang von Kameraaufbauten
befinden sich im Kapitel Kalibrierung.
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_dataGetCalibDataGetCalibDataGetCalibDataget_calib_data 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_caltabCreateCaltabCreateCaltabCreateCaltabcreate_caltab für eine Kalibrierplatte mit hexagonal
angeordneten Kalibriermarken und gen_caltabgen_caltabGenCaltabGenCaltabGenCaltabgen_caltab 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.
Für Stereosysteme, die Zeilenkameras mit telezentrischen
Objektiven verwenden: ein String mit einem Booleschen Wert
(d.h. 'true'"true""true""true""true""true" oder 'false'"false""false""false""false""false"), der festlegt, ob
die Zeilenkameras einen gemeinsamen Bewegungsvektor besitzen.
Nach einer erfolgreichen Hand-Auge-Kalibrierung wird der
Lagefehler über die komplette Transformationskette
zurückgegeben. Genau genommen wird ein Tupel 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_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye zurückgegebenen
Werten.
Die Parameter 'reference_camera'"reference_camera""reference_camera""reference_camera""reference_camera""reference_camera",
'common_motion_vector'"common_motion_vector""common_motion_vector""common_motion_vector""common_motion_vector""common_motion_vector" und 'optimization_method'"optimization_method""optimization_method""optimization_method""optimization_method""optimization_method"
können mit set_calib_dataset_calib_dataSetCalibDataSetCalibDataSetCalibDataset_calib_data 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 ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx
ü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 (siehe auch Kalibrierung).
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.
ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx legt fest, ob generische Einstellungen aller
Kalibrierkörperposen oder Einstellungen einzelner Kalibrierkörperposen
abgefragt werden. Mit ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx='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 DataNameDataNameDataNameDataNamedataNamedata_name
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 ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx
eingegeben werden:
Initiale 3D-Pose des Kalibrierkörpers. Diese Pose wird anhand
der Posen in den Beobachtungsdaten von diesem Körper am Anfang
der Kalibrierung berechnet (siehe Kalibrierung).
Die zurückgegebene 3D-Pose ist relativ zur Referenzkamera.
'pose'"pose""pose""pose""pose""pose":
Optimierte 3D-Pose des Kalibrierkörpers relativ zur
Referenzkamera.
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_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye).
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"
(ItemTypeItemTypeItemTypeItemTypeitemTypeitem_type='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"
(ItemTypeItemTypeItemTypeItemTypeitemTypeitem_type='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_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye).
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"
(ItemTypeItemTypeItemTypeItemTypeitemTypeitem_type='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"
(ItemTypeItemTypeItemTypeItemTypeitemTypeitem_type='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)