本文重要介绍若何基于TSMaster买通ECU算法与整车模型之间的桥梁。
一、SDK融入TSMaster运行环境
由于此视频选取了CarSim controller自带的CarSim engine客户端,必要对代码库做一些配置,也就是必要引用CarSim controller开发包的有关sdk文件。我们打开ABS算法幼法式的代码库。
?
向上进入common文件夹,这个文件夹可存放多个幼法式公共的头文件和代码文件,我们将SDK文件拖入此文件夹中。
?
接着转到全局界说中,第一行代码,引用一个C++头文件 #include “CarSimAPIUtilities.hpp”。
随后点击编译,能够看到,SDK也融入了TSMaster的运行环境中。
二、SDK节造动力学模型
接下来我们就能够通过挪用SDK来轻松节造动力学模型了。
?
我们能够使用CarSim engine自带的这 47 个API函数来操作CarSim,当然也能够选用基于CarSim engine开发的SDK来实现,相比起来SDK的函数越发简洁,它将整个 CarSim的节造分为三个阶段:初始化、运杏注和实现运行。
?
初始化函数名为 callback_setup,放在法式启动事务中。
运行函数名为 callback_start_carsim,放在step函数中,并且让它只执行一次;这必要再申请一个全局变量 vToStart,来实现单次操作。
?
实现运行函数名为 callback_teardown,放在法式终场事务中;写完后我们编译法式,运行法式。
三、车辆加快仿真试验
接下来我们尝试加快车辆,并在车快高于80kph时,垂危造动,要实现这个操作,只必要在人生就是博官网ABS幼法式中,再自 界说两个API函数即可,我们将这两个函数别离定名为acc和brake。
?
在acc中,我们把持油门,此时必要到CarSim controller中拷贝输入变量名,throttle,cs->IMP_THROTTLE_ENGINE = 0.6;
在brake中,我们仿照驾驶员以150 bar的压力踩下造动踏板进行垂危造动,这就必要设置主缸压力为15MPa,我们设置一个全局变量 vPMC 来接管这个主缸压力,同时,还必要到全局界说中申明这个 vPMC。
为了对迸仔无ABS的造动成效,我们首先尝试没有ABS算法的情况,那么这个压力将直接作用在四个轮缸上,这里还需申明一个变量 vHasABS,默以为假。
?
接着来到step函数中,通过 vHasABS 来分辨算法的执行与否,若没有执行算法,则直接赋值轮缸压力。
?
实现逻辑之后,我们必要观测轮快和压力,这些变量都来自于整车模型,若何观测呢?我们能够使用幼法式的变量将其表白出来。
转到变量组上,点击右键增长变量表,顺次输入车快,行驶距离,油门,各个轮快和各个压力值。点击确定后,一系列变量变申明好了,与全局界说分歧的是,这些变量是系统变量,能够被其他幼法式,或是被graphics或者面板等等窗口获取并自动绘造曲线。
?
我们回到step函数,必要顺次对这些系统变量进行赋值,赋值使用set操作
?
v.set(cs->VX);?
station.set(cs->STATION);
throttle.set(cs->IMP_THROTTLE_ENGINE);?
vFL.set(cs->VX_L1);
vFR.set(cs->VX_R1);?
vRL.set(cs->VX_L2);?
vRR.set(cs->VX_R2);?
pFL.set(cs->IMP_PBK_L1);?
pFR.set(cs->IMP_PBK_R1);?
pRL.set(cs->IMP_PBK_L2);?
pRR.set(cs->IMP_PBK_R2);
?
随后运行法式,打开系统变量表,就能够看到我们为这个幼法式增长的一系列监控变量。
我们打开graphics,将图形分为三栏,上栏显示快率,中栏显示压力,下栏显示油门和行驶距离等信息,随后增长各个系统变量进行观测。
?
再转到自动化?橹,将我们现有的逻辑做一些批改,也就是启动后期待车辆加快到80公里每幼时,再进行造动,只有造动到车快为0时,才终场仿真。


