北京城市开发者社区 【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面: ???? 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。???? ???? 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 ????感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~文章目录引言一、Carsim 基础操作与车辆参数设置1、Carsim 安装路径与数据库路径2、车辆参数选择3、轮胎...

egzosn  ·  2024-09-18 16:44:54 发布

写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝
🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~


文章目录
  • 引言
  • 一、Carsim 基础操作与车辆参数设置
  • 1、Carsim 安装路径与数据库路径
  • 2、车辆参数选择
  • 3、轮胎参数调整
  • 二、Carsim 与 Simulink 联合仿真
  • 1、创建 Simulink 模型
  • 2、配置 Carsim 输入输出通道
  • 3、添加 Carsim 模块并运行仿真
  • 三、仿真结果分析
  • 1、车辆直线行驶
  • 2、车辆转向运动
  • 四、总结
  • 参考资料

引言

  本篇博客是 自动驾驶控制算法 系列的第八节第Ⅱ部分。内容整理自 B站知名up主 忠厚老实的老王 的视频,作为博主的学习笔记,分享给大家共同学习。

本篇博客讲解仿真软件的操作,做仿真要有两个软件:

  • Carsim
  • Matlab

  推荐 Matlab R2020a + Carsim 2019.1 的版本,其他版本的 Matlab 和 Carsim 可能会不兼容。


一、Carsim 基础操作与车辆参数设置

1、Carsim 安装路径与数据库路径

  在安装 Carsim时,一定有两个文件路径:数据库路径软件安装路径

  Carsim 的数据库路径如下图所示:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_联合仿真

  Carsim的安装路径如下图所示:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_02

  这两个文件路径非常重要。Carsim在安装时,就要求设置这两个路径。

  打开Carsim,让选择数据库的文件路径:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_03

  打开 Carsim 软件,启动时会提示选择 Carsim 的数据库路径。

  刚刚打开时可能什么都没有:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_04

2、车辆参数选择

  点上面的C-Class, Hatchback后面的下拉按钮,可以选择车辆类型,

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_联合仿真_05
级车、
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_06
级车、
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_07
级车:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_08

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_09

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_10

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_07

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_12

  点击第一行的C-Class, Hatchback进入如下界面:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_联合仿真_13

  可以读取到车辆相关的基本的信息:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_14

  车辆的质量、惯量之类的,在这里点击 Front Suspension

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_运动控制_15

  可以读取到悬架的质量,因为上面 Unsprung mass 质量只是簧上质量,所以

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_16

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_17

3、轮胎参数调整

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_18

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_19

  这是轮胎的侧偏曲线:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_运动控制_20

  侧偏曲线反映的是轮胎的侧偏刚度,图中有多条曲线,因为轮胎的侧偏刚度和垂向力有关。所以看右边的表,第一行表示的是垂向力的大小,因为垂向力越大,侧偏刚度也就越大。真正的侧偏角和侧偏力的关系从第二行开始读曲线,看图也是从第二行开始画的,所以不同垂向力就对应了不同的侧偏刚度曲线。

  侧偏刚度的计算,是通过整车质量以及质心到前轮后轮的距离,把四个轮的垂向力算出来,再代到轮胎的侧偏力和侧偏角关系曲线里,根据垂向力找对应的侧偏力与侧偏角关系曲线,根据关系曲线计算侧偏刚度。

  侧偏刚度的计算就是求斜率。看一下侧偏力和侧偏角的关系曲线,发现在侧偏角较小时,近似为直线,侧偏角变大后就变成曲线,所以只求近似为直线段的斜率,就是侧偏刚度,因为做控制不允许出现过大的侧偏角情况,这样车辆有失稳的危险。所以只考虑线性段,即曲线在小侧偏角下的斜率,就是侧偏刚度。

注意:因为侧偏刚度应该是负的,曲线的斜率是正的,所以计算时要改成负号。

  Carsim 有很多种轮胎,不同轮胎的侧偏刚度不同,下面换轮胎看看:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_21

  侧偏刚度改变,所以可以换各种各样的轮胎。


二、Carsim 与 Simulink 联合仿真

如何把 Carsim 和 Simlink 联合在一起?

1、创建 Simulink 模型

  在 Models 里有 Simulink:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_运动控制_22

  选择它,再选第二个[Link to New Dataset]

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_联合仿真_23

  随便起个名字,比如 test,点进去:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_24

  在软件里,要指定 Simulink 模型的路径,但是现在还没有模型,所以要先建模型。

  打开 Matlab,后打开 Simulink ,建立空模型,起个名字test,保存文件到Carsim的数据库路径下:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_运动控制_25

  名字和 Carsim 的 test 可以不一样,随便取什么都行。

  在数据库文件里,找到刚建好的空模型:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_26

