Note that in the following, all 'pose'-related data are given in relation to
the coordinate system of the model's reference camera, which can be
set with set_calib_dataset_calib_dataSetCalibDataSetCalibDataSetCalibDataset_calib_data and queried with get_calib_dataget_calib_dataGetCalibDataGetCalibDataGetCalibDataget_calib_data. By
default, the first camera (camera index 0) is used as reference camera.
The calibration data model contains various kinds of data. How to query
specific data of the calibration data model is described for different
categories of data:
Before we describe the individual data you can query in detail, we provide
you with an overview on which data is available after the individual steps of
the calibration processes. When calibrating cameras or a hand-eye system,
several operators are called that step by step fill the calibration data
model with content. In the following, for each operator a table lists the
data that is added to the model. Additionally, you find information about the
combinations of the values for ItemTypeItemTypeItemTypeItemTypeitemTypeitem_type, ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx, and
DataNameDataNameDataNameDataNamedataNamedata_name that are needed to query the information with
get_calib_dataget_calib_dataGetCalibDataGetCalibDataGetCalibDataget_calib_data. For the different indices that are used within the
tables the following abbreviations (or potential variable names) are used:
camera index: CameraIdx
calibration object index: CalibObjIdx
calibration object pose index: CalibObjPoseIdx
Detailed descriptions of the data that can be queried can then be found in
the specific sections that handle the different categories of data
individually.
To get detailed information about the calibration process of
your camera setup see the chapter reference
Calibration.
Content of calibration data model when calibrating cameras
For standard HALCON calibration plates, further calibration plate specific
information is added to the model, which is not accessible with
get_calib_dataget_calib_dataGetCalibDataGetCalibDataGetCalibDataget_calib_data but can be obtained directly from the corresponding
calibration plate description files instead (for details about the
description files see create_caltabcreate_caltabCreateCaltabCreateCaltabCreateCaltabcreate_caltab for a calibration plate with
hexagonally arranged marks and gen_caltabgen_caltabGenCaltabGenCaltabGenCaltabgen_caltab for a calibration plate
with rectangularly arranged marks).
Type of the calibration data model. Currently, the five types
'calibration_object'"calibration_object""calibration_object""calibration_object""calibration_object""calibration_object",
'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_moving_cam'"hand_eye_moving_cam""hand_eye_moving_cam""hand_eye_moving_cam""hand_eye_moving_cam""hand_eye_moving_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""hand_eye_scara_stationary_cam", and
'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" are supported.
Index of the reference camera for the calibration model. All
poses stored in the calibration data model are specified in the
coordinate system of this reference camera.
For stereo setups with telecentric line scan cameras, a string
with a Boolean value (i.e., 'true'"true""true""true""true""true" or 'false'"false""false""false""false""false")
that determines whether the cameras have a common motion vector.
After a successful hand_eye calibration, the pose error of the
complete chain of transformations is returned. To be more
precise, a tuple with four elements is returned, where the first
element is the root-mean-square error of the translational part,
the second element is the root-mean-square error of the
rotational part, the third element is the maximum translational
error and the fourth element is the maximum rotational
error. The returned errors are identical to the errors returned
by calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye.
The parameters '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", and 'optimization_method'"optimization_method""optimization_method""optimization_method""optimization_method""optimization_method"
can be set with set_calib_dataset_calib_dataSetCalibDataSetCalibDataSetCalibDataset_calib_data. The other parameters are set
during the model creation or are a result of the calibration process
and cannot be modified.
Standard deviations of the optimized camera parameters, as
estimated at the end of the camera calibration. Note that if the
tuple returned for 'params'"params""params""params""params""params" contains
elements, the tuple returned for 'params_deviations'"params_deviations""params_deviations""params_deviations""params_deviations""params_deviations"
contains elements since the camera parameter
tuple contains the camera type in the first element of the
tuple, whereas the tuple returned for
'params_deviations'"params_deviations""params_deviations""params_deviations""params_deviations""params_deviations" does not contain the camera type.
Covariance matrix of the optimized camera parameters, as
estimated at the end of the camera calibration. Note that if
the tuple returned for 'params'"params""params""params""params""params" contains
elements, the tuple returned for 'params_covariances'"params_covariances""params_covariances""params_covariances""params_covariances""params_covariances"
contains elements since
the camera parameter tuple contains the camera type in the first
element of the tuple, whereas the tuple returned for
'params_covariances'"params_covariances""params_covariances""params_covariances""params_covariances""params_covariances" does not contain the camera type.
A convenience list of labels for the entries returned by
'params'"params""params""params""params""params". This list is camera-type specific. Note that
this list contains the label 'camera_type'"camera_type""camera_type""camera_type""camera_type""camera_type" in its first
position. If the first element of the tuple is removed, the
list refers to the labels of 'params_deviations'"params_deviations""params_deviations""params_deviations""params_deviations""params_deviations" and
the labels of the rows and columns of
'params_covariances'"params_covariances""params_covariances""params_covariances""params_covariances""params_covariances".
Initial camera pose, relative to the current reference
camera. It is computed internally based on observation poses
during the calibration process (see Calibration).
'pose'"pose""pose""pose""pose""pose":
Optimized camera pose, relative to the current reference camera.
If one single telecentric camera is calibrated, the translation
along the z-axis is set to the value 0.0. If more than one
telecentric camera is calibrated, the camera poses are moved in
direction of their z-axis until they all lie on a sphere
centered at the first observed calibration plate. The radius of
the sphere corresponds to the longest distance of a camera to
the first observed calibration plate. If this calculated
distance is smaller than 1 m, the radius is set to 1 m.
ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx determines, if data is queried for all
calibration object poses in general or for a specific calibration object
pose. With ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx='general'"general""general""general""general""general", the default value of a
parameter for all calibration object poses is returned. In contrast, if
you pass a valid calibration object index instead, i.e., a tuple
containing a valid index pair [CalibObjIdx, CalibObjPoseIdx],
only the parameter value of the specified calibration object pose is
returned.
The following parameters can only be queried for a specific
calibration object pose, i.e., you must pass a valid index pair
[CalibObjIdx, CalibObjPoseIdx] in ItemIdxItemIdxItemIdxItemIdxitemIdxitem_idx:
Initial calibration object pose. It is computed internally based
on observation poses during the calibration process (see
Calibration). This pose is relative to the current
reference camera.
'pose'"pose""pose""pose""pose""pose":
Optimized calibration object pose, relative to current reference
camera.
Note that when calibrating SCARA robots, it is not possible to
determine the Z translation of 'obj_in_base_pose'.
To eliminate this ambiguity the Z translation
'obj_in_base_pose' is internally set to 0.0 and the
'tool_in_cam_pose' is calculated accordingly. It is
necessary to determine the true translation in Z after the
calibration (see calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye).
The standard deviations and the covariance matrices of the 6
pose parameters of both poses can be queried with
'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", and
'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"). Like poses, they are
specified in the units [m] and [°].
Note that when calibrating SCARA robots, it is not possible to
determine the Z translation of 'obj_in_tool_pose'. To
eliminate this ambiguity the Z translation of
'obj_in_tool_pose' is internally set to 0.0 and the
'base_in_cam_pose' is calculated accordingly. It is
necessary to determine the true translation in Z after the
calibration (see calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye).
The standard deviations and the covariance matrices of the 6
pose parameters of both poses can be queried with
'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", and
'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"). Like poses, they are
specified in the units [m] and [°].
List of values: 'calib_obj'"calib_obj""calib_obj""calib_obj""calib_obj""calib_obj", 'calib_obj_pose'"calib_obj_pose""calib_obj_pose""calib_obj_pose""calib_obj_pose""calib_obj_pose", 'camera'"camera""camera""camera""camera""camera", 'model'"model""model""model""model""model", 'tool'"tool""tool""tool""tool""tool"
* 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)