C#联合Visionpro编程学习记录,视觉中需要考虑旋转中心工况的计算方法探讨

一、考虑旋转中心的工况解法,拍2次照;

1,视觉中引导定位或者对位贴合时,机械手或者xyzr轴上手爪中心和末端轴中心不同轴时,就要考虑旋转中心问题;

2,如果设备的CT要求没有很苛刻,可以采用2次拍照的方案解决,1次拍照后纠偏角度,然后在纠正角度后的位置2次拍照纠正x、y偏差;

 看下图:

第一次拍照得到红色当前拍照位和绿色模板位之间的角度偏差后,执行旋转,旋转到蓝色位置;

 第二次再拍照计算蓝色位置和绿色模板位置之间的平移偏差量,再执行平移;

3,如果设备的CT要求很高,必须1次拍照完成整个纠偏,此时就要考虑采取先计算旋转后的点再计算平移量,还是先平移后旋转(这个方法复杂化了不建议使用,我看到有人用,但是可能把他理解错了,因为我个人觉得要先平移后旋转这个方法,需要再平移一次才行,会重点探讨);

二、考虑旋转中心的工况解法,拍1次照,先旋转后平移(常规思路),下面是图片是常规思路:

三,考虑旋转中心的工况解法,拍1次照,先平移后旋转,再平移(非常规思路),

看下图分析(图中方法都是拍1次照,包含非常规思路和常规思路2种方法,其中非常规思路仅仅作为讨论而写):

下面是图片上的非常规思路文字:

1,计算变得复杂起来,由上图可知从当前拍照位置回到模板位置的其差值x`、y`、θ`为:
x`=(Ax-Bx)+(Cx-Bx)
y`=(Ay-By)+(Cy-By)
θ`=Aθ-Bθ

2,假设角度差值(即上图的特定角度):θ`=Aθ-Bθ

3,由上图可得:
a=Ax-Bx;
b=Ay-By;

c=Cx-Bx;
d=Cy-By;


4,点P`的坐标可以求出:
P`x=Px+a;
P`y=Py+b;


5,点C的坐标可以由点A`绕新旋转中心点P`转θ`角度计算得出:

Cx=(A`x-P`x)*Cos(θ`)-(A`y-P`y)*Sin(θ`)+P`x;
Cy=(A`x-P`x)*Sin(θ`)+(A`y-P`y)*Cos(θ`)+P`y;
已知:
A`x=Ax+a=2Ax-Bx;
A`y=Ay+b=2Ay-By;
P`x=Px+a=Px+(Ax-Bx);
P`y=Py+b=Py+(Ay-By);
所以:
Cx=((2Ax-Bx)-(Px+(AX-Bx)))*Cos(θ`)-((2Ay-By)-(Py+(Ay-By))*Sin(θ`)+Px+(Ax-Bx);
Cy=((2Ax-Bx)-(Px+(AX-Bx)))*Sin(θ`)+((2Ay-By)-(Py+(Ay-By))*Cos(θ`)+Py+(Ay-By);


6,由以上可知把所有已知量带入1:
x`=(Ax-Bx)+(((2Ax-Bx)-(Px+(AX-Bx)))*Cos(Aθ-Bθ)-((2Ay-By)-(Py+(Ay-By))*Sin(Aθ-Bθ)+Px+(Ax-Bx)-Bx);
y`=(Ay-By)+(((2Ax-Bx)-(Px+(AX-Bx)))*Sin(Aθ-Bθ)+((2Ay-By)-(Py+(Ay-By))*Cos(Aθ-Bθ)+Py+(Ay-By)-By)

注意:以上仅仅作为一种解题思路呈现其步骤,结果是否正确仍需要实际验证。

 

posted @ 2024-10-08 19:24  稳稳地稳稳地  阅读(738)  评论(0)    收藏  举报