当前位置: 首页 > article >正文

【DQ Robotics】二次规划控制

二次规划 (Quadratic Programming)

我们将讨论的第二种优化问题称为二次规划(简称 QP)。QP 是一种线性约束的二次优化问题,其数学形式如下:

u ∈ arg min ⁡ q ˙ F ( q ˙ ) u \in \text{arg}\min_{\dot{q}} \mathcal{F}(\dot{q}) uargq˙minF(q˙)

受限于:

W q ˙ ⪯ w W\dot{q} \preceq w Wq˙w

其中, W ∈ R n × p W \in \mathbb{R}^{n \times p} WRn×p w ∈ R p w \in \mathbb{R}^p wRp 表示与机器人 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

解释:

  1. 定义
    二次规划是一种优化问题,目标是最小化一个关于 q ˙ \dot{q} q˙ 的函数 F ( q ˙ ) \mathcal{F}(\dot{q}) F(q˙),同时受到一组线性不等式 W q ˙ ⪯ w W\dot{q} \preceq w Wq˙w 的约束。

  2. 符号说明

    • 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˙):一个待最小化的目标函数,通常是一个二次函数。
  3. 目标
    优化目标是找到一个最优的 q ˙ \dot{q} q˙,既满足约束条件,又使目标函数 F ( q ˙ ) \mathcal{F}(\dot{q}) F(q˙) 达到最小值。

  4. 约束解释
    约束 W q ˙ ⪯ w W\dot{q} \preceq w Wq˙w 表示 W W W q ˙ \dot{q} q˙ 的矩阵乘积的每个元素都小于或等于 w w w 的对应元素。这种约束在许多优化问题(如机器人控制、经济模型等)中非常常见。

  5. 实际意义
    在机器人控制中,优化变量 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 qRn,上限为 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 uargq˙minJq˙+ηx~2+λ2q˙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(qq)ηJL(q+q)]

η J L ∈ R + − { 0 } \eta_{JL} \in \mathbb{R}^+ - \{0\} ηJLR+{0} 是一个可配置的增益值。通常,我们选择 η J L = 1 \eta_{JL} = 1 ηJL=1

解释

  1. 定义和背景

    • 硬限制:机器人在实际操作中,关节的物理限制需要严格遵守。这些限制无法被超越,否则会导致物理损坏或功能失效。
    • 运动学控制:主要关注的是关节速度 q ˙ \dot{q} q˙ 而非关节位置 q q q,因此限制条件需要从关节位置转换为关节速度的形式。
  2. 公式解读

    • 目标函数
      ∥ J q ˙ + η x ~ ∥ 2 + λ 2 ∥ q ˙ ∥ 2 \|J\dot{q} + \eta \tilde{x}\|^2 + \lambda^2 \|\dot{q}\|^2 Jq˙+ηx~2+λ2q˙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 λ2q˙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+ 确定。
  3. 物理意义

    • 关节速度限制:通过 q ˙ \dot{q} q˙ 的线性不等式,确保关节速度不会超出物理边界。
    • 增益值 η J L \eta_{JL} ηJL:调整关节速度约束的响应速率,典型选择 η J L = 1 \eta_{JL} = 1 ηJL=1,表示等比例映射当前的限制。
  4. 实现方法

    • 在二次规划框架中,通过目标函数和约束条件,求解最优的 q ˙ \dot{q} q˙,以实现机器人任务的精准控制,同时满足硬性限制。

如何将关节限制表示为依赖于关节速度的线性不等式

1. 背景:关节限制的定义

在机器人控制中,关节限制通常以关节位置 q q q 的上下界形式给出:

  • 关节的下限: q − ∈ R n q^- \in \mathbb{R}^n qRn
  • 关节的上限: q + ∈ R n q^+ \in \mathbb{R}^n q+Rn

这些限制表示机器人关节的位置 q q q 必须满足:
q − ≤ q ≤ q + q^- \leq q \leq q^+ qqq+

然而,在运动学控制中,决策变量是关节速度 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^+ qqcurrent+q˙Δtq+

3. 将位置限制转化为速度限制

对上述不等式重新整理,得到:
q − − q current ≤ q ˙ Δ t ≤ q + − q current q^- - q_\text{current} \leq \dot{q} \Delta t \leq q^+ - q_\text{current} qqcurrentq˙Δtq+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} Δtqqq˙Δtq+q

