【导语】人形机器人抓取玻璃杯(bēi)时,关节过“硬”易打翻,过“软”难稳定抓取。为解决此类难题,HPM MCL v2 电机控制库集成轻量级力位混合控制器,让关节“可软可硬”,在不同任务阶段按需切换,确保接触过程平滑可预测。它究竟如何实现?又有着怎样的实际效果?
想象这样一个场景:你的人形机器人正在弯腰拾起一个玻璃杯。如果关节太“硬”,手一碰到杯子就急停,可能打翻它;如果太“软”,又会陷进去,无法稳定抓取。理想的执行器,应该像人的手臂——既能稳稳托住物体,又能顺应外力微调姿态。
这正是力位混合控制(Hybrid Force-Position Control)要解决的核心问题。
在人形机器人这种带减速器的高动态关节中,开发者常面临两难:
- 纯位置控制太“硬”:接触瞬间产生电流尖峰,易触发过流保护,机械冲击大;
- 纯力/电流控制太“软”:难以维持期望姿态,容易漂移,缺乏“支撑感”。
为平衡这两者,我们在 HPM MCL v2 电机控制库中集成了轻量级力位混合控制器。它不改变现有 FOC 电流环架构,仅在上层增加一个外环,即可让关节具备可调的刚度与阻尼,在精确跟踪与环境顺应之间找到最佳平衡点。
更关键的是:在“抓取/接触”这类任务里,关节并不存在唯一的最佳刚度。
- 接触与对齐阶段更需要柔顺(低刚度)来降低冲击、避免打滑或卡死;
- 抓稳与支撑阶段更需要稳定(高刚度)来维持姿态、承载负载。
力位混合控制让执行单元具备这种“刚度可调”的能力:不是在硬/软之间二选一,而是按任务阶段切换到合适的状态。
它解决的是执行单元的真实工程痛点
当关节需要与外界接触(地面、桌面、人体、装配件等),若只追求位置刚性,系统往往会出现:
- 接触瞬间的力矩/电流尖峰,带来热应力与保护风险;
- 因阻尼不足或速度噪声引发振荡、“弹跳”;
- 接触后位置难以收敛,要么抖动,要么持续偏移。
力位混合控制的价值在于:在不改动底层驱动的前提下,为执行单元增加一层可控的“阻抗行为”。无论外部扰动如何变化,关节都能按预设的刚度和阻尼响应,使接触过程更平滑、更可预测。
在“大小脑”架构中的定位:属于执行单元侧
在典型的人形机器人分层控制架构中:
- 大脑(任务层) 负责感知与决策,如“抓杯子”“迈步上台阶”;
- 小脑(运动规划层) 将任务转化为关节轨迹、末端力目标或全身优化指令;
- 执行单元(伺服驱动层) 则负责将这些目标高速、稳定地转化为电机电流。
HPM MCL v2 的力位混合控制明确归属于执行单元侧。它不参与任务规划,也不决定“该施加多大的力”,而是接收上层给出的期望位置、速度(以及可选的前馈力矩),在电机侧实时合成一个符合设定刚度/阻尼特性的力矩指令,并通过 FOC 电流环精准执行。
简言之:上层决定“想要什么”,我们负责把它稳定、安全、可控地做出来。
注:虽然“阻抗(kàng)控(kòng)制(zhì)”与(yǔ)“导(dǎo)纳(nà)控(kòng)制(zhì)”在(zài)理(lǐ)论(lùn)层(céng)面(miàn)常(cháng)被(bèi)区(qū)分(fēn),但(dàn)在(zài)实(shí)际(jì)系(xì)统(tǒng)中(zhōng),只(zhǐ)要(yào)采样率与带宽匹配,二者可通过数学变换等效。对执行(xíng)单(dān)元(yuán)而(ér)言(yán),最(zuì)终(zhōng)落(luò)地(de)需(xū)要(yào)一(yī)个(gè)高(gāo)带(dài)宽(kuān)、带(dài)限(xiàn)幅(fú)与(yǔ)滤(lǜ)波(bō)的(de)力(lì)矩(ju)执(zhí)行(xíng)链(liàn)路——这(zhè)正(zhèng)是(shì)本(běn)方(fāng)案(àn)的(de)定(dìng)位(wèi)。
核(hé)心(xīn)思(sī)想(xiǎng):让(ràng)关节(jié)“可(kě)软(ruǎn)可(kě)硬(yìng)”,且(qiě)行(xíng)为(wèi)一(yī)致(zhì)
力(lì)位(wèi)混(hùn)合(hé)控(kòng)制(zhì)的(de)本(běn)质(zhì),是(shì)将(jiāng)位(wèi)置(zhì)误(wù)差(chà)和(hé)速(sù)度(dù)误(wù)差(chà)映(yìng)射(shè)为(wèi)力(lì)矩(ju)输(shū)出(chū)
输(shū)出(chū)力(lì)矩(ju) = 刚(gāng)度(dù)(kp) × 位(wèi)置(zhì)误(wù)差(chà) + 阻(zǔ)尼(ní)(kd) × 速(sù)度(dù)误(wù)差(chà) + 前(qián)馈(kuì)力(lì)矩(ju)(tau_ff)
其(qí)中(zhōng):
- Kp 决(jué)定刚度:值越大,抵抗外力变形的能力越强;
- Kd 决定阻尼:值越大,运动越平稳,抑制振荡;
- tau_ff 为可选前馈力矩,用于补偿重力或惯性项。
执行单元将输出力矩除以电机转矩常数 Kt,得到 q 轴电流指令,交由 FOC 电流环执行。整个过程可在微秒级完成,确保阻抗行为实时响应。
这里要强调的是:低刚度与高刚度都是正常系统状态。
- 低刚度适合“触碰/对齐/人机交互”等需要顺应的阶段;
- 高刚度适合“抓稳/定位/支撑”等需要稳态保持的阶(jiē)段(duàn)。
力(lì)位(wèi)混(hùn)合(hé)控(kòng)制(zhì)的(de)价(jià)值(zhí)在(zài)于(yú)让(ràng)这(zhè)种(zhǒng)行(xíng)为(wèi)“可(kě)调(diào)且(qiě)一(yī)致(zhì)”,并(bìng)在(zài)执(zhí)行(xíng)层(céng)用(yòng)限(xiàn)幅(fú)/滤(lǜ)波(bō)把(bǎ)它(tā)做(zuò)得(de)可(kě)控(kòng)、可实现。
为什么 HPM 芯片能高效支持这一功能?
力位混合控制虽逻辑简洁,但对计算实时性与控制带宽要求高。先楫高性能 RISC-V MCU 为此提供了关键硬件支撑:
- 主频高达 800MHz 以上,确保外环控制周期可短至 1μs;
- 内置硬件加速 FOC 单元,减轻 CPU 负担;
- 高精度同步 ADC 与 PWM 触发机制,保障电流环与位置环的严格时序对齐。
得益于此,开发者无需牺牲现有 FOC 架构,仅需调用一个函数,即可启用可调阻抗行为。
在 HPM SDK 中如何快速集成?
我们已在 hpm_sdk_extra 仓库中提供完整的力位混合控制示例,集成过程极为简洁,仅需四步:
- 从编码器读取当前关节位置 q 与速度 dq;
- 调用mcl_hybrid_ctrl_step(),传入期望位置/速度、刚度 Kp、阻尼 Kd(以及可选前馈力矩),即可获得目标力矩tau_cmd;
- 根据电机转矩常数 Kt,计算 q 轴电流指令:iq_cmd = tau_cmd / Kt;
- 调用hpm_mcl_loop_set_current_q(iq_cmd),交由底层 FOC 电流环执行。
整个外环逻辑不到十行代码,却能让原本“非(fēi)硬(yìng)即(jí)刚(gāng)”的(de)伺(cì)服(fú)系(xì)统,具备按需调节的柔顺交互能力——无需改动现有驱动架构,开箱即用。
实际效果一:面对“穿墙指令”,谁更聪明?
为了直观展示力位混合的价值,我们设计了一个典型场景:上层控制器给出一个“穿过物理限位”的目标位置(例如指令要求转到 1.2 rad,但机械限位在 1.0 rad)。这在抓取、装配或足式行走中非常常见。
我们并排对比三种策略:
- 左:传统位置控制(固定高增益)
- 中:力位混合 + 低刚度(适用于接触、对齐阶段)
- 右:力位混合 + 高刚度(适(shì)用(yòng)于(yú)抓(zhuā)稳(wěn)、支(zhī)撑(chēng)阶(jiē)段(duàn))

