机器人与视觉标定理论详解

小白学视觉

共 4716字,需浏览 10分钟

 · 2020-12-12

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

转自|代码狗

相机固定不动, 上往下看引导机器人移动

机器人与视觉标定理论详解

相机固定不动, 上往下看引导机器人移动

1.相机非线性校正

使用标定板做非线性校正

2.相机与机器人做9点标定

可以使用机器人扎9个点,或者机器人抓住工件摆放9个位置,得到9个机械坐标,相机也得到9个像素坐标,然后标定

3.计算机器人的旋转中心

机器人抓取工件分别旋转三个角度摆放到相机视野内,相机可以得到三个坐标值,通过三个坐标值拟合圆获得圆心坐标即为旋转中心

4.相机通过公式计算得出最终的输出结果

(rx0, ry0)为旋转中心,( x, y)为被旋转的点,(x0,y0)旋转后的点

x0= cos (a) * (x-rx0) – sin (a) * (y-ry0) +rx0

y0= cos (a) * (y-ry0) + sin (a) * (x-rx0) +ry0

相机固定不动, 下往上看

1.相机非线性校正

使用机器人吸起标定板做非线性校正

2.相机与机器人做9点标定

可以使用实物标定,机器人抓住工件摆放9个位置,得到9个机械坐标,相机也得到9个像素坐标,然后标定。

参考上面的上往下看。

相机固定在机器人上,离旋转中心较近

1、相机非线性矫正

2、相机与机器人做9点标定

可以使用实物标定,机器人抓住工件摆放9个位置,得到9个机械坐标,相机也得到9个像素坐标,(机器人每次需要回到固定位置拍照),然后标定

3、计算机器人的旋转中心

机器人抓取工件分别旋转三个角度摆放到相机视野内,相机可以得到三个坐标值,通过三个坐标值拟合圆获得圆心坐标即为旋转中心

4、相机通过公式计算得出最终输出结果


相机固定在机器人上,离旋转中心很远

1、相机非线性矫正

2、相机与机器人做9点标定

3、计算机器人的旋转中心

4、相机通过公式计算得出最终输出结果

注:由于选择中心距离视野很远,通常拟合出来的旋转中心存在比较大的误差,给定位精度造成影响。

分离轴

分离轴的设计方式有很多,XY + θ, X+Y θ, X θ+Y….,具体状况具体分析,目的是要找到旋转中心,做好9点标定。

1.相机非线性校正

2.相机与机器人做9点标定

3.计算机器人的旋转中心

4.相机通过公式计算得出最终的输出结果

旋转中心标定说明


旋转中心方法用于所有机器人与视觉配合场景

方法:计算工件实际发生的偏移量和旋转量,结合机器人的旋转中心进行二次补偿后,把补偿量

发送给机器人,然后机器人把补偿量补偿后进行抓取或放置即可;

点坐标旋转方法

计算某个点绕另外一点旋转一定角度后的坐标,如图:

机器人与视觉标定理论详解

A(x,y)绕B(rx0,ry0)旋转a度后的位置为C(x0,y0),则有如下关系式:

x0= cos (a) * (x-rx0) – sin (a) * (y-ry0) +rx0

y0= cos (a) * (y-ry0) + sin (a) * (x-rx0) +ry0

下面计算所有的旋转和偏移量均是基于上面的公式

旋转中心标定说明

STD方法的计算:

CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0

CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0

X’= cos (a) * (X0-Cx0) – sin (a) * (Y0-Cy0) + Cx0

Y’= cos (a) * (Y0-Cy0) – sin (a) * (X0-Cx0) + Cy0

CDx=X1-X’

Cdy=Y1-Y’

这里是机器人在取料之前,先把自己的角度补正到与 物料当前角度一致,到(X’,Y’)位置处,然后移动 CDx,Cdy,与物料位置也重合,然后去取料。这样就保证了每次取料后,物料相对于机器人的位置 一致,因此直接往目标位置放就可以。这种方式由于是取物料的时候调整位置,因此适用于 相机固定在机械手上、相机固定安装从上往下看的方式。如果相机固定安装从下往上看,由于机器人这时候已经取完料了,就不适合使用了。

