写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝


🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟
感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~



文章目录

  • 引言
  • 一、连续LQR与离散LQR
  • 1、LQR问题概述
  • 2、离散LQR的优势
  • 3、离散LQR的数学基础:拉格朗日乘子法
  • 二、离散LQR问题描述
  • 1、离散LQR问题描述
  • 2、代价函数和约束条件
  • 3、离散LQR问题分解
  • 三、离散化方法
  • 1、连续微分方程的离散化
  • (1) 向前欧拉法
  • (2) 向后欧拉法
  • (3) 中点欧拉法
  • 2、连续方程离散化的数学推导
  • 四、离散LQR解法
  • 1、代价函数
  • 2、约束条件
  • 3、代价函数和约束的拉格朗日乘子法表示
  • 五、向量导数
  • 1、向量导数规则
  • 2、求解偏导数的规律
  • 3、递推关系式的推导
  • 4、黎卡提方程的引入
  • 5、控制量的表达式
  • 六、黎卡提方程
  • 1、迭代性质
  • 2、LQR控制量的计算
  • 3、其他书中的黎卡提方程形式
  • 4、矩阵求逆引理的应用
  • 七、LQR算法总结
  • 1、离散化
  • 2、求解黎卡提方程
  • 3、求解 K
  • 4、求解控制量
  • 参考资料



引言

  本篇博客是 自动驾驶控制算法 系列的第五节。内容整理自 B站知名up主 忠厚老实的老王 的视频,作为博主的学习笔记,分享给大家共同学习。

  在上一节将坐标变换和车辆动力学模型综合起来,得到了关于误差的微分方程:

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_02。暂时先忽略 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_03,考虑 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_03 的控制以后再讲,暂时不管它。上面的误差微分方程变成如下形式:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_05


一、连续LQR与离散LQR

1、LQR问题概述

  下面求 LQR 问题,就是在 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_06 等于 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_07【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_08 二次型里选择合适的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_09,让 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_06 最小,并且 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_09 要满足 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_12 的约束,这就是典型的 LQR 问题, LQR 问题已经十分成熟,在 Matlab 里有包,可以调用 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_13,以及 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_14,就是离散的(discrete) LQR

本篇博客讲解 dLQR 的基本原理,因为我们并不满足于当调包师、调参数侠,而是要知道原理。

2、离散LQR的优势

  LQR 分为连续 LQR 和离散 LQR ,但是就本博客只讲离散 LQR ,因为实际应用都是离散 LQR ,特别是在计算机上,计算机处理的是离散数据,而且控制大多也是离散,所以离散 LQR 对实际应用很有用。

  第二个原因是连续 LQR 的理论非常难,涉及到泛函和变分法,而且一般用不到。

3、离散LQR的数学基础:拉格朗日乘子法

  而离散 LQR 只涉及拉格朗日乘子法。

什么是拉格朗日乘子法?

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_15 在约束 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_16 的条件下的机制,用拉格朗日乘子法,就是建立
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_17其中,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_18

  在自动控制原理书中,使用离散泛函与变分法解离散 LQR,但这样涉及到了太多数学知识,而使用拉格朗日乘子法,可以绕过泛函与变分法的概念把离散 LQR 讲明白。


二、离散LQR问题描述

1、离散LQR问题描述

  离散 LQR 的问题描述:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_19

2、代价函数和约束条件

  设代价函数为:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_20  在约束条件【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_21下的极小值。

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_06

3、离散LQR问题分解

现在离散 LQR 问题分解为两个问题:

  • 如何实现【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_23
  • 如何求解使得 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_24 在约束条件 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_25下取极小值的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_26

三、离散化方法

1、连续微分方程的离散化

先讲离散化,有两种方法:

  • 向前欧拉法
  • 中点欧拉法

百度 Apollo 的代码是两者混合。

  下面简单讲一下向前欧拉法和中点欧拉法。

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_27 方程,两边积分下限为 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_28,积分上限为 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_29,得到以下式子:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_30【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_31  把后面积分化为 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_32,用的是积分中值定理,得到:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_33  这是精确的离散化,但是这样离散化没有用,因为不知道 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_32 到底是什么,根据 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_32