其中:

  • q − − q = q − − q current q^- - q = q^- - q_\text{current} qq=qqcurrent 表示当前距离下限的位置。
  • q + − q = q + − q current q^+ - q = q^+ - q_\text{current} q+q=q+qcurrent 表示当前距离上限的位置。

这就得到了依赖于速度 q ˙ \dot{q} q˙ 的关节限制。

4. 将速度限制转换为矩阵形式

为了简化表示,将上述关于 q ˙ \dot{q} q˙ 的上下限不等式统一表示为矩阵形式。

  1. 将上下限拆分成两个独立的不等式:

    • 下界: q ˙ ≥ q − − q Δ t \dot{q} \geq \frac{q^- - q}{\Delta t} q˙Δtqq
    • 上界: q ˙ ≤ q + − q Δ t \dot{q} \leq \frac{q^+ - q}{\Delta t} q˙Δtq+q
  2. 将下界重新表示为:
    − q ˙ ≤ − q − − q Δ t -\dot{q} \leq -\frac{q^- - q}{\Delta t} q˙Δtqq

  3. 将这两组不等式统一为矩阵形式:
    W J L q ˙ ⪯ w J L W_{JL}\dot{q} \preceq w_{JL} WJLq˙wJL

5. 构造矩阵和向量
  1. 构造 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 的正单位矩阵,对应上界约束。
  2. 构造 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=[ΔtqqΔtq+q]
6. 引入增益因子 η J L \eta_{JL} ηJL

为了增强控制灵活性和约束的稳定性,时间间隔 1 Δ t \frac{1}{\Delta t} Δt1 通常被替换为一个可调节的增益因子 η J L \eta_{JL} ηJL。最终形式为:

  1. W J L W_{JL} WJL 不变:
    W J L = [ − I I ] W_{JL} = \begin{bmatrix} -I \\ I \end{bmatrix} WJL=[II]

  2. 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(qq)η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(qq)ηJL(q+q)]

8. 总结
  1. 起始于关节位置的上下限 q − ≤ q ≤ q + q^- \leq q \leq q^+ qqq+
  2. 通过时间间隔 Δ t \Delta t Δt 转换为关于关节速度 q ˙ \dot{q} q˙ 的限制。
  3. 将限制写成矩阵形式:
    • 矩阵 W J L W_{JL} WJL 定义了约束的结构(单位矩阵)。
    • 向量 w J L w_{JL} wJL 表示速度的上下限。
  4. 引入增益因子 η J L \eta_{JL} ηJL 提升灵活性和可控性。

这种矩阵形式方便在二次规划(QP)或其他优化框架中直接使用,适用于多自由度机器人的运动学控制问题。


http://www.kler.cn/a/405889.html

相关文章:

  • 如何使用Jest测试你的React组件
  • 【K8S问题系列 |18 】如何解决 imagePullSecrets配置正确,但docker pull仍然失败问题
  • 深入理解TensorFlow中的形状处理函数
  • Transformer中的Self-Attention机制如何自然地适应于目标检测任务
  • Redis基本的全局命令
  • sed使用扩展正则表达式时, -i 要写在 -r 或 -E 的后面
  • 金融量化交易模型的探索与发展
  • 鸿蒙系统ubuntu开发环境搭建
  • Windows VScode+Latex环境
  • 华为IPD流程管理体系L1至L5最佳实践-解读
  • 《Shader 入门精要》学习笔记 茵蒂克丝
  • //动态内存分配
  • 深度学习笔记之BERT(二)BERT精简变体:ALBERT
  • 红帽(RHCE)工程师认证
  • 【STM32】BKP备份寄存器RTC实时时钟PWR电源控制
  • 革新车间照明,分布式IO模块引领智能制造新纪元
  • 【C++之STL】摸清 string 的模拟实现(中)
  • resnet50,clip,Faiss+Flask简易图文搜索服务
  • 信息收集系列(六):路径爬取与目录爆破
  • Flutter踩坑记录(三)-- 更改入口执行文件
  • 【MySQL实战45讲笔记】基础篇——事务隔离
  • OCR的技术发展及OCR厂商
  • E - 11/22 Subsequence题解
  • nvm安装node遇到的若干问题(vscode找不到npm文件、环境变量配置混乱、npm安装包到D盘)
  • 图像预处理之图像滤波
  • React-useEffect的使用