当前位置: 首页 > news >正文

halcon机器人视觉(四)calibrate_hand_eye_stationary_3d_sensor

目录

  • 一、准备数据和模型
  • 二、按照表面匹配的的结果进行手眼标定
  • 三、根据标定结果计算CalObjInCamPose

一、准备数据和模型

1、读3D模型:read_object_model_3d
2、创建表面匹配模板:create_surface_model
3、创建一个HALCON校准数据模型:create_calib_data

read_object_model_3d ('hand_eye/robot_gripper_3d_model.om3', 1, [], [], OM3DModel, Status)
create_surface_model (OM3DModel, 0.03, [], [], SurfaceModelID)
sample_object_model_3d (OM3DModel, 'fast', 0.0009, [], [], SampledObjectModel3D)
visualize_object_model_3d (WindowHandle, SampledObjectModel3D, [], [], 'color_0', 'gray', Message, [], Instruction, PoseOut)
NumCalibrationScenes := 15

create_calib_data ('hand_eye_stationary_cam', 0, 0, HECCalibDataID)
set_calib_data (HECCalibDataID, 'model', 'general', 'optimization_method', 'nonlinear')

二、按照表面匹配的的结果进行手眼标定

1、表面匹配获得ObjInCamPose:find_surface_model 和refine_surface_model_pose
2、设置标定姿态: set_calib_data_observ_pose (HECCalibDataID, 0, 0, I, ObjInCamPose)
3、进行手眼标定:calibrate_hand_eye

read_image (ImageRobotGripperGray, ImagesDir + I$'02d')
read_pose ('tool_in_base_pose_' + I$'02d' + '.dat', ToolInBasePose)

filename := 'hand_eye/robot_gripper_3d_scene_' + I$'02d'
read_object_model_3d (filename, 1, [], [], OM3DScene, Status1)
find_surface_model (SurfaceModelID, OM3DScene, 0.05, 1, 0, 'false', [], [], ObjInCamPose, Score, SurfaceMatchingResultID)
refine_surface_model_pose (SurfaceModelID, OM3DScene, ObjInCamPose, 0, 'false', [], [], ObjInCamPose, Score, SurfaceMatchingResultID1)
if (|Score|)
    set_calib_data (HECCalibDataID, 'tool', I, 'tool_in_base_pose', ToolInBasePose)
    set_calib_data_observ_pose (HECCalibDataID, 0, 0, I, ObjInCamPose)
endif
pose_to_hom_mat3d (ObjInCamPose, HomMat3D)
affine_trans_object_model_3d (SampledObjectModel3D, HomMat3D, OM3DModelTrans)

check_hand_eye_calibration_input_poses (HECCalibDataID, 0.05, 0.005, Warnings)
calibrate_hand_eye (HECCalibDataID, HECPoseError)

三、根据标定结果计算CalObjInCamPose

1、获取标定结果:BaseInSensorPose、ObjInToolPose、ToolInBasePose
get_calib_data (HECCalibDataID, ‘camera’, 0, ‘base_in_cam_pose’, BaseInSensorPose)
get_calib_data (HECCalibDataID, ‘calib_obj’, 0, ‘obj_in_tool_pose’, ObjInToolPose)
get_calib_data (HECCalibDataID, ‘tool’, PoseIds[J - 1], ‘tool_in_base_pose’, ToolInBasePose)
2、根据标定结果计算CalObjInCamPose:calc_calplate_pose_stationarycam
3、变换和可视化:affine_trans_object_model_3d 和 visualize_object_model_3d

get_calib_data (HECCalibDataID, 'camera', 0, 'base_in_cam_pose', BaseInSensorPose)
get_calib_data (HECCalibDataID, 'calib_obj', 0, 'obj_in_tool_pose', ObjInToolPose)
read_image (ImageRobotGripperGray, ImagesDir + J$'02d')
filename := 'hand_eye/robot_gripper_3d_scene_' + J$'02d'
read_object_model_3d (filename, 1, [], [], OM3DScene, Status1)
get_calib_data (HECCalibDataID, 'tool', PoseIds[J - 1], 'tool_in_base_pose', ToolInBasePose)
calc_calplate_pose_stationarycam (ObjInToolPose, BaseInSensorPose, ToolInBasePose, CalObjInCamPose)
pose_to_hom_mat3d (CalObjInCamPose, HomMat3D)
affine_trans_object_model_3d (OM3DModel, HomMat3D, OM3DModelTrans)
visualize_object_model_3d (WindowHandle, [SampledOM3DScene,OM3DModelTrans], [], [], ['color_0', 'color_1', 'disp_background'], ['gray', 'green', 'true'], [], [], Instruction, PoseOut)

相关文章:

  • Pytorch系列教程:可视化Pytorch模型训练过程
  • 【WRF-Urban】报错解析:ZDC + Z0C + 2m is larger than the 1st WRF level
  • react实现一个列表的拖拽排序(react实现拖拽)
  • 如何在DBeaverSQL执行界面显示行号
  • 力扣hot100_二叉树
  • 【JavaWeb】快速入门——HTMLCSS
  • 机器人领域专业名词汇总
  • C++学习——顺序表(六)
  • 【探秘机器人:从当下到未来的科技跃迁】
  • 理解 Retrofit 请求头与 GsonConverterFactory 的自动处理机制
  • 关于ant-design-vue中input元素disabled后无法选中复制内容
  • SNIPAR:快速实现亲缘个体的基因型分离与推断
  • Linly-Talker:开源数字人框架的技术解析与影响
  • C# 通过chrome插件将HTML网页转换为PDF
  • 用TypeScript和library needle来创建视频爬虫程序
  • 编写Dockerfile制作Redis镜像,生成镜像名为redis:v1.1,并推送到私有仓库。
  • 从简单 Rocket 实现到 RESTful API:计算机网络中的 Web 通信解析
  • 前端小食堂 | Day14 - Vue 3 の传送门与悬念
  • 【科研绘图系列】python绘制分组点图(grouped dot plot)
  • 迁移Kubuntu到thinkbook14+ 2025
  • 农行回应“病重老人被要求亲自取钱在银行去世”:全力配合公安机关调查
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局回应
  • 国际奥委会举办研讨会,聚焦如何杜绝操纵比赛
  • 坚持吃素,是不是就不会得高血脂了?
  • 美政府以拨款为要挟胁迫各州服从移民政策,20个州联合起诉
  • 首个偏头痛急性治疗药物可缓解前期症状