(1) 向前欧拉法

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_36
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_37

(2) 向后欧拉法

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_38
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_39

(3) 中点欧拉法

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_40
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_41

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_42

2、连续方程离散化的数学推导

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_43 方程,先两边积分,将积分划为中式定理形式,得到以下方程:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_44【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_45即:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_46  对第一个 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_42 用中点欧拉法,对第二个 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_48

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_48 不用终点欧拉法是因为 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_50 未知,一般 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_51 取采样周期,比如 0.01 秒或 0.001 秒, 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_52 一般是要求的当前控制量,这是 LQR 要算的,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_50 是下一时刻的 LQR 控制量,当前的控制量 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_52 都不知道,下一时刻的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_50 更不知道,所以第二个 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_48不能用中点欧拉法。

那为什么第一个 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_57

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_58,虽然不知道,但它不需要知道。因为只要把它带进去化简就出来了:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_59  把右边 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_58 移到左边,得到
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_61

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_62  因为 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_51 通常比较小 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_64

  这样得到以下方程:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_65  其中,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_66 是单位矩阵, 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_51 是采样周期,得到离散化的微分方程:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_68  其中,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_69【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_70

  以上是连续方程离散化的全部过程。


四、离散LQR解法

  下面看一下离散的 LQR 的解法。

1、代价函数

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_06 是关于 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_72【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_09 的二次型:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_20  希望能达到稳定的控制,即在任何时段, 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_75 等于 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_76

2、约束条件

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_77【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_78 对应上面的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_79【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_80 对应上面的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_81

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_75【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_76 到至无穷,这无穷就不太好处理,那就先不让 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_75【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_76 到正无穷这样加下去,先让 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_75【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_76 一直加到 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_88,再让 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_88

  具体做法是:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_90  让 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_88

问题来了,为什么没有 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_92

  先把约束写出来:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_93  约束覆盖了从 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_94【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_95 以及从 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_96【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_97。发现写的代价函数 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_06 正好是 从【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_94【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_95 以及从 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_96【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_97的这样函数,即约束完全覆盖二次型的自变量。

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_09 天生就比 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_72

3、代价函数和约束的拉格朗日乘子法表示

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_06 来:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_106  这就是带约束的拉格朗日乘子法,注意 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_107 可能不是数,而是列向量,所以 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_108

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_76【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_110 相加,可以合并:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_111

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_112【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_113 的项,起个新的名字 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_114,设
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_115  这样可以写成非常简单的形式:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_116  把它展开变成:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_117  最后再加上 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_118 再减去负的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_118,这样和原式相等,但加了负的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_118 就可以和前面东西合并:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_121
  写成这样就可以求导。

注意:是向量求导,不是数的求导,下面复习一下向量求导。


五、向量导数

1、向量导数规则

  规则如下:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_122  若 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_78 为对称矩阵,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_124

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_07【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_08 都是对称矩阵,所以对 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_07【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_08 的二次型求导直接乘以 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_129

2、求解偏导数的规律

  先写几个找规律:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_130【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_131【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_132  发现偏导有相同的规律,可直接写成:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_133  上式中的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_76 都是 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_76

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_136 以及 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_137。首先把 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_114 的定义拿下来:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_115  根据向量导数得到:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_140【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_141  把式子带到上面四个等于 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_76

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_143  看起来好像是四个式子,但实际上是 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_144

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_144 个式子,发现 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_146式明确给出了 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_147,其中 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_08【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_80 已知,剩下的 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_150 未知,如果算出 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_150 等于多少?就可以算出 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_113,这样 LQR 问题就解决了。

问题是 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_153

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_154式可以得到 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_155,和 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_07【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_157 有关,而 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_158式和 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_159式都表示 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_150【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_161 以及【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_162【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_72

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_164 等于什么的话,通过 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_158式和 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_159式反向逆推,一直推到初始状态。

