写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝
🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~
文章目录
- 引言
- 一、油门标定原理
- 1.1 油门与速度、加速度的关系
- 1.2 油门控制曲面模型的构建
- 二、油门标定表的制作流程
- 2.1 传统方法的局限性
- 2.2 基于深度学习的标定方法
- 2.3 数据采集与拟合
- 三、Carsim 油门标定实操与优化
- 3.1 准备工作与模型搭建
- 3.2 标定油门与刹车
- 3.3 数据采集与处理
- 3.4 标定表的建立与拟合
- 3.5 标定表在Simulink中的使用
- 3.6 速度与加速度控制
- 3.7 速度与加速度的匹配性分析
- 四、刹车标定
- 4.1 刹车标定表的制作方法
- 4.2 刹车标定数据的采集与拟合
- 4.3 刹车标定表的测试与优化
- 五、总结
- 参考资料
引言
各位小伙伴们大家好,本篇博客是自动驾驶控制算法第十节,内容整理自 B站知名up主 忠厚老实的老王 的视频,作为博主的学习笔记,分享给大家共同学习。
在讲第十节之前,希望大家已经把第九节的一切准备工作都准备好了,包括 Carsim 道路设置、输入输出设置、变速器设置、电机设置。具体参见:
【自动驾驶】控制算法(九)深度解析车辆纵向控制 | 从算法基础到 Carsim 仿真实践
本篇博客讲解讲油门刹车标定表的制作,是纵向控制的核心内容,也是一块比较麻烦的内容。
一、油门标定原理
1.1 油门与速度、加速度的关系
油门标定表的制作可以用下图来简单解释一下:
速度越高,加速度就越差,这也是因为第九节所讲的,因为
1.2 油门控制曲面模型的构建
选不同油门,就会得到不同曲线,把曲线全部拟合在一块,就会变成曲面:
这样就得到了油门和
二、油门标定表的制作流程
2.1 传统方法的局限性
接下来,谈谈传统方法的一些缺点。首先,实验要求路面必须平坦且较长,且车辆需进行直线行驶,方向盘不得有动作。而在实际驾驶中,方向盘难免会有轻微的抖动,这使得实验条件过于严苛。此外,传统方法无法解决车辆质量变化的问题。
2.2 基于深度学习的标定方法
由于对深度学习的了解尚不深入,目前还无法详细讲解基于深度学习的标定方法。待未来深入学习后,再进行相关讲解。本篇博客仍将采用传统方法进行标定,因为这种方式更易于上手。
2.3 数据采集与拟合
刹车和油门一样,就是不同的刹车会导致不同的
至此,理论部分就讲完了,接下来到实践部分看一下该怎么标定油门和刹车,把第九节所讲的模型准备好。
三、Carsim 油门标定实操与优化
3.1 准备工作与模型搭建
来到 Carsim 模型,由于要标定刹车,所以在模型输入中不仅要把油门弄上去,还要把刹车的制动压力弄上去,作为输入。
点击 Send to Simulink
,先标油门,再标刹车,所以刹车先给
首先把油门输入改为变量 thr
,用 to workspace
模块把 Carsim 输出的
vx
和
ax
,当跑模型时,会将模型输出存到
vx
和
ax
变量里,然后点保存。
3.2 标定油门与刹车
一切准备就绪后就可以写标定算法了。
这两行代码是通过 Matlab 调用 Simulink 最简单的语法,实现两者之间的联动。
开始运行就会把 thr = 1
传到 Simulink 模型里,跑完一遍后会把 vx
和 ax
传进来。
3.3 数据采集与处理
上面两行代码实际上只是演示,把这两行代码注释掉,再清除一下工作区,然后开始写代码:
运行代码测试一下,此程序要耗一点时间,如果电脑性能不行的话,要做好心理准备,而且在跑之前一定要先清除工作区。
运行完之后,看一下速度、加速度以及油门:
3.4 标定表的建立与拟合
运行一下,发现确实变成了很长的行向量:
然后进行拟合:
运行程序。看一下合并后的表,是一系列油门这样的组合:
3.5 标定表在Simulink中的使用
做好表后回到 Simulink,首先搜索 lookup table
,选择 2-D Lookup table
二维查表模块:
参数按照下图填写:
这样就设置完了,看一下标定表长什么样:
大致看一下,其实拟合效果一般,在启动阶段波动比较剧烈,其实不应该把启动阶段的数据给拟合进去,因为启动阶段很不稳定,要把平稳运行阶段的数据进行拟合,要做一些数据处理,把那些比较奇怪的数据把给去掉。
3.6 速度与加速度控制
再来跑一下
加速度控制看完了,看一下速度控制:
3.7 速度与加速度的匹配性分析
如果直接把车辆当前加速度拉过来,作为标定表查表的加速度,行不行?
控制结果会非常差。因为速度和加速度不匹配。
速度与加速度相匹配的概念可以这样理解:在车辆行驶过程中,速度与加速度需要协调一致,以实现预定的行驶目标。下面举个具体的例子来说明这一点:
公里/小时,那么车辆应该保持匀速运动,即加速度为
。因此,他们可能会直接在控制表中设定速度为
,加速度为
。![]()
但这样做的话,结果往往是非常不理想的,因为车辆可能根本达不到公里/小时的速度。原因在于这种设定没有考虑到速度与加速度的匹配问题。初始速度为
,要想达到
公里/小时的速度,必须有加速度作用。但如果加速度立即设为
,车辆就无法加速,这就产生了矛盾。![]()
因此,在上述例子中,可以使用目标速度与当前速度的差值作为加速度的输入信号,这样就能实现速度与加速度的匹配,从而显著提高控制效果。
四、刹车标定
4.1 刹车标定表的制作方法
油门标定完成后,下面介绍刹车标定表的制作方法,其实刹车标定表和油门标定表非常类似,不过右几点东西需要改一下。
首先在模型里先把 2-D Lookup table
二维查表模块删掉,油门设为
bake
。
在 Carsim 的 Procedures
设置里,将初速度改成
Send to Simulink
即可。
把代码写一下,油门标定代码和刹车标定代码几乎一模一样。
变成
,每
就是标意思,这样循环就是从
到
了,而不是从
到![]()
![]()
4.2 刹车标定数据的采集与拟合
下面看一下刹车标定代码,和油门标定代码类似:
为什么刹车不能超过
![]()
因为现在的车都有 ABS 防抱死系统,就是刹车不允许踩得特别深,会发生很多危险,即不允许车轮抱死,所以刹车一般到 8 就已经到极限了,再大的话防抱死系统就开始工作了。
跑完后看一下表:
接下来的操作就很简单了,找二维查找表,把得到的标定表输进去。下面看一下标定表的数值分布:
4.3 刹车标定表的测试与优化
把速度连上去,看一下结果:
五、总结
在完成了 Carsim 模型中的油门和刹车标定后,能够更精确地控制车辆的加速和减速过程。通过采集不同油门和刹车条件下的速度和加速度数据,并使用这些数据建立标定表,我们能够在Simulink模型中实现更精确的速度和加速度控制。油门标定表的建立使得我们能够根据期望的速度和加速度,通过查表的方式得到相应的油门开度,从而实现速度控制。
通过油门和刹车标定,能够实现更精确的车辆控制,提高行驶的安全性和舒适性。同时,还要注意速度和加速度之间的匹配,以确保控制效果达到预期。
本篇博客就讲到模型和代码,谢谢大家的收看,下期再见。
参考资料
后记:
🌟 感谢您耐心阅读这篇关于 Carsim 油门刹车标定表的制作 的技术博客。 📚
🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢
🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀
🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡
🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