2. UR机器人上下料动作分解

节拍优化的第一步不是“让机器人跑得更快”,而是把一次上下料循环拆成可测量、可归因的时间片段。UR(Universal Robots)这类协作机器人本身运动速度有限,真正决定节拍上限的,往往是各阶段之间的衔接、等待和外部设备响应。因此本节的核心任务是:建立一套统一的阶段划分口径,并给出每个阶段的时间测量方法,使后续优化有据可依。

一、为什么必须先做动作分解

如果只测“一个循环总耗时”,得到的是一个黑箱数字。当总节拍为 18 s 时,你无法判断是机器人运动慢、夹爪开合慢、还是机床门未及时打开。动作分解的价值在于把总时间拆成若干可独立观测、可独立优化的片段,并明确每一段的“责任方”——是机器人程序、末端执行器、机床、还是安全逻辑。

在 UR 的语境下,动作分解还有一层特殊意义:UR 程序由 MoveJ、MoveL、MoveP 等运动指令和 I/O 指令组成,程序执行时间与运动距离、关节姿态、加速度、负载、路点数量强相关。只有把程序结构与物理动作对应起来,才能定位“时间花在哪里”。

二、阶段划分口径

建议将一次完整上下料循环划分为五个基础阶段,并明确各阶段的起止判据。起止判据必须基于可观测信号,而不是主观感觉。

  • 取料(Pick):从机器人开始向取料位运动,到夹爪闭合、确认抓取成功并抬离取料位为止。起点可定义为“取料运动指令开始执行”,终点为“夹爪闭合到位信号 + 抬升动作完成”。
  • 搬运(Transfer):从取料位抬升结束,到机器人携带工件到达放料位上方准备放料为止。这一段通常包含 MoveJ 或 MoveL 的路径运动,是机器人运动时间的主要来源。
  • 等待(Wait):机器人已到达目标位,但因外部条件未满足而暂停的时间。典型场景包括等待机床门打开、等待卡盘松开、等待上一工件被取走、等待安全门信号。等待时间往往不体现在机器人程序中,而是由 I/O 握手或 Wait 指令产生。
  • 放料(Place):从机器人开始下降进入放料位,到夹爪松开、确认放置完成并退出放料位为止。终点可定义为“夹爪松开到位 + 退出动作完成”。
  • 返回(Return):从放料位退出结束,到机器人回到取料位上方、准备下一次取料为止。返回阶段常被忽视,但它同样占用节拍,且可能包含等待下一次取料条件的隐藏时间。

需要强调的是,等待阶段可能出现在任意两个阶段之间,而不是固定位置。例如取料前等待来料到位、搬运中等待安全门、放料后等待机床关门。因此在实际测量中,应把“等待”作为可插入的独立片段,而不是硬性排在第三位。

UR上下料循环阶段时间构成与测量点 t 取料 Pick 接近→夹紧→抬升 t₁ 搬运 Transfer MoveJ / MoveL 路径 t₂ 等待 Wait 门/卡盘/安全信号 t₃(可插入) 放料 Place 下降→松开→退出 t₄ 返回 Return 回取料位上方 t₅ T0 T1 T2 T3 T4 T5 总节拍 T = t₁ + t₂ + t₃ + t₄ + t₅ + t_其他(I/O握手、程序分支、安全延时) 测量方法A:程序时间戳 在UR程序中插入计时变量 记录各阶段起止时刻 精度高,但需修改程序 测量方法B:外部信号采集 PLC/示波器抓取I/O电平 夹爪、门、卡盘信号 不侵入程序,反映真实时序 测量方法C:视频逐帧分析 高速摄像或手机慢动作 逐帧标注阶段切换点 适合验证与教学演示

三、各阶段时间构成详解

取料阶段的时间由三部分组成:机器人从当前位置运动到取料位上方的时间、下降接近工件的时间、夹爪闭合与确认的时间。其中夹爪闭合时间取决于夹爪类型和气路,通常为 0.2~0.8 s;若使用真空吸盘,还需计入真空建立时间。UR 程序中,夹爪动作通常通过 Set DO 指令触发,随后用 Wait DI 等待到位信号。若省略 Wait,程序会立即执行下一条运动指令,导致工件未夹紧就抬升,这是常见的节拍“虚快”陷阱。

