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

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

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


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



心得笔记


字面意思,眼代表眼睛,这里指的是我们的工业相机;

手,指的是我们的运动部分,比如机械手或者运动控制系统;

眼在手上,就是相机按照在运动轴上面,跟随运动的某个轴一起运动,这种标定就是图像和机械点一一运动去做标定。

眼在手外,就是相机固定一个位置拍照,机械手或者运动部分不会带动相机,这个时候标定就要一次性拍全视野,然后机械部分再一一针对图像的上点做好对应关系,然后标定。


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


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


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


眼在外:相机放置一个固定的位置,与机器人基坐标系相对位置不变

眼在手:相机和机器手绑定在一个位置,机器手移动,相机也跟着移动


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



九点标定法的实现流程


STEP 1:准备好一张标定板,里面有3X3的圆。

STEP 2:把标定板水平放置在相机正下方,控制相机拍照得到一张图片,并按顺序(走Z字型)记录图片上9个圆的中心位置。


image.png

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

image.png


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



参考文献


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


https://www.51halcon.com/forum.php?mod=viewthread&tid=4231


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


https://www.51halcon.com/forum.php?mod=viewthread&tid=4271


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


https://www.51halcon.com/forum.php?mod=viewthread&tid=4265


机器人手眼标定算法源码


http://www.ihalcon.com/read-9533.html


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


http://www.ihalcon.com/read-10022.html


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


http://www.ihalcon.com/read-14513.html


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


http://www.ihalcon.com/read-13820.html


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


http://www.ihalcon.com/read-14658.html


http://www.ihalcon.com/read-14687.html


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


http://www.ihalcon.com/read-14564.html


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


http://www.ihalcon.com/read-14209.html


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


https://www.cnblogs.com/thebreeze/p/10316030.html


相机标定助手代码


http://www.ihalcon.com/read-11647.html


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


http://www.ihalcon.com/read-14257.html


相关文章
|
定位技术 图形学
Unity3D——射击游戏(多地图,多人物,枪支切换,驾车,扔手雷等功能,堪比小型和平精英)
Unity3D——射击游戏(多地图,多人物,枪支切换,驾车,扔手雷等功能,堪比小型和平精英)
Unity3D——射击游戏(多地图,多人物,枪支切换,驾车,扔手雷等功能,堪比小型和平精英)
|
机器学习/深度学习 人工智能 物联网
妙鸭相机开源平替——连九块九都不要的个人形象定制
FaceChain——妙鸭相机的开源平替,可以用来打造个人数字形象的深度学习模型工具,仅需三张照片即可生成属于你自己独有的个人数字形象替身,赶紧来计算巢体验吧!
|
数据采集 定位技术
巧用千寻位置GNSS软件| 一文教会横断面测量
选择目标线路,点击【确定】,如图 5.8-4所示,设置是否自动选择断面、计算方式、 放样间隔和横断面法线长度(道路中线到横断面边点的距离)。点击【确定】进入放样界 面,如图 5.8-5所示。当线路垂距小于 3米时,在横断面两侧生成平行线,进入精准定位。 根据箭头方向提示和下状态栏中垂距和平距提示移动当前点,当当前点位于横断面上时,根 据工程要求进行横断面数据采集和放样。也可以通过上下键切换到相邻的横断面。
巧用千寻位置GNSS软件| 一文教会横断面测量
|
机器学习/深度学习 人工智能 算法
将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
109 0
|
传感器 自动驾驶 算法
ADAS的“眼睛”很难搞也很关键
ADAS的“眼睛”很难搞也很关键
ADAS的“眼睛”很难搞也很关键
|
机器学习/深度学习 数据采集 算法
谷歌Up主自制秃头生成器张东升躺枪,而这款生发GAN让你发际线前进一公里!
最近,国产悬疑剧《隐秘的角落》火爆全网,张东升的秃头形象深入人心,B站up主利用StyleGAN自制了一款秃头生成器,只需几行代码就能完成你的秃头梦想,但是如果你想摆脱中年秃顶的危机,GAN也可以做到!
196 0
谷歌Up主自制秃头生成器张东升躺枪,而这款生发GAN让你发际线前进一公里!
|
安全 定位技术 计算机视觉
睫毛长度精准复刻!扫描面部数据,用特殊技术和3D打印制作人脸,“画皮”直呼内行
睫毛长度精准复刻!扫描面部数据,用特殊技术和3D打印制作人脸,“画皮”直呼内行
239 0
|
机器人 atlas 传感器
逐!帧!揭!秘!终于能看清波士顿动力机器人的细节了
波士顿动力,逆天机器人的代名词。 每一次新的视频放出,机器人做出各种充满视觉冲击力动作,都会引起疯狂传播。 凭借敏捷的身姿和动物般的反应能力,它们做出了各种各样对于人来来说都非常高难度的动作。 这样的机器人到底是如何设计的呢?波士顿动力并没有对外披露太多。
869 0
逐!帧!揭!秘!终于能看清波士顿动力机器人的细节了