carsim和simulink联合仿真 ACC

2023-11-04 05:50

本文主要是介绍carsim和simulink联合仿真 ACC,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1目标车辆模型搭建
设Car1为目标车辆,也就是主车的目标车辆,在其车辆模型参数设置板块中,选择CarSim软件中的B-Class,Sport Car为基准车。
进入B-Class,Sport Car参数设置。其中的车辆模型参数设置主要是对车身、仿真动画、动力系统、制动系统、转向系统、前后悬以及车轮的选型及参数设置。在动力传动系统设置中,目标车辆的动力系统设置为传统传动系统,如图所示,使用内部引擎,也就是发动机进行动力输入,传统传动系统动力传动过程为:发动机→液力变矩器/离合器→变速器→差速器→输出动力。

在这里插入图片描述

图3.5 目标车辆动力输入系统

对目标车辆的车辆模型设置中,大部分参数都无需改变,需要设置的最重要的是目标车辆的行驶车速,即目标车速。本文中主要对电动汽车的两种行车路况进行建模仿真,一种为直线路况下巡航,一种为弯道路况巡航。在自适应巡航仿真过程中,需要先设置目标车辆的速度变化,在Procedure设置版块中,在Driver Controls下的目标车速中对Car1的位移和车速关系进行设置。
对目标车辆而言,没有输入的参数,只有输出参数,如下表所示。

表3.1 目标车辆输出参数
输出变量 描述
Vx 车辆纵向速度
Xo 车辆质心横坐标
Yo 车辆质心纵坐标
Yaw 车辆横摆角

2主车模型搭建
设Car2为主车,在其车辆模型参数设置板块中,选用CarSim中的E-Class,Sedan为基准车,基准车如图所示。
在这里插入图片描述

图3.6 CarSim中基准车E-Class,Sedan

在主车车辆模型设置中,最重要的是动力输入系统,主车是电动车,没有发动机,依靠电机作为动力源,所以在CarSim中的车辆动力系统需要采用外部动力源(External Engine)。本文通过在Simulink模型中搭建一个电动机,用电机输出的扭矩来驱动主车Car2。如图所示,将传动系统中的发动机模型去掉,采用轮毂电机进行控制。在Simulink中搭建电机模型作为Car2的外部动力。

在这里插入图片描述

图3.7 主车动力输入系统

主车所建立的CarSim车辆仿真模型和Simulink的输入接口以及为PID控制算法提供参数的接口如表所示,输入包括制动器主缸压力、雷达输入参数和左右轮毂电机的转矩,输出包括车辆纵向速度、车辆质心横纵坐标、车辆横摆角以及左右前轮的轮毂电机转速。

表3.2 主车输入输出参数设置
变量名 描述

输入变量 IMP_PCON_BK 制动主缸压力
IMP_DETECT 雷达输入信号
IMP_MY_OUT_D1_R 右侧轮毂电机转矩
IMP_MY_OUT_D1_L 左侧轮毂电机转矩

输出变量 Vx 车辆纵向速度
Xo 车辆质心横坐标
Yo 车辆质心纵坐标
Yaw 横摆角
AVy_R1 右前轮轮速
AVy_L1 左前轮轮速

3 Simulink整车模型搭建
3.1 Simulink介绍
Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制以及数字信号处理的建模和仿真中。Simulink拥有丰富的可扩充的预定义模块库[16]。在该环境中,不需要大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统[17]。

3.2 电机类型选择及配置
本文所搭建的主车模型中,用直流无刷电机替代CarSim2019中的引擎,将内部动力输入改为外部动力输入。将Simulink中所搭建的直流无刷电机模型作为其动力输入,依靠电机所输出的转矩为主车的电动汽车模型提供动力。
主车所搭建的电机模型选用两个电压为72V,额定功率为5kw的直流无刷轮毂电机,即采用直流无刷轮毂电机分别控制主车的左右前轮。电机简化模型如下图所示,电机及控制参数如表3.3所示。

在这里插入图片描述

图3.8 Simulink右侧前轮直流无刷轮毂电机模型

在这里插入图片描述

图3.9 Simulink左侧前轮直流无刷轮毂电机模型

表3. 3 电机及控制系统参数
电机电阻(R)/ Ω 0.125
电感(L)/ mH 3.75
反电动势系数(ke)/ [V·(r·min)-1] 0.25
电流PID调节器系数(KP /Kl / KD) 200/30/2
电流反馈系数(ki) 36
PWM装置的延迟系数(ks) 0.4
额定电压(U)/ V 72