3、递推关系式的推导

  递推式如下:

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_154代入【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_146【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_169 式:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_170  将【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_171代入【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_159【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_169 式:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_174  将【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_154代入【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_158【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_169 式:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_178  将【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_179代入【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_180【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_169 式:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_182  将【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_154【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_184式比较,发现很像。

4、黎卡提方程的引入

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_164 推到【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_186【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_187,一定有相同形式,不妨设:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_188  这样把求【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_189 的问题转化为求 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_190

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_146式,控制量 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_113 直接和 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_150相关,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_150又和 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_195 相关,因此只要求出 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_195 来, 就能算出来【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_113,算出来之后 LQR 问题就迎刃而解了。

那么 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_198

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_154式直接可得到 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_200

  重复上面的递推过程,经过计算得到这样的递推式:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_201  该递推式叫做 黎卡提方程(Riccati)

5、控制量的表达式

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_200 ,就可以通过逆推出【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_203【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_204,一直这样递推下去,算出来 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_190 之后就好办了
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_206  移项得到
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_207

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_113 的具体表达式,其中,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_209 都是已知量, 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_210 是黎卡提方程算出来的,又和 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_211 有关,但 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_211 一般也是已知,因为 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_211 一般取误差 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_214【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_215 就是当前车辆的状态, 通过定位得到的。【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_216

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_217,误差是【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_218【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_219,可以通过规划和定位得到,所以控制的上游就是规划模块以及定位模块。

  这两个如果都没有,那就没有办法做控制,所以控制一定是最后做的,就是当定位好了,规划也规划好了之后,才能去做控制。


六、黎卡提方程

  还要讲一下黎卡提方程。

1、迭代性质

  有人可能会觉得为什么叫方程呢?这不就是迭代的东西,就应该是迭代的递推的这样的式子,和方程有什么关系?为什么要把递推的式子叫做方程?

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_220【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_88 趋无穷时,仍然选 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_200,要迭代无数次。

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_223式黎卡提方程,迭代几十次后就收敛不再变化了,即 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_224

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_195 实际上是 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_226

2、LQR控制量的计算

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_210 先取初值 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_07,带到黎卡提方程迭代,当 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_210 收敛后,代到 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_09 的表达式中:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_231  令 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_232,可简化为:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_233   Matlab 里离散 LQR 的用法是
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_234  其中 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_232【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_236 是黎卡提方程的解 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_210【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_238

  Matlab dlqr函数用法就是输入【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_239,就会计算出 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_240。算出 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_241 以后, 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_09 就等于【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_243,这样就可以得到想要的控制量。

3、其他书中的黎卡提方程形式

  其他书上的黎卡提方程形式如下:

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_244

4、矩阵求逆引理的应用

  通过矩阵求逆引理化简:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_245  把推导出来的黎卡提方程拿下来:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_246  对括号里的部分使用矩阵求逆引理,令
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_247  所以
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_248  代入原方程化简得到:
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_249【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_250

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_251【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_80【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_253矩阵,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_08【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_255矩阵,【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_210【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_257矩阵。

注意:矩阵求逆是很容易出错误的运算,特别是在当矩阵性质不太好时,矩阵求逆非常容易发生错误,存在舍入误差,最后求逆会得到错误的逆矩阵。


七、LQR算法总结

  首先写出误差导数
【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_笔记_05

1、离散化

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_259

2、求解黎卡提方程

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_控制算法_260

3、求解 K

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_261

4、求解控制量

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_262

  本节博客把 LQR 原理基本上讲的很明白了。

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_人工智能_263,只考虑 【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_自动驾驶_12

【自动驾驶】控制算法(五)连续方程离散化与离散LQR原理_LQR_02


参考资料

  【基础】自动驾驶控制算法第五讲 连续方程的离散化与离散LQR原理


后记:

🌟 感谢您耐心阅读这篇关于 连续方程离散化与离散LQR原理 的技术博客。 📚

🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢

🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀

🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡

🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