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 变量。配置完成后编译项目,通过“下载到控制器”将项目传输到机器人,最后在示教器上执行“激活项目”并重启控制器。
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 映射。
从工程实践角度看,选择 EthernetKRL 还是 RSI,取决于任务对实时性的要求。如果机器人是“停—看—抓”的节拍式作业,EthernetKRL 完全够用,配置简单、调试直观;如果机器人需要在运动过程中持续跟踪目标,则必须使用 RSI,但相应地要承担更高的配置复杂度和调试成本。WorkVisual 在这两种方案中都扮演配置入口的角色,而 KRL 程序始终是最终执行视觉指令的落点。
RSI_OFF 的异常处理分支,并设置合理的超时阈值。理解这四者的分工与协同,是后续进行视觉标定、手眼协调和柔性产线集成的必要基础。实际项目中,建议先用 EthernetKRL 打通“相机发数据—机器人收数据—程序读变量”的最小链路,确认坐标系和数值方向正确后,再根据节拍需求决定是否升级到 RSI 实时通道。