原文链接:进阶课程㉘丨Apollo控制技术详解——基于模型的控制方法

PID控制是一个在工业控制应用中常见的反馈回路部件,由比例单元P、积分单元I微分单元D组成。PID控制的基础是比例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快大惯性系统响应速度以及减弱超调趋势。

上周阿波君为大家详细介绍了「进阶课程㉗Apollo控制技术详解——控制理论」。

主要介绍Apollo控制相关内容,包括常用控制理论、功能限制与未来趋势、相似原理在不同模块中的应用。目的是让大家了解控制模块的整体脉络及理论,通过案例讲解将理论转化成code及真正测试标准的方法。

本周阿波君将继续与大家分享Apollo控制技术详解——基于模型的控制方法的相关课程。下面,我们一起进入进阶课程第28期。


目录

1.建模

2.系统辨识

3.控制器设计


相对于简单的PID控制,Apollo里面更多使用基于模型的控制方法,它包括四个部分:建模、系统辨识、控制器设计参数调优。本节主要介绍前三个部分,如图1所示。

                                                                                        图1 设计基于模型的控制模块的关键步骤

1.建模

Modeling一般可以分为分析建模拟合建模。通常,一个模型主要由各种属性表示,如图2所示,主要包括描述输入输出的数量、模型是线性还是非线性、连续还是离散等特性。

                                                                                                图2 模型的属性表示

控制模块中的模型,通常包括运动学模型动力学模型。运动学模型是一种几何模型,感知、预测讨论的模型则以运动学模型为主。而在控制模块中,更多考虑动力学模型。实际上,运动学模型是动力学模型的一个子集。

                                                                                                图3 运动学模型和动力学模型

在自动驾驶中,Dynamic model以Kinematics model为初始模型,将环境等参数设置到Kinematics model中,把车看作质点进行分析。Dynamic model将车按车轮等部分分开进行约束或者系统补偿。

图4是两个比较简单的几何模型,左图是一个综合移动机器人控制模型,右图是著名的自行车模型,它把汽车看作只有两个轮胎的自行车,该模型在当年的DARPA挑战赛上获得冠军。

                                                                                                        图4 两个几何模型

实际上,只考虑几何约束是不够的。下图是一个动力学模型,它不仅考虑了几何约束,还考虑了力矩和扭矩平衡。如图5所示,在自行车模型中,把前后轮都在XY两个方向进行分解。

                                                                                                        图5 动力学模型

图6是刚体的一些力矩分析以及扭矩分析的公式,总体满足牛顿第二定律。

                                                                                                图6 力矩与扭矩分析公式

在假设纵向速度为0的情况下,我们可以对横向方程进行线性化,如图7所示。线性化的过程需要基于一些假设。大家一定要记住,做完控制之后要检查这些假设是否合理或者是否会造成很大的误差。

                                                                                                        图7 模型线性化

通常情况下,模型的建立是基于误差,而不是参考值,如图8所示,对实际侧向加速度和理想侧向加速度之间的误差进行建模。

                                                                                                        图8 基于误差的建模

在控制器实现过程中,通常会将ODE或者PDE方程进行处理,转化为矩阵计算的形式。虽然在数学表达形式上不一致,但是其物理含义保持不变,如图9所示。在状态空间表示中还会给出一些状态量的标识,包括输入量

                                                                                                        图9 状态空间表示

关于汽车的动力学模型,感兴趣的可以参考以下文献。

                                                                                                图10 车辆动力学模型相关参考文献


2.系统辨识

                                                                                                        图11 系统辨识

在模型中,有些参数是未知的,系统辨识的目的是确定这些未知参数的值。确定未知参数的方法有三种:白盒、灰盒以及黑盒方法

白盒方法是指对于基于第一原理(如牛顿定律)的模型结构,可以由测量数据估计模型的参数。

灰盒方法是用于只有部分模型结构可知,通过数据重建的方法来获取模型的其它部分的方法。

黑盒方法是指模型结构和参数都在未知的情况下,只能通过输入输出数据来估计的方法。

关于白盒和黑盒方法,更多的可以参考以下资料。

                                                                                                图12 白盒和黑盒方法的参考资料

基于学习的系统辨识方法可以参考以下资料,仔细分析,我们会发现基于学习的辨识方法和黑盒方法很类似。

                                                                                                图13 基于学习的系统辨识方法参考资料


3.控制器设计

基于模型的控制模块设计第三步是控制器的设计,包括滤波器设计、控制器设计以及观察器设计等。

滤波器可以分为线性非线性,数字滤波或者模拟信号滤波,离散滤波或者连续滤波等,如图14所示。

                                                                                                        图14 滤波器分类

前面已经介绍,系统在频域里面需要满足某些性能要求,滤波器通常也会对频域信号进行处理。根据频域边界,我们可以对滤波器进行进一步细分,如图15所示,包括低通滤波,高通滤波等。

                                                                                                图15 低通滤波和高通滤波

根据实现方式不同,滤波器又可以分为高斯滤波、卡尔曼滤波、贝叶斯滤波等,如图16所示,这些滤波器通常用于预测跟踪

                                                                                                图16 用于预测和跟踪的滤波器

