| Operatoren |
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.
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).
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' und 'line_scan').
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' und 'area_scan_tilt_object_side_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' und 'line_scan').
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' und 'area_scan_telecentric_tilt_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' und 'area_scan_tilt_object_side_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' und 'area_scan_tilt_object_side_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').
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.
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.
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:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Handle des Kalibrierdatenmodells.
Typ des abgefragten Elements.
Defaultwert: 'model'
Werteliste: 'calib_obj_pose', 'camera', 'model', 'tool'
Index des abgefragten Elements (je nach Auswahl in ItemType).
Defaultwert: 'general'
Wertevorschläge: 0, 1, 2, 'general'
Name der zu setzenden Daten.
Defaultwert: 'reference_camera'
Werteliste: 'calib_settings', 'excluded_settings', 'optimization_method', 'reference_camera', 'tool_in_base_pose'
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
| Operatoren |