3. KUKA机器人编程环境与通信接口

KUKA机器人在视觉引导与柔性生产场景中,真正决定系统能否落地的,往往不是机械臂本体的重复定位精度,而是编程环境与通信接口能否把“视觉结果”稳定、低延迟地送进机器人运动控制链路。本节围绕 KRL 编程、WorkVisual 配置、EthernetKRL 以及 RSI 四条主线展开,说明它们各自解决什么问题、如何协同,以及视觉数据从相机到机器人关节的完整路径。

KRL:机器人侧的编程语言与数据落点

KRL(KUKA Robot Language)是 KUKA 机器人控制器上的结构化文本语言,程序以 .src 为后缀,配合 .dat 文件存放全局变量与点位数据。视觉引导任务中,KRL 承担的是“最终执行者”角色:它接收外部系统给出的目标位姿,完成坐标变换、运动规划与抓取动作。

一个典型的视觉引导抓取程序结构如下:

DEF vision_pick( )
  DECL E6POS target_pos
  DECL REAL x_off, y_off, rz_off
  ; 从外部接口读取视觉偏移量
  x_off = VISION_X
  y_off = VISION_Y
  rz_off = VISION_RZ
  ; 在基准点位上叠加视觉偏移
  target_pos = BASE_PICK
  target_pos.X = target_pos.X + x_off
  target_pos.Y = target_pos.Y + y_off
  target_pos.A = target_pos.A + rz_off
  ; 先到接近点,再到抓取点
  LIN target_pos_approach
  LIN target_pos
  ; 夹爪闭合
  $OUT[1] = TRUE
  WAIT SEC 0.3
  LIN target_pos_approach
END

这里的关键点在于:视觉系统通常只给出 X、Y、Rz 三个自由度的偏移量(平面抓取场景),而 KRL 程序负责把偏移量叠加到示教好的基准点位上。基准点位由人工示教获得,视觉偏移由相机实时计算,两者相加得到最终目标位姿。这种“示教基准 + 视觉偏移”的模式,是视觉引导中最常见、也最容易调试的实现方式。

需要特别注意的是坐标系约定。KRL 中的 BASE 坐标系定义了工件坐标系,TOOL 坐标系定义了工具末端坐标系。视觉系统输出的偏移量必须明确是在哪个坐标系下表达的。如果相机标定输出的是机器人基坐标系下的偏移,而程序直接叠加到 BASE 坐标系下的点位上,就会产生方向错误。因此,在程序注释和变量命名中应明确标注坐标系来源,例如 VISION_X_BASE 表示基坐标系下的 X 偏移。

WorkVisual:工程配置与总线集成

WorkVisual 是 KUKA 的工程配置工具,用于离线编辑机器人项目、配置总线通信、管理 I/O 映射和下载项目到控制器。在视觉引导系统中,WorkVisual 主要完成三件事:

  • 总线配置:添加 EtherCAT、PROFINET 或 EthernetKRL 等通信驱动,设置从站设备与地址。
  • I/O 映射:把总线上的输入输出信号映射到机器人控制器的 $IN / $OUT 端口,供 KRL 程序直接读写。
  • 项目下载与激活:将配置编译后下载到控制器,重启后生效。

一个常见的配置流程是:在 WorkVisual 中打开当前控制器项目,在“总线”节点下添加 EthernetKRL 驱动,配置 XML 接口文件路径,然后在“I/O 映射”中把视觉系统发送的偏移量信号关联到 KRL 变量。配置完成后编译项目,通过“下载到控制器”将项目传输到机器人,最后在示教器上执行“激活项目”并重启控制器。

WorkVisual 中的配置修改不会立即生效,必须经过“编译 → 下载 → 激活 → 重启”四步。很多现场调试问题都源于只下载未激活,或激活后未重启。

EthernetKRL:基于 XML 的以太网通信

EthernetKRL 是 KUKA 提供的以太网通信软件包,它允许机器人通过 TCP/IP 与外部系统(视觉相机、上位机、PLC)交换数据。其核心机制是:在机器人端运行一个 XML 配置文件,定义通信端口、数据格式和触发条件;外部系统按照约定格式发送字符串,EthernetKRL 解析后写入 KRL 变量。

一个简化的 XML 配置示例:

