文章目录

视觉系统与机械手的坐标标定

发布于 2026-03-29 06:51:05 · 浏览 13 次 · 评论 0 条

视觉系统与机械手的坐标标定

在电气自动化产线中,实现“眼睛”(相机)看到的目标能够被“手”(机械臂)精准抓取,核心在于坐标标定。这一步骤建立了图像像素坐标系与机器人基座标系之间的转换关系。若标定失败,机器人将抓取错误位置或发生碰撞。本指南将详细拆解标定全过程,确保零误差执行。


1. 准备工作与环境搭建

在执行任何软件操作前,必须确保硬件物理状态稳定。任何松动都会导致标定数据无效。

  1. 固定 工业相机与光源。确保相机安装支架无晃动,镜头光圈已锁定,防止标定过程中焦距变化。
  2. 清理 工作区域。移除视野内所有反光物体,避免干扰图像识别算法。
  3. 安装 高精度标定板。通常使用棋盘格标定板,将其平整放置于传送带或工作台面上,确保平面度误差小于 0.05mm
  4. 配置 通讯参数。在 PC 端打开控制软件,输入 机器人的 IP 地址、端口号(通常为 5000),并测试 连接是否通畅。
  5. 设置 相机曝光时间与增益。调整参数直至标定板线条清晰且无过曝,直方图分布均匀。

2. 选择标定方案

根据相机安装位置不同,分为眼在手(Eye-in-Hand)和眼在外(Eye-to-Hand)两种模式。请根据实际布局选择合适的方案。

特性 眼在手 (Eye-in-Hand) 眼在外 (Eye-to-Hand)
相机位置 安装在机械臂末端法兰上 固定在工作台上方或侧面
视野范围 随机械臂移动,视野小但灵活 固定视野大,可一次性覆盖全域
适用场景 小空间精密装配、无序抓取 大范围定位、流水线分拣
标定难度 较低,相机与工具坐标系重合 较高,需额外计算相机到地面的变换
精度影响 受机械臂重复定位精度直接影响 受相机畸变及安装垂直度影响大

3. 执行手眼标定流程

以下流程以最常见的九点法为例。该方法通过采集多个不同姿态下的图像数据,解算出精确的转换矩阵。

3.1 进入标定界面

  1. 启动 视觉处理软件(如 Halcon, OpenCV 封装程序或厂商自带软件)。
  2. 登录 用户权限,确保拥有“系统管理员”级别的操作权限,允许修改内部参数。
  3. 加载 预设的工程文件。检查当前项目是否为新建或备份后的版本,避免覆盖原有数据。
  4. 切换 至标定向导页面。点击左侧菜单栏的 Calibration 选项卡。

3.2 采集样本点

此步骤是核心,需要机械臂带动相机(或标定板相对于相机)移动到至少 9 个不同位置。

  1. 手动示教 第一个点位。使标定板的一个角点位于图像中心附近,记录该坐标 P1
  2. 触发 图像采集指令。按下 F5 键或点击界面上的 Capture 按钮,保存第一张原始图片。
  3. 移动 机械臂至第二个点位。位移距离建议在 50mm200mm 之间,角度旋转不少于 10^\circ,以增加数据差异性。
  4. 重复 上述动作。继续采集第 2 至第 9 个点。确保点位分布覆盖整个视场,不要聚集在图像一角。
  5. 验证 特征识别。在每个点位保存前,确认 软件自动识别出的棋盘格角点数量正确,无漏检或误检。
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 计算变换矩阵

当样本采集完成后,软件内部将运行算法求解齐次变换矩阵。

  1. 点击 “解算”或 Solve 按钮。系统将利用最小二乘法优化求解。
  2. 观察 残差报告。重点关注重投影误差(Reprojection Error)。
  3. 判断 结果有效性。平均误差应小于 0.1 像素。若误差超过 0.5 像素,说明部分点位采集质量不佳,需剔除并重采。
  4. 记录 输出公式。标定本质是求解 $T_{robot}^{camera}$。理想的空间转换逻辑如下:

$$ P_{base} = M \times P_{image} + O $$

其中 $P_{base}$ 为机器人基座标系下的位置,$P_{image}$ 为图像像素坐标,$M$ 为旋转缩放矩阵,$O$ 为偏移量向量。

3.4 参数导出与应用

