halcon机器人视觉(四)calibrate_hand_eye_stationary_3d_sensor

news/2025/3/13 8:43:38/

目录

  • 一、准备数据和模型
  • 二、按照表面匹配的的结果进行手眼标定
  • 三、根据标定结果计算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 := 15create_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)

http://www.ppmy.cn/news/1578745.html

相关文章

AI心情日记后端迁移K8s部署全流程

一、项目背景与目标 今天想将本地以java -jar运行的Spring Boot应用(AI心情日记后端)迁移至Kubernetes集群,实现容器化部署和健康管理,顺便再次回顾一下k8s的操作细节。 因为我引入了springAI组件,这个组件需要spring…

数据结构(蓝桥杯常考点)

数据结构 前言:这个是针对于蓝桥杯竞赛常考的数据结构内容,基础算法比如高精度这些会在下期给大家总结 数据结构 竞赛中,时间复杂度不能超过10的7次方(1秒)到10的8次方(2秒) 空间限制&#x…

处理Java中的异常

处理Java中的异常 在 Java 中,异常处理是通过 try-catch-finally 语句来实现的。Java 提供了一种强大的机制,用于捕捉和处理程序运行中的各种错误和异常。通过这种方式,你可以有效地捕捉到可能导致程序崩溃的错误,并做出相应的处…

【医学半监督分割】不确定性感知一致性学习

Uncertainty-aware consistency learning for semi-supervised medical image segmentation 半监督医学影像分割面临两个挑战性问题:(1)对潜在结构的探索不足,导致难以全面捕捉医学影像中的复杂特征和结构;&#xff08…

mongodb与爬虫的关系

MongoDB 与爬虫之间的关系主要体现在数据存储和管理的层面。爬虫(Web Crawler 或 Spider)是一种自动化工具,用于从互联网上抓取网页内容或特定数据。而 MongoDB 是一个 NoSQL 数据库,常被用来存储和管理爬虫抓取到的数据。以下是它…

高考數學。。。

2024上 具体来说,直线的参数方程可以写为: x1t y−t z1t 二、简答题(本大题共5小题,每小题7分,共35分。) 12.数学学习评价不仅要关注结果评价,也要关注过程评价。简要说明过程评价应关注哪几个方面。…

【网络篇】网络原理初识

大家好呀 我是浪前 今天讲解的是网络篇的第一章:网络原理初识 网络原理是一个很庞大的领域,小编也没有办法把这个网络原理的所有知识都讲解齐全 所以接下来的网络篇,小编会从两个方面来进行讲解: 网络原理网络编程 今天我们先来…

黑马程序员javaweb案例---初识管理系统(spring-boot)

下面介绍的都是部门管理模块的内容 所需软件 idea,postman,mysql,谷歌浏览器 开发流程 一,环境搭建 需要用到mybits,lombok,mysql,spring-boot,maven环境,具体可以自己去百度, 创建项目 启动项目查看是否有问题,如…