外骨骼机电架构:生物力学与关节模组
工业机械臂的围栏里不许站人,而外骨骼的"工作空间"就是人的身体。同样一台六关节机器,装在桌面上和绑在人腿上,设计逻辑完全相反:机械臂追求轨迹精度和循环时间,外骨骼的第一设计准则不是性能,是别伤害人。这条准则会一路向下渗透到每一个选型决策——减速比、编码器数量、传感器的摆放位置、安全电路的拓扑。
反面教材并不少见:早期一些"位置跟踪式"康复外骨骼把患者的腿当负载,按录制轨迹硬拽,结果肌张力高的患者全程和机器对抗,不但没训练到位,还落下关节挫伤。教训就一句话——把人当负载的设计,一定会被人反噬。这篇的每一个工程决策,都可以看作对这句话的回应。
这篇沿着"人在回路里"这条主线,把外骨骼机电架构拆成四层:生物力学输入 → 关节模组 → 传感网络 → 安全防线。每一层的设计动机,都能追溯回"它贴着人的身体工作"这个事实。
一、人在回路里:外骨骼与机械臂的根本区别
传统机器人的控制框图里,人是环境的一部分,被围栏隔在外面。外骨骼把人放进了控制回路:人的神经系统是上层控制器,肌肉是执行器,外骨骼是串并联在其中的机械腿。人发一个"抬腿"的意图,外骨骼要么跟随、要么助力、要么对抗——三者都发生在毫秒级的人机交互中。
这个区别带来四个机械臂不存在的约束:
- **交互力必须可控。**机械臂末端撞上东西叫碰撞检测,外骨骼与人体的每一次接触都是常态工况。人机接口处的压力要长时间保持在舒适区(一般
< 30 kPa,超过会压伤软组织并阻断血流)。 - **机器不能与人较劲。**人的意图随时改变,外骨骼的机械阻抗必须足够低,让人"推得动"它。这条引出了后文的核心指标:反向可驱动性。
- **失效模式直通人身。**机械臂急停损失的是节拍,外骨骼急停失误损失的是用户的膝关节。安全设计从"功能"升级为"架构"。
- **重量预算由人支付。**机械臂自重 200 kg 无所谓,底座扛着;外骨骼每多 100 g,都是用户的髋关节在爬山时多扛 100 g。功率密度和重量,在这台机器上不是成本指标,是性能指标——自重越大,助力中"自耗"的比例越高,最坏情况是机器只够搬自己。
带着这四条往下走。
二、步态周期:需求文档写在人体上
外骨骼的"负载谱"不在任何电机手册里,在步态分析实验室里。一个步态周期(水平行走约 1.0–1.2 s)分为两个相位:
- 站立相(约 60%):足底触地、承重、支撑中期、蹬离推进。关节输出大力矩支撑体重。
- 摆动相(约 40%):足离地、小腿前摆、伸膝准备下一次触地。主要克服肢体惯性,力矩小但速度高。
细分的八个步态分期与关节动作对应关系(矢状面):
| 步态分期 | 占周期 | 相位 | 膝关节动作 | 主导约束 |
|---|---|---|---|---|
| 首次触地—承重反应 | 0–15% |
站立相 | 屈曲吸能(15–20°) |
冲击力矩峰值 |
| 支撑中期 | 15–45% |
站立相 | 伸展锁紧 | 体重全负荷 |
| 蹬离推进 | 45–60% |
站立相 | 屈曲起步 | 踝跖屈主发力 |
| 摆动前期—初期 | 60–75% |
摆动相 | 快速屈曲到 60–70° |
转速需求 |
| 摆动中期—末期 | 75–100% |
摆动相 | 减速伸展 | 制动控制 |
这张表对电气工程师的价值在于最后一列:站立相的挑战是力矩,摆动相的挑战是转速和制动——同一关节在一个周期里先后考核驱动器的两个极限。这就是为什么外骨骼关节模组不能只看额定力矩选型,必须对着"力矩-转速"全包络校核。
矢状面内三关节的峰值力矩(按体重归一化,Winter 经典数据)大致是:踝跖屈 ~1.3–1.5 Nm/kg、膝伸展 ~0.5–1.0 Nm/kg、髋伸展 ~0.6–0.8 Nm/kg。注意踝比膝大——很多人凭直觉以为膝盖最费力,其实蹬离阶段踝关节是主发力点。工程选型时按包络取值:膝取 ~1.0 Nm/kg,70 kg 用户即 ~70 Nm 的持续峰值需求。
换算成电气的语言更直观:70 Nm 作用在 0.3 m 力臂的踏板上约 230 N 的推力,按助力比 α = 0.5、关节转速 1 rad/s 计,单膝瞬时要输出 ~35 W 机械功率,加上膝髋踝三关节同相位的重叠,一条腿的峰值机械功率向 100 W 看齐——这就是电池和驱动器功率预算的来源,也是为什么外骨骼电池动辄 200 Wh 起步、还要精打细算热设计。
**上楼梯时这份表格要重画:膝关节峰值力矩接近翻倍(~1.8–2.0 Nm/kg,即 70 kg 人 ~140 Nm)。**原因有三层:一是膝屈曲幅度从行走的 ~20° 涨到 ~90°,股四头肌的力臂与负荷同步增大;二是重心每步要净升高一个台阶(~17 cm),单腿做正功没有对侧腿分摊;三是支撑全程几乎单腿承重,没有站立相双支撑期的过渡缓冲。这就是为什么有的外骨骼平地行走很优雅、一到楼梯就露馅——力矩包络没按楼梯工况设计。
把负载谱变成选型校核,一段脚本就够:
# 从步态数据拟合关节力矩包络,校核电机+减速器组合
# 力矩数据:Winter 2009 矢状面力矩,按体重归一化 (Nm/kg)
GAIT_PROFILE = {
# 关节: (水平行走峰值, 上楼梯峰值, 摆动相峰值)
"knee": (1.0, 2.0, 0.4),
"ankle": (1.5, 1.8, 0.1),
"hip": (0.8, 1.2, 0.5),
}
USER_MASS = 70.0 # kg
DUTY_FACTOR = 0.3 # 峰值力矩占空比(站立相占比的经验折算)
KNEE_RATIO = 9.0 # QDD 行星减速比
MOTOR_TORQUE_CONT = 11.0 # 电机连续力矩 Nm(数据手册)
MOTOR_TORQUE_PEAK = 33.0 # 电机峰值力矩 Nm
for joint, (walk, stair, swing) in GAIT_PROFILE.items():
tau_walk = walk * USER_MASS # 水平行走需求 Nm
tau_stair = stair * USER_MASS # 楼梯需求 Nm(设计包络)
tau_swing = swing * USER_MASS # 摆动相需求 Nm(转速高)
# 驱动链能提供的力矩(减速器效率按 0.9 计)
avail_cont = MOTOR_TORQUE_CONT * KNEE_RATIO * 0.9
avail_peak = MOTOR_TORQUE_PEAK * KNEE_RATIO * 0.9
ok = tau_stair <= avail_peak and tau_walk * DUTY_FACTOR <= avail_cont * 0.6
print(f"{joint:5s}: 行走 {tau_walk:5.1f} / 楼梯 {tau_stair:5.1f} Nm, "
f"可用 {avail_cont:.0f}(cont)/{avail_peak:.0f}(peak) Nm -> "
f"{'PASS' if ok else 'FAIL'}")
楼梯是包络工况,行走是发热工况——连续力矩按占空比折算去对电机的热极限,峰值力矩对减速器的瞬时极限,两条线都要过。两条线分开校核的原因很实际:峰值力矩烧的是驱动管,连续力矩烧的是绕组,失效的物理位置不同,冗余设计也得分别留。
还有一个容易被忽略的量:摆动相的速度需求。摆动相约 0.4 s 内膝关节要完成 60–70° 的屈伸,平均角速度 ~2.5 rad/s、峰值接近 4–5 rad/s。减速比放大扭矩的同时也放大转速需求——N = 9 时电机峰值转速要 ~40 rad/s(约 4000 rpm),这个数字决定了电机反电动势设计和母线电压下限。力矩和转速的乘积是功率,包络校核最后都落在功率上。
三、关节模组:QDD 与谐波的两条路线
力矩需求定了,怎么产生它?低速大扭矩有两条工业化路线,取舍的核心是一个外骨骼特有的指标。
反向可驱动性(backdrivability):电机关掉,人用手掰关节,感受到的阻力有多大。它由两部分组成——折算到负载端的摩擦(τ_friction × N)和反射惯性(J_motor × N²)。减速比 N 是把双刃剑:它把电机力矩放大 N 倍,也把反射惯性放大 N² 倍。N = 100 的系统,电机转子惯量被放大一万倍,人掰关节像在推一堵墙——这时候机器不"让"人,人机就进入较劲状态,第三节的安全问题全部被放大。
量化一下这个差别有多大:典型外骨骼电机转子惯量 ~2×10⁻⁴ kg·m²(不含单位制混淆,即是 0.0002 kg·m²),N = 100 时反射惯量 2 kg·m²——比人小腿加脚的惯量(~0.35 kg·m²)大一个数量级,穿上去就是"腿上绑了沙袋",摆动相全程人在拖着机器走。N = 9 时反射惯量只有 ~0.016 kg·m²,比肢体自身惯性小两个数量级,机械上近乎透明。减速比每降一档,透明性按平方买回来——这是 QDD 路线全部的赌注。
两条路线的对比:
| 维度 | QDD 准直驱(行星 N≈6–10 + 大扭矩电机) |
谐波减速(N≈50–160) |
|---|---|---|
| 扭矩密度 | 中,靠大电机堆 | 高,同体积输出力矩大 |
| 反向可驱动性 | 好,反射惯性低、摩擦小 | 差,N² 反射惯性 + 柔轮摩擦 |
| 位置精度 | 依赖负载端编码器补偿 | 高,但有空程(见下节) |
| 功耗(透明模式) | 低,摩擦损耗小 | 高,克服减速器摩擦需持续电流 |
| 噪音 | 中高频电磁噪音,可优化 | 低速安静 |
| 成本 | 电机贵、行星便宜 | 谐波柔轮是消耗件,贵 |
| 寿命 | 长(滚动接触) | 柔轮疲劳寿命有限,需按批次更换 |
结论不难猜:助力型外骨骼主流选 QDD——MIT Cheetah 系列把这条路线带火,逻辑就是"用低减速比换透明性,用力控带宽弥补力矩"。谐波路线适合康复机器人:患者没有主动力,机器牵着走,反向可驱动性无所谓,但需要大力矩密度和安静运转。没有最好的减速器,只有匹配场景的减速器。
还有第三条路线偶尔被提起:串联弹性执行器(SEA)。在减速器输出端串一个已知刚度的弹簧,用力矩传感器测它的压缩量间接得到力矩。好处是力控变成"位置环 + 弹簧换算",对总线实时性要求骤降,且弹簧天然吸收冲击;代价是带宽被弹簧质量共振限制在 ~10–20 Hz,且多了一层机械柔顺需要额外行程。康复训练这类慢速高安全场景 SEA 至今仍是主力,助力行走这类要跟步态节奏的场景,QDD 直接力控更从容——又一次"没有最好的技术,只有匹配场景的技术"。
选定减速比后回头看第二节的脚本:N = 9 时电机需要 140/9 ≈ 16 Nm 峰值力矩——这已经是相当大的电机,这就是为什么楼梯工况是外骨骼驱动器的分水岭。
选型敲定后,模组还要过三道工艺关,每道都直接对应上文某条设计准则:
- 热设计。
1.0 Nm/kg的连续功率在模组内部变成绕组铜耗和减速器摩擦热,而模组就绑在小腿上、贴着皮肤。绕组极限108°C(H 级)不代表壳温可以到108°C——壳温上限由人的耐受决定,长时间接触的安全温度在41–44°C量级。导热路径(绕组→机筒→铝壳)和散热面积是硬约束,必要时降额使用,把"别伤害人"从电气的翻译成热的。 - **线缆走向。**膝关节每步屈伸一次,一天八千步,髋膝之间的线缆就被弯折八千次。动态线缆要走关节回转中心的弧线(减少弯折幅度),接头处应力和应变消除(strain relief)必须做,弯曲寿命标称
> 1000 万次的机器人线缆不是营销词,是这里的地板要求。 - **轴向布局。**人体侧影是窄的,模组轴线要尽量贴合肢体轴线、凸出量压到最小——凸在外侧的模组每走一步都在改变腿的转动惯量分布,凸得越多,摆动相控制越难做,人机协调性越差。
这三道关没有一道的解法在芯片手册里,它们都长在"机器穿在人身上"这个前提上。
四、分布式传感网络:机器的"体感"
力控的前提是知道力,透明的前提是知道位置。一套外骨骼的传感网络按"测什么"分四层:
**双编码器是标配。**电机端编码器(磁编或增量)服务 FOC 换相和高速测速;负载端编码器(绝对值磁编,17–19 bit)测真实关节角。为什么必须两个?谐波/行星减速器不是刚体:谐波柔轮靠弹性变形传动,存在 0.5–2° 空程与滞回,负载侧还有结构变形。只用电机端编码器反推关节角,误差在力矩增大时非线性扩大——而力控恰恰要在大力矩下工作。双编码器差值还能在线估计减速器变形量,做温度补偿和磨损监控。
这里有个权衡很实际:双编码器方案下,负载端分辨率决定了力控的"眼睛"分辨率。17 bit 绝对值编码器在 360° 内分 131072 份,量化步长 ~10 arcsec;对一个 0.5 kg·m² 的反射惯量做 1 kHz 差分两次求角加速度,量化噪声会被放大 dt² 倒数倍——编码器噪声是力控抖动的头号来源,这就是为什么负载端要上 17 bit 起步而不是便宜的 12 bit(量化步长差 32 倍,二阶差分后噪声差三个数量级)。
双编码器装好后的第一件事是零点标定——两个编码器测量的是同一根"名义上的"轴,安装误差必须标掉:
# 双编码器零点标定:静置多姿态采样,拟合电机端->负载端映射偏移
import numpy as np
def calibrate_dual_encoder(q_motor, q_load, tau):
"""q_motor/q_load: 各姿态角序列, tau: 对应关节力矩(标定砝码或已知力)
模型: q_load = q_motor / N + offset + k_deflection * tau (减速器弹性)
"""
N_guess = 9.0
x = q_motor / N_guess # 电机角折算到负载侧
A = np.column_stack([np.ones_like(x), tau])
offset, k_deflection = np.linalg.lstsq(A, q_load - x, rcond=None)[0]
resid = q_load - (x + offset + k_deflection * tau)
return {
"ratio_check": np.polyfit(x, q_load, 1)[0], # 斜率应接近 1/N
"offset_deg": np.degrees(offset),
"compliance_deg_per_Nm": np.degrees(k_deflection),
"residual_arcmin": np.std(np.degrees(resid)) * 60, # 验收: < 3 arcmin
}
残差这项就是减速器柔性的"体检报告"——新模组标一次、按周期重标,compliance 系数漂移超过两成,就是该查磨损的信号。
**力矩/力传感器决定放哪。**串联弹性方案把应变片贴在关节输出轴上(UR 机械臂的做法);直接测量人机交互力则把六维力传感器放在绑带/护板与框架之间(膝、踝各一)。前者测关节输出(给控制器),后者测人机接触(给安全层与助力意图识别)——测的对象不同,放的位置就不同,很多设计混淆了这两者。
**足底 FSR 阵列做步态相位检测。**足跟、第一跖骨、第五跖骨、足尖四点压阻传感器,成本几块钱,采样 100 Hz 就够。足底压力中心从足跟滚到跖骨的轨迹就是步态相位的直接物理信号,比纯 IMU 估计可靠——它不怕传感器漂移,坏一个点还有三个能兜底。
**多节点 IMU 补盲区。**大腿、小腿、躯干各一 9 轴 IMU,与双编码器做互补滤波:编码器给关节相对角(快、准、无漂移),IMU 给绝对姿态(慢、漂移、但不受机械变形影响)。两者融合后的关节绝对角误差可压到 1–2°,这是摆动相控制的地基。
各传感节点的采样率分工也值得一张表——它背后是"每个信号拿来做什么"的决策,不是拍脑袋的堆料:
| 传感节点 | 采样率 | 主要用途 | 数据去向 |
|---|---|---|---|
| 电机端编码器 | 20–40 kHz |
FOC 换相、转速 | 驱动器本地(不上总线) |
| 负载端编码器 | 1–5 kHz |
关节角、导纳外环 | 实时总线 → 控制器 |
| 关节力矩/六维力 | 1–2 kHz |
力控反馈、意图估计 | 实时总线 → 控制器 + 安全层 |
| 足底 FSR 阵列 | 100 Hz |
步态相位检测 | 独立 MCU → 状态话题 |
| 多节点 IMU | 200–500 Hz |
绝对姿态、融合 | 状态话题(非实时链路) |
注意采样率最高两个信号(换相用编码器、电流环)根本不上总线——它们在驱动器本地闭环,总线上只传结果。这是实时系统的分工智慧:把最快的环留在最靠近执行器的地方,总线只承担毫秒级的协调。
四层传感各自独立供电、独立走线,这份冗余不是浪费——它直接服务于下一节。
五、安全三道防线:层层失效,层层兜底
"别伤害人"落到工程上是一组嵌套的防线,设计原则只有两条:每道防线的响应时间要快于人受伤的过程,且任何一道失效不影响其余两道。
先看人受伤需要多久:从异常力矩出现到软组织损伤,量级在百毫秒到秒级;从摔倒启动到头部触地,约 300–500 ms。三道防线的响应时间必须全部嵌进这个窗口,且递进兜底——正常情况下第一道就够了,第一道瞎了有第二道,第二道也瞎了有第三道。
**第一道:机械硬限位。**关节两端加工出的挡块加无源弹性垫(聚氨酯或碟簧),把关节活动范围锁死在人体解剖学范围以内(如膝 -90°–0°,永远不许过伸)。响应时间"零"——它是物理约束,不依赖任何电子。失效独立性强:断电、固件崩溃、传感器全毁,它都在。代价是体积和重量,这是花克重买回来的最后一道墙。
第二道:驱动器底层硬切断。在 FOC 驱动板固件(最好在 FPGA/硬件比较器层)实现三重保护:瞬时力矩限幅(电流环阈值比较,~10 μs)、绕组温度看门狗(超阈值停发 PWM)、位置增量窗(单位时间角度变化超限即封波,防失控甩腿)。这一层必须在驱动器本地闭环,不能依赖上位机——哪怕 EtherCAT 断线、ROS 2 死机,驱动器自己得能停。响应时间 ~100 μs 级。
值得展开一层:温度看门狗为什么能靠"本地"解决——电机绕组的热时间常数是分钟级,而过热恰恰是穿戴设备最隐蔽的伤害路径(低温烫伤在 44°C 以上持续接触即可发生,比急性挫伤更难被用户察觉)。绕组到人皮肤隔着机筒、空气层和衣物,驱动器端的 NTC 在热传导链条的源头,比贴在人机接口的皮肤温度计早几分钟看到趋势——安全层的传感器要放在能最早看见危险的地方,而不是最方便放的地方。
**第三道:ROS 2 顶层安全监控状态机。**一个独立节点订阅所有传感话题 + 急停按钮 + 心跳,跑一个显式状态机:
# safety_monitor 声明式配置:状态机 + 触发条件 + 独立监护
safety_monitor:
ros__parameters:
heartbeat_timeout_ms: 50 # 控制器心跳丢失即降级
joint_torque_limit_nm: 90.0 # 包络的 1.3 倍冗余
interaction_force_limit_n: 180 # 人机接口力上限
fsr_phase_timeout_ms: 1500 # 步态相位信号消失
states:
NORMAL: { transitions: { FAULT: [torque, force, heartbeat], SOFT_STOP: [e_stop_sw] } }
SOFT_STOP: { action: ramp_down_200ms, transitions: { NORMAL: [operator_reset] } }
FAULT: { action: free_mode_drop_stiffness, transitions: { NORMAL: [operator_reset_two_hand] } }
independence:
power_rail: independent_5v # 监控节点独立供电,不与逻辑共轨
channel: dedicated_eth_port # 不与实时控制流共链路
注意 FAULT 态的动作是卸刚度而不是锁关节——穿戴中外骨骼突然锁死比缓慢卸力危险得多(人会摔倒)。这一层响应 ~10 ms 级,慢于驱动器层,但它看得见全局:人机交互力、步态逻辑、操作员意图,这些是底层看不见的。
三道防线的关键指标:
| 防线 | 响应时间 | 依赖 | 失效独立性 |
|---|---|---|---|
| 机械限位 | 0(物理) |
无 | 完全独立 |
| 驱动器底层 | ~100 μs |
驱动板本地供电 | 独立于上位机 |
| ROS 2 监控 | ~10 ms |
独立电源轨 + 专用链路 | 独立于控制节点 |
三行的依赖列没有一个交集——这不是巧合,是架构约束:如果第三道防线的供电和数据链路都挂在被监控对象上,那它监控的可靠性就和被监控者同生共死,防线名存实亡。设计评审时拿这张表逐行问"这行挂了,下一行还活着吗",是检验安全架构最快的方法。
紧急停机的最后一环是硬件级 STO(安全扭矩关断)通道,它切断的是驱动级的功率使能——这条通路必须与上面的软件体系完全隔离,细节在安全电路篇展开。
软硬件联动
关节模组里的双编码器和力矩保护,最终都落在那块 FOC 驱动板上——电流环怎么在 10 μs 里完成限幅判断,见三相 FOC 驱动板:栅极驱动与电流采样。
力矩硬切断再往下挖一层,是驱动级安全通路的设计:STO 布线、医疗级隔离、双通道冗余——见安全电路篇穿戴式安全电路:STO 急停与医疗级隔离。
控制系统侧的实时保障——PREEMPT_RT 内核调优与 EtherCAT 主站部署,见那篇环境构建。
本篇与控制篇的关系一句话说清:**这里给出的是"身体"——力矩包络、机械阻抗、传感分辨率、安全边界;下一篇给出"反射"——电流环之上每一层控制律怎么用这些身体条件,让机器"让"着人。**身体不达标,反射再快也是白搭;这也是为什么每一节都反复回到"人在回路里"这条主线。
参考文献
- Winter, D. A. Biomechanics and Motor Control of Human Movement. 4th ed., Wiley, 2009.(步态周期与三关节力矩包络的原始数据来源,本篇第二节的"需求文档")
- Young, A. J., & Ferris, D. P. "State of the Art and Future Directions for Lower Limb Robotic Exoskeletons." IEEE Transactions on Neural Systems and Rehabilitation Engineering, vol. 25, no. 2, pp. 171–182, 2017.(下肢外骨骼综述,驱动与传感选型的产业共识)
- Yan, T., Cempini, M., Oddo, C. M., & Vitiello, N. "Review of Assistive Strategies in Powered Lower-Limb Orthoses and Exoskeletons." Robotics and Autonomous Systems, vol. 64, pp. 120–136, 2015.(助力策略与执行器路线对比)
- McFadyen, B. J., & Winter, D. A. "An Integrated Biomechanical Analysis of Stair Climbing Tasks." Journal of Biomechanics, vol. 21, no. 9, pp. 733–744, 1988.(楼梯工况力矩翻倍的经典测量)
- Harmonic Drive Systems. Engineering Data: CSF/SHF Series Strain Wave Gears.(柔轮变形、空程与寿命规格,双编码器必要性的依据)
- Wensing, P. M., Blank, S. C., Siebert, T. P., & Bledt, G. D. "Proprioceptive Actuator Design in the MIT Cheetah Model & Control of a Quadruped Robot." IEEE/ASME Transactions on Mechatronics, vol. 27, no. 2, pp. 902–913, 2022.(QDD 准直驱路线的代表作)
模组有了、传感有了、安全框架有了,剩下的问题是:控制环怎么让这台机器"让"着人?下一篇进入力控世界:外骨骼柔顺控制:EtherCAT 实时总线与导纳控制。