A与B组件自动对齐与组装,无映射直接补偿。
网上针对组装的从视觉到控制动作,要不就是收费,要不就是简单介绍。这么详细的比较难找~
手下留情,不喜勿喷!
Show time~

分步解决方案:
标定阶段(Calibration)
9点张氏标定(每个位置A1、A2、B1、B2):
使用机械手在相机视野内沿Z字形路径移动,覆盖9个点(XY方向间距根据视野范围设定)。
通过图像识别每个点的像素坐标,结合机械手的实际坐标,计算相机到机械手的变换矩阵(包含旋转和平移)。
输出每个位置的独立标定矩阵(如Mat_A1, Mat_A2, Mat_B1, Mat_B2)。
5点旋转中心标定(每个位置):
固定机械手在当前位置(如A1),绕Z轴以0.1度为步进旋转,拍摄5个角度(例如0°, 0.1°, 0.2°, 0.3°, 0.4°),记录每个角度下的特征点坐标。
通过最小二乘法拟合旋转中心坐标(机械坐标系下的点),并生成旋转补偿矩阵。
存储每个位置的旋转中心坐标(如RotCenter_A1)及角度-坐标映射关系。
基准点设定(Reference Setup)
拍摄基准图像:
机械手携带标准产品依次到达A1、A2、B1、B2,各位置拍摄图像。
提取图像特征点(如边缘、孔位等)的像素坐标,通过对应标定矩阵转换为机械坐标(如Ref_A1_X, Ref_A1_Y)。
建立基准线段与中心点:
对A1和A2的基准坐标,计算基准线段的端点(如线段Ref_A1A2)及其中点(Center_A)。
同理处理B1和B2,得到Ref_B1B2线段及中点Center_B。
实时角度计算(Angle Calculation)
实时数据采集:
机械手携带产品到达A1、A2,拍摄实时图像,提取特征点并转换为机械坐标(Real_A1, Real_A2)。
同样获取B1、B2的实时坐标(Real_B1, Real_B2)。
平移补偿:
计算实时线段(Real_A1A2)的中点,与基准中点(Center_A)的偏差(ΔX, ΔY)。
控制机械手移动,使实时中点与基准中点重合。
旋转角度计算:
通过基准线段Ref_A1A2与实时线段Real_A1A2的方向向量,计算夹角θ(使用反正切或向量点积公式)。
结合旋转中心坐标(RotCenter_A1),调整机械手绕该中心旋转θ角,使线段对齐。
同步更新B的位置数据:
重复上述步骤处理B1、B2,得到B的实时角度θ_B。
AB组装补偿(Assembly Compensation)
位置偏差补偿:
检测B的实时位置与基准的偏差(如ΔB_X = -5),则A需补偿+5(ΔA_X = 5),使得ΔA_X + ΔB_X = 0。
同样处理Y方向,确保A移动后总偏差归零。
角度同步:
计算A与B的实时角度差Δθ = θ_A - θ_B。
保持B不动,调整A的旋转角度Δθ,使两者角度一致。
最终组装:
在位置和角度补偿完成后,机械手控制A与B进行精密组装,确保接触点零误差。
关键公式与示例:
标定矩阵转换:
(
X
机械
Y
机械
)
=
Mat
位置
×
(
u
像素
v
像素
1
)
(
X
机械
Y
机械
)=Mat
位置
×
u
像素
v
像素
1
旋转角度计算:
θ
=
arctan
(
Real_A2
Y
−
Real_A1
Y
Real_A2
X
−
Real_A1
X
)
−
arctan
(
Ref_A2
Y
−
Ref_A1
Y
Ref_A2
X
−
Ref_A1
X
)
θ=arctan(
Real_A2
X
−Real_A1
X
Real_A2
Y
−Real_A1
Y
)−arctan(
Ref_A2
X
−Ref_A1
X
Ref_A2
Y
−Ref_A1
Y
)
平移补偿量:
Δ
X
=
Center_A
X
−
Real_A1
X
+
Real_A2
X
2
ΔX=Center_A
X
−
2
Real_A1
X
+Real_A2
X
注意事项:
确保标定环境稳定,避免振动或光照变化影响标定精度。
定期复检标定参数,防止机械结构磨损导致偏差。
采用滤波算法(如卡尔曼滤波)处理实时数据中的噪声,提高系统鲁棒性。
通过以上步骤ÿ