get_calib_data
名称
get_calib_data —查询在校准数据模型中存储或计算的数据。
签名
get_calib_data(::CalibDataID,ItemType,ItemIdx,DataName:DataValue)
描述
使用运算符get_calib_data,可以查询校准数据模型CalibDataID的数据。请注意,在下文中,所有与“姿势”相关的数据都是相对于模型参考相机的坐标系给出的。可以分别通过set_calib_data或get_calib_data设置或查询它 。
模型相关数据
校准数据模型包含各种数据。针对不同的数据类别(ItemType),描述了如何查询校准数据模型的具体数据,共5种:
模型相关数据(ItemType'Model')
摄像头相关数据(ItemType‘Camera’)
与校准对象相关的数据(项目类型“calib_obj”)
与校准对象姿势相关的数据(项目类型“calib_obj_pose”)
手眼校准相关数据( "tool")
(一)标定摄像机时的标定数据模型的内容
对于标准的HALCON校准板,进一步把校准板特定信息被添加到模型中,该信息不能通过get_calib_data访问,而是可以直接从相应的校准板描述文件中获得(有关描述文件的详细信息,请参见为具有六边形的校准板创建校准标签排列标记和带有矩形排列标记的校准板的gen_caltab)。
(二)进行手眼标定时的标定数据模型的内容
对于ItemType = 'model',必须在ItemIdx中传递值 'general'。根据DataName中的选择, 然后在DataValue中返回以下与模型相关的数据 :
-
'类型':
-
校准数据模型的类型。当前,支持
“ calibration_object”,
“ hand_eye_stationary_cam”,
“ hand_eye_moving_cam”,
“ hand_eye_scara_stationary_cam”
“ hand_eye_scara_moving_cam”
五种类型 。 -
'reference_camera':
-
校准模型的参考摄像机的索引。校准数据模型中存储的所有姿势都在此参考摄像机的坐标系中指定。
-
'num_cameras':
-
校准数据模型中的摄像机数量(请参阅 create_calib_data)。
-
'num_calib_objs':
-
校准数据模型中的校准对象数(请参阅 create_calib_data)。
-
'camera_setup_model':
-
相机设置模型的句柄,包含当前校准设置中已校准相机的姿势和内部参数。注意,返回的数据句柄需要由clear_camera_setup_model清除。
-
'camera_calib_error':
-
相机系统优化的反投影的均方根误差(RMSE)。通常,在执行手眼校准(calibrate_hand_eye)之后查询此错误,其中在内部校准摄像头系统而不会返回摄像头校准的错误。返回的错误与calibrate_cameras返回的错误相同。
-
'hand_eye_calib_error':
-
成功进行手眼校准后,将返回完整转换链的姿态误差。更确切地说,返回具有四个元素的元组,其中第一个元素是平移部分的均方根误差,第二个元素是旋转部分的均方根误差,第三个元素是最大平移误差,第四个元素是最大旋转误差。返回的错误与calibrate_hand_eye返回的错误相同。
可以使用set_calib_data设置 参数'reference_camera'。其他参数是在模型创建期间设置的,或者是校准过程的结果,无法修改。
相机相关数据
使用ItemType = 'camera',您可以查询所有摄像机或特定摄像机的数据。
如果ItemIdx = 'general',则返回所有摄像机的参数默认值。相反,如果您传递有效的摄像机索引,即0到NumCameras-1之间的数字 (在创建模型时使用create_calib_data指定 NumCameras),则仅返回指定摄像机的参数值。
通过在DataName中选择以下参数,您可以查询在calibrate_cameras执行的校准过程中哪些相机参数是(或已经)优化的:
-
'calib_settings':
-
标记为校准的相机参数列表。
-
'excluded_settings':
-
校准中不包含的摄像机参数列表。
可以通过对set_calib_data的相应调用来修改这些参数 。
只能为特定摄像机查询以下参数,即,必须在ItemIdx中传递有效的摄像机索引:
-
'init_params':
-
初始内部摄像机参数(使用set_calib_data_cam_param设置 )。
-
'params':
-
优化的内部摄像机参数。
-
'params_deviations':
-
在相机校准结束时估算的最佳相机参数的标准偏差。
-
'params_covariances':
-
优化的摄像机参数的协方差矩阵,在摄像机校准结束时估算。
-
'params_labels':
-
方便使用的标签列表,用于由'params'和'params_deviations'返回的条目 。此列表是特定于相机类型的。
-
'init_pose':
-
相对于当前参考摄像机的初始摄像机姿态。它是根据校准过程中的观察姿势在内部进行计算的(请参见 calibrate_cameras)。
-
'姿势':
-
相对于当前参考相机,优化的相机姿势。
-
'pose_labels':
-
为'pose'返回的条目添加标签的便捷列表。
仅在成功执行calibrate_cameras之后,才能查询 已校准的摄像机参数(“ params”和“ pose”) 。在成功调用set_calib_data_cam_param之后,可以查询 初始内部摄像机参数 'init_params'。
与校准对象有关的数据
使用ItemType = 'calib_obj'时,您可以通过在ItemIdx中传递其索引来查询特定校准对象的数据,即0至NumCalibObjects-1之间的数字( 在创建模型时使用create_calib_data指定NumCalibObjects)。
可以使用DataName查询以下参数,并在DataValue中返回以下参数 :
-
'num_marks':
-
校准对象的校准标记数。
-
'x', 'y', 'z':
-
校准标记相对于校准对象坐标系的坐标。
可以使用set_calib_data_calib_object修改这些参数。
与校准对象姿态有关的数据
使用ItemType = 'calib_obj_pose',您可以查询所有校准对象姿态的常规设置,或查询特定校准对象姿态的数据。
当ItemIdx = 'general'时,返回所有校准对象姿态的参数默认值。相反,如果您传递有效的校准对象索引,即包含有效索引对的元组[CalibObjIdx,CalibObjPoseIdx],则仅返回指定校准对象位姿的参数值。
通过在DataName中选择以下参数,您可以查询在calibrate_cameras执行的校准过程中(或已经)优化了哪些校准对象姿态参数:
-
'calib_settings':
-
标记为校准的校准对象姿态参数列表。
-
'excluded_settings':
-
校准中排除的校准对象姿态参数列表。
可以使用set_calib_data设置这些参数。
只能针对特定的校准对象姿态查询以下参数,即,必须在ItemIdx中传递有效的索引对[CalibObjIdx,CalibObjPoseIdx]:
-
'init_pose':
-
初始校准对象姿态。它是根据校准过程中的观察姿势在内部进行计算的(请参见 calibrate_cameras)。此姿势相对于当前参考摄像机。
-
'姿势':
-
相对于当前参考摄像机,优化的校准对象姿态。
-
'pose_labels':
-
为'pose'返回的条目添加标签的便捷列表 。
这些参数不能显式修改,只能在执行calibrate_cameras之后查询 。
手眼校正相关数据
使用calibrate_hand_eye成功完成手眼校准后 ,可以查询以下姿势以获取类型的校准数据模型:
-
'hand_eye_moving_cam', 'hand_eye_scara_moving_cam':
-
对于ItemType = 'camera'和 DataName = 'tool_in_cam_pose',将在DataValue中返回机器人工具在摄像机坐标系中的姿态 。对于ItemType = 'calib_obj'和 DataName = 'obj_in_base_pose',将在DataValue中返回机器人基础坐标系中校准对象的姿态。
请注意,在校准SCARA机械手时,无法确定'obj_in_base_pose'的Z平移。为了消除这种歧义,Z转换 'obj_in_base_pose'在内部设置为0.0,并相应地 计算'tool_in_cam_pose'。校准后有必要确定Z中的真实平移(请参见calibrate_hand_eye)。
可以使用'tool_in_cam_pose_deviations', 'tool_in_cam_pose_covariances', 'obj_in_base_pose_deviations'和 'obj_in_base_pose_covariances'查询两个姿势的6个姿势参数的标准差和协方差矩阵。与姿势一样,它们以[m]和[°]单位指定。
-
'hand_eye_stationary_cam', 'hand_eye_scara_stationary_cam':
-
对于ItemType = 'camera'和 DataName = 'base_in_cam_pose',将在DataValue中返回相机坐标系中机器人基座的姿态 。对于ItemType = 'calib_obj'和 DataName = 'obj_in_tool_pose',将在DataValue中返回工具坐标系中校准对象的姿态 。
请注意,在校准SCARA机械手时,无法确定'obj_in_tool_pose'的Z平移。为了消除这种歧义,“ obj_in_tool_pose”的Z转换在 内部设置为0.0,并相应地 计算“ base_in_cam_pose”。校准后有必要确定Z中的真实平移(请参见calibrate_hand_eye)。
可以使用'base_in_cam_pose_deviations', 'base_in_cam_pose_covariances', 'obj_in_tool_deviations'和 'obj_in_tool_covariances'查询两个位姿的6个位姿参数的标准差和协方差矩阵。与姿势一样,它们以[m]和[°]单位指定。
对于ItemType = 'tool'和 DataName = 'tool_in_base_pose',在索引值为ItemIdx的机器人基础坐标系中的机器人工具的姿态 在DataValue中返回。 这些姿态先前是使用set_calib_data设置的,并用作手眼校准算法的输入。
参量
CalibDataID(input_control) calib_data → (整数)
校准数据模型的句柄。
ItemType(input_control) 字符串→ (字符串)
校准数据项的类型。
默认值: “相机”
值列表:“ calib_obj”,“ calib_obj_pose”,“相机”,“模型”,“工具”
ItemIdx(input_control) 整数(数组)→ (整数/字符串)
受影响项目的索引(取决于选定的ItemType)。
默认值: 0
建议值: 0、1、2,“常规”
数据名(input_control) attribute.name(-array)→ (字符串)
检查数据的名称。
默认值: “参数”
值的列表:'base_in_cam_pose' ,'base_in_cam_pose_covariances' ,'base_in_cam_pose_deviations' ,'calib_settings' ,'camera_calib_error' ,'camera_setup_model' ,'excluded_settings' ,'hand_eye_calib_error' ,'init_params' ,'init_pose' ,'num_calib_objs' ,“num_cameras ','num_marks','obj_in_base_pose','obj_in_base_pose_covariances','obj_in_base_pose_deviations','obj_in_tool_pose','obj_in_tool_pose_covariances' ,'obj_in_tool_pose_deviations' ,'optimization_method' ,'PARAMS' ,'params_covariances' ,'params_deviations' ,'params_labels' ,'姿态','pose_labels' ,'reference_camera' ,'tool_in_base_pose' ,'tool_in_cam_pose' ,“tool_in_cam_pose_covariances ','tool_in_cam_pose_deviations' ,'类型','X' ,'Y' ,'z'
数据值(output_control) attribute.value(-array)→ (实数/整数/字符串)
要求的数据。