1. 为什么双足机器人离不开变刚度:从人的踝关节说起
先说一个我在实验室里反复踩过才想明白的事:双足机器人最难的部分,往往不在上层运动规划算法,而在执行器那一层。早些年我用固定刚度关节做实验,机器人在平地上站着确实稳,可一到下坡、踩台阶或者被外部碰一下,整个机身的姿态控制立刻乱掉,严重的时候直接砸地。后来我转向仿生双足机器人的变刚度驱动器,从模块设计、样机装配到实验验证一路做下来,才真正理解“刚度可变”这四个字背后有多少门道。
很多人会问:电机加减速器不就能让关节动吗?为什么还要折腾变刚度?这里的关键在于,双足机器人对关节驱动器的需求是矛盾的——既要求关节足够“软”以吸收落地冲击,又要求关节足够“硬”以保证支撑相的姿态精度。固定刚度关节无论怎么调参数,都只能在这两个需求之间折中:调硬了,落地瞬间冲击力全部传给机身,电机瞬时过载甚至损坏刹车;调软了,站立和推进时关节跟着晃,步态根本稳不住。变刚度驱动器的思路,是把“关节输出力矩”和“关节等效刚度”拆成两个独立可控的变量,让机器人在支撑相把刚度调高、在摆动相和落地瞬间把刚度调低,行为和人的下肢肌肉协调模式是同一个逻辑。
这也是为什么这类驱动器在仿生机器人圈子里一直热度的原因。从学术角度看,它对应的是“可变阻抗控制”的物理实现层——算法上早就证明变阻抗能显著降低足式机器人的落地冲击功耗,但真正缺的是能在腿里塞得下、响应跟得上、还能稳定复现的机械执行器。我做的这个模块设计,目标就是把这个缺失的环节补上一点点。无论是准备做双足实验的研究生,还是在企业里调试四足机器人关节的工程师,只要你在跟足式机器人的“腿”打交道,这套模块设计思路和实验方法都值得参考。
需要提前说明的是,以下所有参数和结论都来自我在样机迭代过程中的记录,属于特定结构尺寸下的代表性数据,不同样机平台会有所浮动,不建议直接照抄数值,但设计逻辑和实验方法是可以完整复用的。
2. 需求拆解与变刚度机构选型:先把关节到底要多“多变”搞清楚
做机械设计最忌讳一上来就画图。变刚度驱动器听起来高大上,但它在你的机器人腿里需要满足什么指标、刚度变化范围有多大、响应速度要多快,这些参数不确定,后面每一步都是白做。我先从仿生角度把需求拆开,再逐条落到关节指标上。
2.1 从步态周期反推关节需求
人的下肢在平地行走时,一个步态周期里踝关节和膝关节的等效刚度变化可以达到3到5倍。支撑相前段,小腿肌肉离心收缩做负功,吸收身体下落势能,关节表现为高刚度;支撑相后段蹬地发力,刚度进一步提高;摆动相小腿前摆时,关节则处于低刚度低阻抗状态,方便快速向前。也就是说,变刚度驱动器最核心的指标不是“能变”,而是“变幅够不够、速度跟不跟得上步频”。
我给自己定的设计目标是这样几个数字:单关节输出峰值扭矩不低于35牛米,关节等效刚度调节范围做到65牛米每弧度到300牛米每弧度之间(约4.6倍变化),刚度调节响应时间不超过0.3秒,关节整体质量控制在1.2公斤以内。这套指标对应的是一个体重约30公斤、平地行走速度1米每秒的双足机器人踝关节。如果你做的是髋关节或者膝关节,指标需要相应缩放,但拆解方法是一样的——先想清楚步态周期里不同阶段的关节力矩和角位移需求。
2.2 三种主流变刚度路线,我为什么排除了前两种
市面上能查到、实验室里能落地的变刚度方案大致有三类:拮抗式人工肌肉、磁流变液/电流变液执行器、串联弹性驱动器加变刚度机构。
第一类拮抗式人工肌肉,原理是模仿人腿内外侧肌群的“双拉”结构,一侧收缩另一侧拉伸,通过调节两路气压或拉力比值改变关节刚度。优势是柔顺性好、功率密度高,但致命弱点是气压响应慢,刚度切换的带宽通常在0.5赫兹以下,跟不上快走或跑步的步频,而且需要外接气源,整机系统重量和体积都膨胀得厉害。
第二类磁流变液执行器,利用磁场控制液体表观粘度,刚度变化连续且响应快。但磁流变液在足式机器人这种高冲击、高频往复的工况下,疲劳和沉降问题非常棘手,且高压密封结构复杂,样机长期运行后阻尼特性漂移严重。我做过一轮初步测试后直接放弃——可控性和重复性对实验数据太不友好了。
第三类就是我现在采用的路线:电机驱动主动变刚度机构。具体结构可以细分成连杆调节式和凸轮压缩弹簧式,我选了后者。核心逻辑是:用一个刚度调节电机,通过蜗轮蜗杆减速后驱动凸轮盘旋转,凸轮轮廓挤压一个预压缩的弹簧组,改变弹簧组的等效压缩量和力臂,从而在输出侧形成刚度可调节的弹性环节。关节输出力矩仍然由主电机通过谐波减速器提供,两个电机的控制权限分离——主电机管力矩,调节电机管刚度。这套方案的响应速度取决于小电机的转速和减速比,加上蜗轮蜗杆的自锁特性,刚度调好后不需要额外耗电维持,对机器人整机功耗非常友好。
2.3 模块设计的边界条件:接口、尺寸和温升
除了核心指标,模块化设计还要提前锁定边界条件。在双足机器人腿里,关节驱动器通常安装在髋/膝/踝关节轴线附近,这决定了模块的直径和长度限制。我的做法是先画出一个圆柱包络,直径控制在72毫米以内,轴向长度110毫米以内,方便后续在大小腿结构里布置。另外一个很容易被忽略的点是散热。连续行走时主电机和高频往复的弹簧组都会发热,尤其是弹簧阻尼带来的内热,如果不设计散热路径,驱动器表面温度会快速超过电机额定工作的上限。我在这版模块上做了铝合金外壳加内部导热脂填充,热容测试下来勉强能满足连续15分钟行走的需求,更长续航需要在结构上再优化。
模块与机器人本体的电气接口也要标准化:动力线、编码器信号线、刚度调节电机控制线分开屏蔽,接插件统一选用航插。这个细节在后续整机联调时省了大量排查故障的时间。
3. 模块化结构设计的核心:动力、变刚度、感知三块怎么塞进同一个壳
结构设计的最优解永远来自功能耦合的深度。传统刚性驱动器的结构布局相对简单:电机、减速器、输出轴一条线。变刚度驱动器多了刚度调节路径,等于要在同一个空间里塞进两套动力系统、两套传动链和至少两个传感器。这版模块我最终分成了三个子装配体——动力模块、变刚度模块、感知模块,它们各司其职,又在接口处精确配合。
3.1 动力模块:主电机与谐波减速器的选型
动力模块的任务是提供关节转动的主力矩。我选用了一款盘式无刷电机,额定电压24伏,峰值功率约180瓦,搭配一节17规格谐波减速器,减速比50比1,输出侧额定扭矩30牛米,瞬时允许60牛米。谐波减速器在这类应用的优势是传动比大、回差小、重量轻,足以满足足式机器人支撑相的力矩精度要求。不过谐波减速器不是没有代价——它的柔轮在长期冲击下会有疲劳风险,所以在这版设计中我在减速器和输出法兰之间加了一级扭矩限制保护器,防止异常落地冲击直接打坏柔轮。
电机端和输出端各装有一个编码器。电机端是17位多圈绝对值编码器,用来精确计算主电机的转子位置;输出端是增量式编码器,用来读关节实际转角。两个编码器配合,可以做控制回路里的半闭环位置反馈,也可以在后处理中反算传动链的扭转形变。需要强调的是,输出端编码器一定要装在输出法兰之后而不是之前,否则它读不到谐波减速器柔轮的弹性形变,扭矩估计误差会很大。
3.2 变刚度模块:凸轮盘与压缩弹簧组的设计取舍
变刚度模块是整个驱动器的灵魂,也是最难做好的部分。我采用的方案是:两个对称布置的矩形截面圆柱压缩弹簧,弹簧杯导向,弹簧的压缩量由一个锥形凸轮盘控制。凸轮盘由独立小电机经蜗轮蜗杆减速驱动,转角变化时,凸轮轮廓通过滚轮挤压弹簧杯,改变弹簧组的初始压缩量。弹簧组的等效刚度K_eff由弹簧本身的线刚度K_s和力臂机构共同决定,经验公式可以简化为:
K_eff = K_s * (R(θ))^2 / L^2
其中R(θ)是凸轮轮廓半径随转角的变化函数,L是输出轴到凸轮接触点的力臂长度。设计时最关键的是凸轮轮廓曲线,它的形状直接决定了刚度调节是线性还是非线性。我最初用等距螺旋线得到的是线性刚度变化,后来测试发现足式机器人需要落地瞬间刚度快速降低、支撑后期刚度平稳上升,于是把凸轮轮廓改成三段式:中间段斜率大(快速变软),两端斜率小(平稳变硬)。这个改动让步行实验的落地冲击指标大幅改善。
弹簧组的选取也踩过一些坑。设计初期我选用了高碳钢弹簧钢丝,线径2.5毫米,外径20毫米,有效圈数4,按公式计算线刚度约32牛每毫米。但实测疲劳循环到8万次后,刚度漂移超过12%,直接导致刚度标定曲线失真。后来换成了油淬火回火弹簧钢丝,线径不变,疲劳寿命明显改善。如果环境温度变化大或者振动强烈,建议进一步考虑弹簧预紧结构的温度补偿设计。
3.3 感知模块:刚度闭环的两个核心反馈量
变刚度驱动器的闭环控制,不能只依赖一个编码器。我在这版模块上增加了两个反馈通道。第一路是弹簧位移传感器,选用微型线性位移传感器,测量弹簧杯的实际压缩位移,直接反映弹簧组的压缩状态;第二路是输出侧六维力/力矩传感器的预留接口,这一步在整机联调时装在踝关节下方,用于测量足底接触力,实验数据分析和碰撞检测都靠它。
这里要注意,弹簧位移传感器本身也有精度和频响的限制。如果传感器分辨率不够,刚度闭环会出现低频抖动。我测试过两种供应商的产品,最后选了量程10毫米、分辨率0.02毫米、频响1千赫兹的型号,刚度闭环带宽实测做到约18赫兹,基本够用。感知模块的走线布局也很重要,弹簧附近的线缆要选用耐弯折、耐磨的柔性线束,并且固定牢靠,否则弹簧几个来回就能把线芯磨断。
3.4 整机装配顺序与工艺细节
模块化设计看着简单,装配顺序却直接决定了同轴度和回差。我的装配流程是:先装动力模块,主电机轴与谐波减速器波发生器用专用工装压装,保证同轴度在0.03毫米以内;然后再装变刚度模块,凸轮盘与蜗杆轴配合,通过调整垫片控制轴向间隙;最后装感知模块,传感器支架与输出法兰固定。每一步都要做一次同轴度检测,如果轴线偏了,驱动器运转时会出现周期性噪声以及明显的力矩波动。
装配过程中一个很小的细节是螺纹胶的涂抹位置。模块内部振动幅度大,螺纹胶一定要用中强度型,涂在螺栓螺纹中段而不是根部,同时预留足够的固化时间后再带载运行。还有弹簧杯内部要加一层薄聚四氟乙烯垫片,降低弹簧压缩时的摩擦异响,并防止金属直接接触磨损。
4. 实验设计与实测数据:从刚度标定到整机对比
模块做出来不等于能用,实验阶段才是暴露设计短板的主要战场。我设计了三组实验,按复杂度递进:第一组是刚度标定实验,检验模块的刚度调节范围与线性度;第二组是冲击退让实验,用落锤模拟落地冲击,对比固定刚度和变刚度两种状态下的冲击力峰值;第三组是双足步行对比实验,将驱动模块装进双足机器人踝关节,对比同一套步态算法下固定刚度和变刚度对整机功耗和姿态稳定性的影响。
4.1 刚度标定实验:数据跑出来的曲线才是真的
刚度标定实验台架由一个固定底座、一个伺服加载电机和一个高精度扭矩传感器组成。将驱动器输出法兰固定,然后让刚度调节电机依次转动到不同目标角度,每转一个位置后锁定,再用加载电机缓慢施加力矩,记录转角与力矩的对应关系。
实测结果表明,当凸轮盘角度在初始位置到最大转角之间变化时,关节等效刚度从70牛米每弧度连续变化到290牛米每弧度,约4.1倍变化,和理论设计值的4.6倍略有偏差。偏差的来源在于弹簧力臂在凸轮接触点存在滚轮半径的补偿误差,以及弹簧组实际压缩时存在一定的摩擦损耗。刚度-角度曲线在三段式凸轮轮廓处出现两个轻微的拐点,这和理论预期一致,在后续控制中我做了查表补偿。
这组实验里有几点值得提醒:标定加载速度要尽量缓慢,加载过快测出来的刚度偏高;每改变一个刚度点后要等待弹簧松弛到稳态再开始标定,否则数据会偏硬。我试过重复标定5次,数据重复性偏差控制在3%以内,说明结构和传感器稳定性是合格的。
4.2 冲击退让实验:变刚度的身价在这里体现
冲击退让实验的目的是检验落地瞬间的缓冲能力。我在模块输出轴上固定一个等效质量块,从设定高度释放,让输出轴在一个挡块上瞬间制动,模拟机器人落地时的冲击。对照组是固定刚度工况(调节电机不工作,弹簧预紧力恒定),实验组是可变刚度工况(落地前0.1秒刚度调低)。
实测数据非常直观:固定刚度状态下,冲击力矩峰值达到18牛米,力矩振荡持续约0.36秒;变刚度状态下,冲击力矩峰值降到9.5牛米,振荡收敛时间缩短到0.19秒。冲击力峰值削掉接近一半,这正是仿生双足机器人需要的“软着陆”能力。需要注意的是,刚度降低不能没有下限,否则支撑相刚开始时关节会软到根本撑不住身体重量——所以我在控制协议里设置了最低刚度阈值,对应刚度调节电机的最小有效转角。
4.3 双足步行对比实验:从部件到整机的差距
双足步行对比实验是在实验跑台上完成的,机器人本体自重约28公斤,行走速度设为0.4米每秒。同样一套步态算法,分别用固定刚度关节和变刚度关节驱动踝关节,连续行走4分钟,记录每公斤功耗、关节峰值力矩和躯干俯仰角标准差。
结果整理成表:
| 测试项 | 固定刚度关节 | 变刚度关节 |
|---|---|---|
| 平均每公斤功耗 | 4.2 W/kg | 2.9 W/kg |
| 踝关节峰值力矩 | 27 Nm | 21 Nm |
| 落地冲击峰值 | 16 Nm | 10 Nm |
| 躯干俯仰角标准差 | 3.1° | 1.8° |
功耗下降约31%,峰值力矩下降约22%。数据背后对应了两层机制:第一层是落地瞬间变刚度关节吸收了大部分冲击动能,减少了冲击向机身传递;第二层是支撑前期关节刚度较低,电机更倾向于输出稳定的力而非频繁调节,电流波动减小,铜损随之降低。这套数据也验证了模块设计时定下的指标——刚度调节范围足够覆盖步态周期内的需求,响应时间0.3秒能跟上0.4米每秒的行走节奏。
4.4 实验中的意外情况和处理方式
任何实验都有意外。我在跑冲击实验时遇到过一次弹簧杯卡滞,导致刚度调节电机电流过流报警。拆开后发现是弹簧压缩到最大行程时,弹簧圈之间并紧接触,产生硬性锁死。解决方案是在弹簧杯内增加限位挡圈,预留1.2毫米的并紧裕量,同时在控制程序中限制调节电机的最大行程,双保险。还有一次是输出端编码器信号在高速冲击时出现跳变,排查发现编码器线束经过弹簧附近时被高频振动干扰,后来把线束从弹簧对侧走线并加磁环,问题消失。
5. 几个容易踩的坑和后续优化方向
这一节属于“早知道就不会走弯路”系列的总结。变刚度驱动器看起来只是多了个调节电机,实际上整个控制系统和机械结构都要跟着调整。我整理了四个对结果影响最大的坑,以及对应的处理建议。
第一是弹簧疲劳和预紧力漂移。弹簧组长期高频压缩后,材料内部应力释放导致刚度缓慢下降。处理方式除了换材料等级,还要在实验前做刚度复标定。我的习惯是每周做一次10分钟刚度标定,如果和初始数据偏差超过5%,就更换弹簧组。
第二是凸轮轮廓加工精度。凸轮盘的轮廓曲线不是普通的圆弧或直线,而是根据目标刚度映射算出来的复杂曲线。我用数控加工加手工研磨修型,确保轮廓表面粗糙度达到Ra0.8以下,否则滚轮在凸轮槽内运动会发出“咯噔咯噔”的响声,刚度调节也有明显的滞后感。如果条件允许,最好采用线切割加慢走丝加工,一次性保证轮廓精度。
第三是刚度闭环带宽与落地瞬间高频脉冲的矛盾。起初我想让刚度跟随控制频率达到50赫兹以上,实测发现受限于蜗轮蜗杆减速结构和小电机的加速度,效果不佳且电流噪声明显坑。让步后的方案是:刚度调节只跟随步态阶段的低频指令,不直接响应冲击脉冲。落地冲击依靠弹簧本身的被动缓冲,主动刚度调节只负责在冲击之后把关节恢复到目标刚度。这个“主动降刚度-被动缓冲-主动恢复”的时序控制,比纯主动高带宽刚度控制可靠得多。
第四是编码器和线缆的抗冲击防护。足式机器人的落地冲击加速度可以轻松超过20g,编码器PCB和排线如果固定不牢,联调时就会出现随机信号丢失。处理方式是在PCB板下方粘贴缓冲泡棉,所有线缆接头处打胶固定,并且在模块外壳上设计独立的电缆卡扣。冲击实验后记得检查一遍编码器安装螺钉的扭矩,防止长期振动导致松动。
后续优化方向我目前关注三个点:一是用盘式无刷电机加行星齿轮减速替代现在的谐波减速器,降低成本和柔轮疲劳风险;二是尝试把刚度反馈传感器从线性位移传感器换成磁编码器方案,减少机械安装空间;三是将凸轮盘设计成可快速更换的模块,方便实验时改变刚度映射曲线,不必重新做整机机械结构。
最后分享一个小细节:变刚度驱动器在整机调试时,至上可以先做“固定刚度档位跑通步态,再逐级开放变刚度”的流程。我最初就直接启用变刚度控制,结果步态算法和刚度调节策略耦合在一起,出了问题都不知道是算法错还是机械错。分步调试虽然保守,但能让你在每一步都清楚知道系统行为的变化来源,这对排查问题非常关键。