为开源足式与人形机器人选 SEA:串联弹性执行器的力控核心与替换指南
本文首发于 RoboParts 开源机器人兼容性平台。
为什么波士顿动力的 Atlas 能后空翻而不碎?为什么 ANYmal 四足能在冰面上稳健行走?为什么很多人照着开源图纸做出来的双足,一落地就把减速器打坏?
答案之一是 SEA(Series Elastic Actuator,串联弹性执行器)。这种将弹性体串联在电机与输出端之间的设计,让机器人的关节拥有了类似肌肉的柔顺性——也是开源足式/人形项目在"能站"和"能扛住落地冲击"之间的分水岭。
本文面向正在构建开源机器人的工程师:讲清楚 SEA 的原理与刚度设计,更重要的是讲清楚什么时候该上 SEA、什么时候不该,以及换型时哪些参数必须对齐。
一、SEA 的核心原理
传统刚性执行器的力控依赖电流环估算:
$$\tau_{est} = K_t \cdot I_{motor}$$
其中 $K_t$ 为电机转矩常数。这种方式的力控分辨率受限于电流传感器噪声,通常只能达到 ±5-10% 的精度。
SEA 引入弹性体后,力测量转化为位移测量:
$$\tau = K_{spring} \cdot \Delta\theta$$
其中 $K_{spring}$ 为弹性体刚度,$\Delta\theta$ 为弹性体变形角度。
关键优势:
- 分辨率提升:编码器测角度分辨率可达 0.001°,力控分辨率提升 10-100 倍
- 被动柔顺:弹性体天然吸收冲击,无需主动控制
- 能量存储:类似肌腱储能,落地缓冲、蹬地释放
对开源构建者的直接价值:被动柔顺意味着你的控制算法还没调好时,硬件不会先被摔坏。这在迭代频繁的开源项目里,往往比那 10 倍力控分辨率更实用。
二、弹性体设计的关键参数
SEA 的性能主要由弹性体决定:
| 参数 | 典型范围 | 影响 |
|---|---|---|
| 刚度 $K$ | 100-5000 Nm/rad | 刚度越低,力控分辨率越高,但带宽越低 |
| 最大变形 | ±5°-±30° | 决定最大可测力矩 |
| 疲劳寿命 | $10^6$-$10^9$ 周期 | 决定维护周期 |
| 滞后 | < 1% | 影响力控精度 |
刚度选择的原则
$$\omega_{natural} = \sqrt{\frac{K_{spring}}{J_{load}}}$$
- $\omega_{natural}$ > 控制带宽 3 倍:弹性体不限制系统响应
- $\omega_{natural}$ < 冲击频率 1/3:弹性体能有效滤波
对于人形机器人膝关节($J_{load} \approx 0.08$ kg·m²):
- 若选 $K = 1000$ Nm/rad:$\omega_{natural} = \sqrt{1000/0.08} \approx 112$ rad/s ≈ 18Hz
- 步行控制带宽约 5Hz,落地冲击频率约 30-50Hz
- 18Hz 处于中间地带,能部分吸收冲击但不影响步行控制
换型必查项:SEA 的刚度和你的负载惯量是配套设计的。把一款为 0.08 kg·m² 负载设计的 SEA 装到惯量只有 0.01 kg·m² 的轻量化开源平台上,固有频率会飙到 35Hz 以上,抗冲击能力大打折扣;反过来装到更重的腿上则会引入低频振荡。换 SEA 时,刚度必须随负载惯量一起重算,不能只看扭矩。
三、SEA vs 传统刚性执行器
| 维度 | SEA | 刚性执行器 |
|---|---|---|
| 力控分辨率 | ±0.1% | ±5-10% |
| 抗冲击 | 优秀(被动) | 依赖主动控制 |
| 能量效率 | 高(储能释放) | 低(持续耗电制动) |
| 控制带宽 | 受限(10-50Hz) | 高(100-1000Hz) |
| 结构复杂度 | 高 | 低 |
| 成本 | 高 20-50% | 基准 |
适用场景:
- SEA:足式机器人、外骨骼、协作机器人(需要力交互)
- 刚性执行器:工业机械臂、高精度定位(需要高带宽)
放到开源项目上看:
| 你在做什么 | 建议 |
|---|---|
| 复刻天工 TienKung 这类全尺寸双足 | 下肢考虑 SEA 或准直驱,落地冲击是主要风险 |
| 基于 Unitree Go2/G1 二次开发 | 沿用原厂高扭矩密度模组,别自行改 SEA,会破坏原控制栈 |
| 搭 Trossen OpenArm 做抓取 | 刚性执行器足够,上肢不需要为冲击付出带宽代价 |
| LeRobot-Humanoid / roboto_origin 入门 | 成本优先,刚性模组 + 软件层导纳控制更划算 |
四、主流 SEA 产品对比
基于 RoboParts 数据集收录的 SEA 执行器:
| 产品 | 峰值扭矩 | 刚度 | 重量 | 应用场景 |
|---|---|---|---|---|
| ANYbotics ANYdrive | 80Nm | 1200Nm/rad | 1.1kg | 四足、人形 |
| MIT Cheetah Motor | 230Nm | 600Nm/rad | 2.3kg | 高速奔跑 |
| Tmotor AK80-9 | 54Nm | 2000Nm/rad | 0.5kg | 教育、轻量 |
| Unitree A1 Motor | 35Nm | 1500Nm/rad | 0.4kg | 小型四足 |
| Custom SEA (OpenTorque) | 40Nm | 800Nm/rad | 0.6kg | 开源项目 |
趋势:SEA 正在小型化。2024 年以来,多款 < 1kg 的微型 SEA 上市,使人形机器人全身 SEA 化成为可能。
对开源构建者最重要的一行是 OpenTorque:它是完全开源的 SEA 设计,图纸、弹性体参数、驱动固件都公开,可以按自己的负载重新设计刚度。缺点是需要自己加工弹性体和做疲劳验证——这也是社区里 SEA 自制方案最常见的失败点。若不具备加工与测试条件,优先选成品模组。
五、SEA 的控制要点
SEA 的控制比刚性执行器复杂,需要双环甚至三环:
位置模式(外环位置 + 内环力)
位置误差 → 力指令 → 弹性体变形控制 → 电机电流
力模式(直接控制弹性体变形)
力指令 → 期望变形 = F/K → 电机位置控制
阻抗模式(位置和力的混合)
F = K_p · (x_d - x) + K_d · (v_d - v) + F_ff
关键难点:弹性体引入的相位滞后会导致振荡。通常需要在控制器中加入陷波滤波器或自适应补偿。
软件栈提醒:SEA 的三环控制对通信周期敏感。若你的 CAN 总线只能跑到 500Hz,内环力控就会成为瓶颈。构建前先确认:执行器通信协议 → 主控算力 → 控制栈(ROS2 / 自研实时线程)这条链路能否支撑目标频率。这三者的匹配关系可以在开源组件兼容性数据层按项目查到。
六、选型工具
RoboParts 在线选型引擎支持 SEA 专项筛选:
- 访问选型引擎
- 选择品类:执行器
- 勾选:仿生特性 → SEA / 串联弹性
- 输入扭矩、刚度范围
- 按扭矩/重量比排序
若你已经有一份开源项目的 BOM,更快的路径是直接用 BOM 兼容性检查:把执行器型号、主控、通信协议一起提交,系统会校验刚度-惯量匹配、协议一致性、法兰接口等常见冲突点。确定型号后,用供应商寻源比对交期与价格。
数据集收录了全部 SEA 产品的刚度、疲劳寿命、滞后等关键参数,CC BY 4.0 开源:
- GitHub:https://github.com/roboparts/roboparts-dataset
- 在线 API:https://roboparts.cc/api/data.json
RoboParts · 开源机器人构建者资源
- 🔧 免费 BOM 兼容性检查:https://roboparts.cc/bom-checker.html
- 📦 开源组件兼容性数据层:https://roboparts.cc/oss.html
- 🔌 兼容性数据 API(Pro):https://roboparts.cc/data-hub.html
- 🛒 供应商寻源:https://roboparts.cc/suppliers.html
正在构建或维修开源机器人?用 RoboParts 把零件兼容性一次性查清。