一、力位混合控制:到底在解决什么问题?

大家好,我是你们的老朋友。今天咱们聊聊力位混合控制的核心思想。

说实话,我刚入行那会儿,听到「力位混合控制」这六个字,第一反应是——这玩意儿听着就头大。但后来真正做项目才发现,它的思想其实特别朴素。

你想想看,机器人要完成一个任务,比如拧螺丝、擦桌子、装配零件。这些任务里,有些地方需要精确控制位置(比如对准螺丝孔),有些地方需要控制力(比如拧紧时不能把螺纹拧滑)。

问题来了:位置和力,能不能同时控制?

答案是可以的。但前提是——你得把它们分到不同的方向上去。

这就是力位混合控制的核心:把任务空间拆开,每个方向只控制一种东西。


二、任务空间分解:把复杂问题拆成小方块

2.1 什么是任务空间?

我习惯把「任务空间」理解成:机器人末端执行器需要完成任务的坐标系

比如一个六轴机器人,它的关节空间有6个自由度。但任务空间通常用笛卡尔坐标系来描述——也就是我们熟悉的X、Y、Z三个平移方向,加上绕X、Y、Z的三个旋转方向。

每个方向,我们都可以独立决定:
- 这个方向是控制位置?
- 还是控制力?

说白了,就是把一个6自由度的复杂问题,拆成6个1自由度的小问题。每个小问题单独处理,最后合起来就是完整的控制方案。

2.2 为什么要拆?

我在做打磨抛光项目时遇到过一个问题:机器人沿着曲面运动,既要保证法线方向的接触力恒定,又要保证切线方向的位置精确。

如果我不拆开,直接用一个PID去调,结果就是——位置一偏,力就乱跳;力一调,位置又跑偏。两个控制目标互相打架,系统根本稳不住。

拆开之后呢?法线方向只控力,切线方向只控位置。两个控制器各管各的,互不干扰。问题一下子就解决了。

核心思想: 每个自由度上,要么控位置,要么控力,不能同时控两个。

三、自然约束与人工约束:谁说了算?

3.1 自然约束——环境给你的限制

自然约束,说白了就是环境本身对机器人运动产生的限制

举个例子:
- 机器人把零件放在桌面上。桌面在Z方向是刚性的,机器人不能穿透桌面。所以Z方向的位置被自然约束了。
- 同时,桌面在X、Y方向是自由的,机器人可以滑动。所以X、Y方向的力被自然约束了(因为摩擦力很小)。

自然约束的规律很简单:
如果某个方向的位置被约束了,那这个方向的力就是自由的(可以控制)。
如果某个方向的力被约束了,那这个方向的位置就是自由的(可以控制)。

嗯,这里要注意:自然约束不是我们设定的,是环境给的。你换一个环境,自然约束就变了。

3.2 人工约束——我们想要的控制目标

人工约束,就是我们人为设定的控制目标

比如:
- 在Z方向,自然约束限制了位置(不能穿透桌面),那我们就设定人工约束为「控制力」,让机器人以5N的力压在桌面上。
- 在X方向,自然约束限制了力(摩擦力很小),那我们就设定人工约束为「控制位置」,让机器人沿着X方向移动10cm。

你看,自然约束和人工约束是互补的:
自然约束限制什么,人工约束就控制它的互补量。

我的经验: 做力位混合控制,第一步不是调参数,而是搞清楚当前任务的自然约束是什么。自然约束搞错了,后面全白搭。

四、选择矩阵S与互补矩阵S':数学上的「开关」

4.1 选择矩阵S——选谁控位置

选择矩阵S是一个对角矩阵,对角线上的元素是0或1。

它的作用很简单:
- 如果S的第i个对角线元素是1,表示第i个自由度控制位置
- 如果S的第i个对角线元素是0,表示第i个自由度不控制位置(也就是控制力)。

比如一个平面内的2自由度机器人:
- 如果S = diag(1, 0),表示X方向控位置,Y方向控力。
- 如果S = diag(0, 1),表示X方向控力,Y方向控位置。

4.2 互补矩阵S'——选谁控力

互补矩阵S' = I - S,其中I是单位矩阵。

也就是说:
- 如果S的第i个元素是1,那S'的第i个元素就是0。
- 如果S的第i个元素是0,那S'的第i个元素就是1。

S'的作用是:选择哪些自由度控制力

你看,S和S'天然互补。一个选了位置,另一个就选力。永远不会冲突。

4.3 一个简单的例子

假设我们有一个2自由度机器人,任务是在桌面上画一条直线:
- X方向:需要精确控制位置(画直线)
- Y方向:需要控制力(保持接触)

那么:
S = [[1, 0], [0, 0]] → X方向控位置,Y方向不控位置
S' = [[0, 0], [0, 1]] → X方向不控力,Y方向控力

控制器的输出就是:
总控制量 = S × 位置控制器输出 + S' × 力控制器输出

这样,X方向只受位置控制器影响,Y方向只受力控制器影响。两个控制器各司其职,互不干扰。

我曾经踩过的坑: 有一次我忘了把S和S'设成互补,结果两个方向都控位置去了。机器人直接往桌面上怼,差点把传感器干报废。从那以后,我每次都会检查:S + S' 是不是等于单位矩阵?

五、核心逻辑框架图

下面这张图,我用SVG画了力位混合控制的整体逻辑。你可以看到任务空间分解、自然约束/人工约束、选择矩阵S/S'之间的关系。

力位混合控制核心逻辑 任务空间分解 自然约束(环境决定) 人工约束(我们设定) 选择矩阵 S(控位置) 互补矩阵 S'(控力) 位置控制器 力控制器 总控制量输出

六、总结一下

力位混合控制的核心思想,其实就三句话:

  1. 任务空间分解:把6个自由度拆开,每个方向独立处理。
  2. 自然约束与人工约束:自然约束是环境给的,人工约束是我们想要的。两者互补。
  3. 选择矩阵S与互补矩阵S':用数学上的0和1,决定每个方向控位置还是控力。

我个人觉得,理解这三个概念,比背公式重要得多。公式可以查,但思想得吃透。

好了,这一章就到这里。下一章咱们聊聊具体的控制器怎么设计,以及怎么把S和S'用到实际代码里。


公众号:蓝海资料掘金营,微信deep3321