上一篇我们拆了感知与控制这一层——机器视觉定位负责把位置的不确定性测出来,力控负责把接触的不确定性吸收掉。那一层解决的是“机器人在执行的时候,怎么应对现实世界的变化”。

这篇往上走一层,讲程序本身是怎么来的、以及它在机器人真正动起来之前能不能被验证对:离线编程(OLP, Offline Programming)与仿真。

这是集成工程里争议最大的一块技术。有人把它吹成“以后再也不用示教了”,也有人被它坑过一次之后再不碰——“仿真里跑得好好的,一到实机全偏了”,这句话每个做过集成的工程师大概都听过。

先给结论:OLP 的真正价值不在“省示教工时”,而在于把三个问题从现场提前到设计阶段——够不够得着、会不会撞、跑得多快。 而离线程序能不能落到实机上,完全取决于标定链路做没做。没有标定的离线编程,产出的不是程序,是一段漂亮的动画。这条判据同时也决定了它什么时候值得上、什么时候不值得。

说明:文中场景均做泛化处理,讲的是通用工程方法,不对应任何具体客户项目。

一、OLP / 仿真到底在解决什么问题

先把它能干和不能干的事分清楚。OLP 解决的核心问题只有四类:

  • 可达性验证(Reachability) —— 这台机器人、装在这个位置、带着这个夹具,能不能够到工件上每一个作业点?在方案阶段回答,代价是几小时建模;在现场回答,代价是设备都装好了、机器人却差 80 毫米够不着。
  • 干涉与碰撞检查(Collision) —— 本体、夹具、线缆、工装、料框、围栏、其他机器人,整条轨迹上会不会撞。多机协同场景里这一项几乎不可替代——共享工作空间里的时序干涉靠现场试是试不出来的,只能靠仿真扫。
  • 节拍预演(Cycle Time) —— 报方案时能给出有依据的节拍数字,而不是拍脑袋。注意仿真节拍是理论下限,实机一定比它慢:用它做可行性判断可以,拿它去签合同里的节拍指标必须留余量。
  • 示教工时与停机损失 —— 最常被提、其实优先级最低。省示教工时本身不值钱,真正值钱的是省“停线时间”:示教如果必须在已量产的线上做,教一天就是停产一天,这个账才是 OLP 最硬的理由。

而 OLP 不能做的也要说清楚:它调不出工艺参数(焊接电流、喷涂流量、打磨压力),解决不了来料不一致,更不会让绝对精度变好。它是“几何与时序”的工具,不是“工艺与感知”的工具。

二、精度链条:仿真跑得好好的,为什么一到实机就偏了

这是所有 OLP 项目的核心难点。先看一条最基础的正运动学链:

T_base_tcp = T_base_flange(θ, DH) · T_flange_tcp

离线程序干的事,本质是在虚拟世界里算出一串目标位姿 T_base_tcp(更常见的是工件坐标系下的 T_wobj_tcp),再交给实机执行。而实机执行时,链上每一个变换都带着自己的误差

误差源大致五类,按工程量级排序:

误差源 典型量级 说明
机器人绝对精度 毫米级 最大的一块,也最容易被误解,下面单独说
工装/工件实际摆放偏差 亚毫米 ~ 毫米级 CAD 里工装在理想位置,现场靠螺栓和定位销,必然有偏差
TCP 标定误差 亚毫米 ~ 毫米级 夹具/焊枪/砂带头的实际 TCP 与 CAD 不一致(装配公差、磕碰变形、焊丝伸出量)
负载下垂与柔性变形 亚毫米 ~ 毫米级 大臂展 + 重负载时尤其明显,仿真的刚体假设不成立
热漂移 亚毫米级 减速机与电机温升导致零位漂移,冷机和热机位姿不同

其中最关键、也最容易被搞混的一条是绝对精度 ≠ 重复精度

  • 重复精度(Repeatability) —— 机器人反复回到同一个示教点的离散程度。这是规格书上写着的那个漂亮数字(工业臂常见 ±0.02 ~ ±0.1 mm 量级)。
  • 绝对精度(Absolute Accuracy) —— 你给它一个笛卡尔坐标 (x, y, z, rx, ry, rz),它实际到达的位置离这个坐标有多远。未经标定的工业机器人,绝对精度通常在毫米级,比重复精度差一到两个数量级。

为什么?因为控制器算逆解用的是名义运动学参数(理想的 DH 参数、连杆长度、零位),而真实机器人的每根连杆长度、每个关节零位、每根轴的垂直度都和名义值有偏差(加工公差、装配公差、减速机间隙)。

