人形机器人能稳稳走路,靠的是整条控制链路的实时性:编码器读数上来、控制器算出力矩、指令再发回关节,这一圈必须在毫秒级内稳定转起来。任何环节延迟超标或抖动过大,步态就会从稳健变成抽搐。这篇把这笔延迟账算清楚:总线周期、控制环频率、抖动的影响,以及工程上怎么测、怎么压。

一、先算总账:延迟预算长什么样

典型的人形机器人关节控制链路包括:编码器采样、总线传输上行、主控解算(状态估计+步态规划+关节控制)、总线传输下行、驱动器执行。工程第一步是给每个环节分配延迟预算,而不是联调时才发现"怎么慢了"。

公开资料中,EtherCAT 通信周期一般在百微秒到毫秒量级,伺服驱动常用周期多为 1ms 甚至更短;传统 CAN 在 1Mbps 波特率下一帧报文传输在百微秒量级,但总线仲裁和负载带来不确定性。人形机器人全身控制环一般在数百 Hz 到 1kHz 量级。记住:控制环周期越短,对延迟抖动的容忍度越低。

预算分配原则是"难压缩的先锁定":编码器采样和驱动器执行是硬件决定的;能优化的主要是总线传输和主控解算,先拿实测数据,再倒推留多少余量。

二、延迟抖动:比平均延迟更要命

只看平均延迟是个坑。平均 1ms、抖动 ±0.8ms 的链路,比平均 1.5ms、抖动 ±0.1ms 的链路更难控制。因为步态控制算法假设"每个周期准时拿到状态、准时发出指令",抖动打破了这个假设:这次状态是 0.5ms 前的,下次是 1.8ms 前的,控制器看到的就是一个"时间扭曲"的世界。

抖动的主要来源有三处:总线侧,CAN 的仲裁机制在高负载下让低优先级报文等待时间不确定,这是 CAN 做多关节实时控制的先天短板,也是很多方案转向 EtherCAT 的原因;主控侧,操作系统调度延迟是常见元凶,普通 Linux 内核的调度抖动在毫秒量级,必须用实时补丁或实时系统,把关键控制线程绑核并设最高优先级;应用侧,状态估计和规划算法的耗时波动也会直接转化为抖动。

三、抖动对步态的影响

控制理论里,延迟会吃掉系统的相位裕度。直观理解:机器人迈步时落脚点是根据上一时刻身体状态算的,状态反馈晚到,落脚点就是按过期信息算的,误差积累下来就是步态不稳。抖动更糟,因为它让延迟变成随机变量,控制器没法做确定性补偿。

工程体感上,抖动超标的表现分层级:轻度步态发飘、轨迹轻微蛇形;中度抗扰能力下降,轻轻一推就晃;重度关节高频抖振,电机异响发热,长期跑损伤减速器。联调时听到关节"嗡嗡"异响,先查延迟抖动再调控制参数。

四、工程上怎么测

测延迟要分段打点,不能只测端到端。在主控侧记录四个时间戳:收到编码器帧、解算开始、解算结束、发出下行指令。用硬件时间戳尽量靠近物理层,软件打点至少区分"总线耗时"和"解算耗时"。

关键指标看三个:平均值、最大值(或 P99.9)、抖动(最大减最小或标准差),测试必须带负载跑。

五、工程上怎么压

总线侧:CAN 控制报文优先级、降低总线负载率、缩短报文长度;条件允许上 EtherCAT,用分布式时钟做从站间同步,这是人形机器人关节通信的主流选择,拓扑尽量用线型菊花链。

主控侧:实时内核或实时操作系统是底线;控制线程绑核隔离,关掉 CPU 变频和节能策略;解算算法做耗时上限保护,单次迭代超时就用上次结果或降级策略,绝不能拖住整个周期。架构侧:把高频小闭环下沉到驱动器(电流环、速度环本地跑),主控只跑位置/力矩环和全身协调,链路层级越少,延迟账越好算。

最后记住:实时性是测出来的,不是设计出来的。延迟预算表应该是实验室墙上的一张纸,每个数字都有实测依据,联调时对着它一条一条销账。