Carsim和Matlab/Simulink联合仿真保姆级教程
Carsim和Matlab/Simulink联合仿真保姆级教程
CarSim和Matlab/Simulink的联合仿真在汽车动力学建模和控制系统设计中具有重要应用。通过将Matlab/Simulink的控制算法与CarSim的车辆动力学模型相结合,工程师可以更准确地验证和优化控制策略。本文将详细介绍如何在CarSim中创建和管理dataset,并将其与Simulink集成,实现联合仿真。
在CarSim中,有两个核心概念:dataset(数据集)和database(数据库)。它们在汽车仿真建模中扮演着至关重要的角色。
以建造一辆“预制车”为例,我们只需要将车轮、车壳、发动机、底盘等基本组件按照一定规则拼接起来。在CarSim中,dataset可以简单理解为这些基本组件。当我们搭建一个完整的汽车仿真模型时,需要车辆模型、道路模型、仿真工况等。这些基本组件在CarSim中都属于dataset,而汽车仿真模型本身也是一个特殊的dataset,它将其他基本的dataset组合在一起,形成一个可运行的汽车仿真模型。
换句话说,dataset是CarSim仿真中的一个小型数据集,用于保存某个基本组件的数据。而database则是一个大型数据集,它包含了许多不同的dataset。在搭建仿真环境时,我们可以根据自己的需求调用不同的dataset来构建所需的汽车仿真场景。
在CarSim仿真中,为了不修改官方提供的dataset,通常会在使用时复制一个新的dataset。在复制过程中,会有两个文本框需要输入。第一个文本框用于指定新dataset所在的目录。不同组件的dataset目录是相互独立的,例如,汽车模型的dataset不能保存在道路模型的dataset目录下。这就好比电脑的C盘专门用于保存视频,D盘专门用于保存文档。如果新建了一个视频文件,可以将其保存在C盘的根目录,也可以在C盘创建一个子目录来存放,但绝对不能保存在D盘的某个目录下。第二个文本框则用于输入新dataset的名称。
Carsim和Matlab/Simulink联合仿真步骤
- 点击Carsim软件
- 选择安装软件中自带的Database,点击Continue with the selected database
- 选择select
- 下图即为Carsim车辆仿真的基本视图
- 选择官方提供的快速开始模型
- 为了不改变官方的仿真范例,此处点击Duplicate对该dataset进行一个复制,点击之后,上面文本框中输入的是新的dataset所在的目录,下面的文本框中输入的是新的dataset的名字
- 对procedure的dataset同样进行复制,选择copy and link dataset,意思就是复制一个新的dataset,并链接到这个新的dataset
- 输入相应的目录名和dataset名称
- 点击上一步复制的dataset,对里面相关属性进行设置
- 因为我们需要通过simulink向车辆发送油门和刹车信息,要将控制改为油门和初始速度控制,并且将初始速度设为0
- 更改后如下图所示,如果无法更改点击右上角的解锁
- 选择matlab/simulink作为车辆控制模型
- 选择link to new dataset,链接到一个新的dataset
- 这里同样输入目录名称和dataset名称
- 使用Matlab/Simulink新建一个空的simulink文件,保存在CarSim_Data/Extensions/Simulink/的子目录中
- 进入刚建的dataset,进行配置
- 将15步建立的simulink文件链接到该dataset中,作为仿真控制器
- 选择该接口为Import channels,也就是汽车控制的输入通道(输入油门,刹车,方向盘等数值来控制汽车的运动)
- 选择新建一个dataset并链接
- 选择该接口为Export channels,也就是汽车模型信息的输出通道(可以获取汽车坐标,速度,偏航角等参数信息)
- 建立新的dataset并链接
- 进入Import Channels中的cardemo,添加输入变量
- 选择获取输入信息的数据集,也就是汽车仿真模型的dataset(即前文提到的一个特殊的dataset,它用来将其他基本的dataset组合成一个可运行的汽车仿真模型)
- 找到油门输入(IMP_THROTTLE_ENGINE)和刹车(IMP_PCON_BK) ,双击添加到模型输入
- 进入Export Channels的dataset,设置输出变量,另外可以设置动画频率为60
- 同21步一样,链接到汽车仿真模型dataset
- 选择通过单位查找变量
- 速度的单位是km/h,选择单位,并找到纵向速度(vx)和横向速度,双击添加到模型输出
- 汽车大地坐标系下的坐标的单位是m,选择单位,并找到横向坐标(xo)和纵向坐标(yo),双击添加到模型输出中
- 回到主界面,点击send to simulink,进入simulink仿真文件(不能直接从matlab进入,否则会找不到对应的求解器模型)
- 点击Library Browser进入库,查找相应模型
- 在搜索框中搜索CarSim S-Function,然后选择红框中的模型,按住将其拖拽到simulink面板中
- 在Library Browser中搜索Mux,分别将两个红色框中的模型拖入simulink面板中(将车辆模型的输入和输出进行分流,合流)
- 依据上文中在carsim中设置的输入,输出变量数量来设置mux(Demux)的接口数量,双击对应的Mux(Demux)来设置数量。上文中我们设置了输入变量共有两个,所以左侧的Mux数量正确,不需要改变,输出变量有四个,而默认的Demux只有两个,那么我们双击设置数量为4
如果Demux四个点过于密集,可以将模型拉大更为清晰 - 在Library Browser中搜索matlab function,并将其拖入simulink面板中
- 双击matlab function模块,编写逻辑代码(matlab function模块负责接收参数,完成相应逻辑处理后返回,函数的参数数量就是输入端口数量,返回值数量就是输出端口数量),编写后保存
- 在Library Browser中搜索scope ,分别拖拽scope 和 XY Graph到simulink面板中,用来展示速度波形和车辆轨迹
- 将所有模型连接在一起
- 点击run,进行仿真
- 点击scope 和XY Graph查看车辆速度变化曲线和车辆轨迹
- 如果XY Graph中的轨迹不明显或者很少,是因为超过了XY Graph设定的x,y数值范围,可以双击该模型,然后设置x,y的范围
- 在carsim中查看车辆运行视频和图表
第一个仅有视频,第二个视频加图表(对于图表可以通过自己设置来获得想要的数据图) - 查看汽车仿真模型的dataset名称,在主界面中点击datasets,然后选择标黑的目录,最后会有一个带对号的dataset名称。