想象这样一个场景:你的人形机器人正在弯腰拾起一个玻璃杯。如果关节太“硬”,手一碰到杯子就急停,可能打翻它;如果太“软”,又会陷进去,无法稳定抓取。理想的执行器,应该像人的手臂——既能稳稳托住物体,又能顺应外力微调姿态。
这正是 力位混合控制(Hybrid Force-Position Control) 要解决的核心问题。
在人形机器人这种带减速器的高动态关节中,开发者常面临两难:
为平衡这两者,我们在 HPM MCL v2 电机控制库中集成了轻量级力位混合控制器。它不改变现有 FOC 电流环架构,仅在上层增加一个外环,即可让关节具备可调的刚度与阻尼,在精确跟踪与环境顺应之间找到最佳平衡点。
更关键的是:在“抓取/接触”这类任务里,关节并不存在唯一的最佳刚度。
力位混合控制让执行单元具备这种“刚度可调”的能力:不是在硬/软之间二选一,而是按任务阶段切换到合适的状态。
当关节需要与外界接触(地面、桌面、人体、装配件等),若只追求位置刚性,系统往往会出现:
力位混合控制的价值在于:在不改动底层驱动的前提下,为执行单元增加一层可控的“阻抗行为”。无论外部扰动如何变化,关节都能按预设的刚度和阻尼响应,使接触过程更平滑、更可预测。
在典型的人形机器人分层控制架构中:
HPM MCL v2 的力位混合控制明确归属于执行单元侧。它不参与任务规划,也不决定“该施加多大的力”,而是接收上层给出的期望位置、速度(以及可选的前馈力矩),在电机侧实时合成一个符合设定刚度/阻尼特性的力矩指令,并通过 FOC 电流环精准执行。
简言之:上层决定“想要什么”,我们负责把它稳定、安全、可控地做出来。
注:虽然“阻抗控制”与“导纳控制”在理论层面常被区分,但在实际系统中,只要采样率与带宽匹配,二者可通过数学变换等效。对执行单元而言,最终落地需要一个高带宽、带限幅与滤波的力矩执行链路——这正是本方案的定位。
力位混合控制的本质,是将位置误差和速度误差映射为力矩输出
输出力矩 = 刚度(kp) × 位置误差 + 阻尼(kd) × 速度误差 + 前馈力矩(tau_ff)
其中:
执行单元将输出力矩除以电机转矩常数 Kt,得到 q 轴电流指令,交由 FOC 电流环执行。整个过程可在微秒级完成,确保阻抗行为实时响应。
这里要强调的是:低刚度与高刚度都是正常系统状态。
力位混合控制的价值在于让这种行为“可调且一致”,并在执行层用限幅/滤波把它做得可控、可实现。
力位混合控制虽逻辑简洁,但对计算实时性与控制带宽要求高。先楫高性能 RISC-V MCU 为此提供了关键硬件支撑:
得益于此,开发者无需牺牲现有 FOC 架构,仅需调用一个函数,即可启用可调阻抗行为。
我们已在 hpm_sdk_extra 仓库中提供完整的力位混合控制示例,集成过程极为简洁,仅需四步:
整个外环逻辑不到十行代码,却能让原本“非硬即刚”的伺服系统,具备按需调节的柔顺交互能力——无需改动现有驱动架构,开箱即用。
为了直观展示力位混合的价值,我们设计了一个典型场景:上层控制器给出一个“穿过物理限位”的目标位置(例如指令要求转到 1.2 rad,但机械限位在 1.0 rad)。这在抓取、装配或足式行走中非常常见。
我们并排对比三种策略:

图中关键信息已标注:
可以看到:
这意味着:同一个执行单元,可在不同任务阶段动态切换“手感”——接触时柔顺,抓持时稳固,全程不超限、不失稳。
再看一个更贴近真实世界的场景:在稳定运行中,关节突然受到外部扰动(例如人手推一下,或机器人脚踩到石子),我们模拟为 +0.5 N·m 的阶跃力矩,持续 100ms。

对比结果如下:
| 模式 | 峰值输出力矩 (N·m) | 最大位置偏转 (°) |
|---|---|---|
| 传统位置控制 | 0.60(已达限幅) | 2.66 |
| 力位混合(低刚度) | 0.41 | 10.28 |
| 力位混合(高刚度) | 0.54 | 6.41 |
表面看,低刚度偏转更大,但这恰恰是主动顺应的表现:它通过允许可控的微小位移,显著降低了力矩峰值和电流冲击。而传统位置控制因“拒绝任何偏移”,反而被迫输出最大力矩对抗扰动,极易触发过流保护。
在实际应用中,你完全可以:
这种“按需调节”的能力,正是力位混合控制的核心优势。
全部0条评论
快来发表一下你的评论吧 !