3.3 联合仿真模型
本文所设计的自适应巡航控制主要控制过程如图所示。本文所设计的自适应巡航控制主要采用PID控制。下面将会对该模型进行分析。

在这里插入图片描述

图3.10 CarSim与Simulink联合仿真模型图

(1)输入模块
①制动主缸压力
考虑到主车既能跟上目标车辆,又能使目标车辆在主车的雷达探测范围内,经过调试,在水平路面仿真时,本模型中将两车之间的最小安全距离Setup Distance设置为2m。在本文所选坡道上仿真时,最小安全距离设置为4m。随后,将所设置的安全距离与雷达监测到的主车的车头与目标车辆的车位之间的距离进行减法运算,然后经过一个PID控制,即PID Controller2。其中PID控制中比例系数KP取0.3,积分环节系数KI取0,微分环节系数KD取0。由于该部分主要控制制动版块,所以算法较为简单,只需要一个比例控制,且这样已达到本文所设计的要求。经过PID控制之后,将会输出一个数值FB,作为主车制动主缸压力的数值,而制动主缸的压力是需要在一定的数值范围的。根据CarSim车辆模型的制动主缸的上下线数值,将该数值下限设置为0,即下限为没有制动压力,上限即最大的制动主缸压力设置为15,15可看作是车辆刹车踩到底时产生的制动压力。FB是制动压力的信号,这个信号将会输入到主车的车辆模型当中,也就是前文中所提到的主车的输入变量中的IMP_PCON_BK制动主缸压力。
②前轮两电机转矩
在两车车速经过PID控制输入参数到前轮左右两侧电机中之后,两个轮毂电机将输入转矩给主车,即减速或加速运动,或者保持车速不变,以实现主车的巡航控制。
③雷达探测结果
通过雷达控制器对主车与目标车辆的距离及角度的监测,当目标车辆超出雷达探测范围时,雷达控制器将会输出一个信号给控制系统,控制车辆加速前进,跟上目标车辆。当目标车辆在雷达探测范围时,雷达控制器经过监测,将会输出两车的实际距离,通过控制系统运算,从而控制主车的制动轮缸压力,实现主车的加速或减速运动。
(1)输出模块
①两车车速
目标车辆输出车速Vx1,为了完成ACC控制的实现,将目标车辆的车速作为主车的速度的控制,用目标车辆的速度Vx1减去主车的实际速度Vx,得到其差值,再输入到PID控制模块,即上图中的PID Controller。该PID控制由于需要满足主车的跟随工况,情况较为复杂,所以需要比例、积分、微分环节都运用。经过调试,最终确定当比例系数KP取200,积分环节系数KI取190,微分环节系数KD取2时,可以更好地实现巡航控制效果。PID Controller和PID Controller1的作用是将目标车辆与主车的速度差值分别转化为左右前轮轮毂电机的目标转矩。Simulink整车模型中Motor_Left和Motor_Right模块代表主车左侧和右侧的轮毂电机。
②车辆坐标
主车的横纵坐标和横摆角是其输出变量,并且该三者作为雷达模块Radar Sensor的数据输入,即My Data为主车的Xo、Yo、Yaw三个数据。经过雷达控制之后,雷达模块输出一个间距值Distance,与初始设置的Setup Distance的数值进行比较,两者差值输入到PID Controller2中,再进入后续控制模块。当两者差值大于安全距离时,主车制动主缸压力减小,同时转矩增大,车辆将进行加速运动;当两者差值小于安全距离时,主车将进行制动,同时车轮转矩减小,车辆将进行减速运动,以避免碰撞事故发生。
③左右两前轮轮速
主车的左右前轮轮速作为其输出变量,分别输入到左右前轮轮毂电机模块中,经过直流无刷电机模块控制过程,两电机将输出左右前轮的转矩,左右前轮的转矩Torque_Left和Torque_Right又将作为主车的输入变量,实现主车的自适应巡航控制。

3.4 雷达控制模型
在Simulink模块中搭建雷达控制模型,如下图所示。

在这里插入图片描述

图3.11 雷达控制模型

