当前位置: 首页 > article >正文

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

注意事项:
确保标定环境稳定,避免振动或光照变化影响标定精度。

定期复检标定参数,防止机械结构磨损导致偏差。

采用滤波算法(如卡尔曼滤波)处理实时数据中的噪声,提高系统鲁棒性。

通过以上步骤ÿ


http://www.kler.cn/a/552587.html

相关文章:

  • SpingBoot-Vue 前后端分离—实现钉钉免登功能(2025)
  • 【Spring+MyBatis】_图书管理系统(中篇)
  • c# -01新属性-模式匹配、弃元、析构元组和其他类型
  • spark大数据分析
  • python-leetcode-最小路径和
  • vue中使用富文本编辑器
  • SpringBoot速成(14)文件上传P23-P26
  • GIT:如何合并已commit的信息并进行push操作
  • 【达梦数据库】dblink连接[SqlServer/Mysql]报错处理
  • Edge浏览器清理主页
  • Copilot Next Edit Suggestions(预览版)
  • nodejs:express + js-mdict 网页查询英汉词典,能显示图片
  • 【Java 面试 八股文】并发编程篇
  • The First项目报告:重塑链上游戏生态,解读B3 Base的双赢局面
  • Pytorch实现之粒子群优化算法在GAN中的应用
  • 一周学会Flask3 Python Web开发-post请求与参数获取
  • TCP通讯-客户端链接
  • mysql 学习16 视图,存储过程,存储函数,触发器
  • MySQL中的事务隔离级别有哪些?
  • 【嵌入式Linux应用开发基础】进程实战开发