尧图精选

双足机器人新型变刚度驱动器:设计、实验与调试全解析

🕒 发布时间:2026/9/28 1:15:10 📁 来源:尧图网络
双足机器人这些年一直有个绕不开的痛点关节驱动器到底该做“硬”还是做“软”。做硬了定位精度高、响应快但脚底一碰地面凸起冲击力直接顶到减速器和电机上轻则振动大、重则打齿做软了抗冲击好、人机交互安全但带宽低、精度差走路像踩棉花。刚柔之间的平衡就是变刚度驱动器Variable Stiffness Actuator, VSA存在的意义。这次要聊的是我们这几年设计并验证的一款用于仿生双足机器人的新型变刚度驱动器从模块拆分、机构设计、参数计算到样机实验全过程都在下面适合正在做双足机器人、外骨骼或者柔性机械臂关节驱动器的工程师参考。1. 关节驱动的刚柔矛盾与设计目标1.1 为什么偏偏是“变刚度”先看双足机器人落地瞬间发生了什么。脚跟着地时地面反力会沿小腿往上传递踝关节受到的冲击力矩在短时间内可以冲到体重的2到3倍。如果驱动器输出刚度过高整个关节就变成了一根刚性杆冲击能量没有缓冲通路只能靠结构变形和电机反转来吸收这会直接损坏减速器齿面也会让电机瞬间进入发电制动状态母线电压被泵高控制板保护性掉电。软驱动能吸收冲击但问题也明显。串联弹性驱动器SEA把弹簧串在减速器和负载之间冲击确实被弹簧吸收了可弹簧刚度一旦定死低频大扭矩下弹簧变形过大位置精度就没法保证高频小振幅运动时带宽又不够机器人跑不起来。换句话说固定刚度的弹性环节只是把一个矛盾换成了另一个矛盾。变刚度驱动器做的就是在不同工况下切换刚度。站立支撑相需要高刚度维持姿态精度摆动相和落地冲击阶段需要低刚度吸收扰动。这就好比人走在不平整路面上脚踝肌肉会根据路面反馈实时调整“绷紧”程度而不是一直紧绷或一直放松。我们做的是机械式连续变刚度方案不依赖电机电流环模拟软特性——那种“电软”本质还是刚性减速冲击峰值照样会损伤机械本体。1.2 三条主流技术路线我们怎么选的目前能查到的变刚度驱动器按原理可以大致分成三类。第一类是对抗式结构模仿动物拮抗肌群。两个驱动单元分别拉一根弹性元件通过改变两侧弹性元件的预紧力或工作点来调节关节表现出刚度。特点是控制耦合严重刚度变化时平衡位置会被拉偏必须要做位置/刚度解耦控制控制器的负担比较重。第二类是机械变杠杆式通过在弹簧输出端加一个可移动的滑块或凸轮改变弹簧力相对于关节轴心的力臂从而改变等效刚度。MIT的VSAS和DLR的FSA基本都是这个思路优点就是刚度调节与关节位置解耦负载变化不会自动把平衡位置拉偏控制相对简单。第三类是材料变刚度用智能材料比如形状记忆合金、磁流变液、低熔点合金来连续调节刚度。理论上非常优雅但响应速度、疲劳寿命和温度控制问题到现在都很难在工程上落地。我们最终选了机械变杠杆式理由很直白第一机械结构刚度和可靠性有保障对双足机器人这种反复冲击的工况更重要第二刚度调节和位置控制天然解耦降低了控制器设计难度第三后续维护替换只要换弹簧不用换整个驱动器模块化修理成本低。1.3 设计目标与指标分解做驱动器的第一步就是把“能走路”这种感性需求翻译成工程指标。我们规划的目标关节是体重约35 kg的仿人双足平台的踝关节需求分解成这几个硬指标峰值输出扭矩≥12 N·m对应35 kg体重在慢走时踝关节的周期性峰值需求扭矩带宽≥5 Hz保证正常行走步频约1.5~2 Hz的4倍以上避免相位滞后刚度调节范围0.4~2.4 N·m/°低刚度用于落地缓冲高刚度用于支撑相姿态保持刚度调节响应时间≤100 ms因为从摆动相切换到支撑相的时间窗口大约只有200~300 ms驱动器总重≤1.2 kg踝关节是末端关节质量增加会显著放大整腿惯量直接影响摆动能耗这些指标之间其实互相牵制。比如峰值扭矩和总重是矛盾的扭矩大就得电机大、减速比大重量就上去了。我们是在Simulink的仿人模型里迭代了好几轮才把扭矩和重量平衡到上面这组数。设计目标不是一次定死的是仿真-选型-再仿真的循环过程。2. 模块化设计从整机需求到模块拆分2.1 为什么必须做模块化很多团队做变刚度驱动器喜欢搞一体化设计电机、减速器、弹簧、滑块全塞在一个铝壳里。好处是紧凑但调试和维修极其痛苦。我们这次从第一版样机开始就定了一个原则驱动器本身必须能被拆成子模块每个子模块可以独立装配、独立测试、独立替换。这个原则听起来简单实际决定了整个机械架构的走向。我把整个驱动器拆成了五个子模块驱动模块、减速传动模块、弹性变刚度模块、传感模块和控制模块。其中弹性变刚度模块是整个驱动器的灵魂也是这次设计最核心的创新点所在。模块化还有一个隐性的好处是便于并行开发。机械组、嵌入式组、算法组可以各自在自己负责的子模块上打样验证不用整天互相等。比如传感模块可以先用标准编码器扭矩传感器验证完选型再去跟变刚度模块联调省了大量时间。2.2 变刚度核心模块的机构原理弹性变刚度模块的基本机构如图所描述的思路不展开机械图纸弹簧的一端固定在基座上另一端通过一个可滑动支点与输出杠杆接触。支点越靠近弹簧固定端输出杆上的力臂越大刚度的等效值越小支点往弹簧自由端滑动力臂变小刚度变大。这就是一个典型的杠杆力臂连续变化原理。关键区别在于我们加了一组平衡弹簧组用来在两块弹性板之间引入“预载荷差”让刚度曲线不再是简单的线性关系而是可以通过预紧量二次整定能在低刚度段保留一部分基础刚度防止失稳。这个模块里最关键的参数是输出杠杆的角度-力臂映射关系、弹性元件的初始预紧力和可调范围。力臂映射我们用三维凸轮轮廓来实现通过Custom ground curve把滑块位移和有效力臂做了非线性映射这样可以在小体积内实现较宽的刚度调节比。凸轮轮廓不是随便画的是用离散化的传动比要求逆求出来的拿到轮廓点云后再顺成NURBS曲面做五轴加工。2.3 关键零部件选型与计算电机与减速器选型变刚度关节的电机不需要像纯刚性关节那样承担全部冲击载荷因为弹性环节已经分流了一部分。但我们仍然按峰值扭矩的1.5倍安全系数来选电机。关节峰值扭矩12 N·m减速比取了50:1谐波减速器的话电机侧需要输出0.24 N·m持续扭矩。考虑到效率损失和峰值裕量选了额定扭矩0.32 N·m的无刷空心杯电机峰值扭矩可以做到0.55 N·m。这个配置的关节输出峰值可以到约16.5 N·m0.55×50×0.6传动效率满足需求。刚度弹簧计算刚度调节范围0.4~2.4 N·m/°等效到弹性模块内部的弹簧参数需要做一轮正逆计算。这里只讲正算的思路设弹簧刚度为k_s输出杆有效力臂为r(θ)其中θ是关节转角。弹簧变形量近似等于r(θ)·θ弹性力F_s k_s·r(θ)·θ对关节轴的力矩T F_s·r(θ) k_s·r²(θ)·θ。关节等效刚度为K_eq dT/dθ ≈ k_s·r²(θ)忽略力臂随θ变化造成的二阶小量因为设计里凸轮轮廓补偿了一部分非线性。要让K_eq从0.4变化到2.4 N·m/°也就是变化6倍在弹簧刚度不变的情况下力臂需要从r_min变化到r_max r_min×√6 ≈ 2.45×r_min。考虑到结构体积限制力臂范围选的是25 mm~55 mm那么弹簧刚度k_s K_eq_min / r_min² 0.4×180/(π×0.025²) ≈ 36670 N/m。实际选型时候选了两个平行的板簧组并联单个板簧刚度约18 kN·m/m两两并联后等效约36 kN·m/m再通过调整预紧垫片补偿装配公差。传感方案位置传感用了增量式编码器磁绝对值编码器双备份。增量式编码器放在电机端做电流环和速度环用绝对值编码器放在输出端用来确定关节绝对位置和作为刚度标定的基准。扭矩的事我们其实没有额外装扭矩传感器用的是电流估算扭矩加弹簧变形的间接推算虽然精度没有直接测扭矩高但省了重量和成本对控制器来说响应反而更快。2.4 机电接口与控制架构模块之间不仅机械要拆得开电气和通信也要拆得开。每个模块的驱动板通过CAN总线互联采样频率1 kHz。底层是FOC电流环中层是刚度调度器最上层是步态规划器。刚度调度器接收步态相位信号在支撑相到来前200 ms预置高刚度在摆动相开始前预置低刚度。这里有一个和很多人直觉不一样的地方刚度的切换必须在脚离地之前完成不能等到关节受力了再调刚度那样就来不及了。我们的经验是刚性切换提前量至少要留出2~3个控制周期20~30 ms配合前馈才能做到无感切换。3. 从图纸到样机装配、标定与动态实验3.1 装配顺序与工艺要点样机装配顺序比想象的重要。我们的顺序是先装驱动模块电机编码器减速器单独跑转速和电流环验证确认电机相序和编码器安装没问题装弹性变刚度模块但先不装凸轮和滑块只装弹簧基座反复加减垫片调整弹簧预紧力装滑块和凸轮轮廓手动推滑块感受整个行程的阻力检查有无卡涩点最后装输出法兰和壳体整机空载跑一遍刚度扫描这中间最容易踩的坑是凸轮滑块和导轨的配合间隙。间隙太大滑块在负载下有松动刚度标定曲线会跳变间隙太小摩擦力矩增大刚度调节响应变慢。我们最后把间隙控制在0.02~0.03 mm加了一侧可调的预紧滚子来消除间隙带来的空回。装配环节还要特别留意弹簧预紧对称性。两侧弹簧预紧力差一点点刚度特性曲线上就会表现为中位偏移。解决办法是装完后用一个扭矩扳手从0位往正负方向分别施加固定力矩记录转角对称位置的角度差要小于0.05°不合格就得重新调垫片。3.2 刚度标定实验怎么做的标定实验的目的是测出实际刚度曲线和理论设计值之间的偏差。方法是给关节输出端接一个六维力/力矩传感器固定在一个伺服加载台上扫掠滑块位置和关节角度两个维度记录力矩数据。标定的流程是这样将滑块固定在某个位置比如刚度最小、中间、最大三档记录关节角-扭矩曲线每个滑块位置下关节角度从-20°到20°以2°/s慢速扫掠力矩和角度同步采集对每个滑块位置拟合力矩-角度曲线的局部斜率得到K_eq(滑块位置)回归出K_eq与滑块位移的关系曲线与理论值对比实测结果里中间两档的刚度和理论值重合得比较好偏差在8%以内但最小刚度和最大刚度这两端偏差到了15%左右。原因是两端处凸轮轮廓的曲率变化大滑动摩擦对力臂映射的影响被放大了。处理办法是对凸轮轮廓做了两次修正迭代第一次按理论误差反相修轮廓第二次在实物上测完再微调最后把全行程误差压到了10%以内。3.3 动态性能测试与数据解读刚度标定通过之后真正考验驱动器的是动态性能。我们跑了三组动态实验阶跃响应实验、变刚度切换实验、落地冲击模拟实验。阶跃响应实验在三种刚度档位下给相同的角度阶跃指令10°记录实际角度响应。结果高刚度档下超调量约18%调节时间约120 ms低刚度档下几乎没有超调但调节时间拉长到210 ms。这说明刚度低的时候系统阻尼比相对变大但是自然频率下降明显响应变慢。为了兼顾我们在控制环里加入了一个基于刚度档位查表的PD变参数策略低刚度时提高微分增益把调节时间拉回140 ms左右。落地冲击模拟实验这是我个人觉得最有说服力的实验。用一个落锤机构在关节输出端突然施加一个峰值约15 N·m的冲击力矩对比刚性驱动和变刚度驱动器在冲击下的表现指标刚性驱动变刚度驱动器低刚度档冲击力矩峰值16.8 N·m9.2 N·m传动链最大加速度冲击高谐波减速器实测敲击声明显中低无异响冲击恢复时间仅靠电流环抑制约250 ms弹簧吸收后约90 ms恢复电机侧峰值电流12.5 A7.8 A这个对比表基本就是变刚度驱动器价值的最直观证明冲击力矩峰值削掉了45%电机峰值电流降了37%。对电机和减速器寿命来说这是两倍以上的寿命提升。这个实验做完之后我们团队内部一致认为这条技术路线值得继续走下去。3.4 能效对比实验拿数据说话变刚度还有一个常被忽略的优点省电。双足机器人最大的能耗来自摆动腿的加速减速和支撑腿的悬吊做功。在刚性驱动下每次摆动末期减速都会让电机做负功这部分能量通过驱动器发热耗散掉。而加入弹性环节后制动阶段的动能可以部分储存在弹簧里在下一步启动时释放出来实现跨步态周期的能量循环。我们做了个简单的能效测试用同一套测试平台相同的步态轨迹分别用刚性模式和变刚度模式驱动同一台仿人踝关节测消耗电流。结果变刚度模式比刚性模式平均功耗降低了约22%在1.5 Hz步频工况下节省的功率约6.8 W。换算成一块500 Wh的电池相当于延长了约10分钟的行走续航。这个数据在整机层面大概能省出4%~5%的总体电量对于腿足机器人来说已经是相当可观的优化空间了。4. 实验中的坑问题排查与调试技巧4.1 刚度调节滞后根源在间隙与摩擦首轮样机联调时发现一个奇怪的现象刚度调度器发号施令滑块移动到位的瞬间关节刚度并没有立刻变化而是延迟了大约150 ms才逐渐体现出来。开始以为是滑块驱动电机响应慢后来排查发现根源是凸轮滑块和导轨之间有微小的间隙加上润滑脂在低温下黏度变大滑块在运动末端发生了“蠕动”和回弹导致刚度没有精确复现。解决办法分三层机械上把间隙收到0.02 mm并加预紧滚子电气上把刚度调解电机的控制环从开环改成闭环用微型直线编码器做滑块位置反馈调度算法上增加了到位后的“微调驻留”滑块到达目标后多给50 ms做位置修正。三层叠加之后刚度调节的总延迟压到了60 ms以内够用了。4.2 负载下刚度“悄悄变软”的问题这个坑是我们在整机联调时才暴露的。静态标定的时候刚度数据完美但一装上整条腿、带负载走起来踝关节在支撑相明显感觉“软了”。后来分析是负载导致输出杠杆发生了微小的变形等效于把力臂略微撑大刚度随之下降。这不是故障而是结构刚度有限导致的必然现象。解决思路不是把杠杆做厚做重而是修改凸轮轮廓在预测负载变形范围内反向补偿。做法很简单在负载工况下重新标定一遍刚度曲线然后和空载曲线对照把误差反算到凸轮轮廓修正量里。这本质上是一轮“负载校准”而不是设计返工。不过说实话这个方法有适用范围如果负载变化范围太大单一补偿轮廓是不够的我们就得考虑加反馈闭环了。4.3 共振调试模态测试简单有效装到整机后第一次跑动态实验在2 Hz附近出现了明显的共振整条腿抖得厉害传感器数据全是毛刺。初步怀疑是弹簧模块本身的固有频率和步态频率产生了耦合。没有直接去改机械而是先做了个简单的锤击模态测试用冲击锤敲击驱动器输出端在法兰上贴加速度计采了频响数据。结果显示主共振频率在2.3 Hz正好落在步态的二次谐波范围内。对症的办法不是去改刚度而是增加阻尼。我们在弹簧基座和壳体之间加了一层0.5 mm厚的粘弹性阻尼垫共振峰的幅值下降了60%。顺便说一下这个操作成本极低但对稳定性的改善立竿见影强烈建议所有做弹性关节的人都在结构里预留阻尼材料的安装位。4.4 控制上的交叉耦合如何解耦变刚度驱动器的位置控制和刚度控制实质上是耦合的。滑块移动时改变了力臂会反过来影响关节平衡位置关节输出扭矩变化时也会通过弹性元件回推滑块位置。这种双向耦合如果不管调试中就会发现位置和刚度两个环互相干扰极限工况下甚至会产生振荡。我在控制上做一个简化处理把刚度环的带宽设为位置环带宽的1/5以下。这样刚度调节相对于位置控制来说足够“慢”在位置环的时间尺度上可以认为刚度是恒定的耦合变成准静态问题。再辅以前馈补偿根据当前关节角速度计算滑块反推力并补偿到刚度调节指令里。这个简化让控制器的调试难度大幅度降低实测下来系统的鲁棒性也够用。5. 项目落地后的几点体会最后分享几条偏经验层面的东西不一定写进论文但对实操很有用。第一变刚度驱动器的设计过程中弹簧的选型和计算永远比电机选型更影响最终效果。很多人第一眼把注意力放在电机扭矩上最后发现瓶颈全在弹簧的线性度、疲劳寿命和温度漂移上。弹簧不是标准件要预留足够的定制空间和时间。第二模块化设计真的要贯彻到底特别是电气接口和机械接口的统一。我们做到最后发现能快速替换的模块让所有实验迭代都快了很多。坏一个零件换一个模块半小时可以继续跑实验如果是整体返工一个下午就没了。第三标定数据一定要留档。每次改装配、换弹簧、调预紧力之后刚度曲线都会有一点变化留着每次的标定曲线对比着看能很快发现异常是出在机械磨损、装配偏移还是弹簧疲劳上。第四和仿真模型的偏差不要怕。我们第一轮仿真的刚度和实测差了接近20%一开始以为是机构问题折腾了半天才发现是仿真里弹簧约束简化过头了。把仿真模型里的弹簧端部约束从固定改成带间隙的线接触之后偏差立刻缩小到了5%以内。仿真工具只能辅助判断趋势最终效果必须靠实测。这个驱
上一篇/下一篇内容由系统自动关联 返回资讯列表 →