搬运阶段是机器人运动时间的主体。UR 的 MoveJ 适合大范围关节运动,速度快但路径不可控;MoveL 适合直线路径,速度较慢但轨迹精确。搬运时间与以下参数直接相关:路径点数量、TCP 速度与加速度设置、负载质量、关节姿态是否接近奇异点。一个实用经验是:在 UR 示教器上查看“程序运行时间”与“实际循环时间”的差值,若差值较大,说明等待或 I/O 握手占用了额外时间。

等待阶段是最容易被低估的部分。它可能来自:机床门开启时间(气动门通常 0.5~1.5 s)、卡盘松开/夹紧时间、上一工序完成信号、安全光幕触发后的复位延时。等待时间的特点是“机器人不动,但节拍在走”。测量等待时间最直接的方法是在 UR 程序中用 Wait 指令前后的时间戳做差,或用外部采集设备记录机器人“程序运行中”信号与“运动中”信号的差异。

放料阶段与取料阶段对称,但有一个关键差异:放料时机器人需要先确认工件已放入夹具或定位销,再松开夹爪。若夹具存在干涉,机器人可能需要微调姿态,这会额外增加时间。放料阶段的测量终点应定义为“夹爪松开到位且机器人开始退出”,而不是“夹爪松开指令发出”。

返回阶段常被合并到下一个取料阶段中统计,但建议单独测量。返回路径可能与搬运路径不同,且返回终点通常是“取料位上方安全高度”,而非取料位本身。若返回后还需要等待来料到位,这段等待应单独归入等待阶段,避免与运动时间混淆。

四、测量方法与操作要点

推荐采用“程序时间戳 + 外部信号采集”的组合方式。具体操作如下:

  1. 在 UR 程序中定义五个全局计时变量,例如 t_pick、t_transfer、t_wait、t_place、t_return,初始值为 0。
  2. 在每个阶段的起点和终点插入赋值语句,用 get_actual_tcp_pose() 或系统时间函数记录时刻。UR 的 Polyscope 支持通过“赋值”指令读取系统时间,也可用脚本指令 time = get_system_time()。
  3. 将各阶段耗时写入寄存器或通过 Modbus/TCP 发送到外部 PLC,便于长期统计。
  4. 同时用 PLC 或数据采集卡记录夹爪、机床门、卡盘等关键 I/O 的电平变化,与机器人时间戳对齐。
  5. 连续采集至少 20 个循环,剔除异常值后取平均值和标准差。标准差过大说明系统存在不稳定因素,如来料位置偏差、气路压力波动。
测量时建议保持机器人程序、气路压力、工件重量、环境温度一致。若更换夹爪或调整路径,应重新采集基线数据,否则优化前后对比没有意义。

五、一个教学示例

假设某 UR5 上下料单元,工件为 0.8 kg 圆柱件,夹爪为两指气动夹爪,机床为气动门。一次循环的示例测量数据如下(属于合理假设的教学示例,非实测):

阶段时间(s)主要构成
取料2.4运动 1.5 s + 夹爪闭合 0.6 s + 确认 0.3 s
搬运3.8MoveJ 路径,含 3 个路点
等待1.2等待机床门打开到位
放料2.6下降 1.0 s + 松开 0.5 s + 退出 1.1 s
返回2.0回安全高度并等待来料
其他0.5I/O 握手与程序分支
合计12.5—

从该示例可以看出,搬运和放料合计占 6.4 s,超过总节拍的一半;等待 1.2 s 虽然不长,但属于纯浪费。优化方向应优先考虑:减少搬运路点、提高 MoveJ 加速度、将机床门开启信号提前触发、优化放料路径避免微调。这些判断都依赖于阶段分解后的数据,而不是凭感觉调整。

不要为了缩短节拍而删除夹爪确认信号或安全等待。节拍优化的前提是动作可靠、工件不脱落、设备不碰撞。任何以牺牲可靠性换来的时间缩短,都会在后续以停机、废品或安全事故的形式加倍偿还。

完成动作分解与测量后,你就拥有了一张“时间地图”。下一阶段的优化工作,就是在这张地图上寻找可压缩的片段,并评估每个片段的压缩代价与风险。