开启左侧

【2】机器人手眼标定:固定向上相机

[复制链接]
Hugo 发表于 2020-6-11 11:17:44 | 显示全部楼层 |阅读模式



固定向上相机配合机器人,在机器人Tool0下吸取物料拍照并一次性纠偏。—— Edited By HUGO


2a8751015f8d4bb0821741b2e9e44e86.png


目前:很多机器人以及第三方软件平台都有自己的标定方法,但毕竟还有一些机器人以及非标机构需要自己去实现这样的手眼标定,这里提供一种一次性纠偏的解题思路,仅供大家参考。

【1】

640.gif

常规解题思路一般有两种:
第一种:利用机器人自带的刷新函数,计算出物料中心距离Tool0的偏移值以及偏移角度,最后通过类似ToolSet的函数,直接设置成机器人的TCP工具,即可直接使用更新后的工具进行纠偏放料。

第二种:大家往往会采取两步走的方法进行纠偏,第一次拍照计算物料的角度,让机器人旋转至物料放置的角度一致。第二次拍照计算与标准模板相比较XY的偏移量。再次让机器人平移到放料位置。

第一种方式,简单方便,但是算法跟某种机器人绑定,第二种方式,适合所有机器人以及执行机构使用,但是需要拍两次,对于节拍要求严格的场合就不太合适了。

现在要对第二种方式进行优化:

【2】
下面开始进入正题:
求旋转中心。即当机器人吸取物料后需要旋转一定角度放料时,需求出物料是绕着哪个中心进行旋转的。


6400.gif


如上图:
为了方便演示,我们假设旋转中心为原点O(0,0),实际这个旋转中心原点是未知的,需要我们计算得出。直线f可以假设是旋转轴延伸出来的吸嘴治具,A点是我们吸取着物料的特征点位置。

STEP 1:得到三个旋转之后的坐标。
首先,我们先让机器人或者执行机构旋转3次,这里每次逆时针旋转了角AOB15°,分别得到三个坐标位置A,B,C。(注意,这三个位置最好是9点标定转换出来的机器人坐标系下的坐标,如果是像素坐标,记得最后根据像素单量进行转换)。

例如:得到的三个坐标分别为
  1. A(3,1)
  2. B (2.64,1.74)
  3. C (2.1,237)
复制代码


STEP 2:求线段AB的长度。
  1. Lab = SQRT((Ax-Bx)^2+(Ay-By)^2)=0.8229
复制代码


STEP 3:求OA,OB的长度。
由上图可知,以AB为底边的是等腰三角形OAB。
  1. Loa=(Lab /2)/SIN((角AOB/2)*PI()/180)=3.1523
  2. Lob=3.1523
复制代码


STEP 4:求AB边的在该坐标系的方位角:
  1. αAB=DEGREES(PI()*(1-SIGN(By-Ay)/2)-ATAN((Bx-Ax)/(By-Ay)))=115.9422
复制代码

如果αAB小于0 则αAB加上360,这里大于零,所以不需要加了。

STEP 5:
求得OA边在该坐标系的方位角:
由于具有对称性通常有两个解,
但是三点只能仅有一个圆心,我们后面将利用第三个点进行剔除。
  1. αAO1=αAB -(90-角AOB/2)=33.44
  2. αAO2=αAB +(90-角AOB/2)=198.44
复制代码


STEP 6: 求得旋转中心。
解1:
  1. Ox1=(Ax+Loa*COS(αAO1*PI()/180))=5.6
  2. Oy1=(Ay+Loa*COS(αAO1*PI()/180))=2.73
复制代码


解2:
  1. Ox2=(Ax+Loa*COS(αAO2*PI()/180))=0.0096
  2. Oy2=(Ay+Loa*COS(αAO2*PI()/180))=0.0028
复制代码


STEP 7: 判断哪个结果是有效值。
由上分析可知:
线段BC与线段AO的的夹角小于90°时
此时才是有效旋转中心。
根据向量公式:cos<a,b>=a.b/|a||b|
分别计算BC与AO1 BC与AO2的角度进行对比
可知:BC与AO1夹角为97.16
BC与AO2夹角为67.84
即该旋转中心为:Ox2,Oy2
与我们假设中心(0,0)接近,验证成功。

说在后面,可能有同学会问为啥不直拟合圆求圆心,其实也可以,只不过这样精度会更高一些。而且这样会简化用户操作,只需示教三个点。

微信截图_20200611115740.png

旋转中心已经求出来了,下面可以直接计算旋转后的位置差值。

【3】


6401.png


旋转中心已经求出来了,该如何计算旋转后的位置差值呢?


.
.
.

同学们,可在微信公众号进行完整阅读.......

微信图片_20200611115016.jpg

关注微信公众号第一时间获取更多首发机器人视觉知识



购买主题 本主题需向作者支付 15 视觉币 才能浏览
week 发表于 2020-6-15 19:45:33 | 显示全部楼层
如果相机是固定在机械手上该如何标定和计算呢?
Hugo 发表于 2020-6-18 16:14:43 | 显示全部楼层
week 发表于 2020-6-15 19:45
如果相机是固定在机械手上该如何标定和计算呢?

在我公众号里面 有个J1关节的移动相机标定,可以给你很好的启发
Hugo 发表于 2020-6-18 17:09:27 | 显示全部楼层
692446 发表于 2020-6-18 16:14
在我公众号里面 有个J1关节的移动相机标定,可以给你很好的启发

机器人手眼标定:J1移动相机
https://www.51halcon.com/forum.p ... 4267&fromuid=50
(出处: 51Halcon机器视觉)

请参考这个思路!
Hugo 发表于 2020-6-23 12:09:12 | 显示全部楼层

直接点击视觉币购买即可
我是一个小白 发表于 2020-8-31 13:59:55 | 显示全部楼层
要是两个相机各自拍一个大玻璃的两个角,该怎么算位置差值呢?
xwk0711 发表于 2021-11-1 17:30:11 | 显示全部楼层
请教:线段AB的方位角是怎么计算的?为什么不是斜率的反三角函数值呢?
xwk0711 发表于 2021-11-2 09:24:42 | 显示全部楼层
我用CAD画图后发现,楼主计算OA的角度好像有问题:αAO1=αAB -(90-角AOB/2)=33.44,  应该是:αAO1=αAB -(180-(90-角AOB/2))=
LYP2020 发表于 2022-9-8 10:37:27 | 显示全部楼层
您好,可以分享一下,这个画图,模拟软件吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表