眼在手外情况的二维视觉自动标定(一)

自动标定前传

业务相关需要做一个眼在手外的二维视觉自动标定功能,简单版本无非是机器人带着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} AA得出,也等价于 B − B ′ {B} - {B}' BB

已知 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α(BxAx)sinα(ByAy)+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α(ByAy)+sinα(BxAx)+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=Bxcosα(BxAx)sinα(ByAy)+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=Bycosα(ByAy)+sinα(BxAx)+Ay

d x {dx} dx d y {dy} dy加给需要偏移的世界坐标再输出给机器人就好了😶

欲知后事如何

本文未解决的问题

1直接对应公式写代码会发现缺少旋转中心的世界坐标

2如果中途将带mark点的工具更换为不同的抓取工具,希望通过直接示教抓取点解决

且听下回分解🤣
眼在手外情况的二维视觉自动标定(二)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值