create_calib_dataT_create_calib_dataCreateCalibDataCreateCalibDatacreate_calib_data创建标定数据(算子)
名称
create_calib_dataT_create_calib_dataCreateCalibDataCreateCalibDatacreate_calib_data — 创建 HALCON 标定数据模型。
签名
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)
描述
算子 create_calib_datacreate_calib_dataCreateCalibDataCreateCalibDataCreateCalibDatacreate_calib_data 创建一个通用标定数据模型,用于存储:
-
相机标定设置的描述,
-
标定过程的设置,
-
标定数据,以及
-
相机标定或手眼协调标定的结果。
在参数 CalibSetupCalibSetupCalibSetupCalibSetupcalibSetupcalib_setup 中,您需指定标定设置类型。当前支持五种类型。类型为 '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" 或 '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" 的模型,基于标定对象的观测数据及机器人工具在机器人基座坐标系中的对应姿态,执行手眼标定。后四种模型类型一方面区分机器人移动的是相机还是标定对象,另一方面区分校准的是关节式机器人还是 SCARA 机器人。关节式机器人的机械臂通常具有三个旋转关节,覆盖 6 个自由度(3 个平移自由度和 3 个旋转自由度)。SCARA 机器人则具有两个平行旋转关节和一个平行平移关节,仅覆盖 4 个自由度(3 个平移自由度和 1 个旋转自由度)。简而言之,关节式机器人能够倾斜末端执行器,而SCARA 机器人则不具备此功能。
NumCamerasNumCamerasNumCamerasNumCamerasnumCamerasnum_cameras 指定设置中同时校准的相机数量。NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects 指定相机观测的标定对象数量。请注意,对于采用透视镜头的线扫描相机标定,仅允许使用单个标定对象(NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects=1)。对于手眼协同标定,目前仅支持两种配置:要么采用一台面扫描投影相机加一个标定对象(NumCamerasNumCamerasNumCamerasNumCamerasnumCamerasnum_cameras=1,NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects=1),要么使用通用传感器且不包含标定对象NumCamerasNumCamerasNumCamerasNumCamerasnumCamerasnum_cameras=0, NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects=0)。
注意:
四种手眼协同标定模型均不支持远心镜头相机。
CalibDataIDCalibDataIDCalibDataIDCalibDataIDcalibDataIDcalib_data_id 返回新标定数据模型的句柄。您将此句柄传递给其他算子,以收集相机设置描述、标定设置和标定数据。对于相机标定,您将其传递给
calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras,该算子执行实际的相机标定并将标定结果存储在标定数据模型中。有关准备过程的详细说明,请参阅 标定 一章。对于手眼标定,需将其传递给 calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye 算子,该算子执行实际手眼标定并存储结果至标定数据模型。准备过程的详细说明,请参阅算子 calibrate_hand_eyecalibrate_hand_eyeCalibrateHandEyeCalibrateHandEyeCalibrateHandEyecalibrate_hand_eye。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
此算子返回一个句柄。请注意,即使该句柄被用作特定算子的输入参数,这些算子仍可能改变此句柄类型的实例状态。
参数
CalibSetupCalibSetupCalibSetupCalibSetupcalibSetupcalib_setup (输入控制) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
标定设置的类型。
默认值:
'calibration_object'
"calibration_object"
"calibration_object"
"calibration_object"
"calibration_object"
"calibration_object"
值列表:
'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 (输入控制) number → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
标定设置中的相机数量。
默认值:
1
限制:
NumCameras >= 0
NumCalibObjectsNumCalibObjectsNumCalibObjectsNumCalibObjectsnumCalibObjectsnum_calib_objects (输入控制) number → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
标定对象的数量。
默认值:
1
限制:
NumCalibObjects >= 0
CalibDataIDCalibDataIDCalibDataIDCalibDataIDcalibDataIDcalib_data_id (输出控制) calib_data → HCalibData, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
创建的标定数据模型句柄。
可能的后继
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
模块
标定