# 智元灵犀 X1 / 远征 A2 在非实时内核下 EtherCAT 1kHz 周期抖动触发关节过流保护

> 原文链接：https://robotics.hellobike.com/pitfalls/agibot-x1-ethercat-dc-sync-jitter
> 频道：pitfalls | 更新日期：2026-10-21 | 标签：智元, 灵犀X1, EtherCAT, Preempt-RT, 实时控制, 关节驱动
> 核心摘要：Linux 通用内核调度延迟超过 1.5ms 会导致 IgH EtherCAT 主站 DC 分布式时钟失步，引发准直驱关节力矩脉动与报错锁死。

# 智元灵犀 X1 / 远征 A2 在非实时内核下 EtherCAT 1kHz 周期抖动触发关节过流保护

## 硬件与软件环境
- **机型**：智元 灵犀 X1（全栈开源双足人形机器人）
- **软件栈**：Ubuntu 22.04 + AimRT 通信框架 + `agibot_x1_infer` + IgH EtherCAT Master

## 故障现象与报错
在启动全身强化学习推理与硬件控制节点后，机器人站立数分钟内偶发出现腿部关节咔哒冲击声，随后从站驱动器亮红灯报过流或同步错误（`AL Status 0x001A: Synchronization error`），机器人进入软急停保护。

## 根因分析
全身 20+ 个高功率密度准直驱关节模组通过 EtherCAT 总线以 1kHz（1ms 周期）同步收发 PDO 过程数据。若上位机未打 `PREEMPT_RT` 补丁或未隔离 CPU 核心，当后台触发日志刷盘、Wi-Fi 扫描或 GPU 内存拷贝时，主站发送线程会出现 `＞ 800 μs` 的周期抖动（Jitter），导致从站插补器速度突变产生瞬时尖峰电流。

## 解决步骤
1. **隔离专用实时 CPU 核心（`isolcpus`）**：
   假设机载 CPU 为 8 核，将第 6、7 核专门隔离给 EtherCAT 收发线程与 RL 运控环。修改 `/etc/default/grub`：
   ```text
   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=6,7 nohz_full=6,7 rcu_nocbs=6,7 irqaffinity=0-5"
   ```
   执行 `sudo update-grub` 并重启。
2. **使用 `chrt` 与 `taskset` 绑定最高 FIFO 实时优先级**：
   在 AimRT 启动脚本中将硬件通信线程绑定至隔离核并设为 `SCHED_FIFO` 优先级 90：
   ```bash
   sudo chrt -f 90 taskset -c 6,7 ./build/x1_control_node
   ```
3. **验证 `cyclictest` 最大延迟**：运行 `sudo cyclictest -m -sp90 -i200 -d60s`，确保满载下 Max Latency 稳定在 **50 μs** 以内再上电使能下肢关节。

## 原始参考来源 (Sources)

- [GitHub AgibotTech/agibot_x1_infer](https://github.com/AgibotTech/agibot_x1_infer)