ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

仿生双足机器人新型变刚度驱动器模块设计与实验复盘

仿生双足机器人新型变刚度驱动器模块设计与实验复盘 做双足机器人这些年最让我难受的其实不是它站不起来而是每次落地那一下整条腿都在替你把冲击硬扛下来。刚性驱动器位置精度确实漂亮可一旦遇到真实地面、下楼梯、跳落这些场景峰值冲击力会顺着结构直接打到关节内部轻则震动噪声大重则减速器寿命肉眼可见地缩短。所以当朋友问我“仿生双足机器人的新型变刚度驱动器的模块设计与实验”这个项目到底值不值得做时我的回答很直接值得而且越早做越有优势。这篇内容就是复盘我们做这一整套变刚度驱动模块的真实过程包括需求拆解、原理推导、模块化结构落地、控制策略、实验数据和调试教训。适合正在做足式机器人关节驱动、变刚度执行器或者仿生机器人硬件设计的同行参考也适合研究生拿来做课题设计时少走点弯路。1. 为什么双足机器人需要“可软的腿”需求拆解1.1 刚性驱动在着地瞬间的“硬伤”先回忆一个物理事实冲击力大小跟接触瞬间的等效刚度关系极大。刚性驱动输出端的等效刚度由电机、谐波减速器和高刚度结构串联而成数值非常高。一旦脚掌与地面接触后速度瞬间被约束为零整条传动链被“憋住”冲击力从地面沿着肢体向上传递在没有缓冲环节时几乎全部被关节结构吸收。我们上一版刚性腿做重复落地测试大概一周之后谐波减速器的柔轮出现了明显的背隙增大输出轴晃动肉眼可见。原因不是减速器选得不对而是高刚度状态下每一次冲击都让减速器内部零件承受极端的瞬时负载。这个现象启发了我们重新思考位置控制精度高不等于关节能承受冲击足式机器人真正需要的是可控的柔顺能力而不是一味刚。从控制层面看刚性驱动器的力响应速度确实快但它的力矩控制带宽高系统阻尼往往很低。落地瞬间想要通过控制律主动卸掉冲击通常来不及传感器采样、状态观测、力矩指令下发至少要几个毫秒而地面接触的冲击过程往往只有几十毫秒。与其靠算法“事后补救”不如让机械结构从源头就具备缓冲能力这是变刚度驱动器存在的第一个理由。1.2 肌肉的启示刚度不是固定值人体膝关节在走路时支撑相和摆动相的刚度感觉完全不一样。落地时膝盖微微屈曲股四头肌做离心收缩整个下肢像一组柔顺弹簧蹬地推进时膝关节又迅速变刚把肌肉收缩的力量有效传递到地面。也就是说生物体天然就在执行“刚度调度”不同时刻用不同刚度来适应不同任务。这也是为什么很多足式机器人项目会向生物结构取经。肌肉肌腱的刚度调节并不是通过某个单一关节实现的而是通过肌丝重叠状态、肌腱弹性和神经激活程度的共同作用。工程上的变刚度驱动模块本质上就是把这种“可调弹性”用机械方式复现让关节在需要缓冲时软下来在需要支撑和推进时硬起来。对双足机器人来说这个矛盾尤其突出。因为它不像四足机器人那样有多条腿分担载荷双足着地瞬间几乎全部冲击都落在同一条腿上而且摆动腿又需要快速精确地完成摆动这要求关节在高刚度模式下保持足够的控制带宽。一个方案是增加高带宽力控算法但机械刚度的灵活可调才是更根本的解决思路。1.3 从需求到设计指标的拆解做硬件设计不能停留在“要有弹性”这种感性的目标上。我们的做法是把需求拆成四个可量化的维度。首先是驱动性能腿关节在行走中需要大约30到50牛·米的峰值扭矩支撑相瞬时可能更高所以我们给髋和膝关节定的峰值输出是40牛·米左右额定输出约15牛·米。其次是刚度调节性能。根据零力矩点和地面冲击的仿真统计我们希望模块的等效关节刚度能从低刚度的60牛·米每弧度附近连续调节到高刚度的350牛·米每弧度上下覆盖至少5到6倍的变化范围并且刚度切换时间要控制在100毫秒以内否则步态周期里来不及完成缓冲和发力两个阶段。第三是模块化程度。不能为髋关节做一个结构、为膝关节又做一个完全不同的结构那样不仅成本高维护也麻烦。我们要求同一款变刚度驱动模块能同时适配髋关节和膝关节只要更改软件里的安装方向和限位参数即可。第四是重量和体积。腿部关节做模块化设计很容易超重刚性关节模块保守设计也要1.5到2公斤变刚度机构还要叠加额外结构。我们把单模块重量目标定在2.3公斤以内直径控制在110毫米左右这个量级才能让双足整机维持在合理的总重里。这一组数字看似简单但它决定了后面所有机械结构、电机选型和弹簧设计的取舍方向。2. 变刚度驱动方案选型为什么是杠杆式而非串联弹性或拮抗式2.1 几种主流变刚度路线对比变刚度驱动器的工程实现有很多路线真正听完原理之后你会发现没有哪一个是全面最优的每一种都是在某个维度上做出取舍。为了让选型决策有据可依当时我们把几种主流方案拉到一起做了对比。串联弹性驱动器SEA本质上是在电机和谐波减速器之后加一个固定刚度的弹簧。它做柔顺控制很容易但因为弹簧刚度是固定的系统无法在“高位置精度”和“低冲击刚度”之间切换属于“固定变刚度”而非真正的刚度可调。后来有一些项目给SEA加了弹簧预紧调节机构变成可变刚度SEA结构复杂度和控制难度都会上升。拮抗式变刚度方案参考了生物肌肉的成对驱动思想两群肌肉反向拉扯通过改变两侧驱动器的出力来改变关节等效刚度。这种方式原理优雅、响应快但代价是每个关节需要两套电机和减速器重量和体积直接翻倍在双足机器人这种对腿重极其敏感的场景里很难接受。凸轮式变刚度利用凸轮轮廓的非线性变形关系实现刚度变化结构紧凑、刚度调节范围大但凸轮的曲面设计对加工精度要求极高公差稍差一点实测刚度和理论曲线的偏差就会非常明显调试成本不低。我们最终用的是杠杆式变刚度原理是改变弹簧作用点到关节轴线的力臂长度从而改变整个机构的等效刚度。这条路线结构不复杂、刚度变化范围宽、机械刚度和控制回路相对解耦对加工的宽容度也更高比较适合双足机器人这种既要刚度范围又要可靠性的场景。2.2 杠杆式变刚度的力学原理杠杆式变刚度的核心逻辑并不难理解。关节转角产生一个很小的位移变化后该位移通过杠杆机构放大或缩小传递给弹性元件弹性元件产生的反力再通过杠杆作用回输出端。由于力臂长度可以直接调整机构整体的“转角输入到力输出”的增益就会变化表现出的等效关节刚度也随之变化。在小角度近似下如果弹簧线性刚度为k杠杆力臂长度为r关节到弹簧的机构传动比为i等效刚度可以近似写成K_eq ≈ k × (r × i)^2这个公式说明了一个重要现象刚度与力臂长度呈平方关系而不是线性关系。也就是说只要把杠杆的力臂从10毫米调整到20毫米等效刚度理论上就能变化大约4倍如果把行程做得更大刚度范围更可观。这正是杠杆式机构适合做宽范围刚度调节的原因同时也提醒我们调节机构非常敏感力臂长度差个零点几毫米实测刚度就可能偏差明显加工精度必须保证。在结构实现上我们采用了两根对称布置的圆柱螺旋弹簧一个弹簧负责推一个弹簧负责拉这能抵消一部分侧向力减少杠杆机构里的偏载。力臂调节由一个带行星减速箱的小型直流伺服电机驱动丝杠滑块实现滑块移动时直接改变弹簧作用点到输出轴线的距离。整个调节机构虽然是机械连续的但实际使用时只需要锁定到若干个常用刚度档位避免因丝杠背隙导致的位置漂移。2.3 调节响应速度与输出扭矩的矛盾刚度调节机构的响应速度和输出扭矩之间有一个绕不开的矛盾。如果要让模块在100毫秒内从低刚度切换到高刚度调节电机需要很小的转动惯量和很高的峰值转速但丝杠滑块调节机构本身有一定质量想让它快速移动又需要更大的电机扭矩电机一大惯量又会跟着上去。我们在设计权衡时没有追求极致的切换速度而是把目标定为80毫秒左右完成整个力臂行程的调节。这个数字已经足够覆盖双足行走中支撑相初期到支撑相中期的缓冲到发力转换也不至于因为切换太快而激起机构振荡。最终选用的调节电机是一个外径30毫米左右的小型无刷电机配13比1的行星减速箱带动4毫米导程的滚珠丝杠实测力臂全行程移动时间大约在70到90毫秒之间。另一个值得关注的细节是刚度调节机构在输出高刚度时承受的负载很大但它本身处在弹簧和后端结构之间并不直接传递电机驱动扭矩。所以调节电机可以选得相对小不需要按照关节驱动电机的功率等级去设计这是杠杆式方案相比拮抗式方案的一大优势。整个模块的总重量也因此能控制在合理范围没有出现“为了调刚度反而背上两套电机”的尴尬。3. 模块化结构设计的关键工程细节3.1 模块化的边界划分模块化设计的第一步不是画图而是想清楚“哪些东西必须放进模块里哪些东西应该留在外面”。我们的原则是凡是与关节执行直接相关的组件全部集成进模块包括驱动电机、谐波减速器、变刚度机构、编码器、弹簧、力传感器接口和一部分驱动电路而中央控制器、电源管理和主要通信网关留在机身。这样的划分带来的最大好处是每个变刚度关节模块在外部看就是一个“标准化传动件”它有一个输入法兰、一个输出法兰和一个统一的电气接口。输入法兰连接到上一级结构输出法兰连接小腿或大腿一根多芯电缆从输出轴中心孔穿过同时承载电源、CAN总线和温度信号。拆装一个关节模块不需要动整条腿现场维护效率明显提升。模块外壳我们用了7075铝合金关节内部的支撑架使用3D打印的高强度尼龙材料减重。外部法兰的安装螺纹孔全部采用相同规格的M5螺栓分布圆保证同一个模块既可以作为髋关节安装也可以作为膝关节安装。实际做下来单个模块加电控板的重量大约在2.1到2.3公斤符合上文定下的设计目标。3.2 电机、减速器与刚度范围的匹配计算驱动端的选型计算并不复杂但很容易忽略匹配关系。我们按照峰值输出40牛·米、减速器减速比50比1来反推电机侧需要提供大约0.8牛·米的峰值扭矩考虑谐波减速器效率之后预留1.5倍安全系数电机峰值扭矩选型在1.8牛·米左右额定扭矩约0.6牛·米电压48伏峰值转速6000转/分以上。谐波减速器是我们特意选的一种高刚性型号因为变刚度模块在高刚度模式下整体刚度不能比减速器柔轮自身刚度更高减速器如果不够刚变刚度机构做得再好也会被减速器变形拖累。这个点很多资料不会写但实际测试中发现低刚度模式下谐波减速器柔轮的扭转刚度经常大于弹簧结构的刚度反而问题不大高刚度模式下如果柔轮刚度不足整机等效刚度始终上不去。刚度覆盖范围的计算要回归到弹簧刚度和力臂行程上。我们选用单根20牛每毫米的对称圆柱弹簧杠杆力臂从8毫米调节到20毫米结合杠杆机构本身约4倍的关节到位移传动比等效刚度覆盖范围大约为60到350牛·米每弧度。实测标定值和理论计算值在中等和高刚度段吻合得不错低刚度段偏差稍大原因出在机构摩擦和预压缩量的影响上。这里要特别提醒一句变刚度模块的刚度标定不能完全依赖理论公式弹簧的制造公差、杠杆支点的接触状态、安装预紧力都会显著改变最终刚度曲线。设计时留出约20%的调节冗余量标定后再去校准档位对应的力臂位置是最可靠的做法。3.3 传感器配置与电气架构变刚度驱动模块的传感器配置比普通关节模块要复杂一些。除了驱动电机端的光电编码器外我们在输出端还加了一个绝对值磁编码器用来感知关节绝对位置分辨率约19位。用于刚度标定的弹簧位移传感器放在弹簧座侧面采用磁致伸缩线性传感器实时回传弹簧压缩量从而让控制器能够估算当前实际的等效刚度。电气架构上每块模块内置一个微控制器负责电流环、速度环、刚度环的运算同时也兼做温度采集和故障诊断。通信采用CAN总线中央控制器以1千赫兹频率发送期望刚度和位置指令模块内部电流环频率4千赫兹。对比过EtherCAT方案之后我们认为CAN对中小型双足机器人已经够用而且成本更低、接线更简单。电源方面驱动电机的高压母线、逻辑电源和调节电机电源分别供电避免驱动电机电流波动干扰到逻辑电路。在调试过程中这种隔离优势非常明显——电机堵转瞬间的数字信号干扰问题几乎消失排查通信故障的时间大幅缩短。3.4 结构轻量化与机械公差控制变刚度模块最容易被低估的是机械公差和装配工艺。力臂调节机构的丝杠滑块如果存在0.1毫米的径向间隙刚度标定曲线就会有明显的非线性突变表现为某个刚度区间内输出扭矩出现“台阶”。我们在装配时专门做了预压调整工艺让滑块在全部行程范围内保持均匀接触阻力消除大部分横向间隙。轻量化的核心则在于减重但不去刚性。驱动器外壳的受力路径尽量设计成直接闭环电机的反扭矩和负载扭矩通过短路径回到法兰面上避免让壳体薄弱部分承担力矩。有限元分析在这个阶段很有价值我们第二轮结构的重量比第一轮下降了18%但关节刚度反而更好了原因就是把材料加在了受力路径和加强筋上而不是平均加厚。装配顺序也值得注意。变刚度模块必须先调好弹簧预紧再安装谐波减速器最后合上端盖固定编码器线束如果顺序反了很容易出现弹簧座卡滞或者编码器读数跳变的问题。这些经验在当时没有记录在图纸上后来全部作为装配工艺文档写进了项目组算是踩坑留下的财富。4. 驱动器的控制策略与刚度调度4.1 刚度-位置双环控制变刚度驱动模块在控制上可以理解为一个具备“刚度自由度”的关节执行器控制器不再是简单的目标位置加力矩而是同时给定期望位置和期望刚度。我们的控制器采用双层结构内环是调节电机的电流环和速度环负责把力臂精确驱动到指定位置外环是关节电机的电流环和位置环负责执行末端轨迹。刚度调度本身并不依赖复杂算法核心就是“看当前步态阶段决定力臂应该停在哪个位置”。由于力臂位置与等效刚度有一一对应关系控制器会将期望刚度转换为力臂目标位置然后由调节电机执行。这个过程中的最大问题是刚度指令和关节位置指令之间的耦合如果两个环路的带宽相差太近容易出现振荡。我们在仿真和样机中都验证过稳定性最好的配置是关节位置环带宽约15赫兹调节电机的带宽约25赫兹保证刚度响应比位置响应更快这样关节位置控制才不会因为刚度变化而产生异常振颤。如果调节速度太慢落地瞬间刚度还是高的那变刚度就失去了意义。4.2 按步态相位调度刚度实际行走中刚度调度的基本原则可以总结成三段式。支撑相刚开始着地的阶段我们希望关节呈现低刚度让腿像弹簧一样吸收地面冲击支撑相中期到蹬地阶段刚度切换到高值把身体重量稳定支撑并有效推进摆动相阶段关节又回到中等偏高刚度保证摆腿快速且轨迹精确。在一个完整步态周期里切换不是阶跃执行的。刚度直接从60牛·米每弧度跳到350牛·米每弧度会产生一个瞬态冲击这个冲击来源于变刚度机构内部预紧状态的快速改变对机械结构和整机稳定性都不友好。我们采用S形曲线作为刚度指令的过渡函数切换时间设置在60到100毫秒之间实际测试中整机姿态基本没有因为刚度切换产生明显扰动。一个值得记录的细节是不要让刚度调度跟步态相位识别完全绑定。如果脚掌打滑或者地形突然变化步态相位判断本身就会出错刚度指令也会跟着错。我们的做法是给刚度调度单独设置一个“安全下限”只要检测到异常冲击或足底力信号瞬变刚度调度器立即优先切到低刚度模式而不是等待相位机更新。4.3 仿真模型与参数验证正式做机械加工前我们在Simulink中搭建了包含变刚度模块机电参数、弹簧特性、步态相位机的仿真模型。模型里最关键的两个参数是等效刚度和阻尼比因为它们直接影响着地瞬态过程和支撑相的控制余量。仿真的一个重要发现是刚度切换频率如果接近关节-腿部系统的固有频率会引发明显的自激振荡特别是在低刚度模式下腿部像一个柔软弹簧固有频率往往落在3到8赫兹的范围内恰好是步态切换的敏感区间。解决办法有两类一是提高阻尼二是让刚度切换速度避开固有频率附近。实际调试中我们采用了第二类办法并配合刚度指令的S形平滑振荡问题被压到了可接受范围。模型里我们还加入了一个挺关键的小模块用来判断每个刚度档位下电机电流环是否饱和。如果期望刚度过高而当前负载又很大调节电机可能无法维持力臂位置这时需要主动降低刚度请求避免机构“顶死”。这个保护逻辑后来在硬件测试中确实触发过几次成功避免了两组丝杠过载。5. 实验设计标定、冲击测试与整机验证5.1 刚度标定与重复性实验模块做出来之后第一个实验就是刚度标定。我们把输出端固定通过力矩传感器施加已知扭矩记录不同力臂位置下的角度-力矩曲线拟合后得到等效刚度。初步实测结果是最低档位刚度约58牛·米每弧度最高档位约410牛·米每弧度线性度在主要工作区间内都超过了0.99与理论设计值接近。重复性测试做了30轮循环结果显示刚度误差在低刚度档位大约5%以内高刚度档位在3%以内。高刚度段误差更小是符合预期的因为在力臂较大时同样的滑块位移误差占比更小。测试后我们把每个常用刚度档位对应的力臂目标位置固化进控制器只要模块按照标定值运行就能保证整只腿的左右关节刚度匹配。5.2 单关节落地冲击对比单关节冲击实验是验证变刚度效果最直观的方式。我们将模块水平放置输出端装上模拟小腿让小腿从一个固定高度自由落下撞击刚性地面分别记录刚性锁止模式和低刚度模式下的峰值冲击力矩和振动衰减时间。实测数据很有说服力刚性模式下冲击力矩峰值大约是低刚度模式的1.8倍而且整个结构的振动衰减时间要长得多。换句话说低刚度模式把落地的冲击峰值削掉了将近一半同时能快速恢复到稳定状态这对双足机器人支撑期的稳定至关重要。数据上看变刚度确实不是障眼法机械层面的柔顺缓冲效果非常明显。我们还留意到另一点低刚度模式虽然降低了冲击峰值但如果一直保持低刚度支撑相的位置跟随误差会明显变大脚步会感觉“发软”。这恰好印证了刚度调度的必要性——不能只软不硬也不该只硬不软。5.3 双足整机行走与下阶测试单关节测试通过后我们把四个变刚度模块分别装在双足实验平台的两条腿上尝试组合行走。整机重量总体接近设计值行走速度虽然不算快大约每秒0.3米但落地过程明显比刚性腿更安静力传感器记录到的地反力曲线也平缓不少。最值得记录的是下阶测试从5厘米高的台阶落下来低刚度模式吸收冲击后没有出现刚性腿那种“轰”的一声整机姿态也没有发生明显弹跳。当然问题也存在比如左右关节刚度如果不完全一致下阶瞬间会有一个侧向扭转倾向这让我们在后续迭代中特别强调左右腿模块的刚度标定一致性。功耗对比上低刚度模式在着地阶段减少了电机瞬时功率但整体折算下来并没有革命性的能耗下降毕竟冲击能量有一部分转化为弹簧内部热损耗而不是全部回收。不过对双足机器人来说能耗并不是第一优先级结构寿命和稳定性的提升才是变刚度给整机带来的核心价值。5.4 实验数据汇总为了便于后续研究和对比我把实验的主要数据整理成了一张表。注意这些数据来自我们的样机不同弹簧刚度、不同结构尺寸的模块会有所差异但量级和趋势是具备参考意义的测试项目刚性模式变刚度低档变刚度高档备注冲击力矩峰值相对值1.000.550.92低刚度模式冲击最小振动衰减时间相对值1.000.431.05低刚度模式收敛最快支撑相位置误差弧度0.0080.0210.009低刚度模式精度下降刚度切换时间毫秒不适用8088高刚度切换稍慢总质量公斤不适用不适用2.2包含电控板6. 调试中最容易翻车的几个工程问题6.1 丝杠背隙导致刚度档位漂移变刚度模块调试过程中最头疼的问题一度是力臂调节机构丝杠背隙引发的刚度漂移。低刚度档位下弹簧预紧力对丝杠有一个持续的反向推力如果丝杠自锁性不足滑块位置会随着振动缓慢移动等效刚度慢慢变大。我们最开始没发现这个问题直到连续运行半小时后刚度标定值掉了将近15%才意识到是机械层面的位置漂移。解决方案是给调节电机增加“终端锁定”控制逻辑滑块到位后电流环持续输出一个微小的维持力矩让丝杠始终压在螺纹的同一侧消除背隙影响。另一个更彻底的改进是换用大导程滚珠丝杠加电磁抱闸但那样会增加重量后来权衡下来还是维持力矩方案性价比更高。6.2 编码器同轴度与零位标定编码器安装同轴度是每次装模块都要反复确认的环节。同轴度偏差一毫米以上绝对值编码器在旋转过程中就会输出周期性偏差转速越低压得越明显表现在控制上就是低速位置跟随的“呼吸感”排查起来极其烧脑。我们后期把编码器安装工艺写死了先用专用工装压在轴上再点胶固定固化后要复测读取数据稳定性模块每次上电后还会执行一次零位标定让力臂机构主动压到机械硬限位后返回以此校准零位漂移。这一步听着小但真的能省掉大量夜间调试时间。6.3 刚度指令平滑切换与非预期振荡刚度指令的平滑性直接影响整机稳定性这点必须重点强调。第一次做行走测试时我们图简单用了方波形式的刚度切换结果每次切换瞬间都能听到关节内部“咔哒”一声机身姿态也会出现轻微弹跳。后来在仿真中确认这是刚度突变激起机构固有频率响应不是控制参数没调好。改成S形平滑切换后弹跳消失整机行走姿态的顺滑度显著提升。建议所有做变刚度驱动器的同行都直接在控制器里内置平滑函数省得每次换步态都要重新处理这个问题。平滑时间和步频要联动设计步频越快切换时间应越短但总归要保持在60毫秒以上的物理下限。6.4 多模块通信时序与同步性双足机器人一条腿同时用两个变刚度模块再加上另一条腿就是四个模块CAN总线上出现了一个容易被忽略的问题四个模块同时收到刚度指令时如果帧调度顺序不好另一个关节的刚度变化会导致电机电流突变进而干扰总线上的其它通信帧指令周期就开始抖动。我们的解决办法是把四个变刚度模块的同步控制帧集中分配在固定时隙同时降低非关键数据如温度、诊断信息的发送频率。CAN总线虽然在机器人里不算新东西但在变刚度模块这种多自由度、多控制环路协同的场景下时序设计比协议本身更重要。调试日志显示调整后指令周期从平均1.8毫秒恢复到了1毫秒左右行走测试的机身抖动也明显减少。回头复盘整个项目我觉得变刚度驱动器不是一个简单的机械改动它把“刚度”从被动特性变成了主动可控量这让双足机器人的运动控制多了一个维度同时也逼着你重新审视机械公差、控制带宽和通信时序这些原本可能不用深究的细节。如果后续迭代我最想增加的是可调阻尼通道因为落地缓冲里阻尼和刚度是共同作用的只调刚度不调阻尼始终有点“只压弹簧不踩刹车”的意思。这条路还长但方向已经清楚了。
返回列表