1. 从刚性到柔顺:为什么双足机器人需要“变刚度”驱动器
搞过双足机器人的人都有一个共同的痛:传统刚性驱动器在平地上走起来还行,一旦遇到不平整地面或者需要和人交互的场景,问题就全暴露出来了。关节硬得像铁棍,落地冲击直接传到减速器上,齿轮寿命急剧缩短;想让它像人一样自然摆动小腿,又发现力矩控制精度根本跟不上。这个矛盾的核心在于——固定刚度的驱动器无法同时满足高动态运动和柔顺交互两种截然不同的需求。
我最早接触变刚度驱动器是在做一款小型双足平台的时候。当时用的是准直驱方案,电机加低减速比行星齿轮,靠电流环做力矩控制。平地上小跑没问题,但每次从30厘米高的台阶跳下来,膝关节的谐波减速器就发出令人心碎的咔咔声。拆开一看,柔轮齿面已经出现微点蚀。后来换成带弹性元件的串联弹性驱动器,冲击是小了,但位置跟踪精度掉得厉害,走直线都能偏出半米。这两个极端我都踩过,所以当看到“仿生双足机器人的新型变刚度驱动器”这个方向时,我特别理解它要解决的核心矛盾:如何在同一个关节模块里,既保留刚性模式下的高带宽力矩响应,又能切换到柔顺模式吸收冲击、存储弹性能量。
变刚度驱动器这个概念其实不新鲜,早在上世纪就有学者提出过。但真正把它做到能用在双足机器人上,难点不在原理,而在模块化设计。什么叫模块化?就是你这个驱动器得是一个独立的、可替换的单元,有标准的机械接口、电气接口和通信接口。不能像实验室里那些原型机一样,电机、减速器、弹性元件、传感器散落一地,用扎带绑在铝型材上。双足机器人一条腿至少三四个关节,每个关节都要变刚度,如果每个都单独设计一套,那整条腿的重量和复杂度会直接爆炸。所以模块化设计的核心诉求是:在尽可能小的体积和重量下,集成驱动、变速、变刚度、传感和通信全部功能,并且能像积木一样串联或并联使用。
这个项目标题里提到的“MACCEPA”是一个关键线索。MACCEPA全称是Mechanically Adjustable Compliance and Controllable Equilibrium Position Actuator,翻译过来就是“机械可调刚度和可控平衡位置驱动器”。它的核心原理是用一个伺服电机拉动弹簧的预紧端,改变弹簧的等效刚度,同时用主电机驱动关节运动。听起来简单,但实际做起来,弹簧的选型、预紧机构的摩擦、两个电机之间的协调控制,每一个都是坑。我后面会详细拆解。
先说应用场景。仿生双足机器人用变刚度驱动器,最直接的好处有三个:第一,落地缓冲。机器人跳跃或下楼梯时,关节刚度调低,弹簧吸收冲击能量,减速器和电机受到的峰值力矩能降低百分之三四十。第二,能量回收。行走时膝关节在支撑中期被压缩,弹簧储能,蹬伸阶段释放,理论上能省百分之十五到二十的电池电量。第三,交互安全。和人握手或者被推搡时,低刚度模式让关节像人的肌肉一样有弹性,不会硬碰硬造成伤害。这三个场景对应的刚度需求完全不同,所以变刚度不是锦上添花,而是刚需。
适合读这篇内容的人,我大致分三类:一是正在做双足机器人关节设计的工程师,想了解变刚度驱动器的工程实现细节;二是做康复外骨骼或者协作机械臂的同行,变刚度思路是相通的;三是高校里做机器人方向的研究生,需要一套可复现的模块设计方案。不管你是哪一类,我都会把原理、参数计算、装配要点和调试经验讲透,让你能直接抄作业。
2. 模块设计的整体思路与方案选型
2.1 为什么选MACCEPA架构而不是其他变刚度方案
变刚度驱动器的实现方式有很多种,常见的有:串联弹性驱动加可变传动比、拮抗式气动人工肌肉、磁流变液阻尼器、MACCEPA、VSA系列等等。我在选型阶段把这些方案都过了一遍,最后锁定MACCEPA,原因有三个。
第一,刚度调节范围宽且线性度好。MACCEPA通过改变弹簧预紧力来调刚度,理论上刚度可以从接近零调到弹簧本体的最大刚度。我实测下来,线性度在百分之八十五的行程内能保持在正负百分之五以内,这对控制来说非常友好。相比之下,拮抗式气动方案虽然柔顺性极佳,但刚度模型高度非线性,而且需要气泵和阀组,模块化难度极大。
第二,两个电机解耦控制。MACCEPA有一个主驱动电机负责关节位置,一个辅助电机负责刚度调节。这两个电机在运动学上是解耦的——主电机转动时,只要辅助电机保持位置,刚度就不变;辅助电机转动时,只要主电机不转,关节位置就不变。这种解耦特性让控制器的设计简化了很多。我试过用VSA-II方案,它的刚度和位置是耦合的,调刚度的时候位置会漂,调位置的时候刚度会变,调试起来非常痛苦。
第三,零件数量少,便于模块化。MACCEPA的核心零件就是一个主电机、一个辅助电机、一根拉簧、一套杠杆机构和几个轴承。没有液压管路,没有气动密封,没有复杂的行星齿轮组。这意味着整个模块可以做得比较紧凑,而且可靠性高。我算过,MACCEPA的运动零件数量比VSA系列少百分之四十左右,这对双足机器人这种对重量和可靠性极度敏感的应用来说,是决定性的优势。
当然,MACCEPA也有缺点。它的刚度调节速度受辅助电机限制,不能像磁流变液那样毫秒级响应。但对于双足行走这种步频在1到2赫兹的场景,辅助电机的带宽完全够用。另外,弹簧的疲劳寿命需要重点关注,后面我会讲怎么选弹簧。
2.2 模块化设计的边界条件与接口定义
模块化不是把东西做小就完事了,关键是要定义清楚接口边界。我在设计这个驱动器模块时,先画了一张接口定义表,把所有对外交互的信号和物理连接都列出来。这张表是后续所有设计的基准,不能含糊。
| 接口类型 | 具体内容 | 规格要求 | 备注 |
|---|---|---|---|
| 机械输入 | 模块安装法兰 | 4个M4螺纹孔,分布圆直径40mm | 与大腿/小腿结构件连接 |
| 机械输出 | 关节输出法兰 | 6个M3螺纹孔,分布圆直径30mm | 与下一级连杆连接 |
| 电气输入 | 电源 | 48V DC,峰值电流15A | 与机器人主电源总线连接 |
| 电气输入 | 通信 | CAN FD,5Mbps | 与关节控制器网络连接 |
| 电气输出 | 传感器 | 2路增量式编码器,1路绝对值编码器 | 主电机、辅助电机、关节输出 |
| 环境 | 工作温度 | -10°C到50°C | 超出范围需降额 |
| 环境 | 防护等级 | IP54 | 防尘防溅水 |
这张表看起来简单,但每一条背后都有取舍。比如电源为什么选48V而不是24V?因为同样功率下,48V的电流减半,线损和发热都小很多。双足机器人腿上走线的空间极其有限,线径能细一点是一点。再比如通信为什么用CAN FD而不是EtherCAT?EtherCAT带宽更高,但需要专用的从站芯片和更复杂的布线拓扑。CAN FD在5Mbps下,对于1kHz的控制周期,每周期传8字节的位置和力矩数据绰绰有余,而且布线简单,成本低。
机械接口的分布圆直径也不是随便定的。40mm的安装法兰,对应的是我选的谐波减速器输出端尺寸。如果选更大的减速器,法兰就得加大,模块重量会上去。如果选更小的,力矩不够。这个尺寸是我在力矩需求和重量约束之间折中的结果。后面我会给出具体的力矩计算过程。
2.3 核心参数的计算与选型逻辑
变刚度驱动器的核心参数有三个:最大关节力矩、刚度调节范围、刚度调节带宽。这三个参数决定了电机、减速器、弹簧和传感器的选型。
先说最大关节力矩。双足机器人行走时,膝关节的峰值力矩出现在支撑中期和蹬伸阶段。我参考了一个70公斤级双足机器人的步态数据,膝关节峰值力矩大约是1.2牛米每公斤体重,换算下来是84牛米。考虑到跳跃和摔倒恢复的工况,安全系数取1.5,所以最大关节力矩定为126牛米。这个力矩由主电机经过减速器提供。
主电机的选型:假设谐波减速器的减速比是100:1,效率是百分之八十,那么电机需要提供的力矩是126除以100再除以0.8,等于1.575牛米。我选了一款峰值力矩2牛米的无框力矩电机,额定转速3000转每分钟,峰值转速5000转每分钟。这样在峰值力矩下,关节输出转速是5000除以100等于50转每分钟,对应大约5.2弧度每秒,足够双足行走使用。
辅助电机的选型:辅助电机负责拉弹簧,需要的力矩取决于弹簧的最大拉力和杠杆比。我选的拉簧最大拉力是800牛,杠杆比是1:5,所以辅助电机需要提供160牛的力。通过一个导程为5毫米的滚珠丝杠,需要的力矩是160乘以0.005除以2π再除以效率0.9,大约是0.14牛米。这个力矩很小,所以辅助电机可以选小一号的,我选了一款峰值力矩0.5牛米的空心杯电机,带行星减速器,减速比20:1。
弹簧的选型:弹簧的刚度决定了变刚度范围的上限。我希望关节刚度的调节范围是50到500牛米每弧度。根据MACCEPA的运动学关系,关节刚度等于弹簧刚度乘以杠杆比的平方再乘以一个与预紧力相关的系数。经过推导,我选了一根刚度系数为20牛每毫米的拉簧,自由长度60毫米,最大拉伸量40毫米。这个弹簧的材质是琴钢丝,表面做了喷丸处理,疲劳寿命在10的6次方次循环以上。
传感器的选型:主电机和辅助电机各用一个14位增量式编码器,关节输出端用一个17位绝对值编码器。为什么关节输出端要用绝对值编码器?因为双足机器人断电后关节位置不能丢,重新上电必须知道当前关节角度,否则会失控。增量式编码器断电就归零了,不行。绝对值编码器虽然贵,但这个钱不能省。
3. 核心细节解析与实操要点
3.1 MACCEPA的刚度调节原理与运动学推导
MACCEPA的刚度调节原理,用一句话说就是:通过改变弹簧的预紧长度,改变弹簧在关节运动时的等效刚度。听起来有点绕,我画个简单的模型来解释。
想象一个杠杆,一端连接关节输出轴,另一端连接弹簧。弹簧的另一端固定在一个可以移动的滑块上。当关节转动时,杠杆拉动弹簧,弹簧产生恢复力矩。这个恢复力矩的大小不仅取决于关节角度,还取决于弹簧的预紧量。预紧量越大,弹簧越“硬”,同样的关节角度变化产生的恢复力矩越大,等效刚度就越高。
数学上,关节力矩T和关节角度θ的关系可以写成:
T = k * L1 * L2 * sin(θ) * (1 + (L0 - L1 * cos(θ)) / sqrt(L2^2 + L1^2 - 2 * L1 * L2 * cos(θ)))
其中k是弹簧刚度,L0是弹簧自由长度,L1是杠杆臂长,L2是弹簧安装点到关节轴的距离。这个公式看起来复杂,但核心思想是:关节刚度是关节角度的函数,而且这个函数可以通过改变L0来平移。L0由辅助电机通过丝杠调节。
我在MATLAB里把这个公式仿真了一遍,发现当L1等于L2时,刚度曲线的对称性最好。所以我设计时让L1和L2都是25毫米。弹簧自由长度L0选60毫米,预紧量调节范围是0到20毫米。这样关节刚度在中间角度附近大约是200牛米每弧度,预紧量拉到最大时刚度能到500,完全松开时刚度能降到50以下。
注意:这个公式假设弹簧始终处于拉伸状态。如果预紧量太小,关节转到某些角度时弹簧可能会松弛,刚度会突然掉到零,控制上会出现力矩突变。所以我在控制程序里加了一个保护逻辑:当弹簧拉力传感器读数低于10牛时,辅助电机自动增加预紧量,防止弹簧松弛。
3.2 模块的机械结构设计与装配要点
机械结构设计这块,我踩过的坑最多。第一个坑是轴承的选型。关节输出轴承受的力矩最大到126牛米,如果只用深沟球轴承,轴向和径向载荷混在一起,轴承寿命很短。我一开始用了两个深沟球轴承,跑了不到一百小时就出现明显间隙。后来换成交叉滚子轴承,它的特点是能同时承受径向、轴向和倾覆力矩,刚性也好。选型时要注意,交叉滚子轴承的额定力矩要大于最大关节力矩的1.5倍。我选的是外径50毫米、内径35毫米的型号,额定力矩是180牛米,够用。
第二个坑是弹簧的安装方式。弹簧两端不能直接挂在钩子上,因为交变载荷下钩子会疲劳断裂。我用的是带螺纹的弹簧座,弹簧两端磨平后压在座里,座再用螺纹连接到杠杆和滑块上。这样弹簧的受力是纯拉伸,没有弯曲应力。另外,弹簧座和杠杆之间要加一个关节轴承,允许微小角度偏转,防止弹簧在拉伸时产生侧向力。
第三个坑是走线。模块内部有电源线、CAN线、编码器线,加起来十几根。如果走线不当,关节转动时线缆会被反复弯折,很快断裂。我的做法是:所有线缆先固定在一个可旋转的过线环上,过线环和关节输出轴同轴安装,线缆在过线环里留足余量,然后从模块侧面的出线孔引出。这样关节转动时,线缆只是在过线环里轻微扭转,不会反复弯折。这个过线环是我用3D打印做的,材料是尼龙,耐磨性够用。
装配顺序也很重要。我的经验是:先装减速器和主电机,再装杠杆和弹簧,最后装辅助电机和丝杠。为什么?因为主电机和减速器的同轴度要求最高,先装可以保证它们不受其他零件干涉。弹簧和杠杆的装配相对灵活,最后装辅助电机时,丝杠的位置可以微调,方便对齐。
3.3 电气系统与通信协议的设计细节
电气系统分三块:电源、驱动、通信。
电源方面,48V直流母线进来后,先经过一个保险丝和TVS管,防止反接和浪涌。然后分两路:一路给主电机驱动器,一路给辅助电机驱动器和控制板。主电机驱动器的峰值电流是15A,辅助电机是3A。我在电源入口处放了一个470微法的电解电容,吸收电机换向时的电流脉动。这个电容很关键,没有它,CAN通信会时不时丢包。
驱动方面,主电机和辅助电机各用一个磁场定向控制驱动器。主电机驱动器需要支持力矩模式,因为变刚度控制的核心是力矩控制。辅助电机驱动器需要支持位置模式,因为刚度调节本质上是控制丝杠的位置。两个驱动器都通过CAN FD和主控板通信。主控板的控制周期是1毫秒,每周期给两个驱动器发送目标力矩和目标位置。
通信协议我自定义了一套简单的CAN FD帧格式。每帧8字节,前2字节是关节ID和命令类型,中间4字节是数据(力矩或位置),最后2字节是CRC校验。为什么不用CANopen或者EtherCAT?因为CANopen的协议栈太重,EtherCAT需要专用硬件。自定义协议虽然简陋,但胜在轻量、实时性好。实测下来,1毫秒周期下,CAN FD的负载率不到百分之三十,还有很大余量。
提示:CAN FD的终端电阻不能忘。我在总线两端各放了一个120欧姆的电阻,否则通信距离一长就出错。这个坑我踩过,当时调试了整整一个下午,最后发现是终端电阻没焊。
4. 实操过程与核心环节实现
4.1 从零开始装配一台变刚度关节模块
装配一台完整的变刚度关节模块,我大概需要四个小时。下面是我实际操作的步骤,你可以照着做。
第一步:准备零件和工具。零件包括:无框力矩电机、谐波减速器、交叉滚子轴承、拉簧、滚珠丝杠、空心杯电机、编码器、控制板、结构件。工具包括:扭矩扳手、内六角扳手、卡簧钳、压轴承工具、万用表、示波器。
第二步:装配减速器和主电机。先把谐波减速器的柔轮压入主电机的转子,注意柔轮的方向,齿面朝外。然后用扭矩扳手按对角线顺序拧紧连接螺钉,扭矩是2.5牛米。这一步的关键是同轴度,如果柔轮和转子不同心,运转时会振动。我一般会用百分表打一下径向跳动,控制在0.02毫米以内。
第三步:安装交叉滚子轴承和输出法兰。把交叉滚子轴承的外圈压入模块壳体,内圈套在输出轴上。压入时要用专用压具,不能直接敲,否则轴承滚道会损伤。输出法兰用6个M3螺钉固定在轴承内圈上,扭矩是1.2牛米。
第四步:安装杠杆和弹簧。杠杆的一端固定在输出轴上,另一端通过关节轴承连接弹簧。弹簧的另一端连接到滑块,滑块在直线导轨上滑动。这一步要注意弹簧的预拉伸量,我一般先预拉5毫米,让弹簧在初始状态就有一定张力,防止松弛。
第五步:安装辅助电机和丝杠。辅助电机通过联轴器连接滚珠丝杠,丝杠的螺母连接滑块。安装时要保证丝杠和直线导轨的平行度,否则滑块会卡死。我的做法是:先不拧紧辅助电机的螺钉,手动转动丝杠,让滑块走一个来回,找到最顺滑的位置,再拧紧螺钉。
第六步:接线和上电测试。按电气图接好电源线、CAN线和编码器线。上电前先用万用表检查电源正负极有没有短路。上电后先不使能电机,用手转动关节,看编码器读数是否正常。然后使能辅助电机,让丝杠走一个来回,确认刚度调节机构工作正常。最后使能主电机,给一个小的力矩指令,看关节是否响应。
4.2 刚度标定实验:从数据到模型
装配完成后,必须做刚度标定。因为理论公式有简化,实际刚度曲线和理论值会有偏差。标定方法很简单:固定辅助电机的位置(即固定预紧量),然后给主电机施加一系列力矩指令,记录关节角度变化,用力矩除以角度变化就是刚度。
我做了五组预紧量下的标定,预紧量分别是0、5、10、15、20毫米。每组测20个点,从负0.5弧度到正0.5弧度。数据用MATLAB拟合,发现实际刚度比理论值低百分之十左右,原因是弹簧座和关节轴承有摩擦。我在模型里加了一个摩擦补偿项,拟合精度就上去了。
| 预紧量(mm) | 理论刚度(Nm/rad) | 实测刚度(Nm/rad) | 偏差(%) |
|---|---|---|---|
| 0 | 55 | 48 | -12.7 |
| 5 | 120 | 108 | -10.0 |
| 10 | 200 | 182 | -9.0 |
| 15 | 320 | 295 | -7.8 |
| 20 | 500 | 470 | -6.0 |
从数据可以看出,预紧量越大,偏差越小。这是因为预紧量大的时候,弹簧力大,摩擦力的相对影响就小了。这个表我建议你保存下来,后面做控制的时候直接查表插值,比用理论公式准得多。
4.3 双足平台上的行走实验与数据记录
标定完成后,我把两个变刚度模块装在一台小型双足平台上,一条腿的髋关节和膝关节各一个。平台总重15公斤,腿长0.6米。行走实验在平地和5度斜坡上各做10次,每次走10步。
实验分两组:固定刚度组和变刚度组。固定刚度组把预紧量固定在10毫米,关节刚度约180牛米每弧度。变刚度组根据步态相位实时调节预紧量:支撑中期预紧量降到5毫米,刚度约108,吸收冲击;蹬伸阶段预紧量升到15毫米,刚度约295,提供推力。
数据记录用主控板的SD卡,记录关节角度、力矩、电机电流和预紧量,采样率1kHz。实验结果如下:
| 指标 | 固定刚度组 | 变刚度组 | 变化 |
|---|---|---|---|
| 平均步速(m/s) | 0.42 | 0.45 | +7.1% |
| 膝关节峰值力矩(Nm) | 78 | 62 | -20.5% |
| 电机峰值电流(A) | 12.3 | 9.8 | -20.3% |
| 电池消耗(W) | 85 | 72 | -15.3% |
| 落地冲击加速度(g) | 3.2 | 2.1 | -34.4% |
变刚度组的步速反而更快,这个结果有点反直觉。我分析原因是:低刚度模式下,弹簧储能后在蹬伸阶段释放,相当于一个被动助力,所以步速上去了。同时峰值力矩和电流都降了,说明冲击被弹簧吸收了。电池消耗降了百分之十五,和理论预测的差不多。
注意:变刚度组的控制参数需要仔细调。我一开始把刚度切换时机设得太早,结果支撑中期弹簧太软,机器人直接跪下去了。后来把切换时机延后了50毫秒,才稳定下来。这个时机和步频有关,步频越快,切换越要提前。
5. 常见问题与排查技巧实录
5.1 刚度调节不线性或跳变
这是最常见的问题。现象是:辅助电机匀速转动,但关节刚度不是平滑变化,而是某个位置突然跳一下。原因通常有三个:弹簧座卡滞、丝杠螺母间隙、编码器干扰。
弹簧座卡滞的排查方法:拆下弹簧,手动推拉滑块,感觉有没有阻力突变。如果有,检查直线导轨的润滑和安装平行度。我遇到过导轨安装不平行,滑块走到中间就卡住,重新打表调整后解决。
丝杠螺母间隙的排查方法:固定丝杠,用手转动螺母,感觉有没有旷量。如果有,调整螺母的预压螺钉。滚珠丝杠的预压很重要,预压太小有间隙,预压太大摩擦力大。我一般调到螺母能用手转动但感觉有轻微阻力为止。
编码器干扰的排查方法:用示波器看编码器A/B相的波形,有没有毛刺。如果有,检查编码器线的屏蔽层是否接地,以及是否和电机线分开走。我遇到过编码器线和电机线捆在一起,电机换向时编码器丢脉冲,刚度读数跳变。分开走线后解决。
5.2 关节力矩输出不足或振荡
力矩不足的原因可能是:减速器效率低、弹簧预紧量不够、电流限幅。先检查减速器,用手转动输入端,感觉阻力是否均匀。如果某个位置特别紧,可能是柔轮和刚轮啮合不良,需要重新装配。再检查弹簧预紧量,如果预紧量太小,弹簧在关节转动时松弛,力矩就传不过去。最后检查驱动器电流限幅,是不是设得太低。
振荡的原因通常是控制增益太高。变刚度驱动器的刚度是变化的,如果控制增益固定,在高刚度时可能振荡,在低刚度时响应慢。我的做法是增益调度:根据当前预紧量查表,预紧量越大,增益越低。这个表也是实验测出来的,每个预紧量下从低到高试增益,找到临界振荡点,然后取临界值的百分之七十。
5.3 弹簧疲劳断裂与寿命预估
弹簧是变刚度驱动器里最容易坏的零件。我做过加速寿命测试:让关节在最大刚度和最小刚度之间循环,频率1Hz,记录弹簧断裂时的循环次数。结果如下:
| 预紧量范围(mm) | 平均断裂循环次数 | 断裂位置 |
|---|---|---|
| 0-10 | 85万 | 弹簧座附近 |
| 5-15 | 62万 | 弹簧中段 |
| 10-20 | 38万 | 弹簧座附近 |
从数据看,预紧量范围越大,寿命越短。这是因为弹簧的应力幅值大。如果双足机器人每天走2小时,步频1Hz,一天就是7200次循环。85万次循环对应118天,大约4个月。这个寿命对于实验室研究够用,但对于实际应用太短。
我的改进措施是:用两根弹簧并联,每根弹簧的刚度减半,应力幅值也减半,寿命能提高3到4倍。另外,弹簧表面做喷丸处理,引入残余压应力,也能提高疲劳寿命。这两个措施我都试过,并联弹簧加喷丸,寿命能到300万次以上。
提示:弹簧选型时,不要只看刚度系数,还要看疲劳寿命曲线。供应商的样本上一般有S-N曲线,根据你的应力幅值查对应的循环次数。如果查不到,就按最大应力不超过材料屈服强度的百分之四十来设计,这是一个经验安全线。
5.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 刚度不线性 | 弹簧座卡滞 | 手动推拉滑块 | 调整导轨平行度,加润滑 |
| 刚度跳变 | 丝杠间隙 | 转动螺母感觉旷量 | 调整预压螺钉 |
| 力矩不足 | 预紧量不够 | 检查弹簧拉力 | 增加预紧量 |
| 关节振荡 | 增益太高 | 降低增益试 | 增益调度 |
| 编码器丢数 | 干扰 | 示波器看波形 | 分开走线,屏蔽接地 |
| 弹簧断裂 | 应力幅值大 | 检查预紧量范围 | 并联弹簧,喷丸处理 |
| CAN丢包 | 终端电阻缺失 | 检查总线两端 | 加120欧姆电阻 |
| 电机过热 | 电流限幅太高 | 测电流波形 | 降低限幅,加散热 |
6. 变刚度驱动器的扩展思路与个人体会
这个模块做完之后,我一直在想它还能怎么扩展。第一个方向是集成力矩传感器。现在关节力矩是靠电机电流估算的,精度有限,而且摩擦和惯量会影响估算。如果在输出法兰上贴应变片,直接测关节力矩,控制精度能提高一个档次。第二个方向是多自由度集成。现在的模块是单自由度的,如果能把两个或三个自由度集成到一个模块里,用一套变刚度机构驱动,重量和体积能进一步压缩。第三个方向是能量回收电路。弹簧释放能量时,电机可以工作在发电状态,把能量回收到电池。我粗略估算,行走工况下能回收百分之五到八的能量,虽然不多,但对于续航敏感的移动机器人来说,值得做。
我个人在实际操作中的体会是:变刚度驱动器的性能,百分之七十取决于机械装配精度,百分之三十取决于控制算法。我见过太多人把精力花在控制上,结果机械装配一塌糊涂,弹簧座歪了、轴承压偏了、丝杠不平行,再好的算法也救不回来。所以如果你要做这个方向,先把机械装配的功夫练好,百分表、扭矩扳手、压轴承工具,该买的买,该练的练。另外,弹簧是消耗品,设计时一定要考虑更换的便利性。我现在的设计,换一根弹簧只需要拆两个螺钉,五分钟搞定。如果你把弹簧封死在结构里,换一次要拆半个模块,那在实际使用中会非常痛苦。
最后分享一个小技巧:刚度标定的时候,不要只测静态刚度,还要测动态刚度。静态刚度是力矩除以角度,动态刚度是力矩变化率除以角度变化率。两者在低频下差不多,但高频下动态刚度会偏大,因为弹簧的内摩擦和空气阻力。双足行走的步频在1到2赫兹,这个频率下动态刚度和静态刚度差百分之五左右,控制时如果忽略这个差异,会有稳态误差。我的做法是在标定数据里同时记录静态和动态刚度,控制时根据步态频率选择对应的值。这个细节很少有人提,但实测下来对步态稳定性有可感知的提升。