前言:发现好多以前收藏的文章变成了付费,只能自己写一篇方便随时回忆回忆回忆……
简而言之,LQR的推导过程可分为四部分:
- 建立状态空间方程
- 状态方程线性化
- 连续状态方程离散化
- 离散方程求解(转化为黎卡提方程)
一、建立单车运动学模型状态空间方程
其中, 、
、
分别是车辆的横、纵坐标及航向角,
为纵向车速,
为轴距,
为前轮转角,也是将来要计算的控制量。
二、状态方程线性化
用求偏导的方式进行梳理
令
求偏导
令误差,
,
,
(
表示控制量为前轮转角增量)
于是形成了形如的线性化方程,其中
,
,
,
为控制输入
三、连续方程离散化
其中,,
,
为状态变化周期/控制周期
另一形式:
其中,,
,
为状态变化周期/控制周期
两种形式均可得
,
四、离散方程求解
求解具体细节可参考《控制之美》书里写的方法,Dr.Can写得很详细,也可以参考这个链接https://zhuanlan.zhihu.com/p/636305927,这里只写简略的过程
考虑LQR的目标函数
其中,为状态权重矩阵,半正定,
为控制权重矩阵,正定;
为状态权重矩阵的初始值
当最小时,所得
即最优,故构造价值函数
,
其中,将
代入上式可得
然后对上式使用对求偏导的方式求极小点可得
时刻最优解
又考虑全反馈控制中,,则
代入价值函数中可得
其中为
时刻最小代价,且
至此,将求解最优控制量转化为求之后又转化为求
。
五、实际使用须知
1、经上述方式求解的控制量实际只是增量控制量,需配合前馈(通常与目标点的曲率相关)食用,LQR也可以说是一种对前馈进行调节的控制方法
2、Q矩阵取值越大,误差的影响越大;R取值越大,控制量的变化越小,平衡两者的取值很重要,可以把两个矩阵的比例作为一种调参的标准
3、LQR对轨迹的曲率连续性要求很高,也就是轨迹点的二阶连续性,如果轨迹曲率变化较大,那么LQR很容易震荡而且无法收敛
4、自动驾驶用LQR要加很多很多滤波,输入的误差、输出的控制量、前馈等都要各种滤波保障一定的稳定性,避免突变,否则很容易跑飞
后记:本篇既是给自己记下LQR的思路,也希望能方便需要的伙伴能对LQR求解有个大体了解,欢迎讨论,轻喷。

3703

被折叠的 条评论
为什么被折叠?