注意: Matlab 要设置添加两个路径: Carsim数据库路径和安装路径。

  • 当前工作路径,就是 Matlab 工作路径,要设置成数据库的路径。

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_27

  • Metlab 里面有个设置路径,在设置路径里把 Carsim 的两个路径都设置进去,添加并包含子文件夹,把 Metlab 里面的数据库路径和安装路径它都弄到里面去,就这两个路径全都弄到里面去,选择添加并包含子文件夹

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_28

  要做这两步才可以,否则 Matlab 会报错。

  只有 Matlab 的工作路径设置成数据库路径,test才会自动保存在数据库路径的文件夹里。如果不是的话, test 可能保存到别的地方去,所以一定要先设置,再建 Simulink 模型。

2、配置 Carsim 输入输出通道

  回到 Carsim 软件,设置 输入(import)输出(export),选择IO Channels,选第二个选项I/O Channels: Import

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_29

  点击[Link to New Dataset],随便起个名字,输入(import)输出(export),选择IO Channels,选第二个选项I/O Channels: Import

  点进去里面什么都没有,因为还没有加载任何文件,所以先选择Choose run to get import omformation,第二个框选择Quick Start Guide Example中的Baseline

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_30

  选 select by unit按单位选择变量,控制的输入是油门、前轮转角、后轮转角,把前轮转角、后轮转角都添加进去:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_运动控制_31

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_32
,所以把这些变量添加到输出变量里:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_33

  如果不小心点错了,双击它就会消失。

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_34
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_35
是左的意思,
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_36
是右的意思,
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_运动控制_37
是前的意思。
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_运动控制_38
是后的意思,所以
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_39
是左前轮,
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_40
是右前轮,
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_41
是左后轮,
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_42

  设置完毕后退出,退出之后还没有完,先勾选 Show more options on this screen,再点 Advanced settings。在这里输入这一句话 opt_steer_ext(1) 4

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_运动控制_43

  如果不写这句话,只能通过方向盘改变车辆的前轮转角,而算法是通过直接控制前端转角来改变车辆航向。所以如果不加这句话,无法将前端转角作为输入,所以要把这句话加上。

  在 Procedure 里可以控制仿真时间以及仿真路程,因为路不是无限的,时间也不可能仿很久。比如在这里定义只仿真

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_44
秒,或仿真到
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_45

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_46

  两个条件任意一个达成,就停止仿真。

  一切准备就绪之后,点击 Send to Simulink就可以了。等一段时间后 Simulink 就跳出来了,可以看到模型还是空的,里面什么都没有,这样就没有办法仿真。

3、添加 Carsim 模块并运行仿真

  打开 Simulink,选择安装路径下的文件 Programs\solvers\Matlab84+\Solver_SF.slx,打开模块,里面有两个 Carsim 模块:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_47

  把其中一个模块复制到空的 Simulink 模型。双击模块,有个参数是 Carsim 和 Simulink 连接的文件,Simulink 要填连接文件的名字,是在 Carsim 的数据库文件里,当点Send to Simulink 时,会自动会生成 simfile.sim 文件。

  文件名就是要填的参数,一般默认就是 simfile.sim ,当然可以改成其他名字,这样模块的参数也设置成相应的文件。

  当在 Carsim 里改轮胎,改车辆质量、车辆的惯量之类的参数,每次修改都要重新点击Send to Simulinksimfile 文件就会自动更新。


三、仿真结果分析

1、车辆直线行驶

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_48
,前轮转角、后轮转角都是
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_49

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_50

  运行一下,用示波器看输出:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_carsim_51

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_44

  在 Carsim 里看一下结果:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_联合仿真_53

  因为没有打方向盘,所以车辆就是简单的直线行驶,不停加速。

2、车辆转向运动

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_matlab_49
改成
【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_自动驾驶_55
,再看一下仿真结果:

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_联合仿真_56

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_联合仿真_57
,是类似正余弦函数的形式。

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作_联合仿真_58


四、总结

  本篇博客讲解了 Carsim 基本操作,本篇博客详细介绍了如何使用Carsim和Matlab进行联合仿真。目的是让读者了解如何使用Carsim和Matlab进行联合仿真,以便更好地进行自动驾驶控制算法的研究和开发。


参考资料

   【基础】自动驾驶控制算法第八讲(二) 简单的软件操作


后记:

🌟 感谢您耐心阅读这篇关于 Carsim 与 Matlab 联合仿真基本操作 的技术博客。 📚
🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢
🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀
🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡
🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀

更多推荐

  • 浏览量 774
  • 收藏 0
  • 0

所有评论(0)

查看更多评论 
已为社区贡献2条内容