【DQ Robotics】二次规划控制
二次规划 (Quadratic Programming)
我们将讨论的第二种优化问题称为二次规划(简称 QP)。QP 是一种线性约束的二次优化问题,其数学形式如下:
u ∈ arg min q ˙ F ( q ˙ ) u \in \text{arg}\min_{\dot{q}} \mathcal{F}(\dot{q}) u∈argq˙minF(q˙)
受限于:
W q ˙ ⪯ w W\dot{q} \preceq w Wq˙⪯w
其中, W ∈ R n × p W \in \mathbb{R}^{n \times p} W∈Rn×p 和 w ∈ R p w \in \mathbb{R}^p w∈Rp 表示与机器人 n n n 自由度相关的 p p p 个线性约束。需要注意,我们使用符号 ⪯ \preceq ⪯ 而不是 ≤ \leq ≤,因为我们表示的是逐元素的不等式。
你可以将这个 QP 问题理解为:“寻找所有使得 F ( q ˙ ) \mathcal{F}(\dot{q}) F(q˙) 最小化的 q ˙ \dot{q} q˙,在满足 W q ˙ ⪯ w W\dot{q} \preceq w Wq˙⪯w 的条件下,并返回其中一个解,称为 u u u”。通常情况下,需要使用数值方法来求解此类 QP 问题。类似于无约束情况下的情况,在本节中我们将把这样的最小化解称为 u u u。
解释:
-
定义:
二次规划是一种优化问题,目标是最小化一个关于 q ˙ \dot{q} q˙ 的函数 F ( q ˙ ) \mathcal{F}(\dot{q}) F(q˙),同时受到一组线性不等式 W q ˙ ⪯ w W\dot{q} \preceq w Wq˙⪯w 的约束。 -
符号说明:
- W W W:一个 n × p n \times p n×p 的矩阵,定义了约束的系数。
- w w w:一个 p p p 维向量,定义了约束的边界值。
- q ˙ \dot{q} q˙:待优化的变量(例如机器人的关节速度)。
- F ( q ˙ ) \mathcal{F}(\dot{q}) F(q˙):一个待最小化的目标函数,通常是一个二次函数。
-
目标:
优化目标是找到一个最优的 q ˙ \dot{q} q˙,既满足约束条件,又使目标函数 F ( q ˙ ) \mathcal{F}(\dot{q}) F(q˙) 达到最小值。 -
约束解释:
约束 W q ˙ ⪯ w W\dot{q} \preceq w Wq˙⪯w 表示 W W W 与 q ˙ \dot{q} q˙ 的矩阵乘积的每个元素都小于或等于 w w w 的对应元素。这种约束在许多优化问题(如机器人控制、经济模型等)中非常常见。 -
实际意义:
在机器人控制中,优化变量 q ˙ \dot{q} q˙ 可能代表关节速度,而 F ( q ˙ ) \mathcal{F}(\dot{q}) F(q˙) 可能是能量消耗或控制误差的度量。约束 W q ˙ ⪯ w W\dot{q} \preceq w Wq˙⪯w 则可能是运动范围或力的限制。
关节限制 (Joint Limits)
在某些情况下,使用无约束优化来解决机器人控制任务是有用的,但大多数实际任务都存在所谓的“硬限制”(Hard Limits)。这些限制指的是机器人关节空间或任务空间中的限制,无法被越过。例如,关节限制是一种物理上的硬性限制,控制器无法命令机器人超越其关节限制。
在进行运动学控制时,决策变量是关节速度,而不是关节位置。因此,我们需要将关节限制表示为依赖于关节速度的线性不等式。
假设关节的下限为 q − ∈ R n q^- \in \mathbb{R}^n q−∈Rn,上限为 q + ∈ R n q^+ \in \mathbb{R}^n q+∈Rn。使用二次规划(QP)实现关节限制的最常见方法如下:
u ∈ arg min q ˙ ∥ J q ˙ + η x ~ ∥ 2 + λ 2 ∥ q ˙ ∥ 2 u \in \text{arg}\min_{\dot{q}} \|J\dot{q} + \eta \tilde{x}\|^2 + \lambda^2 \|\dot{q}\|^2 u∈argq˙min∥Jq˙+ηx~∥2+λ2∥q˙∥2
受限于:
W J L q ˙ ⪯ w J L W_{JL}\dot{q} \preceq w_{JL} WJLq˙⪯wJL
其中:
W J L = [ − I I ] W_{JL} = \begin{bmatrix} -I \\ I \end{bmatrix} WJL=[−II]
w J L = [ − η J L ( q − − q ) η J L ( q + − q ) ] w_{JL} = \begin{bmatrix} -\eta_{JL}(q^- - q) \\ \eta_{JL}(q^+ - q) \end{bmatrix} wJL=[−ηJL(q−−q)ηJL(q+−q)]
η J L ∈ R + − { 0 } \eta_{JL} \in \mathbb{R}^+ - \{0\} ηJL∈R+−{0} 是一个可配置的增益值。通常,我们选择 η J L = 1 \eta_{JL} = 1 ηJL=1。
解释
-
定义和背景:
- 硬限制:机器人在实际操作中,关节的物理限制需要严格遵守。这些限制无法被超越,否则会导致物理损坏或功能失效。
- 运动学控制:主要关注的是关节速度 q ˙ \dot{q} q˙ 而非关节位置 q q q,因此限制条件需要从关节位置转换为关节速度的形式。
-
公式解读:
-
目标函数:
∥ J q ˙ + η x ~ ∥ 2 + λ 2 ∥ q ˙ ∥ 2 \|J\dot{q} + \eta \tilde{x}\|^2 + \lambda^2 \|\dot{q}\|^2 ∥Jq˙+ηx~∥2+λ2∥q˙∥2- 第一部分 ∥ J q ˙ + η x ~ ∥ 2 \|J\dot{q} + \eta \tilde{x}\|^2 ∥Jq˙+ηx~∥2 旨在最小化任务误差( x ~ \tilde{x} x~ 表示误差)。
- 第二部分 λ 2 ∥ q ˙ ∥ 2 \lambda^2 \|\dot{q}\|^2 λ2∥q˙∥2 用于正则化,限制关节速度的幅度,避免不稳定或过大的速度值。
-
约束条件:
W J L q ˙ ⪯ w J L W_{JL}\dot{q} \preceq w_{JL} WJLq˙⪯wJL- W J L W_{JL} WJL 定义了限制矩阵,包含关节速度上下限的线性约束。
- w J L w_{JL} wJL 表示关节速度的上下边界,根据当前关节位置 q q q 和硬性限制 q − q^- q−、 q + q^+ q+ 确定。
-
-
物理意义:
- 关节速度限制:通过 q ˙ \dot{q} q˙ 的线性不等式,确保关节速度不会超出物理边界。
- 增益值 η J L \eta_{JL} ηJL:调整关节速度约束的响应速率,典型选择 η J L = 1 \eta_{JL} = 1 ηJL=1,表示等比例映射当前的限制。
-
实现方法:
- 在二次规划框架中,通过目标函数和约束条件,求解最优的 q ˙ \dot{q} q˙,以实现机器人任务的精准控制,同时满足硬性限制。
如何将关节限制表示为依赖于关节速度的线性不等式
1. 背景:关节限制的定义
在机器人控制中,关节限制通常以关节位置 q q q 的上下界形式给出:
- 关节的下限: q − ∈ R n q^- \in \mathbb{R}^n q−∈Rn
- 关节的上限: q + ∈ R n q^+ \in \mathbb{R}^n q+∈Rn
这些限制表示机器人关节的位置
q
q
q 必须满足:
q
−
≤
q
≤
q
+
q^- \leq q \leq q^+
q−≤q≤q+
然而,在运动学控制中,决策变量是关节速度 q ˙ \dot{q} q˙ 而不是关节位置 q q q,因此需要将这些限制转换为关于 q ˙ \dot{q} q˙ 的形式。
2. 关节位置与速度的关系
假设机器人每个控制循环的时间间隔为
Δ
t
\Delta t
Δt,关节位置的变化可以近似表示为:
q
new
=
q
current
+
q
˙
Δ
t
q_\text{new} = q_\text{current} + \dot{q} \Delta t
qnew=qcurrent+q˙Δt
为保证关节位置
q
new
q_\text{new}
qnew 在限制范围内,必须满足:
q
−
≤
q
current
+
q
˙
Δ
t
≤
q
+
q^- \leq q_\text{current} + \dot{q} \Delta t \leq q^+
q−≤qcurrent+q˙Δt≤q+
3. 将位置限制转化为速度限制
对上述不等式重新整理,得到:
q
−
−
q
current
≤
q
˙
Δ
t
≤
q
+
−
q
current
q^- - q_\text{current} \leq \dot{q} \Delta t \leq q^+ - q_\text{current}
q−−qcurrent≤q˙Δt≤q+−qcurrent
将
Δ
t
\Delta t
Δt 提到分母上(假设
Δ
t
>
0
\Delta t > 0
Δt>0),不等式变为:
q
−
−
q
Δ
t
≤
q
˙
≤
q
+
−
q
Δ
t
\frac{q^- - q}{\Delta t} \leq \dot{q} \leq \frac{q^+ - q}{\Delta t}
Δtq−−q≤q˙≤Δtq+−q
其中:
- q − − q = q − − q current q^- - q = q^- - q_\text{current} q−−q=q−−qcurrent 表示当前距离下限的位置。
- q + − q = q + − q current q^+ - q = q^+ - q_\text{current} q+−q=q+−qcurrent 表示当前距离上限的位置。
这就得到了依赖于速度 q ˙ \dot{q} q˙ 的关节限制。
4. 将速度限制转换为矩阵形式
为了简化表示,将上述关于 q ˙ \dot{q} q˙ 的上下限不等式统一表示为矩阵形式。
-
将上下限拆分成两个独立的不等式:
- 下界: q ˙ ≥ q − − q Δ t \dot{q} \geq \frac{q^- - q}{\Delta t} q˙≥Δtq−−q
- 上界: q ˙ ≤ q + − q Δ t \dot{q} \leq \frac{q^+ - q}{\Delta t} q˙≤Δtq+−q
-
将下界重新表示为:
− q ˙ ≤ − q − − q Δ t -\dot{q} \leq -\frac{q^- - q}{\Delta t} −q˙≤−Δtq−−q -
将这两组不等式统一为矩阵形式:
W J L q ˙ ⪯ w J L W_{JL}\dot{q} \preceq w_{JL} WJLq˙⪯wJL
5. 构造矩阵和向量
-
构造 W J L W_{JL} WJL:
- W J L W_{JL} WJL 是一个 2 n × n 2n \times n 2n×n 的矩阵,用于表示每个关节速度的上下限关系。
- 具体形式为:
W J L = [ − I I ] W_{JL} = \begin{bmatrix} -I \\ I \end{bmatrix} WJL=[−II]
其中: - − I -I −I 是 n × n n \times n n×n 的负单位矩阵,对应下界约束。
- I I I 是 n × n n \times n n×n 的正单位矩阵,对应上界约束。
-
构造 w J L w_{JL} wJL:
- w J L w_{JL} wJL 是一个 2 n 2n 2n 维向量,用于定义每个关节速度的上下限。
- 具体形式为:
w J L = [ − q − − q Δ t q + − q Δ t ] w_{JL} = \begin{bmatrix} -\frac{q^- - q}{\Delta t} \\ \frac{q^+ - q}{\Delta t} \end{bmatrix} wJL=[−Δtq−−qΔtq+−q]
6. 引入增益因子 η J L \eta_{JL} ηJL
为了增强控制灵活性和约束的稳定性,时间间隔 1 Δ t \frac{1}{\Delta t} Δt1 通常被替换为一个可调节的增益因子 η J L \eta_{JL} ηJL。最终形式为:
-
W J L W_{JL} WJL 不变:
W J L = [ − I I ] W_{JL} = \begin{bmatrix} -I \\ I \end{bmatrix} WJL=[−II] -
w J L w_{JL} wJL 替换为:
w J L = [ − η J L ( q − − q ) η J L ( q + − q ) ] w_{JL} = \begin{bmatrix} -\eta_{JL}(q^- - q) \\ \eta_{JL}(q^+ - q) \end{bmatrix} wJL=[−ηJL(q−−q)ηJL(q+−q)]
其中 η J L > 0 \eta_{JL} > 0 ηJL>0 是一个用户可配置的增益值,通常选择 η J L = 1 \eta_{JL} = 1 ηJL=1。
7. 最终结果
关节速度的上下限约束可以用矩阵形式统一表示为:
W
J
L
q
˙
⪯
w
J
L
W_{JL}\dot{q} \preceq w_{JL}
WJLq˙⪯wJL
具体展开为:
[
−
I
I
]
q
˙
⪯
[
−
η
J
L
(
q
−
−
q
)
η
J
L
(
q
+
−
q
)
]
\begin{bmatrix} -I \\ I \end{bmatrix} \dot{q} \preceq \begin{bmatrix} -\eta_{JL}(q^- - q) \\ \eta_{JL}(q^+ - q) \end{bmatrix}
[−II]q˙⪯[−ηJL(q−−q)ηJL(q+−q)]
8. 总结
- 起始于关节位置的上下限 q − ≤ q ≤ q + q^- \leq q \leq q^+ q−≤q≤q+。
- 通过时间间隔 Δ t \Delta t Δt 转换为关于关节速度 q ˙ \dot{q} q˙ 的限制。
- 将限制写成矩阵形式:
- 矩阵 W J L W_{JL} WJL 定义了约束的结构(单位矩阵)。
- 向量 w J L w_{JL} wJL 表示速度的上下限。
- 引入增益因子 η J L \eta_{JL} ηJL 提升灵活性和可控性。
这种矩阵形式方便在二次规划(QP)或其他优化框架中直接使用,适用于多自由度机器人的运动学控制问题。