特别注意

这里计算到的Cdx和Cdy一定要补偿到机器人的取料位置里,不能补偿到 放料位置。旋转中心方法计算到的偏差可以直接补偿到放料位置。原因如下:

旋转中心法的计算:

(X,Y)是定位到的产品位置,(GX,GY)是标准模板位置,(X’,Y’)是补偿了角度后的新位置,则:

X’ = cos θ * (X-Xo) – sin θ *(Y-Yo) + Xo;

Y’ = cos θ* (Y-Yo) + sin θ* (X-Xo) + Yo;

Offset X=X’-GX

Offset Y=Y’-GY

Offset Theta= θ

求旋转中心方法

当相机FOV与旋转中心很近,可以用旋转3点以上拟合一个圆求圆心

当相机FOV与旋转中心很远,使用旋转3或多个点求圆心,准确性会很差。

解法

(X0,Y0)为旋转中心, (X1,Y1)及(X2,Y2)为工件在视野中旋转角度a的前后坐标,(Xt,Yt)为两点连线的延长。

d = √(X2-X1)^2 + (Y2-Y1)^2

角度a

R = d/2/sin(a/2)

R/d = (Xt-X1)/(X2-X1)

R/d = (Yt-Y1)/(Y2-Y1)

Xt = (1-R/d)*X1 + (R/d)*X2

Yt = (1-R/d)*Y1 + (R/d)*Y2

X0= cos (90-a/2) * (Xt-X1) – sin (90-a/2) * (Yt-Y1) +X1

Y0= cos (90-a/2) * (Yt-Y1) + sin (90-a/2) * (Xt-X1) +Y1

角度:X+  Y+ 为正,反之为负

旋转中心标定计算补偿

CDx Cdy计算过程,旋转角度a

机器人与视觉标定理论详解

CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0

= (cos (a) -1) * (Cx0-X0) – sin (a) * (Cy0-Y0) + MDx

= (cos (a) -1) * StDx- sin (a) * StDy+ MDx

CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0

= (cos (a) -1) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Mdy

= (cos (a) -1) * StDy + sin (a) * StDx + Mdy

从公式中可以看出StDx = Cx0-X0,StDy = Cy0-Y0是个常量,MDx和Mdy是每次拍照是工件(Mark)的坐标与标准位置工件(Mark)的差值;

StDx与StDy怎么计算呢?蓝色的为一个二元一次方程,我们需要旋转一个角度即可计算出;

如果计算出StDx和StDy则在运行时,直接带入上述公式,可以很快计算出CDx,Cdy这样给出Robot的偏移量了,而不需要计算旋转中心的确切坐标了;

如何求解StDx和StDy

StDx,StDy计算过程,首先Robot在拍照点旋转一定角度a(一定是Robot给出)

机器人与视觉标定理论详解

CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0

= (cos (a) -1) * (Cx0-X0) – sin (a) * (Cy0-Y0) + MDx

= (cos (a) -1) * StDx- sin (a) * StDy+ MDx

CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0

= (cos (a) -1) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Mdy

= (cos (a) -1) * StDy + sin (a) * StDx + Mdy

下面介绍如何求解StDx和StDy,旋转一定角度a后MDx和Mdy则为确定值,cos(a)和sin(a)为确定值

0= (cos (a) -1) * StDx- sin (a) * StDy+ MDx

0= (cos (a) -1) * StDy + sin (a) * StDx + Mdy

StDx = -0.5*(Mdx*(cos(a)-1)+Mdy*sin(a)) / (1-cos(a))

StDy = 0.5*(Mdx*sin(a)-Mdy*(cos(a)-1))/(1-cos(a))

a是旋转标准的角度

Mdx=X1-X0,即旋转后Mark坐标与训练模板的mark坐标

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目31讲
小白学视觉公众号后台回复:Python视觉实战项目31讲即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

下载4:leetcode算法开源书
小白学视觉公众号后台回复:leetcode即可下载。每题都 runtime beats 100% 的开源好书,你值得拥有!



交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报