set_calib_data
— Setzen von Parametern für das Kalibrierdatenmodell.
set_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName, DataValue : )
Mit dem Operator set_calib_data
können Daten im
Kalibrierdatenmodell CalibDataID
gespeichert werden.
Wie das Kalibrierdatenmodell im Laufe des Prozesses einer
Kamerakalibrierung oder einer Hand-Auge-Kalibrierung mit Daten
gefüllt wird, wird übersichtsmäßig bei der Beschreibung zu
get_calib_data
dargestellt.
Das Kalibrierdatenmodell kann unterschiedliche Arten von Daten enthalten. Wie bestimmte Daten im Kalibrierdatenmodell gesetzt werden, wird für verschiedene Kategorien von Daten beschrieben:
Modelldaten (ItemType
'model' )
Kameradaten (ItemType
'camera' )
Daten zu den Kalibrierkörperposen (ItemType
'calib_obj_pose' )
Daten für Hand-Auge-Kalibrierung (ItemType
'tool' )
Der Parameter ItemIdx
bezeichnet, ob der neue Parameterwert
für alle oder nur für ein Element gesetzt werden soll. Die Daten,
die geändert werden sollen, werden in DataName
eingegeben,
ihre Werte in DataValue
.
Weitere detaillierte Informationen zur Kalibrierung von Kameraaufbauten befinden sich im Kapitel Kalibrierung.
ItemType
='model' :ItemIdx
muss auf den Wert
'general' gesetzt werden.
Je nach Auswahl in DataName
werden die folgenden
Modellparameter auf den in DataValue
übergebenen Wert
gesetzt:
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 angegeben (siehe
get_calib_data
).
Setzen der Optimierungsmethode für die Hand-Auge-Kalibrierung.
Falls DataValue
='linear' gesetzt ist, wird eine
lineare Methode verwendet. Falls
DataValue
='nonlinear' gesetzt ist, wird eine
nichtlineare Methode verwendet (siehe calibrate_hand_eye
für mehr Details).
ItemType
='camera' :ItemIdx
legt fest, ob die Kalibriereinstellungen für alle
Kameras oder für einzelne Kameras gespeichert werden sollen. Mit
ItemIdx
='general' werden die neuen Einstellungen
als Standardwert für alle Kameras im Modell gesetzt. Wenn dagegen
ein gültiger Kameraindex in ItemIdx
eingegeben wird,
d.h. eine Zahl zwischen 0 und NumCameras-1
(NumCameras
wurde bei der Erstellung des Modells mit
create_calib_data
gesetzt), dann werden nur die
Einstellungen der ausgewählten Kamera geändert.
Beim Auswählen eines der folgenden Parameter in DataName
kann eingegeben werden, welche Kameraparameter optimiert
werden sollen:
Zusätzlich zu den bereits für die Optimierung ausgewählten Kameraparametern zu optimierende Kameraparameter. Standardmäßig sind alle Kameraparameter für die Optimierung ausgewählt. D.h., 'calib_settings' ist hauptsächlich dazu geeignet, vorher ausgeschlossene Parameter wieder zur Auswahl hinzuzufügen.
Von der Optimierung ausgeschlossene Kameraparameter.
Die folgenden Kameraparameter können in DataValue
verwendet
werden:
Interne Kameraparameter
Brennweite des Kameraobjektivs (nur perspektivische Kameras, d.h. für Kameras vom Typ 'area_scan_division', 'area_scan_polynomial', 'area_scan_tilt_division', 'area_scan_tilt_polynomial', 'area_scan_tilt_image_side_telecentric_division', 'area_scan_tilt_image_side_telecentric_polynomial', 'area_scan_hypercentric_division', 'area_scan_hypercentric_polynomial', 'line_scan_division' und 'line_scan_polynomial').
Vergrößerungsmaßstab des Kameraobjektivs (nur für telezentrische Kameras, d.h. Kameras vom Typ 'area_scan_telecentric_division', 'area_scan_telecentric_polynomial', 'area_scan_tilt_bilateral_telecentric_division', 'area_scan_tilt_bilateral_telecentric_polynomial', 'area_scan_tilt_object_side_telecentric_division' 'area_scan_tilt_object_side_telecentric_polynomial', 'line_scan_telecentric_division' und 'line_scan_telecentric_polynomial').
Verzeichnungskoeffizient zur Modellierung der Verzeichnung mit dem Divisionsmodell (nur für Kameras vom Typ 'area_scan_division', 'area_scan_telecentric_division', 'area_scan_tilt_division', 'area_scan_tilt_bilateral_telecentric_division', 'area_scan_tilt_object_side_telecentric_division', 'area_scan_hypercentric_division', 'line_scan_division' und 'line_scan_telecentric_division').
Radiale Verzeichnungskoeffizienten zur Modellierung der Verzeichnung mit dem Polynommodell (nur für Kameras vom Typ 'area_scan_polynomial', 'area_scan_telecentric_polynomial', 'area_scan_tilt_polynomial', 'area_scan_telecentric_tilt_polynomial', 'area_scan_hypercentric_polynomial', 'line_scan_polynomial' und 'line_scan_telecentric_polynomial').
Allgemeiner Parametername, der für alle tangentialen Verzeichnungskoeffizienten des Polynommodells steht, d.h. für p1 und p2 (nur für Kameras vom Typ 'area_scan_polynomial', 'area_scan_telecentric_polynomial', 'area_scan_tilt_polynomial', 'area_scan_tilt_bilateral_telecentric_polynomial', 'area_scan_tilt_object_side_telecentric_polynomial', 'area_scan_hypercentric_polynomial', 'line_scan_polynomial' und 'line_scan_telecentric_polynomial').
Allgemeiner Parametername, der für alle Verzeichnungskoeffizienten des Polynommodells steht, d.h. k1, k2, k3, p1 und p2 (nur für Kameras vom Typ 'area_scan_polynomial', 'area_scan_telecentric_polynomial', 'area_scan_tilt_polynomial', 'area_scan_tilt_bilateral_telecentric_polynomial', 'area_scan_tilt_object_side_telecentric_polynomial', 'area_scan_hypercentric_polynomial', 'line_scan_polynomial' und 'line_scan_telecentric_polynomial').
Der Abstand der verkippten Bildebene vom Zentrum der perspektivischen Projektion (nur für Kameras mit Tiltobjektiven, die eine perspektivische Projektion auf der Bildseite des Objektivs durchführen, d.h. Kameras vom Typ 'area_scan_tilt_division', 'area_scan_tilt_polynomial', 'area_scan_tilt_object_side_telecentric_division' und 'area_scan_tilt_object_side_telecentric_polynomial').
Verkippung und Rotation des Tiltobjektivs (nur für Kameras mit Tiltobjektiven, d.h. Kameras vom Typ 'area_scan_tilt_division', 'area_scan_tilt_polynomial', 'area_scan_tilt_bilateral_telecentric_division', 'area_scan_tilt_bilateral_telecentric_polynomial', 'area_scan_tilt_object_side_telecentric_division' und 'area_scan_tilt_object_side_telecentric_polynomial').
Koordinaten des Kamerahauptpunktes.
Allgemeiner Parametername, der für 'cx' und 'cy' steht.
Größe der Sensorelemente des Kamerasensors.
Allgemeiner Parametername, der für alle internen Kameraparameter steht.
Bitte beachten Sie, dass die Bezeichnung Brennweite (Focus) nicht ganz richtig ist, da der Parameter Focus im Allgemeinen nicht der realen Brennweite entspricht, wenn die Objektweite nicht unendlich ist. Der Einfachheit halber wird hier aber nicht zwischen Brennweite und Bildweite unterschieden.
Externe Kameraparameter
Rotationswerte der Kamerapose.
Translationsvektor der Kamerapose.
Allgemeiner Parametername, der für alle Kameraposeparameter steht.
Weitere Kameraparameter
Kamerabewegungsvektor (nur für Kameras von Typ 'line_scan_division', 'line_scan_polynomial', 'line_scan_telecentric_division' und 'line_scan_telecentric_polynomial').
Allgemeiner Parametername, der für alle Kameraparameter, sowohl die internen als auch die externen, steht.
Als Standardeinstellung werden alle Parameter zum Optimieren
gekennzeichnet. Eine Ausnahme davon ist es, wenn nur eine Kamera im
Aufbau kalibriert wird (NumCameras
=1). Für diesen Fall wird
die Kamerapose von der Optimierung ausgeschlossen. Diese
Sondereinstellung macht den Kalibrierprozess identisch mit
demjenigen vom camera_calibration
.
ItemType
='calib_obj_pose' :ItemIdx
legt fest, ob Kalibriereinstellungen für alle Posen
oder für einzelne Posen der Kalibrierkörper eingestellt werden
sollen. Mit ItemIdx
='general' werden die neuen
Einstellungen als Standardwert für alle Kalibrierkörperposen im
Modell gesetzt. Wenn dagegen ein gültiger Kalibrierkörperposeindex,
d.h. ein Tupel mit einem gültigen Indexpaar [CalibObjIdx,
CalibObjPoseIdx]
, in ItemIdx
eingegeben wird, werden nur
die Einstellungen der gekennzeichneten Pose geändert.
Beim Auswählen eines der folgenden Parameter in DataName
kann eingegeben werden, welche Parameter der
Kalibrierkörperpose optimiert werden sollen:
Zusätzlich zu den bereits für die Optimierung ausgewählten Parametern zu optimierende Parameter der Kalibrierkörperpose. Standardmäßig sind alle Kameraparameter für die Optimierung ausgewählt. D.h., 'calib_settings' ist hauptsächlich dazu geeignet, vorher ausgeschlossene Parameter wieder zur Auswahl hinzuzufügen.
Von der Optimierung ausgeschlossene Parameter der Kalibrierkörperpose.
Die folgenden Poseparameter können in DataValue
aufgelistet
werden:
Rotationswerte der Kalibrierkörperpose.
Translationsvektor der Kalibrierkörperpose.
Allgemeiner Parametername, der für alle Poseparameter steht.
Alle Kalibrierkörperparameter, d.h. dieselben wie 'pose' .
Die aktuellen Einstellungen der Optimierungsparameter eines Elements
können mit get_calib_data
abgefragt werden.
ItemType
='tool' :ItemIdx
muss auf einen gültigen Kalibrierkörperposeindex
gesetzt werden.
Beim Auswählen des folgenden Parameters in DataName
, kann
die Pose des Robotertools gesetzt werden:
Setzen der Pose des Robotertools (in Roboterbasiskoordinaten),
die für die Beobachtung der Kalibrierkörperpose mit demselben
Index ItemIdx
(entspricht dem Parameter
CalibObjPoseIdx
eines der Operatoren
find_calib_object
, set_calib_data_observ_pose
,
oder set_calib_data_observ_points
) benutzt wurde.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
CalibDataID
(input_control, Zustand wird modifiziert) calib_data →
(handle)
Handle des Kalibrierdatenmodells.
ItemType
(input_control) string →
(string)
Typ des abgefragten Elements.
Defaultwert: 'model'
Werteliste: 'calib_obj_pose' , 'camera' , 'model' , 'tool'
ItemIdx
(input_control) number(-array) →
(integer / string)
Index des abgefragten Elements (je nach
Auswahl in ItemType
).
Defaultwert: 'general'
Wertevorschläge: 0, 1, 2, 'general'
DataName
(input_control) attribute.name →
(string)
Name der zu setzenden Daten.
Defaultwert: 'reference_camera'
Werteliste: 'calib_settings' , 'excluded_settings' , 'optimization_method' , 'reference_camera' , 'tool_in_base_pose'
DataValue
(input_control) attribute.value(-array) →
(string / integer)
Werte der zu setzenden Daten.
Defaultwert: 0
Wertevorschläge: 0, 1, 2, 'all' , 'pose' , 'params' , 'alpha' , 'beta' , 'gamma' , 'transx' , 'transy' , 'transz' , 'focus' , 'magnification' , 'kappa' , 'poly' , 'poly_tan_2' , 'k1' , 'k2' , 'k3' , 'image_plane_dist' , 'tilt' , 'principal_point' , 'cx' , 'cy' , 'sx' , 'sy' , 'vx' , 'vy' , 'vz' , 'linear' , 'nonlinear'
* Here, the cell size is known exactly, thus it is excluded from * the optimization. set_calib_data (CalibDataID, 'camera', 'general', 'excluded_settings', \ ['sx','sy'])
set_calib_data_observ_points
,
find_calib_object
calibrate_cameras
,
calibrate_hand_eye
Calibration