视觉系统与机械手的坐标标定
在电气自动化产线中,实现“眼睛”(相机)看到的目标能够被“手”(机械臂)精准抓取,核心在于坐标标定。这一步骤建立了图像像素坐标系与机器人基座标系之间的转换关系。若标定失败,机器人将抓取错误位置或发生碰撞。本指南将详细拆解标定全过程,确保零误差执行。
1. 准备工作与环境搭建
在执行任何软件操作前,必须确保硬件物理状态稳定。任何松动都会导致标定数据无效。
- 固定 工业相机与光源。确保相机安装支架无晃动,镜头光圈已锁定,防止标定过程中焦距变化。
- 清理 工作区域。移除视野内所有反光物体,避免干扰图像识别算法。
- 安装 高精度标定板。通常使用棋盘格标定板,将其平整放置于传送带或工作台面上,确保平面度误差小于
0.05mm。 - 配置 通讯参数。在 PC 端打开控制软件,输入 机器人的 IP 地址、端口号(通常为
5000),并测试 连接是否通畅。 - 设置 相机曝光时间与增益。调整参数直至标定板线条清晰且无过曝,直方图分布均匀。
2. 选择标定方案
根据相机安装位置不同,分为眼在手(Eye-in-Hand)和眼在外(Eye-to-Hand)两种模式。请根据实际布局选择合适的方案。
| 特性 | 眼在手 (Eye-in-Hand) | 眼在外 (Eye-to-Hand) |
|---|---|---|
| 相机位置 | 安装在机械臂末端法兰上 | 固定在工作台上方或侧面 |
| 视野范围 | 随机械臂移动,视野小但灵活 | 固定视野大,可一次性覆盖全域 |
| 适用场景 | 小空间精密装配、无序抓取 | 大范围定位、流水线分拣 |
| 标定难度 | 较低,相机与工具坐标系重合 | 较高,需额外计算相机到地面的变换 |
| 精度影响 | 受机械臂重复定位精度直接影响 | 受相机畸变及安装垂直度影响大 |
3. 执行手眼标定流程
以下流程以最常见的九点法为例。该方法通过采集多个不同姿态下的图像数据,解算出精确的转换矩阵。
3.1 进入标定界面
- 启动 视觉处理软件(如 Halcon, OpenCV 封装程序或厂商自带软件)。
- 登录 用户权限,确保拥有“系统管理员”级别的操作权限,允许修改内部参数。
- 加载 预设的工程文件。检查当前项目是否为新建或备份后的版本,避免覆盖原有数据。
- 切换 至标定向导页面。点击左侧菜单栏的
Calibration选项卡。
3.2 采集样本点
此步骤是核心,需要机械臂带动相机(或标定板相对于相机)移动到至少 9 个不同位置。
- 手动示教 第一个点位。使标定板的一个角点位于图像中心附近,记录该坐标
P1。 - 触发 图像采集指令。按下
F5键或点击界面上的Capture按钮,保存第一张原始图片。 - 移动 机械臂至第二个点位。位移距离建议在
50mm到200mm之间,角度旋转不少于10^\circ,以增加数据差异性。 - 重复 上述动作。继续采集第 2 至第 9 个点。确保点位分布覆盖整个视场,不要聚集在图像一角。
- 验证 特征识别。在每个点位保存前,确认 软件自动识别出的棋盘格角点数量正确,无漏检或误检。
graph TD
A["开始标定流程"] --> B{选择模式?}
B -- "Eye-in-Hand" --> C["相机随臂动"]
B -- "Eye-to-Hand" --> D["相机固定不动"]
C --> E["机械臂移动至位置 i"]
D --> F["移动标定板至位置 i"]
E --> G["拍照获取图像 i"]
F --> G
G --> H{"采集满 9 点?"}
H -- "否" --> E
H -- "是" --> I["计算转换矩阵"]
I --> J["生成误差报告"]
J --> K["验证精度"]
K -- "误差超限" --> E
K -- "合格" --> L["保存参数"]
L --> M["结束"]
style A fill:#f9f,stroke:#333,stroke-width:2px
style M fill:#bbf,stroke:#333,stroke-width:2px
3.3 计算变换矩阵
当样本采集完成后,软件内部将运行算法求解齐次变换矩阵。
- 点击 “解算”或
Solve按钮。系统将利用最小二乘法优化求解。 - 观察 残差报告。重点关注重投影误差(Reprojection Error)。
- 判断 结果有效性。平均误差应小于
0.1像素。若误差超过0.5像素,说明部分点位采集质量不佳,需剔除并重采。 - 记录 输出公式。标定本质是求解 $T_{robot}^{camera}$。理想的空间转换逻辑如下:
$$ P_{base} = M \times P_{image} + O $$
其中 $P_{base}$ 为机器人基座标系下的位置,$P_{image}$ 为图像像素坐标,$M$ 为旋转缩放矩阵,$O$ 为偏移量向量。
3.4 参数导出与应用
计算合格后,必须将参数写入控制器才能生效。
- 生成 配置文件。格式通常为
.xml或.json。 - 导入 机器人控制柜。通过网线连接,将文件传输至
R_Ctrl文件夹。 - 调用 功能函数。在 PLC 或示教器中编写 脚本,加载标定文件路径。例如
Load_Cali_Data("C:/Sys/cali_2023.json")。 - 激活 外部轴联动。勾选“视觉修正”选项,允许相机数据覆盖机器人原生示教点。
4. 精度验证与调试
标定完成不代表可以使用,必须经过实物验证。
- 选取 一个已知位置的测试件。其几何中心尺寸需用三坐标测量仪预先测定。
- 运行 自动抓取程序。让机器人根据视觉反馈执行抓取动作。
- 测量 实际偏差。使用游标卡尺测量夹爪中心与实际目标中心的距离。
- 分析 误差来源。若偏差呈现规律性(如 X 轴总是偏大),可能是相机安装倾斜;若偏差随机,可能是震动导致。
- 补偿 误差值。若偏差恒定,可在软件中添加偏移量补偿参数,公式为 $Offset = Target - Actual$。
- 重复 测试。连续运行
50次循环,统计成功率。要求成功率达到99.9%以上方可投入量产。
5. 常见故障排除
在标定过程中遇到特定报错时,请按以下方式处理。
-
报错:无法识别角点。
- 检查 光照条件。增加环形光源亮度,消除阴影。
- 调整 阈值。在图像处理模块中修改 二值化阈值范围。
- 清洁 镜头。用无尘布擦拭相机镜头表面指纹或灰尘。
-
报错:矩阵奇异或无解。
- 检查 点位分布。确认采集的点是否共线。三点必须在非共线上。
- 增加 自由度。尝试改变 Z 轴高度,增加视角变化。
- 重置 机械臂零点。重新回原点后再进行标定操作。
-
运行时报错:目标不可达。
- 检查 工作空间。视觉计算出的坐标可能超出了机械臂最大伸展半径。
- 限制 搜索区域。在软件中设定 ROI 区域,只检测有效范围内的目标。
- 校准 TCP。如果末端工具中心点(TCP)定义不准,会导致计算偏差。需重新标定 TCP。
-
动态跟踪抖动。
- 降低 相机帧率。过高帧率可能导致传输延迟,造成数据不同步。
- 开启 滤波算法。在信号处理环节启用 低通滤波器,平滑坐标跳变。
- 紧固 电缆。检查拖链内的网线是否有拉扯,信号干扰会引起通讯丢包。
6. 安全维护规范
标定数据并非一劳永逸,设备状态变更时必须重新标定。
- 断电重启后。检查机器人零点是否丢失。若更换了伺服电机电池或断电时间过长,需执行 零点复归,随后重新标定手眼关系。
- 更换部件后。若拆换过相机、镜头或机械臂末端夹具,必须立即 重新执行完整标定流程。
- 定期校准。建议每
2000小时生产周期进行一次抽检。若发现抓取精度下降趋势,提前安排停机维护。 - 备份数据。每次标定成功后,复制 一份标定文件至云端或外部硬盘存储。文件名建议包含日期,如
HandEye_Cali_20231027_v2.cfg。 - 禁止 暴力操作。在标定模式下,严禁人工强制推拽机械臂,这会破坏编码器计数,导致标定失效。
7. 高阶技巧:多目协同标定
对于需要覆盖超大范围的场景,可能需要布置两个或多个相机。
- 统一 世界坐标系。所有相机需共享同一个参考基准(通常为地面上的标定板)。
- 拼接 图像区域。在软件中设置相邻相机的重叠区域,通常建议重叠度不低于
20%。 - 融合 数据流。通过中间件(如 ROS 或 EtherCAT)将各相机数据合并为一个虚拟的大视野数据源。
- 计算 全局变换。每个相机分别标定到机器人的矩阵,再通过公共参照物关联彼此坐标。
- 验证 接缝处精度。重点测试跨相机区域的目标抓取,确保没有断档或错位。
通过严格执行上述步骤,可实现视觉系统与机械手的高精度协同作业,显著提升产线自动化水平。

暂无评论,快来抢沙发吧!