最小平方误差判别matlab代码_Matlab玩转车辆控制(一)

5aff92be82aab649e3c181209a754e62.png

曾经的你,我,他:

a4f57d0796b4b931de130eeb914ce303.png

百度一下之后,找到了许多如出一辙的程序,以驱动力图为例,伪代码如下:

for 档位从最小到最大
由发动机转速范围得到该档位车速范围
通过车速得到转速
把转速带入拟合公式得到转矩        

细细品之后,你会发现,你被困在三个字里了:外特性。

我之前很多文章都有提到,外特性等价于油门踩到底,但我们知道实际并非如此。

我在此前的文章:

我不是Matlab:基于Simdriveline的车辆起步、加速、换挡仿真​zhuanlan.zhihu.com
0010412d8b61848a36bc542a0faa08fb.png

提到过:我们需要用发动机稳态转矩输出特性来代替外特性,也可以理解为,我们应该得到发动机的map图。


正文

我亲爱的看官,今天的主题是利用李雅普诺夫方法设计控制器,以进行车速跟踪。如果你要做课程设计,或者毕业设计中有相关内容,那么,你来对了哟。

仿真,无时无地(但电脑必备)不能进行。这里,各位参看余志生老师汽车理论第一章那条汽车行驶方程式,一切故事,从这里开始.....

(我们就在平地上进行跟车哈,正余弦分别为0和1)

将上式转化为状态空间的形式,并令状态变量为

,那么我们的加速度可以表示为
。状态空间表达如下:

这里,有些看官可能会不知道这个1.6319怎么来的,下面列一下:

1.6319=21.15/(3.6^2)。 因为我们的单位发生了变化

假设我们的目标车速是

,我们定义误差为

然后我们根据李雅普诺夫稳定性理论进行控制器的设计,进行车速跟踪:

针对我们的问题,简要概述一下:

李雅普诺夫稳定性理论认为,找到一个以包含误差e的正定的李雅普诺夫函数V,

并且能够满足该函数对时间的导数dV/dt是负定的:即当e不等于零时,V>0,dV/dt<0

恒成立,那么状态e最终将会收敛于零,也即渐进稳定。

这里我们取

,可知,当e不为零时,V恒大于零,满足正定条件。

由前述的状态方程,上式可以转化为:

我们要让dV/dt负定,一个非常直观的方法就是,我们如果令上式的括号内的部分等于

,

那么我们可以得到

,其中k为正数。

那么很明显,在e不为零的点,上式的导数恒小于零,即上式负定,则,最终我们的误差会收敛到零。

最终我们得到

而,进一步思考,我们所谓的车速跟踪,在当前的模型与问题下,是通过调节我们的驱动力矩来进行车速控制,于是,我们的目的开始明了,我们需要把这个未知的

用系统中的已知量进行表达:

同时施加该力矩,也即控制率到我们的系统中,仿真结果如下(跟踪车速为12km/h,图示单位为m/s)

d868f1342b8cd03a34390d19a7754a93.png

其中同时改变k的值,可以影响稳定所需的时间,当前k=1.随着k值的增大,收敛所需时间变短,但控制率将增大,即我们的所需的发动机转矩也将增大。控制中也需要考虑能耗问题,因此实际中需要慎重选取合适的k值。

以下附上模型与参数:

2d516e147e3546bff70fb211cc230902.png

fe389a98052c0f11682a59c9535b50b6.png
m = 3880;
r = 0.367;
eta = 0.85;
f = 0.013;
g = 9.8;
CdA = 2.77;
i0 = 5.83;
ig = 5.56;
k = 1;
delta = 1.1;

新的平台:

欢迎大家关注我和我的搭档的公众号:豪杰仿真科技

公众号会有更多精彩文章、视频教程、程序模型等

本文结束,希望大家Matlab越玩越开心

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值