Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记

Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记尊重作者 支持原创 如需转载 请附上原地址 https libaineu2004 blog csdn net article details 心得笔记 字面意思 眼代表眼睛 这里指的是我们的工业相机 手

大家好,我是讯享网,很高兴认识大家。

尊重作者,支持原创,如需转载,请附上原地址:

https://libaineu2004.blog.csdn.net/article/details/

心得笔记

字面意思,眼代表眼睛,这里指的是我们的工业相机;
手,指的是我们的运动部分,比如机械手或者运动控制系统;
眼在手上,就是相机按照在运动轴上面,跟随运动的某个轴一起运动,这种标定就是图像和机械点一一运动去做标定。
眼在手外,就是相机固定一个位置拍照,机械手或者运动部分不会带动相机,这个时候标定就要一次性拍全视野,然后机械部分再一一针对图像的上点做好对应关系,然后标定。

这两种标定是我们图像和运动部分联合主要的两种标定方法,都可以实现图像转机械运动,就是标定关系不一样而已,结果都是一样的!

眼在手上就是一个点对应一个机械坐标,做九组就好了!

也就是相机一次拍9个点 然后机械手走这九个点得到九个对应的机械坐标进行变换。

眼在外:相机放置一个固定的位置,与机器人基坐标系相对位置不变
眼在手:相机和机器手绑定在一个位置,机器手移动,相机也跟着移动

halcon手眼标定,最少4点就可以,4个像素坐标对应4个机械手坐标就可以算出转换关系

眼在手外九点标定法的实现流程


讯享网
STEP 3:控制机器人TCP工具末端按顺序(走Z字型)移动到每个圆心,并记录下9组机器人位置坐标数据。


STEP 4: 执行标定,这里使用HALCON标定算子作为演示,利用上面求得的数据。
图像上9个位置
image_x:=[]
image_y:=[]
机器人9个位置
robot_x:=[]
robot_y:=[]
图像与机器人数据结合
vector_to_hom_mat2d (image_x, image_y, robot_x, robot_y, HomMat2D)

矩阵进行保存:write_tuple (HomMat2D, '路径') 。注意:保存的矩阵后缀名是.tup格式的
STEP 5:标定完成后,拍摄一个特征点的,求得像素位置
img_x:=
img_y:=
利用以下算子即可把像素坐标转换成机器人坐标

read_tuple (‘路径’, HomMat2D)
affine_trans_point_2d(HomMat2D,img_x,img_y, Qx, Qy)
到这里标定以及转换过程就完成了。

read_image (Image, 'D:/hellowprld/初学者必用10mm视觉标定板图/9points.jpg') dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image) binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold) connection (Region, ConnectedRegions) *筛选出来九个点 select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 2000) shape_trans (SelectedRegions, RegionTrans, 'outer_circle') *求出九点坐标 area_center (RegionTrans, Area, Row, Column) disp_message (WindowHandle, 'R:'+Row+' C:'+Column, 'Image', Row, Column, 'black', 'true') *把求得的Row和Column赋值 *九点标定行 PxRow:=Row *九点标定列 PxColunm:=Column *九点标定行 *PxRow:=[23.5, 23.5, 23.5, 71.5, 71.5, 71.5, 118.5, 118.5, 118.5] *九点标定列 *PxColunm:=[28.5, 75.5, 122.5, 28.5, 75.5, 122.5, 28.5, 75.5, 122.5] *机器坐标行 Qx:=[100,50,0,100,50,0,100,50,0] *机器坐标列 Qy:=[0,0,0,50,50,50,100,100,100] *拿到机器坐标和像素坐标求出关系矩阵 * 标定行 标定列 机器X 机器Y 得到矩阵 vector_to_hom_mat2d (PxRow, PxColunm, Qx, Qy, HomMat2D) *保存矩阵 write_tuple (HomMat2D, '九点标定.tup') *读取矩阵 read_tuple ('九点标定.tup', HomMat2D) *利用求出来的物体行列坐标得到机器坐标 affine_trans_point_2d (HomMat2D, Row, Column, Qx1, Qy1)

讯享网

官方例程

vector_to_hom_mat2d

calibrate_hand_eye_scara_stationary_cam_approx

hand_eye_stationarycam_calibration

pick_and_place_scara_stationary_cam

参考文献

关于“眼在手外“和“眼在手上”标定求教

关于“眼在手外“和“眼在手上”标定求教-Halcon综合答疑

【3】机器人手眼标定:固定向下相机

【3】机器人手眼标定:固定向下相机-机器人视觉

“眼在手中”标定之坐标转换

“眼在手中”标定之坐标转换-机器人视觉

机器人手眼标定算法源码

halcon学习网

机械手手眼标定/9点标定/4点标定/Halcon标定脚本

halcon学习网

vb.net联合halcon以及运动控制卡做的点胶贴合项目

halcon学习网

手眼标定----眼在手外(eye-to-hand) [魁拔之十万火急]

错误提示 - Halcon学习网

手眼标定----眼在手上(eye-in-hand) [魁拔之十万火急]

错误提示 - Halcon学习网

错误提示 - Halcon学习网

九点标定-眼在外(没有标定板的情况) [魁拔之十万火急]

错误提示 - Halcon学习网

手眼标定----眼在手上(eye-in-hand) [tystq]

halcon学习网

枫痕机械手相机9点坐标标定-基于C#+EmguCV

机械手相机9点坐标标定-基于C#+EmguCV - FreshBreezes - 博客园

相机标定助手代码

halcon学习网

Haclon代码框架c#编程haclon代码学习

halcon学习网

https://www.cnblogs.com/Bonker/

[原创]一种自动化九点标定工具原理(包涵部分源码) - Bonker - 博客园

[原创]移动相机九点标定工具原理及实现(包涵部分源码) - Bonker - 博客园

小讯
上一篇 2025-03-10 15:32
下一篇 2025-02-26 15:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/124433.html