自动标定前传
业务相关需要做一个眼在手外的二维视觉自动标定功能,简单版本无非是机器人带着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点的工具更换为不同的抓取工具,希望通过直接示教抓取点解决
且听下回分解🤣
眼在手外情况的二维视觉自动标定(二)