该模型左侧CAR_1为目标车辆的横纵坐标及车辆横摆角,My Data为主车的Xo、Yo、Yaw三个数据,分别为主车的横坐标、纵坐标和车辆横摆角。从上图所显示的模型中可以看出,目标车辆的横坐标与主车的横坐标作差,将差值作为目标值输入下一模块中,得到两车间距r。同时,将目标值转化为极坐标值,得到两车行驶方向的夹角Theta。输出Theta到R2D模块,即将弧度值转化为角度值。此时,输出的值即为雷达所探测到的两车之间的夹角。
同时,My Data也会输出车辆横摆角Yaw,车辆横摆角为车辆车体坐标系X轴方向与车辆速度方向夹角。由上图可知,输出主车的车辆横摆角Yaw,因为雷达所监测到的角度是行驶过程中累积的角度,可能将大于360°,但是所需要的是当前车辆的速度方向相对于车体坐标系的夹角,该值应在360°以内,所以需要主车的车辆横摆角对360°取余,即图中的mod模块,可得到一个小于360°的角度值。
当主车跟随前车前进时,不仅需要保证主车能够跟上目标车辆,还需要保证在目标车辆转弯时,主车也能够跟随其转弯。所以,经过取余之后输出的主车前进方向的角度与所探测到的两车之间的夹角作差值,再对差值取绝对值。在设计雷达模型时,需要考虑到在实际控制过程中,并且前车处于正常行驶状态下,为确保主车能够及时跟上目标车辆,两车之间的夹角应小于90°。将取绝对值后得到的值输入到阈值模块,为防止角度超过360°,设置临界值270°。如果输出的角度值大于270°,那么该控制器输出的实际值变为360°减去绝对值。将此时输出的绝对值设为θ0,θ0应为一个较小的角度值。θ0随后输入到第二个阈值模块中,其中临界值设置为15°。
雷达模型中,设置雷达的探测距离范围为70m,70m与所得到的两车间距r输入到取值模块,取两者中的较小值输出。当主车与目标车辆间距大于70m时,即未监测到目标车辆,此时从取值模块输入到下一个模块的值则为70m。同时,从L-Radar输入到该模块的值也为70m,则此时无论输入到该模块的θ0与其阈值15°的大小关系如何,输出值都为70m。此时则需要给雷达的监测模块发送信号,即上图中的Detected,控制系统控制车辆加速运动。同样地,当监测到目标车辆与主车角度大于15°时,则代表目标车辆已转弯而主车未跟上,此时控制系统将会控制主车跟上目标车辆行驶。由图3.9可知,当雷达控制器输出Detected时,将会作为信号输入到车辆控制器中,使车辆加速,以跟上目标车辆。当主车与目标车辆间距小于70m时,该模块的输出值即为两车的实际车距Distance。从图10可知,由雷达监测到的所输出的两车实际间距Distance数值将与所设定的安全距离Setup Distance作差,随后通过控制环节对主车进行控制。

这篇关于carsim和simulink联合仿真 ACC的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/343671

相关文章

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

C和指针:结构体(struct)和联合(union)

结构体和联合 结构体 结构体包含一些数据成员,每个成员可能具有不同的类型。 数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问成员。 结构声明 在声明结构时,必须列出它包含的所有成员。 struct tag {member-list} variable-list ; 定义一个结构体变量x(包含

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数_matlab pmsm-CSDN博客

Matlab simulink建模与仿真 第十章(模型扩展功能库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、模型扩展功能库中的模块概览         注:下面不会对Block Support Table模块进行介绍。 二、基于触发的和基于时间的线性化模块 1、Trigger-Based Linearization基于触发的线性化模块 (1)每次当模块受到触发时,都会调用linmod或者dlinmod函数

AMEsim和Simulink联合仿真生成新的.mexw64液压模型文件

AMEsim和Simulink进行联合仿真非常重要的就是AMEsim经过第四阶段Simulation会在相同文件下面生成一个与AMEsim液压模型相同名字的.mexw64文件,在Simulink进行联合仿真的S-Function需要找的也就是这个文件,只不过输入的时候除了液压模型名字之外,后面有一个短下划线。 简而言之: AMEsim和Simulink联合仿真, 首先是需要AMEsim软

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

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒 若您觉得内容有价值,还请评论告知一声,以便更多人受益。 转载请注明出处,尊重原创,从我做起。 👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜 在这里,您将

Matlab/Simulink和AMEsim联合仿真(以PSO-PID算法为例)

目录 安装软件和配置环境变量 Matlab/Simulink和AMEsim联合仿真详细流程 非常重要的一点 Simulink模型和AMEsim模型用S-Function建立连接 从AMEsim软件打开Matlab Matlab里的设置 Matlab的.m文件修改(对于PSO-PID算法) 运行程序 我印象中好像做过Matlab/Simulink和AMEsim联合仿真的分享似的