资源经验分享自动驾驶(六)---------模型预测控制

自动驾驶(六)---------模型预测控制

2019-12-25 | |  122 |   0

原标题:自动驾驶(六)---------模型预测控制

原文来自:CSDN      原文链接:https://blog.csdn.net/zhouyy858/article/details/96474144


模型预测控制(Model Predictive Cont

          顾名思义,基于模型,预测未来,进行控制。所谓模型,就是车辆运动学模型。

                               1573468661345056731.jpg

         模型预测控制是一种基于模型的闭环优化控制策略。预测控制算法的三要素:内部(预测)模型、参考轨迹、控制算法。

  • 预测模型:预测模型能够在短时间内很好地预测系统状态的变化

  • 在线滚动优化:通过某种最优化算法来优化未来一段短时间的控制输入,使得在这种控制输入下预测模型的输出与参考值的差距最小

  • 反馈校正:到下一个时间点根据新的状态重新进行预测和优化  

轨迹模型:

          我们的轨迹模型用一个3阶多项式函数。对x求导即为车身角度ψ的正切:

                                   03.png

动态模型:

          基于以上的轨迹,用车辆运动学模型,计算预测车辆轨迹,利用t时刻的状态去预测在t+1拍时刻的车辆状态。

          车辆状态包括:车辆位置,速度,角度:04.png

滚动优化:

          假设我们给出一组控制参数,按照控制模型,会得到一个控制预测轨迹,

          我们期望这组轨迹和我们的控制目标要要一至,但是这中间要经历运动模型(非线性)变换,并且我们知道的是一条3阶多项式,也要转化成油门转角,所以中间的模型参数,都需要建模处理。

           现在我们知道控制目标(一串轨迹,或者3阶多项式),按照控制模型反求合适的控制参数,定义损失函数

           首先想到的一个损失函数就是我们的模型预测的轨迹和参考线之间的“差距”, 我们优化的目标就是找出一组控制量(即 油门刹车系数和方向盘转角),使得我们的Loss function最小化。

                                                            05.png

          上文中我们只考量未来10个时间间隔内的模型预测,所以i的取值范围是(1,10) 。

          可以给损失函数添加更多项,比如想控制车辆在每个点上的速度,则添加一项速度的平方差:

                                                             06.png

           为了控制平滑,我们希望油门系数不要突变

                                                  07.png

           还可以再加,不过我已经够了,这个最优化问题中的变量是 带约束的 ,比如说车辆的前轮转角有一定的取值范围,车辆油门系数有取值范围的。

           求解这个最优解问题,解出当前对应的油门转角,作为控制输入。

反馈矫正:

          当我们通过上面最优化方法得到一组控制输出以后,车辆执行控制指令,并且反馈当前车辆的状态,依据新的车辆状态,结合感知模块的信息以及地图信息重新做出规划(新的3阶多项式)。需要注意的是,车辆真实状态的反馈并不是一个预测时间段的控制执行完以后才反馈的,反馈的时间间隔往往小于一个预测时间段:

                                                    03.png

总结:

         模型预测控制往往可以分解成如下几步: 
          1. 从 tt 时刻开始,预测未来 aa 步系统的输出信号 
          2. 基于模型的控制信号以及相应的输出信号,构造损失函数,并且通过调整控制信号最优化损失函数 
          3. 将控制信号输入到系统 
          4. 等到下一个时间点,在新的状态重复步骤1

喜闻乐结 C++代码:https://blog.csdn.net/tingfenghanlei/article/details/85046120

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:自动驾驶(五)---------车辆运动学模型

下一篇:自动驾驶(七)---------初探轨迹规划

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...