浅析基于VI的智能车仿真系统应用设计案例
扫描二维码
随时随地手机看文章
1 引言
全国高等学校自动化专业教学指导分委员会受国家教育部委托,举办第一届“飞思卡尔”杯大学生智能车邀请赛。为了给参加本次智能车邀请赛的各支队伍提供一个可离线/在线仿真的平台以及理论试验平台,我们开发了基于LabVIEW虚拟仪器技术的智能车仿真系统Plastid(以下简称Plastid)。
本仿真系统基于LabVIEW虚拟仪器技术开发完成,用于智能车的算法仿真及分析。主要有以下几大特点:
1. 赛道与赛车环境模拟
系统对赛道与赛车分别建立了模型,使用者可以按照指示方便地自行设计赛道以及赛车,将赛道设计成各种各样的直路、弯路、坡路,将赛车设计成各种尺寸、形状,从而使得系统的适用性更广泛。另一方面,本软件更适用于没有条件制作试验赛道的参赛队伍,他们可以在该系统中检测控制算法。
2. 控制算法的仿真验证
系统可提供三种不同的控制算法仿真的方案:子VI(SubVI)算法仿真、C结点算法仿真以及单片机在线仿真。使用者可以选择其中最适合自己的仿真方法,对自己的控制算法在系统的环境中进行验证。
3. 路径识别的方案分析
系统提供了采用光感电路来识别路径的模型,使用者可以按照自己的想法设定传感器的个数、排列的位置,在Plastid上反复作仿真试验,从而定性得出哪种光感电路的排列效果较好。由于实地试验时要更换传感器排列较为耗时,因此本系统给予了此种定性分析一个极其方便的试验平台。
4. 离线/在线仿真相结合
系统不仅可以离线仿真,还可以通过CAN通讯与单片机系统相连,对系统进行虚拟赛道环境的在线仿真。
使用者通过该仿真系统可以反复对原始设计方案进行研究,得到近似最优方案后,再进行实车设计和实际赛道试验,从而减少了开发的费用和时间成本,大大提高智能车开发效率。
2 基本构架
图1是整个仿真系统的构架图,主要分为基本模型层、控制算法层、通讯层以及仿真环境层。
基本模型层包括赛车模型与赛道模型,使用者可根据实际情况设定模型参数,它为整个系统提供了底层的驱动,仿真结果都是在这两个模型的基础上计算的。
图1 仿真系统构架图
控制算法层为使用者提供了3种不同的仿真方案:SubVI、C结点以及单片机在线仿真,具体在后文将会详述。使用者可选择其中一个方案输入或移植自己的控制算法。
通讯层只用于单片机的在线仿真,使用CAN模块,可以使单片机与仿真系统进行即时的数据交流,从而实现动态仿真。
动态仿真环境基于赛车、赛道模型以及控制算法所输出的控制信号(电机控制、转向控制及车速信号等),计算出车的行走路线,并即时地将数据传回控制算法层(其计算周期可调)。
凭借软件仿真的优势,在仿真过程中,系统可以方便地将各种变量记录下来,特别是一些实际试验时无法测量的量(如赛车相对于赛道中心线的偏移量、前向角、加速度等),并保存于文件中。在回放模式中,用户可以调用这些文件,对其仿真结果进行后期分析和处理,继而改进自己的赛车设置以及控制算法。
3 赛道、赛车、路径识别模型
我们知道,一个具有高级控制策略的智能车应该在不同的赛道上都具有稳定的发挥,为了验证这一点,就必须在不同的赛道上做试验。然而,由于各方面的限制,我们不可能为赛车制作无数的赛道进行测试。但这个问题却可在Plastid中轻易地得到解决:我们可以设计出不同的赛道,并将其保存成文件,在仿真时将其调用即可。
图2是Plastid的赛道设计界面,用户可以使用“点”来精确设定赛道曲线的下一点位置,使用“弧”则可以以圆心坐标、角度来绘制想要得到的弧线,更可以直接采用“手绘”用鼠标在屏幕上绘制赛道或从数据文件中导入曲线。其操作界面友好,修改方便,且易于上手和操作。图2中的赛道即根据韩国汉阳大学2004年智能车大赛采用的赛道设计而成。
图2 赛道设计界面
为了仿真方便,我们将赛车简化为一个四轮刚体模型,除了一些基本的尺寸参数之外,在前轮转向系统,根据赛车的实际情况,我们用“转向速度”与“最大转向角”两个参数来模拟。
对于路径识别系统,Plstid给予使用者至多8个的光感传感器的坐标设定,使用者可以任意地安排传感器的个数和相对于车的排列坐标(将传感器安排成一条直线,或者弧线等方案),从而达到自己想要的识别效果。
对于加速的模拟,目前系统暂时以直接加速度为控制量,在对实车进行测试和分析后,将构建相应的模型。
图3即赛车设计的操作界面,左边为赛车的基本参数,右边为传感器坐标设定、试验赛道生成以及传感器值的即时显示(试驾时用)。
使用者除了可以设定赛车参数外,还可以对所设定好的赛车进行“试驾”,当场检验所设计参数的优劣,并可将赛车信息保存于文件,供仿真时调入使用。
图3 赛车参数设定界面
4 控制算法仿真
Plastid针对不同的使用者提供了三种不同的控制算法仿真方案:子VI(SubVI)、C结点以及单片机的在线仿真。
首先,最接近于LabVIEW编程环境的即为SubVI方案。用户将自己的控制算法,移植为LabVIEW的SubVI,Plastid在仿真时即时地给该SubVI输入变量(车速、传感器值等),SubVI通过计算得出控制量并输送给Plastid仿真循环。SubVI方案对于熟悉LabVIEW G语言编程方法的使用者来说非常简单,但它的缺点是移植性较差,由于C语言和G语言的差别较大,因此将单片机的控制算法转换为子VI的程序需要一定的工作量。
其次,C结点方案则更适合于采用C语言编程的使用者们,其原理与SubVI方案类似,但是其程序则可直接用C语言编写,用Visual Studio IDE将其编译为dll文件,系统在仿真时会自动调用该dll,从而实现与SubVI一样的控制和反馈。对于本方案,使用者可以将其单片机的程序进行适当的修改后即可使用,因此移植性较高。
最后,利用CAN模块,系统可以直接与单片机进行直接通讯,并实现在线仿真。单片机方面只需要在其CAN接口即时地传送其控制量(这在程序中很容易添加相应程序),而Plastid则通过CAN模块得到这些量,并传送反馈量给单片机。在这一方案,单片机的程序修改不大,但需要有CAN模块等硬件支持。
图4为系统动态仿真的界面,使用者在加载完赛道与赛车文件后,即可进行动态的仿真。其中仿真周期表示系统每一次计算的时间,可以根据单片机的运算周期进行设定,但值得一提的是,在仿真过程中,其真实的仿真周期会根据计算机的性能等因素而不同,但其仿真的结果可以保证确实根据该仿真周期计算而得,从而保证其仿真的可靠性。
图4 动态仿真界面
5 不足与改进
由于Plastid仿真系统还未与实车的仿真进行过深入比较,且开发周期也较短,因此必然留有一些不足之处。
该系统目前还只能用于采用光感传感器路径识别方案的智能车,对于CCD摄像头技术还不支持。
其次,在仿真过程中,系统只是根据汽车的运动学模型(将车简化为一四轮刚体来处理)进行计算,并未考虑其侧滑以及路面摩擦力的影响。这将使其仿真结果与实际结果有一定差距,我们将在后续工作中根据实车的情况,不断进行实车试验和对比,从而提高其仿真真实度,使其能尽可能地模拟出实际的情况。
最后,计算速度也是系统必须面临的一大问题。对此,我们将优化代码,并裁剪不必要的程序,从而提高系统的仿真速度。
综上所述,本系统主要针对本次智能车大赛而开发,将在这一届邀请赛过程中进行不断的优化和改进,争取为广大参赛队伍更好地完成开发任务而服务。