双足机器人这行做了几年,有一个感受越来越深:关节驱动器是整个系统的“命门”。电机功率够了,机构太刚,落地冲击直接打崩减速器;机构太软,又撑不起步态精度,跑两步就开始晃。我们团队前两年立项做了一款仿生双足机器人关节用的新型变刚度驱动器,从模块设计到样机实验走了一整轮,中间踩了不少坑,也积累了一些可以复用的经验。这篇就把整个模块设计的思路、关键参数推导、装配调试过程,以及实验数据和问题排查方法完整梳理一遍,给正在做机器人关节或者仿生机构的朋友一个参考。
1. 为什么双足机器人需要“可变刚度”
1.1 刚性驱动器的致命短板
传统关节方案一般是“高减速比电机+刚性传动”,优点是控制模型简单,位置精度高。但放到双足机器人上,这种方案有两个很难绕开的痛点。
第一个痛点是冲击载荷无处释放。人正常行走时,脚跟着地的瞬间地面反作用力峰值可以达到体重的1.2到1.5倍,跑步时甚至到3倍。刚性关节把这个冲击直接传递给减速器和电机轴,长期下来谐波减速器的柔轮疲劳断裂、电机编码器松动、输出轴轴承磨损,都是常见故障。我们早期一台原型机在测试台上连续走了不到3万步,膝关节减速器就出现了明显的齿隙增大。
第二个痛点是能量效率低。人类行走时,腿部肌肉在摆动末期和支撑早期会经历一个“离心收缩—向心收缩”的转换,这个过程中肌肉本身会像弹簧一样存储和释放弹性能。资料显示,人体步态中踝关节在蹬伸阶段释放的弹性能约占整个步态正功的30%以上。刚性驱动完全没法做这种能量回收,每一步的能量都被减速器和电机发热消耗掉了。
1.2 变刚度驱动器的本质:给关节加一根“可变硬度的弹簧”
变刚度驱动器(Variable Stiffness Actuator,VSA)的核心思想,是在电机和负载之间串联一个刚度可控的弹性元件。你可以把它理解成一根“软硬可调的弹簧”——需要精确位置控制时,刚度调高,系统接近刚性;需要缓冲冲击或者回收能量时,刚度调低,让关节像人的肌肉一样先退让再发力。
刚度可调的实现方式,目前工程上主流的路线有三类:
| 技术路线 | 原理 | 优点 | 局限性 |
|---|---|---|---|
| 弹簧预紧调节 | 通过丝杠或凸轮改变弹簧压缩量 | 结构简单,刚度变化范围大 | 调节速度受限于预紧电机功率 |
| 杠杆/力臂调节 | 移动弹簧作用点的力臂长度 | 响应快,刚度与力臂呈线性关系 | 机构复杂度高,占用空间大 |
| 非线性凸轮廓线 | 利用凸轮形状改变等效刚度 | 刚度曲线可定制 | 对加工精度要求极高 |
我们项目最终选的是弹簧预紧+杠杆力臂混合调节的方案,原因后面细说。
1.3 模块化设计的价值:从“关节定制”到“即插即用”
立项之初,团队内部有一个明确的共识:这个驱动器不能只为一台机器人服务,它需要成为平台级模块,能够快速适配髋、膝、踝三个关节,甚至后续的机械臂项目。
模块化设计的价值体现在三层:
- 机械层:动力输入、变刚度调节、传感检测做成三个独立子模块,任一模块损坏都可以快速更换,不用整个关节返厂。
- 电气层:统一采用CAN总线通信,制定标准的PDO映射表,驱动器作为一个CAN节点接入主控,上位机只需发送目标刚度和目标位置指令。
- 控制层:嵌入式固件中内置刚度模式和位置模式两种控制接口,模式切换通过一条指令完成,方便不同实验场景灵活调用。
这样设计之后,我们实验阶段换刚度机构、换电机、加传感器,都不需要改动关节的其他部分,效率提升非常明显。
2. 核心模块的详细设计与选型推导
2.1 动力输入模块:无框电机+谐波减速器的组合逻辑
动力输入模块负责输出关节扭矩和位置指令。选型考量以膝关节为基准,因为膝关节需要的峰值扭矩最大。
先算扭矩需求。目标机器人整机重量约35kg,设计最大关节扭矩30Nm。考虑到行走冲击峰值可能达到静力学的1.5倍,安全系数取1.5倍,折算下来电机+减速器组合需要输出约45Nm的瞬时扭矩。
选型方案是Maxon EC 90无刷电机(额定功率90W)+ Harmonic Drive CSD-25-100谐波减速器(减速比100:1)。这里有一个关键点是,谐波减速器的刚度高、背隙几乎为零,非常适合作为变刚度驱动器的“刚性基座”。如果换用行星减速器,背隙会直接叠加到变刚度机构的控制精度上,导致刚度标定漂移。
电机端增加了一个增量式编码器(1000线),输出端增加了一个绝对值编码器(17位),双编码器的好处是:在做刚度标定实验时,可以同时读取电机端和负载端的角位移差,这个差值就是弹簧变形量,是计算刚度的核心数据。
2.2 变刚度调节模块:方案对比与最终结构
变刚度模块是整个驱动器最核心的部分。我们最初做了两个原理样机,一个是纯弹簧预紧调节,一个是杠杆力臂调节,测试结果各有利弊,最终采用了两者结合的混合结构。
纯弹簧预紧方案的优点是结构简单,刚度调节范围可以做得很大,但问题是刚度与预紧电机的输出扭矩呈非线性关系,低刚度段调节精度差——预紧电机转一圈可能只改变几十Nm/rad的刚度,到了高刚度段,转一圈可能改变几百Nm/rad,控制起来很别扭。
杠杆力臂方案的优点是刚度与力臂长度成正比,线性度好,控制模型清晰,但结构体积偏大,而且杠杆支点的滑动摩擦会引入额外的能量损耗。
混合结构的做法是:用凸轮机构压缩弹簧实现基础刚度调节(粗调),再用杠杆力臂实现细调。具体结构上,一个微型伺服电机(Maxon EC-max 16)通过丝杠推动凸轮旋转,改变两个对称布置的弹簧压缩量,实现刚度的大范围粗调;同时,弹簧的作用点通过一个可移动滑块连接在输出杠杆上,滑块位置由另一个微型伺服电机控制,实现小范围细调。
实测下来这套结构的刚度调节范围可以达到150~1200 Nm/rad,覆盖了从慢走(低刚度)到快速奔跑(高刚度)的需求区间。
2.3 传感与控制系统:刚度感知的闭环逻辑
传感模块负责回答三个问题:关节现在在什么位置?输出扭矩是多少?当前刚度是多少?
- 位置通过双编码器获得,电机端和输出端的角位移差值直接反映弹簧变形量。
- 扭矩通过两种方式交叉验证:一种是弹簧变形量×当前刚度的计算值;另一种是贴在输出轴上的应变片式扭矩传感器测量值。两种读数的偏差超过5%时,控制系统会自动报警,提示弹簧可能出现了疲劳或预紧松动。
- 刚度感知比较tricky。我们在低刚度段采用“主动微扰动法”来在线辨识刚度:控制器主动施加一个小幅正弦位置扰动(幅值0.005rad,频率5Hz),通过测量扭矩响应的幅值比来计算当前刚度。高刚度段则直接通过凸轮位置查表获得刚度值。
控制算法的核心是一个串级PID结构:外环是刚度/位置规划环,输出目标扭矩;内环是电流环,执行扭矩指令。刚度调节环路独立运行,更新频率是100Hz,扭矩控制环的更新频率是1kHz。
2.4 结构轻量化与散热:工程落地的两个隐藏难点
模块化设计不能只考虑功能,还得考虑机器人的承载能力。膝关节模块如果超过2kg,整机质心偏移就会非常明显,对踝关节的扭矩需求会进一步加大,陷入恶性循环。
轻量化方面主要做了三件事:
- 壳体采用7075铝合金,局部镂空:在保证刚度的前提下,通过拓扑优化的方式把非受力区域的材料减掉,比原始设计减重约18%。
- 弹簧选用高强度合金钢(60Si2MnA):相同刚度需求下,体积和重量比普通弹簧钢减少约25%。
- 电机输出轴与谐波减速器输入轴一体化加工:省掉了联轴器,既减重又消除了联轴器的弹性变形误差。
散热是另一个容易被忽视的问题。变刚度驱动器因为内部有弹簧和凸轮的摩擦,加上电机频繁加减速,发热比普通刚性关节更严重。实测连续运行30分钟后,壳体表面温度会到65℃左右。我们在壳体内部增加了铝合金导热板,将热量导向关节外部的大面积散热翅片,并把温度传感器集成到主控板上,超过80℃自动降额运行。
3. 从图纸到样机:装配、标定与调试全流程
3.1 关键零件的公差配合与装配顺序
样机组装阶段,最值得注意的几个公差配合点:
- 凸轮与滚子轴承的配合间隙控制在0.01mm以内。间隙太大,凸轮运动时会有撞击噪声,刚度调节的重复性也会变差;间隙太小,装配困难且运转阻力大。
- 弹簧导向柱与弹簧内径的间隙取0.2~0.3mm。这里要留足够间隙,因为弹簧受压时会鼓胀变形,间隙太小会直接卡死。
- 谐波减速器的安装必须严格按照厂家要求的力矩对称拧紧,柔轮部分不能有任何磕碰。我们第一次装的时候有一台减速器因为定位端面没清理干净,运行时有异响,拆开发现柔轮表面已经有了压痕。
装配顺序上,遵循“从内到外、先运动后固定”的原则:先组装变刚度调节模块并测试其运动顺畅性,再装配动力输入模块,最后连接输出杠杆和传感器。务必在每一步都手动转动输入轴,确认没有卡涩后再进行下一步,否则一旦全部装配完毕,故障定位就非常麻烦。
3.2 刚度标定的具体方法与数据结果
刚度标定是整个实验中数据链的地基。标定方法如下:
- 将驱动器的输出端通过夹具固定在地面平台上。
- 控制电机端以0.5rad/s的恒定速度向前转动,记录电机端位置、输出端位置和扭矩传感器读数。
- 计算电机端与输出端的角位移差,即弹簧变形量。
- 将扭矩与变形量的比值作为该凸轮位置下的刚度值。
- 以凸轮位置每步增加0.05rad为间隔,重复1~4步骤,得到整条刚度调节曲线。
测量的部分结果如下表:
| 凸轮位置 (rad) | 弹簧压缩量 (mm) | 实测刚度 (Nm/rad) | 设计刚度 (Nm/rad) |
|---|---|---|---|
| 0.05 | 1.2 | 152 | 150 |
| 0.15 | 3.4 | 328 | 335 |
| 0.30 | 6.8 | 612 | 600 |
| 0.45 | 10.1 | 958 | 970 |
| 0.55 | 12.5 | 1050 | 1080 |
从数据看,低刚度段的误差在±3%以内,高刚度段误差稍微大一些,主要原因是凸轮在极限位置时弹簧变形量接近非线性区。标定完成后,我们将这些数据存储在固件的查找表里,后续实验中的“查询刚度”都以标定值为准。
3.3 控制参数整定与力矩追踪测试
变刚度驱动器的控制参数整定比普通伺服要麻烦,因为系统存在弹簧储能环节,等效惯量和刚度随时在变。
我先用力矩阶跃响应试验来整定内环参数,再通过正弦扫频试验来确认刚度环的稳定性边界。实测下来,刚度环的剪切频率约在10Hz附近,相位裕度有48度,基本满足行走控制的需求。
力矩追踪测试的结果也比较理想:在5Nm到30Nm的区间内,力矩响应延迟约2.1ms,稳态误差控制在0.3Nm以内。这个数据对于足式机器人落地缓冲场景已经足够了——毕竟冲击过程的时间尺度在几十毫秒量级,2ms的延迟不会对稳定性造成明显影响。
4. 实验设计与结果分析
4.1 静态刚度测试:验证调节范围与重复性
静态刚度测试的目标是验证三点:刚度调节范围是否达标、刚度重复性如何、长时间运行后刚度是否漂移。
重复性测试的方法是,将凸轮位置循环调节50次,每次都在同一个位置测量刚度值。结果表明,刚度调节的重复性误差在±2.5%以内。但发现一个现象:前5次循环时刚度值略有下降,之后趋于稳定。原因分析是新装配的弹簧和凸轮表面在磨合,摩擦系数略有下降。因此我们的建议是,新样机装配完成后,先做50次空载刚度循环预磨合,再进行正式标定。
长时间运行后的刚度漂移测试中,以2Hz频率连续运行2小时,每隔10分钟测量一次刚度。结果表明,50分钟后刚度值基本稳定,最大漂移量约为3%。如果换算成关节力矩误差,在20Nm工况下约0.6Nm,尚在可接受范围。
4.2 动态冲击实验:变刚度缓冲效果的量化对比
冲击实验是验证变刚度驱动器核心价值的直接手段。实验设计如下:
将驱动器输出端连接一根刚性摆杆,摆杆末端挂一个5kg的重物,从30度角自由摆下,在最低点与一个刚性挡块碰撞。分别将驱动器设置为低刚度(200Nm/rad)、中刚度(600Nm/rad)和高刚度(1200Nm/rad)三种模式,测量碰撞瞬间的峰值力矩。
| 刚度模式 | 碰撞峰值力矩 | 力矩上升时间 | 能量回弹率 |
|---|---|---|---|
| 低刚度 (200 Nm/rad) | 12.5 Nm | 32 ms | 41% |
| 中刚度 (600 Nm/rad) | 21.8 Nm | 18 ms | 29% |
| 高刚度 (1200 Nm/rad) | 34.2 Nm | 9 ms | 18% |
| 对照:刚性关节 | 48.3 Nm | 4 ms | 5% |
数据说明,低刚度模式将碰撞峰值力矩降低了约74%,但代价是能量回弹率升高——也就是说,碰撞后反弹更明显。这在足式机器人落地场景中需要根据具体步态策略来权衡。如果落地后紧接着是缓冲期,低刚度模式明显更优;如果落地后需要立刻支撑身体重量,则需要在中后期快速切换至高刚度模式。
4.3 单腿落地的模拟行走实验与能耗对比
受限于整机还未完全完工,我们先用了一个“单腿落地模拟装置”来近似验证行走中的落地冲击场景:驱动器垂直安装,支撑一个模拟负载(12kg),从2cm高度自由下落后着地。测试低刚度和高刚度两种模式下,落地后质心上下振动的衰减时间和峰值加速度。
结果显示,低刚度模式下峰值加速度比高刚度模式低约58%,但振动衰减时间长了近1倍。这是变刚度驱动器的典型trade-off——缓冲性和稳定性天然存在矛盾。可行的解决方案是采用“时间序列刚度规划”:落地瞬间使用低刚度吸收冲击,支撑相中段切换至中高刚度保证稳定性。实验中这个策略的控制切换时间大约在40~50ms,切换过程是平滑的,没有出现明显振荡。
能耗数据方面,我们对比了刚性驱动器和变刚度驱动器在相同运动轨迹下的电机能耗。在反复伸缩运动中(模拟行走摆动腿工况),变刚度驱动器因为能够在关节减速/加速过程中存储和释放弹性能,实测能耗比刚性驱动器降低了约22%。这个数字虽然不如理论预期那么高,主要原因是被传动摩擦损耗掉了一部分,但也已经足以说明变刚度方案在能量效率上的优势。
5. 踩坑实录与工程化建议
5.1 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 刚度调节时有异响 | 凸轮与滚子间隙过大或润滑不足 | 拆下变刚度模块手动旋转检查 | 重新调整间隙至0.01mm,添加高低温润滑脂 |
| 扭矩传感器读数漂移 | 应变片温度敏感性 | 对比双编码器差值与传感器读数 | 控制板内置温度补偿算法 |
| 高刚度段电机电流异常偏大 | 弹簧预紧过量导致机构卡死 | 检查凸轮位置与弹簧压缩量的对应关系 | 在固件中增加凸轮位置软限位 |
| 低刚度段控制不稳定 | 弹簧储能导致系统固有频率降低,相位裕度不足 | 做扫频试验确认剪切频率 | 降低刚度环增益,或在前向通道增加陷波滤波器 |
| 多次冲击后刚度下降 | 弹簧疲劳或预紧机构松动 | 重新标定刚度,检查锁紧螺母 | 将普通螺母更换为防松锁紧螺母,增加预紧机构的位置闭环 |
5.2 我踩过的最深的一个坑:弹簧共振
这是整个项目里最让我头疼的问题。在中等刚度段(约600Nm/rad)做正弦扫频时,发现在13Hz附近出现了明显的力矩增益尖峰,系统在这个频率附近甚至出现了自激振荡。最开始怀疑是控制参数问题,但把刚度环增益降得很低还是不见好。
后来用有限元模态分析才发现,问题出在弹簧本身——弹簧在受压状态下存在自身的横向共振模态,13Hz恰好是这个共振频率。解决方法是给弹簧加了内外双层导向套筒,限制了弹簧的横向自由度,同时改用大弹簧指数(弹簧中径/线径),降低弹簧自身的共振频率,把共振点移出了控制带宽。
这个经验让我记住了:变刚度驱动器设计时,弹簧不仅是弹性元件,更是结构动力学元件,必须在设计阶段就进行模态分析,否则等样机出来再改结构,周期和成本都翻倍。
5.3 给后来者的模块化设计建议
- 接口标准化比性能参数更重要。模块化驱动器的价值在于快速更换和跨项目复用,所以机械接口建议统一设计为法兰盘+定位销结构,电气接口统一走CAN总线和标准的航空插头。
- 刚度标定表必须跟着出厂序列号走。每台样机的弹簧性能不完全一致,不能共用一张标定表。我们曾经因为复制了另一台样机的标定表,出现了位置误差和扭矩超调,最后发现两台样机的弹簧刚度相差了6%。
- 预留“硬刚度旁路”。在变刚度机构失效或实验不需要变刚度时,能够通过机械锁死的方式将驱动器切换为刚性模式,这样整个模块的可靠性和实验灵活性都会好很多。我们第二代设计中增加了这个功能,实验时省了不少事。
- 控制频率的分配要合理。不要把刚度调节环路和扭矩控制环路跑在同一个1kHz频率下。刚度调节环路受限于丝杠/凸轮机械系统的响应能力,100Hz足够;扭矩环则尽量跑到1kHz以上,这样两个环路之间不会互相干扰。
我个人在实际操作中最大的体会是,变刚度驱动器没有想象中那么“玄”,它的核心就是一个可控变形量的弹性机构,难点全在工程细节上——弹簧的选型和模态、凸轮的磨损、传感器的温漂、刚度和位置切换的时序。把这些细节一个个磨掉,模块自然就稳定了。这个项目后续还可以往两个方向扩展:一是把变刚度机构进一步小型化,往踝关节假肢和穿戴式设备上落地;二是把刚度规划算法和当前主流的步态预测网络结合起来,让机器人在行走时能够预测性地调节刚度,而不是被动地响应冲击。这条路我们还在继续走,希望这篇整理出来的设计思路和实验数据,能帮同行的朋友少走一些弯路。