Halcon 机械视觉 使用仿射变换 机械手实现孔位定位

要推算机械手平面坐标系A与相机平面坐标系B的关系,我们可以首先找到两个平面坐标系之间的平移量和旋转量。

平移量:选择一个公共的参考点,比如某个标志物,假设在坐标系A中的坐标为(Ax, Ay),在坐标系B中的坐标为(Bx, By)。那么平移量可以表示为:

Δx = Bx - Ax
Δy = By - Ay

这里的(Δx, Δy)表示坐标系B相对于坐标系A的平移量。

旋转量

利用三角函数可以得到:

cos(θ) = (A1·B1) / (||A1|| ||B1||)
cos(θ) =((A1X * B1X)+(A1Y*B1Y)) / (√(A1x^2 + A1y^2) * √(B1x^2 + B1y^2))

在坐标系A中选择一个基准向量A1,对应于坐标系B中的向量B1。
θ表示坐标系B相对于坐标系A的旋转角度。

A1·B1 表示向量 A1 和向量 B1 的点积,表示两个向量在相同方向上的分量的乘积之和。
||A1|| 表示向量 A1 的模。
模表示向量的长度或大小,即 ||A1|| = √(A1x^2 + A1y^2)
其中 A1x 和 A1y 分别表示向量 A1 在 x 轴和 y 轴上的分量,同理可得||B1||。

注意,如果坐标系A和B之间存在缩放,我们还需要考虑缩放的情况。

有了平移量和旋转量,我们可以描述平面坐标系A和B之间的关系。假设有一个点在坐标系A中的坐标为(x, y),那么在坐标系B中的坐标可以通过下面的变换获得:

x_new = cos(θ) * x - sin(θ) * y + Δx
y_new = sin(θ) * x + cos(θ) * y +Δy

举例:
Halcon 机械视觉 使用仿射变换 机械手实现孔位定位_第1张图片
举例:
rx1 = 415.35
ry1 = -173.03
cx1 = 398.997
cy1 = -160.886

平移量Δx :cx1-rx1

平移量Δy :cx2-rx1

向量|r|:( (rx2-rx1),(ry2-ry1))

向量|c|:( (cx2-cx1),(cy2-cy1))

A1·B1:((cx2-cx1)*(rx2-rx1)+(ry2-ry1) * (cy2-cy1))

||A1|| = √(A1x^2 + A1y^2) : 根号((rx2-rx1)的平方+(ry2-ry1)的平方))
||B1|| = √(B1x^2 + B1y^2) : 根号((cx2-cx1)的平方+(cy2-cy1)的平方))
最后得出cos、sin、Δx、Δy
已知相机世界坐标
即可套用公式算出机械手对应世界坐标。
图中示例cos无限逼近与1,证明两个平面基本上重合,坐标直接相减即可
Halcon 机械视觉 使用仿射变换 机械手实现孔位定位_第2张图片

你可能感兴趣的:(Halcon,Halcon,计算机视觉,c#,工控上位机)