计算合格后,必须将参数写入控制器才能生效。

  1. 生成 配置文件。格式通常为 .xml.json
  2. 导入 机器人控制柜。通过网线连接,将文件传输至 R_Ctrl 文件夹。
  3. 调用 功能函数。在 PLC 或示教器中编写 脚本,加载标定文件路径。例如 Load_Cali_Data("C:/Sys/cali_2023.json")
  4. 激活 外部轴联动。勾选“视觉修正”选项,允许相机数据覆盖机器人原生示教点。

4. 精度验证与调试

标定完成不代表可以使用,必须经过实物验证。

  1. 选取 一个已知位置的测试件。其几何中心尺寸需用三坐标测量仪预先测定。
  2. 运行 自动抓取程序。让机器人根据视觉反馈执行抓取动作。
  3. 测量 实际偏差。使用游标卡尺测量夹爪中心与实际目标中心的距离。
  4. 分析 误差来源。若偏差呈现规律性(如 X 轴总是偏大),可能是相机安装倾斜;若偏差随机,可能是震动导致。
  5. 补偿 误差值。若偏差恒定,可在软件中添加偏移量补偿参数,公式为 $Offset = Target - Actual$。
  6. 重复 测试。连续运行 50 次循环,统计成功率。要求成功率达到 99.9% 以上方可投入量产。

5. 常见故障排除

在标定过程中遇到特定报错时,请按以下方式处理。

  1. 报错:无法识别角点

    • 检查 光照条件。增加环形光源亮度,消除阴影。
    • 调整 阈值。在图像处理模块中修改 二值化阈值范围。
    • 清洁 镜头。用无尘布擦拭相机镜头表面指纹或灰尘。
  2. 报错:矩阵奇异或无解

    • 检查 点位分布。确认采集的点是否共线。三点必须在非共线上。
    • 增加 自由度。尝试改变 Z 轴高度,增加视角变化。
    • 重置 机械臂零点。重新回原点后再进行标定操作。
  3. 运行时报错:目标不可达

    • 检查 工作空间。视觉计算出的坐标可能超出了机械臂最大伸展半径。
    • 限制 搜索区域。在软件中设定 ROI 区域,只检测有效范围内的目标。
    • 校准 TCP。如果末端工具中心点(TCP)定义不准,会导致计算偏差。需重新标定 TCP。
  4. 动态跟踪抖动

    • 降低 相机帧率。过高帧率可能导致传输延迟,造成数据不同步。
    • 开启 滤波算法。在信号处理环节启用 低通滤波器,平滑坐标跳变。
    • 紧固 电缆。检查拖链内的网线是否有拉扯,信号干扰会引起通讯丢包。

6. 安全维护规范

标定数据并非一劳永逸,设备状态变更时必须重新标定。

  1. 断电重启后。检查机器人零点是否丢失。若更换了伺服电机电池或断电时间过长,需执行 零点复归,随后重新标定手眼关系。
  2. 更换部件后。若拆换过相机、镜头或机械臂末端夹具,必须立即 重新执行完整标定流程。
  3. 定期校准。建议每 2000 小时生产周期进行一次抽检。若发现抓取精度下降趋势,提前安排停机维护。
  4. 备份数据。每次标定成功后,复制 一份标定文件至云端或外部硬盘存储。文件名建议包含日期,如 HandEye_Cali_20231027_v2.cfg
  5. 禁止 暴力操作。在标定模式下,严禁人工强制推拽机械臂,这会破坏编码器计数,导致标定失效。

7. 高阶技巧:多目协同标定

对于需要覆盖超大范围的场景,可能需要布置两个或多个相机。

  1. 统一 世界坐标系。所有相机需共享同一个参考基准(通常为地面上的标定板)。
  2. 拼接 图像区域。在软件中设置相邻相机的重叠区域,通常建议重叠度不低于 20%
  3. 融合 数据流。通过中间件(如 ROS 或 EtherCAT)将各相机数据合并为一个虚拟的大视野数据源。
  4. 计算 全局变换。每个相机分别标定到机器人的矩阵,再通过公共参照物关联彼此坐标。
  5. 验证 接缝处精度。重点测试跨相机区域的目标抓取,确保没有断档或错位。

通过严格执行上述步骤,可实现视觉系统与机械手的高精度协同作业,显著提升产线自动化水平。

评论 (0)

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

扫一扫,手机查看

扫描上方二维码,在手机上查看本文