记录一下机械臂的12点标定流程(9点标定+旋转标定)。
目的
之前写的相机标定,主要有两个目的。
- 畸变纠正
- 坐标系转换
本次介绍的12点标定,则涉及到了如何通过视觉引导机械臂移动到正确的位置。将不同坐标系转移到世界坐标系下实现视觉引导机械臂运动。
9点标定
眼在手下
相机不随机械臂一起移动,而是安装到一个固定的位置拍照。
9点标定流程
此处标定使用的仍然是Halcon提供的标定板。
- 将需要使用的标定板或标定板图像,固定在工作平面上。然后使用相机拍摄一张图像。
- 使用Blob分析,提取标定板上的9个点,这里要注意提取点的顺序(方便与后面机械臂跑点对应)。
- 获取每一个点的外接圆,并提取外接圆的中心坐标。
- 首先记录机械臂标准工作位,然后控制机械臂分别按照上面的像素点顺序移动到9个点,并记录每个点的机械臂坐标。
- 在Halcon通过算子(vector_to_hom_mat2d)得到坐标系之间的转换关系。
- 根据得到的仿射变换矩阵,即可使用算子(affine_trans_point_2d)实现坐标之间的转换。
此处的标定只涉及到了XY的平面坐标系,对于Z轴,我们是不需要进行标定的。机械臂每次运动结束后,都要返回工作位,然后相机再拍照。
眼在手上
相机安装在机械臂上,跟随机械臂一起移动。
旋转标定
当机械臂末端有转轴,并且转轴与夹具不在一个旋转中心上时,物料就会因为旋转而产生额外的误差。
在这种情况下,如果我们旋转之后,不进行纠偏,直接把物料移动到标准位。就会产生误差。因为我们之前所做的9点标定只能保证通过相机将物料从某一点移动到另一个地方,但没办法保证角度也是对齐的。
旋转中心求得一个近似值,通常受到一下因素影响:
- 旋转中心的半径长度,长度越大 精度越差。
- 相机自身的畸变(做相机标定)。
旋转标定流程
此处以三点标定为例。
- 固定机械装置不再进行移动,通过控制机械装置旋转移动标定物。每移动一次就让相机拍一张照片。这里用黑笔记录了一下探针每次移动的位置
- 保证旋转角度尽可能均匀,照片尽量清晰。
- 在Halcon中使用Blob分析提取对应的点。
- 筛选区域提取外接圆。
- 利用之前的九点标定结果,先将所有点转换到世界坐标系下。
- 拟合对应的圆(gen_circle_xld、fit_circle_contour_xld),得到拟合圆心和半径。这里有一点问题,如果要用拟合圆的方法最好拍5个点。拟合方法选用最小二乘法
至此,旋转标定结束。
旋转标定纠偏
方法一
需要拍照两次,第一次用来纠正角度,第二次用来纠正XY位置。一定要先纠正角度再纠正XY位置,如果最后纠正角度,旋转后XY还是对不齐。
- 先回原点拍照确定基准位置
- 放置物料后 第一次拍照 用来纠偏角度(使用模板匹配、rect2都可以确定角度)
- 根据角度差进行旋转
- 再次拍照,确定旋转后物料与模板的XY坐标差
- 使用九点标定结果,得到偏移量进行移动
方法二
只拍照一次,直接纠正角度以及XY坐标。
流程如下:
- 利用旋转标定得到的旋转中心,计算物料绕旋转中心 旋转后的坐标。
- 计算模板与旋转后物料坐标的差值,进行纠偏。
a. 公式中的cos和sin是 模板角度-当前物料角度的角度值
b. CenterX和Y是在世界坐标系下的 旋转标定得到的圆心坐标-当前物料坐标
计算公式
* 获取当前位置绕旋转中心,旋转之后的点位置
offset_p := Phi_Target-Phi_Curr
sin_value := sin(offset_p)
cos_value := cos(offset_p)
affine_trans_point_2d (HomMat2D,Row_Curr ,Column_Curr , x, y)
after_angle_x:=(x-CenterX)*cos_value-(y-CenterY)*sin_value+CenterX
after_angle_y:=(x-CenterX)*sin_value+(y-CenterY)*cos_value+CenterY
* 目标位置-旋转之后的位置,获取偏移量
affine_trans_point_2d (HomMat2D,Row_Target ,Column_Target , Qx1, Qy1)
* 纠偏量xy
dx := Qx1-after_angle_x
dy := Qy1-after_angle_y
* 获取纠偏角度
offset_angle :=Angle_Target-Angle_Curr#这里再次纠偏,0.722是计算得到的 机械旋转1度与我们这里计算的1度的比例关系
machine_a := offset_angle/0.722
对于上面的纠偏方法和流程可以参考下面的文章。
https://blog.csdn.net/qq_41375318/article/details/148016843
https://blog.csdn.net/qq_41375318/article/details/148034929