一、考虑旋转中心的工况解法,
1,视觉中引导定位或者对位贴合时,机械手或者xyzr轴上手爪中心和末端轴中心不同轴时,就要考虑旋转中心问题;
2,如果设备的CT要求没有很苛刻,可以采用2次拍照的方案解决,1次拍照后纠偏角度,然后在纠正角度后的位置2次拍照纠正x、y偏差;
看下图:
第一次拍照得到红色当前拍照位和绿色模板位之间的角度偏差后,执行旋转,旋转到蓝色位置;
第二次再拍照计算蓝色位置和绿色模板位置之间的平移偏差量,再执行平移;
3,如果设备的CT要求很高,必须1次拍照完成整个纠偏,此时就要考虑采取先计算旋转后的点再计算平移量,还是先平移后旋转(这个方法复杂化了不建议使用,我看到有人用,但是可能把他理解错了,因为我个人觉得要先平移后旋转这个方法,需要再平移一次才行,会重点探讨);
看下图分析:
二
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)
注意:以上仅仅作为一种解题思路呈现其步骤,结果是否正确仍需要实际验证。
标签:拍照,C#,Px,Py,Visionpro,Ay,工况,Ax,Bx From: https://www.cnblogs.com/wwdwwd/p/18451237