<ETHERNETKRL>
  <CONFIGURATION>
    <EXTERNAL>
      <IP>192.168.1.100</IP>
      <PORT>59152</PORT>
    </EXTERNAL>
  </CONFIGURATION>
  <RECEIVE>
    <ELEMENT TAG="Vision.X" TYPE="REAL"/>
    <ELEMENT TAG="Vision.Y" TYPE="REAL"/>
    <ELEMENT TAG="Vision.Rz" TYPE="REAL"/>
  </RECEIVE>
</ETHERNETKRL>

视觉系统发送的报文可以是 XML 格式,例如 <Vision><X>12.5</X><Y>-3.2</Y><Rz>1.8</Rz></Vision>,EthernetKRL 解析后,KRL 程序中即可通过 Vision.X 等变量读取数值。这种方式的优点是配置灵活、可读性好,适合视觉系统与机器人之间传递结构化数据。

实际使用中需要注意:EthernetKRL 的接收是异步的,KRL 程序需要配合 WAIT FOR 语句等待数据到达,或使用触发信号通知机器人“新数据已就绪”。如果视觉系统发送频率高于机器人处理频率,还需要在机器人侧做数据缓存或握手确认,避免旧数据被覆盖或重复使用。

RSI:实时信号接口与高速闭环

RSI(Robot Sensor Interface)是 KUKA 的实时信号接口,周期通常为 4ms 或 12ms,用于机器人运动过程中的高速闭环控制。与 EthernetKRL 的“请求—响应”式通信不同,RSI 建立的是一个周期性数据流:每个控制周期,外部系统发送一个修正量(位置偏移、速度修正或力矩修正),机器人控制器在当前运动轨迹上叠加该修正量,并返回当前状态。

RSI 在视觉引导中的典型应用是“视觉伺服”:相机以较高频率(如 30fps)检测目标位置,通过 RSI 把偏差实时发送给机器人,机器人边运动边修正轨迹,实现动态跟踪。这种方式适合传送带跟踪、移动抓取等场景。

RSI 的配置比 EthernetKRL 复杂得多,需要在 WorkVisual 中加载 RSI 软件包,配置 RSI_Ethernet 对象,定义发送和接收的 XML 结构,并在 KRL 程序中调用 RSI_ON 和 RSI_OFF 激活/关闭实时通道。由于 RSI 直接干预运动控制,任何数据异常都可能导致机器人急停或轨迹抖动,因此必须设置超时监控和信号有效性检查。

四条路径的协同关系

把上述四者放在一起看,视觉数据从相机到机器人关节的完整路径可以概括为:相机计算目标位姿 → 通过以太网发送 → EthernetKRL 或 RSI 接收 → 写入 KRL 变量或实时修正量 → KRL 程序叠加到基准点位 → 运动规划执行。WorkVisual 则负责配置这条路径上的总线、端口和 I/O 映射。

视觉数据到机器人运动的通信路径 视觉相机 目标检测 / 位姿计算 以太网 TCP/IP XML / 字符串报文 EthernetKRL 异步 / 请求-响应 RSI 实时 / 4ms 周期 KRL 程序 基准点位 + 偏移 运动规划 机器人关节 执行抓取 / 跟踪 WorkVisual 工程配置 总线驱动 · I/O 映射 · 项目下载与激活 关键约定: 1. 视觉偏移量必须明确坐标系来源(基坐标系 / BASE / TOOL),全文与程序注释保持一致。 2. EthernetKRL 适合非实时结构化数据;RSI 适合高速闭环修正,两者不可混用同一通道。

从工程实践角度看,选择 EthernetKRL 还是 RSI,取决于任务对实时性的要求。如果机器人是“停—看—抓”的节拍式作业,EthernetKRL 完全够用,配置简单、调试直观;如果机器人需要在运动过程中持续跟踪目标,则必须使用 RSI,但相应地要承担更高的配置复杂度和调试成本。WorkVisual 在这两种方案中都扮演配置入口的角色,而 KRL 程序始终是最终执行视觉指令的落点。

RSI 通道一旦激活,机器人将进入实时修正模式。如果外部系统停止发送数据而未正确关闭 RSI,机器人可能因超时保护而急停。建议在 KRL 程序中加入 RSI_OFF 的异常处理分支,并设置合理的超时阈值。

理解这四者的分工与协同,是后续进行视觉标定、手眼协调和柔性产线集成的必要基础。实际项目中,建议先用 EthernetKRL 打通“相机发数据—机器人收数据—程序读变量”的最小链路,确认坐标系和数值方向正确后,再根据节拍需求决定是否升级到 RSI 实时通道。