halcon机器人视觉(四)calibrate_hand_eye_stationary_3d_sensor

目录

一、准备数据和模型

1、读3D模型:read_object_model_3d

2、创建表面匹配模板:create_surface_model

3、创建一个HALCON校准数据模型:create_calib_data

csharp 复制代码
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

csharp 复制代码
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

csharp 复制代码
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)
相关推荐
金智维科技官方16 小时前
RPA财务机器人为企业高质量发展注入动能
人工智能·机器人·rpa·财务
沫儿笙16 小时前
安川机器人tag焊接怎么节省保护气
人工智能·物联网·机器人
xwz小王子16 小时前
Science Robotics 综述 | 超材料机器人:重塑“体”与“智”的未来!
机器人·超材料
强化学习与机器人控制仿真18 小时前
RSL-RL:开源人形机器人强化学习控制研究库
开发语言·人工智能·stm32·神经网络·机器人·强化学习·模仿学习
xwz小王子20 小时前
【Adv.Sci.】北京航空航天大学【一个切向灵敏的触觉传感器揭示了杆滑机制,增强了机器人触觉感知】
机器人·触觉感知
ModestCoder_1 天前
ROS Bag与导航数据集技术指南
开发语言·人工智能·自然语言处理·机器人·具身智能
CV实验室1 天前
CV论文速递:覆盖视频生成与理解、3D视觉与运动迁移、多模态与跨模态智能、专用场景视觉技术等方向 (11.17-11.21)
人工智能·计算机视觉·3d·论文·音视频·视频生成
Mr.Winter`1 天前
基于Proto3和单例模式的系统参数配置模块设计(附C++案例实现)
c++·人工智能·单例模式·机器人
中國龍在廣州2 天前
现在人工智能的研究路径可能走反了
人工智能·算法·搜索引擎·chatgpt·机器人
数据与后端架构提升之路2 天前
RT-2:Google DeepMind的机器人革命——如何让AI从网页知识中学会操控现实世界
机器人·视觉语言动作模型·rt-2模型·google deepmind·链式思维推理