图中关键信息已标注(zhù):
- 灰(huī)色(sè)粗(cū)线(xiàn):物(wù)理(lǐ)限(xiàn)位(wèi)(无(wú)法(fǎ)越(yuè)过(guò))
- 红(hóng)色(sè)虚(xū)线(xiàn):上(shàng)层(céng)给(gěi)出(chū)的(de)“穿(chuān)墙(qiáng)”目(mù)标(biāo)位(wèi)置(zhì)
- 底(dǐ)部(bù)数(shù)字(zì):顶(dǐng)墙(qiáng)后(hòu)关节(jié)稳(wěn)定(dìng)输(shū)出(chū)的(de)力(lì)矩(ju)值(zhí)(单(dān)位(wèi):N·m)
可(kě)以(yǐ)看(kàn)到(dào):
- 传(chuán)统(tǒng)位(wèi)置(zhì)控(kòng)制(zhì)持(chí)续(xù)输(shū)出(chū)接(jiē)近(jìn)限(xiàn)幅(fú)的(de)力(lì)矩(ju)(约(yuē) 0.60 N·m),相(xiāng)当(dāng)于(yú)“死(sǐ)命(mìng)顶(dǐng)墙(qiáng)”,既浪费能量,又增加电流与发热风险;
- 力位混合控制则根据设定刚度,自动收敛到合理的稳态力矩:
- 低刚度模式仅输出约 0.20 N·m,轻柔贴合;
- 高刚度模式输出约 0.50 N·m,提供强支撑。
这意味着:同一个执行单元,可在不同任务阶段动态切换“手感”——接触时柔顺,抓持时稳固,全程不超限、不失稳。
实际效果二:突加外力冲击,谁更稳健?
再看一个更贴近真实世界的场景:在稳定运行中,关节突然受到外部扰动(例如人手推一下,或机器人脚踩到石子),我们模拟为 +0.5 N·m 的阶跃力矩,持续 100ms。

对比结果如下:
| 模式 | 峰值输出力矩 (N·m) | 最大位置偏转 (°) |
|---|
| 传统位置控制 | 0.60(已达限幅) | 2.66 |
| 力位混合(低刚度) | 0.41 | 10.28 |
| 力位混合(高刚度) | 0.54 | 6.41 |
表面看,低刚度偏转更大,但这恰恰是主动顺应的表现:它通过允许可控的微小位移,显著降低了力矩峰值和电流冲击。而传统位置控制因“拒绝任何偏移”,反而被迫输出最大力矩对抗扰动,极易触发过流保护。
在实际应用中,你完全可以:
- 接触/探索阶段:启用低刚度,提升安全性与适应性;
- 作业/支撑阶段:切换至高刚度,保证精度与刚性。
这种“按需调节”的能力,正是力位混合控制的核心优势。