Apollo进阶课程㉘丨Apollo控制技术详解——基于模型的控制方法相关推荐

  1. Apollo进阶课程㉙丨Apollo控制技术详解——控制器的类型

    原文链接:进阶课程㉙丨Apollo控制技术详解--控制器的类型 控制主要是为了弥补数学模型和物理世界执行之间的不一致性.对于自动驾驶而言,规划的轨迹和车辆的实际运行轨迹并不完全一致,控制器按照规划轨迹 ...

  2. Apollo进阶课程㉗丨Apollo控制技术详解——控制理论

    原文链接:进阶课程㉗丨Apollo控制技术详解--控制理论 控制模块根据预测的轨迹和估计的车辆状态向油门.刹车或转向扭矩发送适当的命令.控制模块使汽车尽可能接近计划的轨迹.控制器参数可以通过最小化理想 ...

  3. Apollo进阶课程㉖丨Apollo规划技术详解——Understand More on the MP Difficulty

    原文链接:进阶课程㉖丨Apollo规划技术详解--Understand More on the MP Difficulty EM是一个在已知部分相关变量的情况下,估计未知变量的迭代技术,EM的算法流程 ...

  4. Apollo进阶课程㉕丨Apollo规划技术详解——Optimization Inside Motion Planning

    原文链接:进阶课程㉕丨Apollo规划技术详解--Optimization Inside Motion Planning 在自动驾驶软件的开发中,运动规划是最核心的模块之一.它将综合感知.定位和地图等 ...

  5. Apollo进阶课程㉔丨Apollo 规划技术详解——Motion Planning Environment

    原文链接:进阶课程㉔丨Apollo 规划技术详解--Motion Planning Environment 自动驾驶汽车核心技术包括环境感知.行为决策.运动规划与控制等方面.其中,行为决策系统.运动规 ...

  6. Apollo进阶课程㉓丨Apollo规划技术详解——Motion Planning with Environment

    原文链接:进阶课程㉓丨Apollo规划技术详解--Motion Planning with Environment 当行为层决定要在当前环境中执行的驾驶行为时,其可以是例如巡航-车道,改变车道或右转, ...

  7. Apollo进阶课程㉒丨Apollo规划技术详解——Motion Planning with Autonomous Driving

    原文链接:进阶课程㉒丨Apollo规划技术详解--Motion Planning with Autonomous Driving 自动驾驶车辆的规划决策模块负责生成车辆的行驶行为,是体现车辆智慧水平的 ...

  8. Apollo进阶课程㉑丨Apollo规划技术详解——Basic Motion Planning and Overview

    原文链接:进阶课程㉑丨Apollo规划技术详解--Basic Motion Planning and Overview 运动规划(Motion Planning)就是在给定的位置A与位置B之间为机器人 ...

  9. Apollo进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术

    目录 1.百度无人车定位进化历程 2.百度自动驾驶应用的定位技术 2.1GNSS定位技术 2.2载波定位技术 2.3激光点云定位技术 2.4视觉定位技术 原文链接:进阶课程 ⑮丨Apollo自动定位技 ...

最新文章

  1. 难搞的偏向锁终于要被Java移除了
  2. 主题分享 | 王建民:关于工业软件人才培养的思考
  3. 同步电机调速matlab,基于matlab的永磁同步电机调速系统的仿真word格式
  4. mysql新增json_MySQL5.7中新增的JSON类型的使用方法
  5. Docker核心原理之namespace
  6. 操作系统(二十一)信号量机制
  7. 判断奇数偶数和闰年(Python)
  8. 导出oracle11g的空表,轻松解决oracle11g 空表不能 exp 导出 的问题。
  9. c++时间片轮转rr进程调度算法_进程,线程基础(—)
  10. 怎么查自己电脑服务器信息吗,怎么查看自己云服务器信息吗
  11. LINUX编译spandsp
  12. oracle循环视频教程,玩转Oracle入门知识和实战教程---韩顺平主讲(全31集)
  13. SqlServer 2017 下载地址及密钥下载地址
  14. java网店系统_java网店系统JSPGOU
  15. 多台电脑之间共享键盘鼠标
  16. 微信小程序开发者工具扫码成功但是进不去
  17. 20190919-6 四则运算试题生成
  18. GTX1050Ti和GTX1060显卡哪个好?
  19. 电脑连接wifi总是断 手机正常 解决方案
  20. 金山云2018年Q4财报里的“去小米化”

热门文章

  1. 如何计算一年总共有多少周_一年有几个周?怎么计算周数及闰年?
  2. 计算机修改文字试题,计算机文字处理试题.doc
  3. dropzonejs vue 使用_如何在Dropzone上手动触发上传文件事件
  4. 浏览器获取设备信息_一条命令获取 IE 浏览器保存网站的账号和密码信息
  5. location.href属于重定向还是转发_servlet2 单元测试、转发、重定向
  6. 坦克大战代码_坦克大战系列文章-坦克大战简介
  7. c#sql防注入模糊查询_SQL中利用LIKE实现模糊查询的功能
  8. 中国大学慕课计算机专业导论,2015秋计算机专业导论(大连大学)
  9. php获取网页输出,PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)_PHP教程
  10. 【转】C++中如何区分构造函数与重载operator()得到的仿函数?