示教编程不受这个影响,因为它根本不依赖绝对精度——示教点是“机器人自己走到那儿、把关节角记下来”,回放时关节角一模一样,误差被重复精度吃掉了。而离线编程恰恰反过来:它在笛卡尔空间里给坐标,让机器人“绝对地”到达。

这就是“仿真里好好的、实机就偏了”的根本原因:你把一个吃绝对精度的方法,用在了一台只有重复精度的机器人上。

三、把离线程序落到实机上:三层标定

这个 gap 不是无解的,解法就是标定。工程上要做三层,缺一层就落不稳。

3.1 第一层:机器人运动学参数标定(补绝对精度)

原理是参数辨识:用外部高精度测量设备(多用激光跟踪器)测一批机器人实际到达的位姿,与名义模型算出的位姿对比,反解出运动学参数的偏差量。

# 运动学参数辨识(最小二乘 / LM 迭代)
# p_nominal(q, Φ) : 名义模型正解,Φ = [DH参数, 零位偏置, ...]
# p_measured      : 激光跟踪器实测末端位姿
# J_Φ             : 位姿对参数的雅可比(∂p/∂Φ)

Φ = Φ_nominal
for iter in range(MAX_ITER):
    residual = []
    J = []
    for q in calibration_poses:           # 覆盖整个工作空间的一组位姿
        e = p_measured[q] - p_nominal(q, Φ)
        residual.append(e)
        J.append(jacobian_wrt_params(q, Φ))
    ΔΦ = lstsq(J, residual)               # 解 J·ΔΦ ≈ residual
    Φ  = Φ + ΔΦ
    if norm(ΔΦ) < EPS:
        break

# 标定后:把辨识出的 Φ 写回控制器 / 或在后处理器里做补偿

几个工程要点:

  • 标定位姿必须覆盖实际作业的工作空间。只在一小块区域标定,出了这块区域精度照样崩——参数辨识本质是拟合,外推不可靠。
  • 一定要留独立验证点。拿参与标定的点去验证标定结果是自证,没有意义。
  • 这一层做不做,看工艺容差:容差在毫米量级(粗打磨、大件搬运),可以省;容差在零点几毫米(精密装配、激光切割),不做这层,后面全白搭。

3.2 第二层:TCP / 工具标定

求的是 T_flange_tcp——工具中心点相对法兰的变换。经典做法是多点法:让 TCP 以不同姿态去接触空间中同一个固定尖点,理论上这几次位姿下 TCP 在基座系的位置应该完全重合,据此解出平移部分;姿态部分再用额外的姿态标定(如沿工具轴走一段)解出来。

  • 四点法只标位置,标不出姿态。焊枪、喷枪、砂带头这类有明确工具方向的,姿态标定必须做,否则姿态一变、位置就飘。
  • 看残差,别只看“标完了”。把各次位姿下反算出的 TCP 位置拿出来看离散度,这个残差就是标定的真实水平。残差大,要么尖点没对准,要么姿态取得不够分散。
  • 工具会变。焊枪撞过一次、砂带头换过一次、焊丝伸出量变了,TCP 就变了。TCP 标定不是一次性动作,必须进日常维护流程。这是很多 OLP 项目上线半年后“精度莫名变差”的真实原因。

3.3 第三层:工件 / 工装坐标系标定(最实用的一层)

这一层最容易被低估,但它才是把离线程序真正“用起来”的关键。

做法很简单:在实机上用探针(或 TCP 尖点、或视觉)测工装/工件上的几个基准点(典型是三点法:原点 + X 方向点 + XY 平面内一点),建立工件坐标系 wobj,也就是求出 T_base_wobj然后——关键在这——离线程序里所有点位都用工件坐标系表达,而不是基座坐标系。

收益是结构性的:

T_base_tcp = T_base_wobj · T_wobj_tcp
             ↑ 现场标定得到      ↑ 离线程序生成(CAD 里算的,永远不变)
  • 工装装偏了、维护后重装了? 重标一次 T_base_wobj,离线程序一个点都不用改。
  • 夹具搬到另一台机器人上? 重标 T_base_wobj,程序直接复用。
  • 多工位、多台同型号机器人? 每台各标各的 wobj,共用一套离线程序。

只做一层标定的话,就做这一层。投入最小(不需要激光跟踪器),收益最直接,而且它把“现场安装偏差”这个最大的不可控项,从程序里彻底剥离出去了。

3.4 还有第四条路:用在线感知代替离线精度

如果标定链路对你还是太重,就回到上一篇的思路:别在离线端死磕精度,把最后的偏差交给在线感知吃掉。离线程序只出骨架轨迹(可达、不碰撞、节拍达标);现场用视觉测出工件实际位姿,对整条轨迹做刚体变换补偿;接触工序再叠一层力控吃掉残余的零点几毫米。

