1. RSI 实时控制全景

KUKA.RobotSensorInterface(简称 RSI)是 KUKA 机器人控制器上的一套实时传感器接口软件。它并不直接控制电机,也不替代 KRL 程序,而是在机器人控制器的实时运动层与外部传感器/上位系统之间,建立一条周期性的数据交换通道。理解 RSI 的关键,是先把它放回 KUKA 控制系统的整体架构中:KRL 程序负责任务逻辑与运动指令,RSI 负责在每个控制周期内对运动进行实时修正,EthernetKRL 则负责非实时的大数据量通信。三者分工明确,共同构成从"任务规划"到"实时修正"的完整链路。

RSI 在 KUKA 控制架构中的定位

KUKA 控制器内部大致可分为三层:任务层(KRL 解释器、运动规划)、实时层(插补、伺服控制、RSI 实时任务)、通信层(EthernetKRL、现场总线、RSI 以太网接口)。RSI 运行在实时层,其核心是一个固定周期的实时任务,典型周期为 4 ms、8 ms 或 12 ms,具体取决于控制器型号与配置。每个周期内,RSI 完成三件事:从外部系统接收传感器数据、按用户定义的对象逻辑计算修正量、将修正量叠加到机器人运动上。

这里必须明确一个参照约定:RSI 的修正量通常以机器人当前运动坐标系为基准,方向定义与 KUKA 标准坐标系一致——X 向前、Y 向左、Z 向上,旋转方向按右手定则。若用户切换参照系(如工具坐标系、基坐标系),必须在配置中显式声明,并在整个工程中保持一致,否则会出现修正方向相反或轴映射错误。

实时运动控制链路

RSI 的实时链路可以概括为"传感器 → 外部系统 → RSI 以太网 → RSI 对象 → 运动修正 → 机器人"。外部系统(如视觉相机、力传感器、PLC 或上位工控机)以 UDP 或 TCP 方式发送数据帧,RSI 的以太网接口在每个周期内读取并解析这些数据,然后交给用户配置的 RSI 对象链处理。常见的 RSI 对象包括:RSIObject 用于数据映射,AxisCorr 用于单轴修正,CartCorr 用于笛卡尔空间修正,Ethernet 用于通信配置,Monitor 用于状态监控。对象链的输出最终写入运动修正接口,由控制器在下一个插补周期生效。

这条链路的实时性由两个因素决定:一是 RSI 任务的周期稳定性,二是外部数据到达的时序。如果外部数据在周期边界之后才到达,该周期将使用上一帧数据或默认值,导致修正滞后。因此,工程上通常要求外部系统的发送周期与 RSI 周期匹配,或至少保证数据在周期开始前已就绪。

RSI 实时运动控制链路与系统协同 任务层 KRL 程序 / 运动规划 任务逻辑、轨迹规划 实时层(RSI 运行域) 插补 / 伺服控制 / RSI 实时任务 周期 4ms / 8ms / 12ms 通信层 EthernetKRL / 现场总线 非实时大数据量通信 RSI 对象链(用户配置) Ethernet 数据收发配置 RSIObject 数据映射/解析 CartCorr 笛卡尔修正 Monitor 状态监控 外部传感器/上位系统 视觉 / 力传感器 / PLC UDP / TCP 数据帧 机器人本体 伺服驱动 / 关节运动 实时修正生效 传感器数据 修正量 RSI 在实时层以固定周期运行,外部数据经以太网进入对象链,修正量叠加到运动规划输出

EthernetKRL 与 RSI 的协同关系

很多初学者会混淆 EthernetKRL 和 RSI 的以太网接口。两者的定位完全不同:EthernetKRL 是 KRL 层面的通信工具,用于在 KRL 程序中收发 XML 或二进制数据,适合传输工件坐标、配方参数、状态信息等非实时数据;RSI 的以太网接口是实时层面的数据通道,用于在每个控制周期内交换传感器修正量。两者可以同时使用,但职责必须分清。

一个典型的协同场景是:EthernetKRL 在任务开始前从视觉系统接收工件位姿,写入 KRL 变量并规划接近轨迹;当机器人进入接触阶段后,RSI 接管实时修正,以 4 ms 周期接收力传感器数据并执行柔顺控制。此时 EthernetKRL 负责"任务级数据",RSI 负责"实时级数据",二者通过 KRL 程序中的切换逻辑衔接。工程上要避免用 EthernetKRL 传输实时修正量,因为它的通信周期和抖动无法满足实时性要求。

典型应用场景与工程边界

RSI 的典型应用包括:视觉引导抓取(相机实时修正抓取位姿)、力控装配(力传感器反馈实现轴孔柔顺插入)、焊缝跟踪(激光传感器实时修正焊接路径)、传送带跟踪(编码器数据同步运动)。这些场景的共同点是:外部信号变化快,需要机器人运动在毫秒级内响应。

但 RSI 也有明确的工程边界。第一,周期下限:RSI 最小周期受控制器实时任务调度限制,通常不低于 4 ms,不能用于微秒级高频控制。第二,修正幅度:RSI 修正量是叠加在规划轨迹上的增量,过大的修正会导致运动超调或触发安全监控,一般建议单周期修正量不超过关节速度限制的 10%~20%。第三,安全边界:RSI 不替代安全控制系统,急停、安全门、限位等仍由安全 PLC 或控制器安全功能处理。第四,数据确定性:外部系统必须保证数据帧的周期性和完整性,丢帧或乱序会导致修正异常,工程上通常需要超时监控和默认值回退机制。

RSI 的调试建议从"静态验证"开始:先不接传感器,用固定值模拟修正量,观察机器人是否按预期方向运动;确认方向、坐标系和幅度正确后,再接入真实传感器并逐步提高修正增益。这样可以把坐标系错误、符号错误和通信问题分离开来排查。

工程配置的关键参数示例

以下是一个 RSI 配置片段的示例结构,用于说明对象链的组织方式。参数为教学示例,实际值需根据控制器型号和任务需求调整:

<RSI>
  <Ethernet>
    <IP>192.168.1.100</IP>
    <Port>49152</Port>
    <Timeout>20</Timeout>   <!-- 单位:ms,超时后使用默认值 -->
  </Ethernet>
  <RSIObject>
    <Source>Ethernet</Source>
    <Map>ForceX,ForceY,ForceZ</Map>
  </RSIObject>
  <CartCorr>
    <X>ForceX * 0.05</X>   <!-- 示例增益:0.05 mm/N -->
    <Y>ForceY * 0.05</Y>
    <Z>ForceZ * 0.05</Z>
  </CartCorr>
  <Monitor>
    <Cycle>4</Cycle>        <!-- 单位:ms -->
  </Monitor>
</RSI>

这段配置的含义是:RSI 每 4 ms 从 192.168.1.100 的 49152 端口读取力数据,将三个方向的力值乘以 0.05 的增益后作为笛卡尔修正量叠加到运动上。若 20 ms 内未收到新数据,则使用默认值(通常为零修正)。实际工程中,增益需要根据力传感器量程、机器人刚度和期望柔顺度进行整定,过大会引起振荡,过小则响应不足。

总结来说,RSI 是 KUKA 机器人实现实时传感器闭环控制的核心工具,它位于实时层,与任务层的 KRL 和通信层的 EthernetKRL 形成明确分工。掌握 RSI 的关键在于:理解实时链路的周期性和数据流方向,分清 RSI 与 EthernetKRL 的职责边界,并在工程中严格遵守周期、幅度和安全约束。只有把这三者放在同一个系统视角下,才能设计出稳定可靠的实时运动控制方案。