4、笛卡尔空间力矩控制:阻抗控制导论、力位混合控制、操作空间控制
各位做机器人控制的朋友,咱们今天聊点硬核的——笛卡尔空间下的力矩控制。说实话,关节空间的控制做多了,你会发现很多任务其实是在末端执行器上完成的。比如打磨、装配、人机交互,这些场景下,你真正关心的是末端的位置和力,而不是每个关节转了多少度。
我个人习惯把笛卡尔空间的控制策略分成三大流派:阻抗控制、力位混合控制、操作空间控制。它们各有各的脾气,也各有各的适用场景。咱们一个一个来拆解。
4.1 阻抗控制导论
阻抗控制,说白了就是让机器人末端表现出「弹簧-阻尼」的特性。你推它,它让一让;你拉它,它跟一跟。不是硬碰硬,而是有弹性的交互。
为什么会这样?因为很多任务不需要精确的力控制,只需要一个柔顺的行为。比如你让机器人扶着杯子,你抽走杯子,它不会死命抓着,而是顺着你的动作移动。
阻抗控制的核心公式其实很简单:
M_d * (ẍ_d - ẍ) + B_d * (ẋ_d - ẋ) + K_d * (x_d - x) = F_ext
其中 M_d、B_d、K_d 是你设定的虚拟惯量、阻尼和刚度。x_d 是期望轨迹,x 是实际轨迹,F_ext 是外部力。
嗯,这里要注意:阻抗控制不是直接控制力,而是通过调整位置偏差来间接控制力。你想想看,如果你把刚度 K_d 设得很大,那一点点位置偏差就会产生很大的力,机器人就变「硬」了。反过来,K_d 设小一点,机器人就「软」了。
4.2 力位混合控制
力位混合控制,这个名字听起来挺唬人,其实思路很直接:在有些方向上控制位置,在另一些方向上控制力。比如你让机器人擦桌子,垂直方向要控制力(别把桌子压坏了),水平方向要控制位置(擦干净)。
它的核心思想是「任务空间分解」。你需要定义一个选择矩阵 S,把笛卡尔空间分成两个子空间:
- 位置控制子空间:S 矩阵中对应位置控制的方向为 1
- 力控制子空间:I - S 矩阵中对应力控制的方向为 1
控制律可以写成:
τ = J^T [ S * F_pos + (I - S) * F_force ]
其中 F_pos 是位置控制器的输出,F_force 是力控制器的输出,J^T 是雅可比矩阵的转置,把笛卡尔空间的力映射到关节力矩。
力位混合控制有个天然的问题:切换瞬间容易产生冲击。你想想看,位置控制时关节是刚性的,突然切到力控制,力矩指令会跳变。我建议加一个低通滤波器,或者用平滑过渡函数,比如 sigmoid 函数来过渡。
4.3 操作空间控制
操作空间控制(Operational Space Control),这是 Khatib 老爷子提出的经典方法。它的核心思想是:直接在笛卡尔空间设计控制律,然后通过动力学映射得到关节力矩。
完整的操作空间控制律长这样:
τ = J^T * Λ * [ ẍ_d + K_d * (ẋ_d - ẋ) + K_p * (x_d - x) ] + N^T * τ_null
其中 Λ 是操作空间惯性矩阵,N 是零空间投影矩阵,τ_null 是零空间控制(比如避关节限位、优化关节角度)。
这里有个关键点:Λ 不是常数,它随机器人构型变化。所以你需要实时计算:
Λ = (J * M(q)^(-1) * J^T)^(-1)
M(q) 是关节空间惯性矩阵,J 是雅可比矩阵。
我个人习惯在操作空间控制中加一个「零空间优化」模块。比如让机器人在执行末端任务的同时,尽量让关节远离限位。这个在工业机器人上特别有用,因为很多 6 轴机器人的关节 3 和关节 5 容易碰到限位。
4.4 三种方法的对比与选择
| 方法 | 核心思想 | 适用场景 | 计算量 | 我的推荐 |
|---|---|---|---|---|
| 阻抗控制 | 通过位置偏差间接控制力 | 人机交互、柔顺装配 | 低 | 新手入门首选 |
| 力位混合控制 | 不同方向分别控制位置和力 | 打磨、抛光、擦洗 | 中 | 需要明确任务分解时 |
| 操作空间控制 | 直接笛卡尔空间动力学控制 | 高速高精度、零空间优化 | 高 | 有实时计算能力时 |
你可能会问:到底选哪个?我的建议是:
- 如果你刚开始做力矩控制,从阻抗控制入手。参数少,好理解,不容易出事。
- 如果你的任务有明确的方向性(比如垂直方向要控力,水平方向要控位),用力位混合控制。
- 如果你需要同时优化末端运动和关节运动,或者对动态性能要求很高,上操作空间控制。
4.5 知识体系结构图
下面这张图展示了本章的核心逻辑,我画成了 SVG,方便你理解三种方法之间的关系:
这张图把三种方法的定位和核心要点都串起来了。你可以看到,阻抗控制偏「软」,力位混合控制偏「灵活」,操作空间控制偏「精确」。没有的好坏,只有合不合适的场景。
好了,这一章的内容就到这里。笛卡尔空间的力矩控制是个大话题,但核心就是这三板斧。你先把阻抗控制跑通,再慢慢往力位混合和操作空间控制上靠。记住,控制算法不是越复杂越好,能稳定完成任务才是王道。
可可精品资料库