这条混合路线在实际项目里比“纯离线 + 高精度标定”更常见也更鲁棒——它不要求工装每次装得一模一样,也不要求绝对精度顶到极限。它把精度需求从“事前的机械保证”转成了“事中的闭环补偿”。

四、判据:什么时候值得上,什么时候纯属浪费

把上面的分析折成一张可以直接拿去做判断的表。

维度 值得上 OLP 不值得,直接示教更快
点位数量 几百到上千点(复杂焊缝、曲面、多层多道) 几十个点,一天示教完
轨迹形态 空间曲面、连续路径、姿态连续变化 点到点搬运、抓放、简单直线
CAD 模型 有准确的工件/工装/夹具模型 没模型或模型对不上实物(建模成本 > 示教成本)
换型频率 多品种、频繁换型,程序要成批生成 单一品种,程序写一次跑三年
示教环境 在产线上示教 = 停线;大件/重件/高危环境示教危险 有独立调试工位,示教不影响生产
多机协同 多台机器人共享工作空间,要验证时序干涉 单机独立工位
方案阶段 投标/立项时需要证明可达性、验证节拍 方案已定型,机器人和布局无争议
标定条件 有标定手段(至少能做 wobj 标定) 没有标定流程、没人会做——这种情况 OLP 一定失败
批量与复用 程序模板可复用到同类工件/多台设备 一次性项目,做完不再用

再压成两条线卡:

  1. 看编程复杂度:点位越多、轨迹越复杂、换型越频繁,OLP 的边际收益越高——它的投入是一次性的(建模 + 标定 + 后处理器配置),收益却随程序数量线性增长。
  2. 看落地能力:团队有没有标定手段和标定流程。这条是 veto 项——没有标定能力就上 OLP,等于花力气买一堆落不了地的动画,比直接示教还慢。

最典型的“不值得上”非常常见:单件小批量、没有准确 CAD、点位就几十个、机器人在独立工位、现场有会示教的工程师。这种活示教两小时就干完了,上 OLP 光建模加标定就得两天。工具没有高低贵贱,用错场景就是纯成本。

反过来最典型的“必须上”:大型钢结构件的多层多道焊,一个工件上百条焊缝、上千个点位,还是多品种。靠人趴在工件上一个点一个点地教,教几天——人受不了,节拍也受不了。

五、我们的做法

  • 不为了“技术先进”上 OLP。选型阶段按上面那张表卡一遍,点位少、工件简单的活直接示教,不必把项目复杂度抬上去。
  • 上 OLP 就必须把标定链路一起交付。至少交付工件坐标系标定的流程、工具和培训,让客户在工装重装或换型后能自己重标。只交程序不交标定能力,等于交了个定时炸弹。
  • 精度要求高的场合走“离线骨架 + 在线补偿”。离线保证几何可行,视觉与力控保证现场精度,对工装一致性和机器人绝对精度的要求都能降下来。
  • 在焊接这种点位密度极高的工艺上,我们更进一步走到了“免示教”。EVS AI 智能焊接系统用 3D 视觉直接扫描工件、自动提取工件模型与焊缝信息,不需要人工编程或示教;配合自学习工艺引擎与内置工艺库支持多层多道、双丝焊接;行走焊算法让机器人在普通地面上连续作业,不依赖精密轨道。它本质上是把“离线编程 + 标定”整套流程用在线三维感知替换掉了——工件放上来什么样就按什么样焊,不再要求它和 CAD 严格对齐。

最后收一句方法论,和上一篇接得上:集成工程里所有技术选型,本质都在回答同一个问题——这份不确定性,你打算在哪一层消化掉?离线编程在设计阶段消化几何不确定性(够不够得着、会不会撞),标定在安装阶段消化机械不确定性(装得准不准),视觉与力控在运行阶段消化来料不确定性(这一件和上一件不一样)。搞清楚不确定性主要长在哪一层,力气就不会用错地方。

这个技术号后面会沿着这条线继续拆:绝对精度标定的实操、后处理器怎么适配不同品牌控制器、多机时序干涉怎么在仿真里扫——都是从真实项目里踩出来的。


我们是 EVST(以物思),做整套自动化交付,深耕自动化七年,覆盖免示教智能焊接、3D 视觉随机抓取、力控装配、打磨喷涂等集成工程方向,累计交付 600 多个自动化项目。这个号会持续输出集成层面的技术内容,都从真实项目里来。想聊具体的离线编程 / 标定 / 视觉集成方案,可以搜索「EVST 以物思」了解。下一篇见。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