眼在手外情况的二维视觉自动标定(一)
自动标定前传
业务相关需要做一个眼在手外的二维视觉自动标定功能,简单版本无非是机器人带着mark点在相机视野跑来跑去😶,最开始根据相机视野两点的世界坐标计算田字格的9个点然后移动机器人拍照匹配得到像素坐标
甲方说太麻烦了哈哈哈😅,因为 要定两个点 + 工具标定
痛定思痛,决定升级自动标定2.0,省去多余的两个步骤
不定两个点的问题好解决,直接让甲方把机器人带着mark移动到相机视野中心附近作为起点,然后分别在XY方向上正负Xmm再移动匹配就行😄
然后考虑怎么省去工具标定的步骤,重点是机器人只会返回法兰末端的世界坐标,只有平移的话不能建立mark像素点与工具末端世界坐标的联系,也就是拍到的像素点经过矩阵转换会生成对应的法兰坐标,而且必须角度一致,不然末端点对应不上
说起来比较抽象,俯视图大概如下
图中白色小圆代表法兰末端, A {A} A点代表法兰中心点;黑色大圆表示需要匹配识别的mark标志, B {B} B点代表mark点的中心点

手眼标定的目的是根据5个匹配像素和世界坐标点计算出转换矩阵,无工具标定时,转换矩阵只能将 B {B} B点的像素坐标转换成 A {A} A点的世界坐标(因为输入的像素坐标在 B {B} B,世界坐标在 A {A} A)
如左图仅平移时,识别 B ′ {B}' B′点传出的世界坐标对应 A ′ {A}' A′点,因为旋转角度不变(假设初始角度为 a n g l e i {angle_i} anglei),可以移动到期望的位置
但是如右图仅旋转时,一旦相对 a n g l e i {angle_i} anglei旋转了角度 α {\alpha} α,期望识别 B {B} B点时,传出的世界坐标仍然对应了 A {A} A点,这时因为传出角度改变,机器人法兰相对旋转了 α {\alpha} α,最终工具末端到达是 B ′ {B}' B′点,不满足到B点的期望。机器人希望拿到的世界坐标是右图中的 A ′ {A}' A′点,这样在角度不同的前提下仍然能够使工具末端到达 B {B} B点
可能说得有点复杂,其实是针对相对角度对世界坐标进行平移再传给机器人,使其能够到达符合期待目标点
分析之后,只需要计算出不同角度下右图中的 d x {dx} dx和 d y {dy} dy就可以了😮,根据图像可以看出,这部分平移可以由 A ′ − A {A}' - {A} A′−A得出,也等价于 B − B ′ {B} - {B}' B−B′。
已知 A = ( A x , A y ) {A}=(A_x,A_y) A=(Ax,Ay)、 B = ( B x , B y ) {B}=(B_x,B_y) B=(Bx,By)、相对旋转角度 α {\alpha} α, B {B} B以 A ′ {A}' A′点为旋转中心旋转 α {\alpha} α°时到达 B ′ {B}' B′点,计算公式如下
B x ′ = cos α ∗ ( B x − A x ) − sin α ∗ ( B y − A y ) + A x {B}'_x = \cos \alpha *({{B}_{x}}-{{A}_{x}})-\sin \alpha *({{B}_{y}}-{{A}_{y}})+{{A}_{x}} Bx′=cosα∗(Bx−Ax)−sinα∗(By−Ay)+Ax
B y ′ = cos α ∗ ( B y − A y ) + sin α ∗ ( B x − A x ) + A y {B}'_y = \cos \alpha *({{B}_{y}}-{{A}_{y}})+\sin \alpha *({{B}_{x}}-{{A}_{x}})+{{A}_{y}} By′=cosα∗(By−Ay)+sinα∗(Bx−Ax)+Ay
所以 d x {dx} dx和 d y {dy} dy的计算公式如下:
d x = B x − cos α ∗ ( B x − A x ) − sin α ∗ ( B y − A y ) + A x dx={{B}_{x}}-\cos \alpha *({{B}_{x}}-{{A}_{x}})-\sin \alpha *({{B}_{y}}-{{A}_{y}})+{{A}_{x}} dx=Bx−cosα∗(Bx−Ax)−sinα∗(By−Ay)+Ax
d y = B y − cos α ∗ ( B y − A y ) + sin α ∗ ( B x − A x ) + A y dy={{B}_{y}}-\cos \alpha *({{B}_{y}}-{{A}_{y}})+\sin \alpha *({{B}_{x}}-{{A}_{x}})+{{A}_{y}} dy=By−cosα∗(By−Ay)+sinα∗(Bx−Ax)+Ay
将 d x {dx} dx和 d y {dy} dy加给需要偏移的世界坐标再输出给机器人就好了😶
欲知后事如何
本文未解决的问题
1直接对应公式写代码会发现缺少旋转中心的世界坐标
2如果中途将带mark点的工具更换为不同的抓取工具,希望通过直接示教抓取点解决
且听下回分解🤣
眼在手外情况的二维视觉自动标定(二)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
