halcon手眼标定例程详解_【3】机器人手眼标定:固定向下相机

本文详细介绍了机器人手眼标定中的固定向下相机应用,通过3x3圆点标定板进行相机标定,利用HALCON算子进行坐标转换。文章解释了标定过程中的数学原理,包括仿射变换矩阵和最小二乘法求解。
摘要由CSDN通过智能技术生成

88dace711eb2fed1dedb15f2d7f9884a.png

01aa302c235b881cccb0a8769c8d1de3.png

920803420968dddc8a01f55b258aa7a1.png

b2e517112acdc6018a761652a5f547de.png

相机固定向下安装是手眼搭配中最简单的应用模式,也是大家最常用,最容易理解的一种方式。就让我们从这种简单的应用场景一起思考其中的一些奥妙吧。

— Edited By Hugo

19191aa2fddd49b2257003a51dfe8ef4.png

2b6b77124b3acc71b1c91726312a8238.png

c40e4923c7bf45e6dff8237f1a0c6374.png

如上图所示:

要让机器人的手抓住杯子,就必须知道杯子跟手的相对位置关系,而杯子的位置则是通过机器人的眼睛看见的,所以,我们只需要知道机器人的手可以眼睛的转换关系,就可以随时抓取机器人眼睛所看到的物体了。

先演示下相机标定过程:

STEP 1:准备好一张标定板,里面有3X3的圆。

8462be3f9172225f5fed66fc94583d4c.png

STEP 2:把标定板水平放置在相机正下方,控制相机拍照得到一张图片,并按顺序(走Z字型)记录图片上9个圆的中心位置。

STEP 3:控制机器人TCP工具末端按顺序(走Z字型)移动到每个圆心,并记录下9组机器人位置坐标数据。

STEP 4: 执行标定,这里使用HALCON标定算子作为演示,利用上面求得的数据。

-图像上9个位置-

image_x:=[727.884,2395.058,1505.023,666.948,2678.36,1505.023,666.948,2678.36]

image_y:=[755.759,664.057,1289.824,1787.698,1707.432,1505.023,666.948,2678.36]

-机器人9个位置-

robot_x:=[-57.011,-33.521,-46.759,-58.678,-30.024,-46.759,-58.678,-30.024]

robot_y:=[323.965,324.565,316.237,309.794,309.695,-46.759,-58.678,-30.024]

-图像与机器人数据结合-

vector_to_hom_mat2d (image_x, image_y, robot_x, robot_y, HomMat2D)

STEP 5:标定完成后,拍摄一个特征点的,求得像素位置

img_x:=2094.344

img_y:=1326.878

利用以下算子即可把像素坐标转换成机器人坐标

affine_trans_point_2d(HomMat2D,img_x,img_y, Qx, Qy)

到这里标定以及转过程就完成了。是不是觉得很简单?那么问题来了,他怎么做到的呢,这个标定函数里面做了什么?下面一起看看:

a5424d7c9c7aec1a98572b3bd51f37ca.png

如上图所示:

矩阵A代表了图像像素点的点集合,矩阵B代表了机器人在世界坐标系下的点集合,在机器人应用中,我们习惯使用齐次坐标与齐次矩阵来统一描述刚体的位置和姿态。而X就是我们需求出的AB两组点集之间的旋转平移关系矩阵。

在做平面手眼标定(非3D)时,都是利用该等式进行求解的。这也是我们通常熟悉的N点标定的数学原型。这也无论是四轴机器人还是六轴机器人(姿态固定)都同样适用。

听到矩阵两个字是不是很烦?没关系你看看这个两个等式就很容易明白了。

09313c9ffa1e6870927a01cfa00ea948.png

矩阵最开出现的目的在于简化线性方程的写法。矩阵的本质就是线性方程式,两者是一一对应关系。

为何图像与机器人的标定关系可以这样来表示呢?

我们知道,三维空间中的一个平面可以使用一个三元一次方程来表示,所以在平面标定中,假设图像坐标系为A平面,机器人坐标系为B平面。那么通过三元一次方程组,可求出一个平面分别与AB平面相交。可表示如下:

350d2942b7eec6163af64c6881b199e0.png

当使用N组数据时,即可使用点集A*矩阵R=点集B的方式进行表示了。这个矩阵R矩阵我们通常称为仿射变换矩阵。

e982adafdbcbf69fb6ec5d0766a1f689.png

46e1788542d10b81d0989ab68eb59a7a.png

仿射变换(Affine Transformation)是空间直角坐标系的变换,从一个二维坐标变换到另一个二维坐标,仿射变换是一个线性变换,他保持了图像的“平行性”和“平直性”,即图像中原来的直线和平行线,变换后仍然保持原来的直线和平行线,仿射变换比较常用的特殊变换有平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和剪切(Shear)。

已知给定两个对应点集AB,如何估计指定变换矩阵R的参数?

一对对应点可以列两个线性方程,多个对应点可以列出线性方程组,为了求解参数,需要的对应点数至少为自由度的一半,多个点时构成超定方程组,可以基于最小二乘或者SVD分解等方法进行求解,这里就暂时展开讨论。

关于SVD求解过程可参考下面连接:

https://blog.csdn.net/chenaiyanmie/article/details/80011244

在实验过程中遇到问题的或者存在疑问的

可以关注公主号 AmazingRobot+ 后联系我~

902bb40bee839c5a1b7c2a6b305c1097.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值