背景

假设有一个线性系统能用状态向量的形式表示成:


设计一个状态反馈控制器:
u=−Kxu=−Kx u=−Kx
则此时状态方程可以写为:

由于让系统稳定的条件是矩阵Acl的特征值的实部均为负数,因此我们可以手动选择几个满足上述条件的特征值,然后反解出K,从而得到控制器。
那么问题来了,我们该如何选择特征值,才能让控制器的控制效果最好呢?现在我们定义一种代价函数:

其中,Q和R是两个对角参数矩阵,Q为半正定矩阵, R为正定矩阵。分别决定了状态向量 x 和输入向量 u 的重要性。显然,J是一个二次型函数,这也是LQR中“Q”的由来。
我们希望的是在满足系统稳定的前提下,通过设计合适的K,让代价函数J最小。
下面我们来分析代价函数的意义。

代价函数的意义

参考这一篇文章:
链接: link
概括来说就是:调节Q的大小可以控制系统状态收敛的快慢;调节R的大小可以控制让系统达到稳态所需输入的大小;

Apollo2.0 LQR控制算法解读

车辆动力学模型的推导可以看这篇:
链接: link

  1. 当推导出车辆动力学模型后,选取横向偏差、横向偏差变化率,横摆角角度偏差,横摆角角度偏差变化率作为状态量建立状态空间方程:
  2. 建立目标函数:
  3. 其中Q为状态权重系数,R为控制量权重系数。当上述目标函数最小时就得到最优的状态反馈矩阵K,此时的K可以保证求出最佳控制量,即最佳前轮转角。

4. 上图表示求出最佳转角之后,只能保证(A-BK)x那部分达到稳态,所以还需要增加一个前馈控制量,试另一部分趋近于0.
4. 这个前馈控制量试可以通过纵向车速Vx和道路的半径R计算得到
5. 最终的前轮转角的控制量为最优状态反馈控制量与前馈控制前轮转角之和。计算的出前轮转角经过上下限的限幅后进行输出。
参考链接: link
link

LQR控制算法及代码实践相关推荐

  1. 直流无刷电机FOC控制算法 理论到实践 —— 实践

    直流无刷电机FOC控制算法 理论到实践 -- 实践 文章目录 直流无刷电机FOC控制算法 理论到实践 -- 实践 1. 前言 2. FOC控制整体流程 3. FOC实现 3.1 定时器实现 3.1.1 ...

  2. ReactiveCocoa代码实践之-更多思考

    三.ReactiveCocoa代码实践之-更多思考 1. RACObserve()宏形参写法的区别 之前写代码考虑过 RACObserve(self.timeLabel , text) 和 RACOb ...

  3. 语音识别——基于深度学习的中文语音识别tutorial(代码实践)

    文章目录 利用thchs30为例建立一个语音识别系统 1. 特征提取 2. 数据处理 下载数据 2.1 生成音频文件和标签文件列表 定义函数`source_get`,获取音频文件及标注文件列表 确认相 ...

  4. 【深度学习】图像去模糊算法代码实践!

    作者:陈信达,上海科技大学,Datawhale成员 1.起源:GAN 结构与原理 在介绍DeblurGANv2之前,我们需要大概了解一下GAN,GAN最初的应用是图片生成,即根据训练集生成图片,如生成 ...

  5. 【机器学习基础】(六):通俗易懂无监督学习K-Means聚类算法及代码实践

    K-Means是一种无监督学习方法,用于将无标签的数据集进行聚类.其中K指集群的数量,Means表示寻找集群中心点的手段. 一. 无监督学习 K-Means 贴标签是需要花钱的. 所以人们研究处理无标 ...

  6. 【机器学习基础】通俗易懂无监督学习K-Means聚类算法及代码实践

    K-Means是一种无监督学习方法,用于将无标签的数据集进行聚类.其中K指集群的数量,Means表示寻找集群中心点的手段. 一. 无监督学习 K-Means 贴标签是需要花钱的. 所以人们研究处理无标 ...

  7. 【机器学习基础】(五):通俗易懂决策树与随机森林及代码实践

    与SVM一样,决策树是通用的机器学习算法.随机森林,顾名思义,将决策树分类器集成到一起就形成了更强大的机器学习算法.它们都是很基础但很强大的机器学习工具,虽然我们现在有更先进的算法工具来训练模型,但决 ...

  8. 【机器学习基础】(四):通俗理解支持向量机SVM及代码实践

    上一篇文章我们介绍了使用逻辑回归来处理分类问题,本文我们讲一个更强大的分类模型.本文依旧侧重代码实践,你会发现我们解决问题的手段越来越丰富,问题处理起来越来越简单. 支持向量机(Support Vec ...

  9. 【机器学习基础】(三):理解逻辑回归及二分类、多分类代码实践

    本文是机器学习系列的第三篇,算上前置机器学习系列是第八篇.本文的概念相对简单,主要侧重于代码实践. 上一篇文章说到,我们可以用线性回归做预测,但显然现实生活中不止有预测的问题还有分类的问题.我们可以从 ...

  10. 【NLP】Doc2vec原理解析及代码实践

    本文概览: 1. 句子向量简介 Word2Vec提供了高质量的词向量,并在一些任务中表现良好.虽然Word2Vec提供了高质量的词汇向量,但是仍然没有有效的方法将它们结合成一个高质量的文档向量.对于一 ...

最新文章

  1. 使用dd查看磁盘前4个扇区的内容
  2. XXL-RPC v1.3.2,分布式服务框架
  3. java中由类名和方法名字符串实现其调用【反射机制】
  4. Hdu 1384 Intervals
  5. rsync 常用命令及格式
  6. Linux查看设备 eth,lspci grep Eth,查看Linux下的各种硬件设备是否识别或存在之用
  7. 前端学习(1295):第三方模块npm
  8. 给所有开发人员的 11 条忠告(第 4 条亮了)
  9. python 中split函数的应用_举例详解Python中的split()函数的使用方法
  10. Myeclipse10 整合SSH过程(巨详细!!!)及出错笔记
  11. 浅析 Bash 中的 {花括号} | Linux 中国
  12. Cocos creator之javascript闭包
  13. java中properties类_Java中的Properties类详解
  14. 《具体数学》——数论
  15. matplotlib如何绘制圆
  16. 深度 | 实景三维与CIM,谁才是时空数据第一底板 三维视频融合 三维投影融合 时空克隆 点卯-魔镜系列
  17. 印象笔记 HTML邮件,#印象笔记#如何使用私有邮箱地址保存内容到印象笔记?
  18. Matplotlib Pyplot
  19. JavaScript 实现异步任务调度器
  20. 360和广点通广告SDK注意事项

热门文章

  1. 电脑桌面隐藏文件如何恢复出来呢
  2. CentOS7 python django框架 天天生鲜项目 搭建流程
  3. [C#]六十甲子纳音WM版 v2.1 By:LESLIE
  4. GMP与ISO9000有何区别?(转载)
  5. max31865C语言程序,max31865温度传感器通信驱动代码
  6. 设置盒子背景色透明度
  7. 6G总体愿景与潜在关键技术白皮书【PPT】
  8. C++ 线程安全的单例模式总结
  9. caffe教程笔记《Solver》
  10. 正点原子STM32串口例程解析