create_calib_dataT_create_calib_dataCreateCalibDataCreateCalibDatacreate_calib_data (Operator)
Name
create_calib_dataT_create_calib_dataCreateCalibDataCreateCalibDatacreate_calib_data
— Create a HALCON calibration data model.
Signature
void CreateCalibData(const HTuple& CalibSetup, const HTuple& NumCameras, const HTuple& NumCalibObjects, HTuple* CalibDataID)
void HCalibData::HCalibData(const HString& CalibSetup, Hlong NumCameras, Hlong NumCalibObjects)
void HCalibData::HCalibData(const char* CalibSetup, Hlong NumCameras, Hlong NumCalibObjects)
void HCalibData::HCalibData(const wchar_t* CalibSetup, Hlong NumCameras, Hlong NumCalibObjects)
(Windows only)
void HCalibData::CreateCalibData(const HString& CalibSetup, Hlong NumCameras, Hlong NumCalibObjects)
void HCalibData::CreateCalibData(const char* CalibSetup, Hlong NumCameras, Hlong NumCalibObjects)
void HCalibData::CreateCalibData(const wchar_t* CalibSetup, Hlong NumCameras, Hlong NumCalibObjects)
(Windows only)
Description
The operator create_calib_datacreate_calib_dataCreateCalibDataCreateCalibDataCreateCalibDatacreate_calib_data
creates a generic calibration
data model that stores
-
the description of a camera calibration setup,
-
settings for the calibration process,
-
the calibration data, and
-
the results of the camera calibration or the hand-eye calibration.
In the parameter CalibSetupCalibSetupCalibSetupCalibSetupcalibSetupcalib_setup
, you specify the calibration setup type.
Currently, five types are supported. A model of the type
'calibration_object'"calibration_object""calibration_object""calibration_object""calibration_object""calibration_object" is used to calibrate the internal camera
parameters and the camera poses of one or more cameras based on the metric
information extracted from observations of calibration objects.
A model of type '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", or
'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" is used to perform a hand-eye
calibration based on observations of a calibration object and
corresponding poses of a robot tool in the robot base coordinate system.
The latter four model types on the one hand distinguish whether the camera
or the calibration object is moved by the robot and on the other hand
distinguish whether an articulated robot or a SCARA robot is calibrated.
The arm of an articulated robot has three rotary
joints typically covering 6 degrees of freedom (3 translations and 3
rotations). SCARA robots have two parallel rotary joints and one parallel
prismatic joint covering only 4 degrees of freedom (3 translations and 1
rotation). Loosely speaking, an articulated robot is able to tilt its
end effector while a SCARA robot is not.
NumCamerasNumCamerasNumCamerasNumCamerasnumCamerasnum_cameras
specifies the number of cameras that are
calibrated simultaneously in the setup. NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects
specifies the number of calibration objects observed by the cameras.
Please note that for camera calibrations with line scan cameras with
perspective lenses only a single calibration object is allowed
(NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects
=1). For hand-eye calibrations, only two
setups are currently supported: either one area scan projective
camera and one calibration object (NumCamerasNumCamerasNumCamerasNumCamerasnumCamerasnum_cameras
=1,
NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects
=1) or a general sensor with no calibration
object (NumCamerasNumCamerasNumCamerasNumCamerasnumCamerasnum_cameras
=0, NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects
=0).
CalibDataIDCalibDataIDCalibDataIDCalibDataIDcalibDataIDcalib_data_id
returns a handle of the new calibration data
model. You pass this handle to other operators to collect
the description of the camera setup, the calibration settings, and the
calibration data. For camera calibrations, you pass it to
calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras
, which performs the actual camera calibration
and stores the calibration results in the calibration data model.
For a detailed description of the preparation process, please refer to
the chapter Calibration.
For hand-eye calibrations, you pass it to calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye
, which
performs the actual hand-eye calibration and stores the calibration results
in the calibration data model. For a detailed description of the
preparation process, please refer to the operator calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye
.
Execution Information
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.
Parameters
CalibSetupCalibSetupCalibSetupCalibSetupcalibSetupcalib_setup
(input_control) string →
HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Type of the calibration setup.
Default value:
'calibration_object'
"calibration_object"
"calibration_object"
"calibration_object"
"calibration_object"
"calibration_object"
List of values: '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_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", '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", 'hand_eye_stationary_cam'"hand_eye_stationary_cam""hand_eye_stationary_cam""hand_eye_stationary_cam""hand_eye_stationary_cam""hand_eye_stationary_cam"
NumCamerasNumCamerasNumCamerasNumCamerasnumCamerasnum_cameras
(input_control) number →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Number of cameras in the calibration setup.
Default value: 1
Restriction: NumCameras >= 0
NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects
(input_control) number →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Number of calibration objects.
Default value: 1
Restriction: NumCalibObjects >= 0
CalibDataIDCalibDataIDCalibDataIDCalibDataIDcalibDataIDcalib_data_id
(output_control) calib_data →
HCalibData, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle of the created calibration data model.
Possible Successors
set_calib_data_cam_paramset_calib_data_cam_paramSetCalibDataCamParamSetCalibDataCamParamSetCalibDataCamParamset_calib_data_cam_param
,
set_calib_data_calib_objectset_calib_data_calib_objectSetCalibDataCalibObjectSetCalibDataCalibObjectSetCalibDataCalibObjectset_calib_data_calib_object
Module
Calibration