试想一支钢笔落在纸上的瞬间。笔尖在纸面游走,画出或直或弯的笔画——这是位置的自由。可如果你只敢“走位”、不敢“施压”,纸上只会留下一条若有若无的干痕;若你只顾用力按,笔尖又会划破纸张、溅出墨渍。真正会写字的人从不会刻意去“算”这两个动作:横向运笔归手腕,纵向施压归指腹,各司其职,又浑然一体。 机器人也面临同样的难题。让机械臂把销钉插进孔里、让打磨机沿着曲面抛光,它既要“走对位置”,又要“用对力道”。一味控位置,碰到障碍会硬顶;一味控力,轨迹又会漂移。力/位混合控制(Force/Position Hybrid Control),就是给机器人的每个自由度发一张“分工证”:该走位的方向交给位置环,该发力的方向交给力环,彼此不抢活、不打架。 这篇文章从写字切入,把力/位混合控制的概念、选择矩阵、控制架构、稳定性、性能优化和应用挑战逐一讲透,带你看懂机器人如何把“恰到好处”变成一条条控制律。
对 AI 从业者而言,力/位混合控制是机器人操作与具身智能的基石之一。理解它,你就能读懂机械臂柔顺作业的底层逻辑,也能在与物理交互相关的 AI 系统(装配、打磨、人机协作)中设计出更落地的控制与学习方案。
目录
可视化演示
演示机器人力/位混合控制原理:选择矩阵分解任务空间、力控与位控双环路协同、以及接触力与位置响应动态调节过程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
力/位混合控制架构 选择矩阵S将任务空间分解为力控子空间与位控子空间 力控环路通过力传感器反馈调节接触力 位控环路通过编码器反馈跟踪期望轨迹 τ = Jᵀ(S·Fₐ + (I−S)·Kₚ·Δx) 双环路协同实现柔顺接触与精确运动的统一
基本概念(对应思维导图一级分支 1)
第一次用钢笔的人多半会犯同一个错:紧握笔杆,每一笔都狠狠往下戳纸,结果不是笔尖劈叉,就是晕开一团墨。老师傅点破要害:“手腕管走位,指腹管施压。” 你这才发现,写字其实是两条并行的指令流:纸面内的横向运笔决定“写到哪”,垂直向下的指力决定“用多大力”——方向不同,目标不同,却在同一支笔上同时发生。
机器人面对的任务也有同样的结构。机械臂末端夹着打磨头或销钉,在空间中运动时,有些方向可以自由活动,比如沿工件表面的切向滑动;有些方向却被环境“顶住”,比如法向方向上一旦接触,就产生了力。力/位混合控制的核心,就是把末端任务空间按方向拆成两个互补的集合:位置控制子空间负责“去哪”,力控制子空间负责“用多大力”。
这种拆分有清晰的理论依据。环境对运动施加的限制称为自然约束:某个方向被环境限死,速度只能为零,而力可以自由增长;某个方向环境不设限,速度自由,而力恒为零。控制器要做的是在速度受限的方向上设定期望力,在速度自由的方向上设定期望轨迹,这两类人工约束与自然约束一一对应、恰好互补,实现了“每个方向都有人管,又没有人抢”。用维数语言表述,就是位置子空间与力子空间拼起来恰好铺满整个任务空间:
1. 自由度总数 n:$n$ 是末端任务空间中可控制的方向总数,例如六自由度机械臂末端可取 $n=6$。
2. 位置子空间:$\mathcal{V}_p$ 是所有采用位置控制的方向构成的集合,负责“走到哪”。
3. 力子空间:$\mathcal{V}_f$ 是所有采用力控制的方向构成的集合,负责“用多大力”。
4. 互补关系:两子空间维数之和恰等于总自由度,方向互不重叠、也无遗漏。
等你掌握了这份分工,笔尖自然就不抖了。老师那句“腕走准、指压稳”,其实就是力/位混合控制最朴素的口诀:走位的方向归位置管,发力的方向归力管。
选择矩阵(对应思维导图一级分支 2)
假如你左手拿笔、右手拿章,同时在一张纸上又写又盖,事先不分工,两只手会在同一个位置打起来。机器人的位置环和力环也一样,必须有一张“分工表”,在每个方向上都写清楚:这里归谁管。
这张分工表在数学上叫选择矩阵(Selection Matrix)$\mathbf{S}$。任务空间有 $n$ 个方向时,$\mathbf{S}$ 是 $n\times n$ 的对角矩阵,对角线元素只能取 0 或 1。$s_i=1$ 表示第 $i$ 个方向交给力控制环,$s_i=0$ 表示交给位置控制环。它就像给每个方向发一张通行证:方向不同,权限不同,但一个方向只拿得到一张证。
$\mathbf{S}$ 的设计原则是“一方向一模式”:位置控制和力控制不重叠、不遗漏。环境把哪个方向的运动限死了,那个方向就填 1 用力控;环境对哪个方向不设限,那个方向就填 0 用位控。以插销入孔为例:垂直于孔壁的两个方向受孔壁约束,$\mathbf{S}$ 对应元素为 1;沿孔轴线的进给方向需要跟踪轨迹,对应元素为 0。整个任务的柔顺性,全藏在这张小小的对角阵里。
1. 矩阵形式:$\mathbf{S}$ 是 $n\times n$ 对角矩阵,非对角线元素全为 0,表示各方向独立分配。
2. 二元取值:每个对角元 $s_i$ 只取 0 或 1,不允许中间值。
3. 力控方向:$s_i=1$ 时第 $i$ 个方向由力控制环接管。
4. 位控方向:$s_i=0$ 时第 $i$ 个方向由位置控制环接管。
笔尖之所以不打架,是因为大脑早就把“横向”和“纵向”的通行证分好了。机器人的选择矩阵,就是把这套潜意识的默契写成一张明明白白的表。
控制架构(对应思维导图一级分支 3)
回到写字。你的神经系统里其实跑着两条互不干扰的指令流:一条告诉手腕“下一笔画到哪”,一条告诉指腹“保持这个压强”。它们各自计算,最终在笔杆上汇合。力/位混合控制的架构,正是把这种“双通道并行”搬进了控制器。
架构由两条并列的回路组成。位置控制环接收期望位置指令,输出位置修正力;力控制环接收期望力指令,输出力修正力。两条回路的输出汇入选择矩阵这扇“分诊门”:$\mathbf{S}$ 放行力环在力控方向的输出,$\mathbf{I}-\mathbf{S}$ 放行位环在位控方向的输出。两路信号叠加后,再经坐标变换映射到各关节的力矩,驱动机械臂运动。
这套由 Raibert 与 Craig 于 1981 年提出的经典架构,其控制律写作:
1. 合成命令:$\mathbf{F}$ 是最终作用在末端执行器上的力/力矩向量。
2. 力通道项:选择矩阵 $\mathbf{S}$ 选中力控方向,放行力环输出的期望力指令 $\mathbf{F}_c$。
3. 位通道项:互补矩阵 $\mathbf{I}-\mathbf{S}$ 选中位控方向,放行位置环输出。
4. 位置增益与误差:$\mathbf{K}_p$ 是位置增益矩阵,$\Delta\mathbf{x}$ 是期望位置与实际位置的误差向量。
一横一竖,最终汇成一个完整的字。位置环和力环各写各的,再由选择矩阵合成,这就是“混合”的真正含义:并行、分工、合流。
稳定性分析(对应思维导图一级分支 4)
你有没有这样的经历:越想写稳,手反而越抖。笔尖刚触到纸面的一刹那,如果用力过猛,笔尖会弹起来再砸下去,留下一串“蚯蚓”般的抖动线。写字发抖,是因为“从悬空到接触”的状态切换没处理好。机器人也一样:在自由空间与接触空间之间的切换点,是稳定性风险最集中的地方。
力/位混合控制的稳定性风险主要来自三处。其一是接触稳定性:环境刚度越大,力环增益越难整定,增益偏大就会震荡,就像在钢板上写字远比在软垫上写字难稳。其二是切换稳定性:笔尖落纸的瞬间系统动力学突然改变,若没有过渡设计,力信号会在接触瞬间跳变。其三是参数敏感度:位置环与力环共用同一套机械臂,任一环增益变动都会通过动力学相互影响,鲁棒性差时一个小扰动就能诱发振荡。
工程上常用“刚度—阻尼匹配”的思想来分析。把接触过程近似成一个二阶系统,其中机器人自身刚度 $k_r$ 与环境刚度 $k_e$ 串联成等效刚度 $k_{eq}$:
1. 惯性项:$m\ddot{x}$ 是末端等效质量产生的惯性力,它决定了接触的动态快慢。
2. 阻尼项:$c\dot{x}$ 消耗接触能量,阻尼不足时系统会反复震荡。
3. 恢复项:$k_{eq}\,x$ 是接触面提供的弹性恢复力,把末端“推”回平衡位置。
4. 等效刚度:机器人刚度 $k_r$ 与环境刚度 $k_e$ 串联,二者中较小的一个主导接触特性。
5. 稳定条件:$m$、$c$、$k_{eq}$ 均为正时系统才稳定;力反馈符号接反会使等效刚度变负,系统立即发散。
稳定性分析的结论可以浓缩成一句话:给笔尖装一层合适的缓冲垫。阻尼足够大,笔尖轻轻落下;刚度匹配得当,接触不尖叫。机器人与世界打交道时的种种“发抖生病”,大多源于这三项系数失衡。
性能优化(对应思维导图一级分支 5)
会写字之后,追求就变成了“又快又稳又好看”。用力太保守,字迹发虚;用力太激进,墨水洇纸。高手的指尖总能在毫秒之间微调压力,机器人的性能优化也追求同样的细腻。
优化手段通常四管齐下。一是力位加权调节:在力控方向与位控方向之间分配优先级,装配时可以“先保护工件、再追求速度”。二是过渡过程优化:在自由空间到接触空间之间安排过渡指令,让期望力从零平滑爬升,而不是瞬间压满。三是柔顺增益整定:调节力环的比例、积分增益与位置环的刚度、阻尼,使系统获得理想的动态响应。四是前馈补偿:把期望力、重力、摩擦力等已知量直接前馈到指令中,减轻反馈环的负担。
其中,过渡过程优化最常用也最直观的手法叫“力斜坡”——接触前让期望力按斜坡逐渐升到目标值:
1. 最终目标力:$F_{target}$ 是接触稳定后要维持的期望接触力。
2. 斜坡时间:$t_{ramp}$ 是力从零升到目标值所用的时间,决定过渡的快慢。
3. 归一化因子:$\min(1,\ t/t_{ramp})$ 保证指令不超过目标力。
4. 平滑过渡:$F_d(t)$ 随时间连续爬升,避免接触瞬间的力冲击。
优化的终点,是一支笔在纸上流畅游走:起笔不重、行笔不抖、收笔不飘。它靠的不是某一招,而是权重、过渡、增益、前馈四件套的协同。
应用与挑战(对应思维导图一级分支 6)
“写字”这门手艺一旦离开书法台、走进工厂车间,就换了个名字叫柔顺作业。凡是“既要走到位、又要用对力”的活,都是力/位混合控制的舞台。
最经典的舞台是插孔装配。销钉入孔,横向偏一点就卡死,纵向用力过猛就刮伤孔壁。混合控制的方案是:横向两个方向用位置控制微调对准,纵向进给方向用力控制感知“插到位”的力信号。打磨抛光则是另一个典型:磨头沿曲面切向运动,由位置环负责轨迹;法向保持恒定压力,由力环负责去除量均匀。曲面跟踪任务更像“在球面上写字”——笔尖始终垂直于曲面、压力恒定、位置沿曲面游走,其底层依据就是接触力模型:
1. 法向接触力:$\mathbf{F}_n$ 是末端与工件之间的法向作用力,方向垂直于接触面。
2. 环境刚度:$k_e$ 是工件的等效接触刚度,越硬的工件 $k_e$ 越大。
3. 法向侵入量:$\Delta z$ 是末端沿法向进入工件的微小深度,等于当前高度与表面高度之差。
4. 闭环意义:力控环通过调节侵入量间接控制接触力,实现恒力跟踪曲面。
当然,工程远比理论复杂。钢对钢的高刚度接触仍容易激起震荡;软橡胶等未知时变环境难以建立准确模型;频繁的自由/接触切换对实时性要求极高。因此新一代方案正将力/位混合控制与阻抗控制、模型预测控制、强化学习相结合:用学习算法预测环境刚度,用混合控制保障底层安全,形成“智能柔顺”闭环。
从一支钢笔到一个机械臂,变化的是尺度,不变的是那句口诀:该走位的走位,该发力的发力。机器人学会了人类写字时最自然的分工,这正是力/位混合控制诞生四十余年后依然活跃在工业一线的根本原因。
AI 应用场景
场景 1:3C 精密装配——插孔里的毫米级温柔
阶段:控制策略设计 / 力控执行层
解决的问题:手机摄像头模组等精密装配中,传统纯位置控制把孔位误差当成必须消除的偏差,一旦视觉标定略有偏差,销钉就会硬顶孔壁,造成卡料或刮伤。力/位混合控制把垂直于孔壁的方向设为力控方向、进给方向设为位控方向,让销钉“顺着力走”,靠接触力反馈自动纠偏。
具体案例:某消费电子工厂在轴件插入工位加装六维力传感器,横向方向保持位置微调(精度 ±0.02 mm),纵向进给方向恒力 8 N 插入。改造后插入成功率从 92% 提升至 99.6%,工件刮伤率下降到原来的五分之一。
场景 2:曲面工件恒力打磨——不深一刀、不漏一处
阶段:工艺建模 / 柔顺控制执行
解决的问题:卫浴龙头、航空叶片等曲面工件抛光时,法向压力波动会直接造成去除量不均匀:压力大了磨出凹坑,压力小了留下残痕。混合控制在切向跟踪曲面轨迹(位置控制),在法向保持恒定压力(力控制),把“压力”从轨迹误差中解放出来。
具体案例:某五金件抛光工作站用混合控制输出恒定的 12 N 法向压力,配合离线生成的曲面轨迹,表面粗糙度 Ra 从 0.8 μm 稳定降到 0.3 μm 以下,砂带使用寿命延长约 30%。
Python 演示
# 力/位混合控制 2 自由度仿真: x 方向位置跟踪, y 方向恒力按压import math DT = 0.001 # 仿真步长(秒)STEPS = 3000 # 仿真总步数M = 1.0 # 末端等效质量(kg)KP = 1600.0 # 位置环比例增益KD = 80.0 # 位置环阻尼增益KF_P = 0.8 # 力环比例增益KF_I = 120.0 # 力环积分增益KD_Y = 80.0 # 力通道阻尼增益K_ENV = 6000.0 # 环境(工件)接触刚度(N/m)THRESHOLD = 0.02 # 接触面高度(m)F_DES = 10.0 # 期望接触力(N) def run(): # 状态变量: x/vx 为位置通道, y/vy 为力通道 x, vx = 0.0, 0.0 y, vy = THRESHOLD, 0.0 y_int = 0.0 pos_err_max = 0.0 f_list = [] for i in range(STEPS): t = i * DT # 位置通道: 跟踪 x 方向正弦期望轨迹 x_d = 0.04 * math.sin(2.0 * math.pi * t) x_dd = -0.04 * (2.0 * math.pi) ** 2 * math.sin(2.0 * math.pi * t) ax = x_dd + KP * (x_d - x) - KD * vx vx += ax * DT x += vx * DT pos_err_max = max(pos_err_max, abs(x_d - x)) # 力通道: 对接触面施加恒定法向力 f_meas = max(0.0, K_ENV * (y - THRESHOLD)) y_int += (F_DES - f_meas) * DT ay = KF_P * (F_DES - f_meas) + KF_I * y_int - KD_Y * vy vy += ay * DT y += vy * DT f_list.append(f_meas) tail = f_list[int(STEPS * 0.8):] f_avg = sum(tail) / len(tail) print("x 方向位置跟踪最大误差: %.4f m" % pos_err_max) print("y 方向接触力稳态均值: %.4f N (期望 10.0 N)" % f_avg) print("y 方向接触力波动范围: %.4f ~ %.4f N" % (min(tail), max(tail))) if __name__ == "__main__": run()
x_d = 0.04 * math.sin(2.0 * math.pi * t)位置通道的期望轨迹,相当于“手腕要走出的路线”。ax = x_dd + KP * (x_d - x) - KD * vx位置环 PD 加前馈:用误差修正加速度,让末端跟上正弦轨迹。f_meas = max(0.0, K_ENV * (y - THRESHOLD))接触力模型:环境刚度乘侵入量,压得越深力越大。y_int += (F_DES - f_meas) * DT力误差累计,积分项负责消除稳态误差。ay = KF_P * (F_DES - f_meas) + KF_I * y_int - KD_Y * vy力环 PI 加阻尼:把接触力拉回期望值 10 N。print("x 方向位置跟踪最大误差: %.4f m" % pos_err_max)输出统计验证两个通道“各管各的、互不干扰”。
常见误区
误区我理解力/位混合控制就是让机器人在每个自由度上都同时把位置和力控制到高精度,所以它比单一控制更“高级”。
正解恰恰相反,“混合”指的是把任务空间按方向拆成互补的两组:位置控制组和力控制组。每个方向在任一时刻只接受一种控制模式。就像写字时纸面方向归手腕(位置)、垂直方向归指腹(力),二者不是在同一个方向上叠加。选择矩阵 $\mathbf{S}$ 正是这条分工规则的数学表达。
为何常见:“混合”一词容易让人联想到“两者都要”的叠加,而忽略了它真正的意思是“分工”。
误区力/位混合控制、阻抗控制、柔顺控制听起来差不多,都是让机器人变“软”,应该可以互相替代。
正解两者思想不同。混合控制把自由度划分为位控与力控两个子空间,分别用独立的控制律;阻抗控制不划分方向,而是在所有方向上统一建立“位置偏差—力”的动态关系(等效弹簧—阻尼),通过调节阻抗参数间接实现柔顺。工程上常两者结合:用阻抗处理未知环境,用混合控制处理已知约束方向。
为何常见:两者都解决“既要运动、又要有力”的问题,在教材中又常放在同一章节,容易被画等号。
误区既然有“力位加权调节”,那选择矩阵 $\mathbf{S}$ 的对角元应该可以在 0 到 1 之间任意取值,连续调节力控和位控的权重。
正解经典力/位混合控制中,$\mathbf{S}$ 的对角元只取 0 或 1,是硬切换;连续取值属于柔顺/加权思想的扩展(如任务优先级方法),并不属于 Raibert 与 Craig 提出的经典框架。学习时先掌握 0/1 二元划分,再理解加权扩展,才不会概念混淆。
为何常见:很多资料把“力位加权”与“选择矩阵”混写在一起,让人误以为 $\mathbf{S}$ 本身就是连续权重。
误区我认为力/位混合控制框图是双闭环,只要把方向分配好、增益设大一点,系统自然稳定。
正解$\mathbf{S}$ 只解决了“哪个方向用什么控制”的分工问题,并不承诺稳定。接触环境刚度、力环增益、阻尼匹配、自由到接触的切换都会影响稳定性,甚至导致发散——就像写字时方向分得再清楚,用力过猛笔尖照样抖。工程上必须做稳定性分析、仿真验证和增益整定。
为何常见:框图看起来是闭环,初学者容易默认闭环必然稳定,忽略了接触动力学带来的变结构特性。
面试题
Q1. 力/位混合控制的核心思想是什么?
- A.全方向同时精控位置和力
- B.位控力控子空间互补← 正确答案
- C.仅用力控制替代位置控制
- D.仅用位置控制自由空间
答案:B。力/位混合控制的核心是把任务空间拆成互补的两个子空间:位置子空间用位置环、力子空间用力环。这好比写字时横向“走位”与纵向“施压”的分工,而不是在每个方向上都同时追求双高精度。A 把“混合”误解为叠加;C、D 均以偏概全。
Q2. 选择矩阵 S 的对角元素取值范围是什么?
- A.任意实数均可取值
- B.只能取 0 或 1 两值← 正确答案
- C.只能取正实数范围
- D.只能取负实数范围
答案:B。选择矩阵 $\mathbf{S}$ 的对角元只有 0 和 1 两种取值,像一张分工表:1 代表该方向交给力环,0 代表交给位置环。A、C、D 都不符合经典混合控制的二元取值约定。
Q3. 在力/位混合控制律中,(I-S) 的作用是什么?
- A.放大力通道的控制效果
- B.选中位控方向的互补矩阵← 正确答案
- C.计算雅可比逆矩阵用于坐标
- D.对重力进行前馈补偿
答案:B。$\mathbf{I}-\mathbf{S}$ 是 $\mathbf{S}$ 的互补矩阵:$\mathbf{S}$ 放行力控方向,则 $\mathbf{I}-\mathbf{S}$ 放行位控方向,二者在每一方向上互斥,保证两个通道不重叠、不遗漏。A、C、D 分别对应放大、坐标变换、前馈,都不是互补矩阵的职责。
Q4. 在插孔装配任务中,哪个方向更适合使用力控制?
- A.沿孔轴线的进给方向
- B.垂直于孔壁的约束方向← 正确答案
- C.笛卡尔空间平移三方向
- D.关节空间旋转全部方向
答案:B。垂直于孔壁的方向受到环境约束,位置指令会与约束冲突,因此该方向适合用力控制;沿孔轴线的进给方向需要跟踪插入轨迹,通常由位置控制负责。C、D 按笛卡尔或关节空间笼统划分,忽略了任务约束才是判据。
Q5. 关于自然约束与人工约束,下列说法正确的有哪些?
- A.自然约束由环境几何决定← 正确答案
- B.人工约束由控制器设定← 正确答案
- C.人工约束与自然约束重合
- D.选择矩阵不参与约束划分
答案:AB。自然约束由环境几何决定(如桌面挡住笔尖下移、该方向速度为 0);人工约束由控制器设定(如期望轨迹或期望力)。两者在方向上互补而非重合,故 C 错;选择矩阵正是人工约束在实现层的体现,D 错。
Q6. 经典力/位混合控制框图中,下列哪个环节不是必需环节?
- A.任务空间坐标变换
- B.选择矩阵通道分配
- C.神经网络参数自整定← 正确答案
- D.力环误差积分环节
答案:C。经典框图包含任务空间坐标变换、选择矩阵通道分配、位置环与力环(含误差积分)等环节。神经网络参数自整定属于智能控制扩展,不是经典力/位混合控制框图所必需的组成部分。
Q7. 曲面打磨时,法向恒力控制的主要目的是什么?
- A.提高机器人移动速度
- B.保证去除量均匀不过磨← 正确答案
- C.减少路径规划时间
- D.增大工件表面粗糙度
答案:B。曲面打磨时,法向恒力控制让去除量均匀,避免压力过大磨出凹坑、压力过小留下残痕。这与速度、路径规划时间无关,更不会增大粗糙度,故 B 正确。
Q8. 关于力/位混合控制的稳定性,下列说法正确的有哪些?
- A.环境刚度过高可能不稳定← 正确答案
- B.自由接触切换处容易震荡← 正确答案
- C.力增益越大系统必然越稳
- D.增益整定要考虑环境特性← 正确答案
答案:ABD。环境刚度越高,力环增益与环境越容易失配而震荡;自由空间与接触切换瞬间动力学突变,也容易抖动;增益整定必须结合环境刚度、阻尼等因素。C 说力增益越大必然越稳,错误——增益过大会引发高频振荡。
Q9. 力/位混合控制的性能优化中,“过渡过程优化”主要针对什么问题?
- A.自由接触切换的冲击抑制← 正确答案
- B.位置跟踪的稳态误差消除
- C.关节摩擦的在线补偿策略
- D.重力前馈量的离线标定
答案:A。过渡过程优化针对的是笔尖从悬空到落纸那一刻的冲击。通过力斜坡、阻尼整形等手段让接触力平滑建立,而不是瞬间压满。B、C、D 分别属于稳态精度、摩擦补偿、重力标定,与“过渡”无关。
Q10. 工程上设计选择矩阵 S 的要点包括哪些?
- A.依据任务约束划分方向← 正确答案
- B.同方向只允许一种控制模式← 正确答案
- C.选择矩阵可随任务阶段切换← 正确答案
- D.所有方向都需同时用力控制
答案:ABC。设计 $\mathbf{S}$ 要依据任务约束划分方向;同一方向两种控制模式互斥,否则会打架;装配过程可在不同阶段切换 $\mathbf{S}$(如先位控对准、后力控插入)。D 让所有方向都用力控,违背了与位控互补的基本思想。