自动驾驶仿真:Carsim、NI和VTD联合仿真课题二

前言

上篇文章《Carsim、NI和VTD联合仿真课题一》简单地介绍了三者之间的联合框架,以及NI与VTD之间简单的组包与拆包指导。这篇文章将要讲述的是如何将三个软件联合起来,如何设置软件参数,用最简单的方法把仿真车开起来。

一、设备配置

1、硬件需求

注:真正的做智能驾驶仿真项目,至少需要两台电脑,一台实时机。

1.1 电脑一(Linux系统)

① 安装VTD软件,建议安装双显卡,因为项目中可能会有多个鱼眼摄像头、双目摄像头,需要用到视屏注入的方法,将VTD的摄像头模型通过显卡输出注入到控制器,从而模拟摄像头。
② 一个摄像头将对应一路视屏输出信号,而双显卡的性价比最高,也可以使用分布式的方法将其他摄像头画面分布到其他电脑在进行视屏注入。

1.2 电脑二(Window系统)

① 安装Carsim动力学软件,用于车辆模型、动力系统、驾驶员模型等配置;
② 安装Veristand软件,用于传递传感器模型数据,动力学数据,以及控制CAN卡、以太网卡,另外自带编程语言还能用于动力学模型的优化,以及ECU控制器的逻辑交互。

1.3 NI实时机系统

① 用来运行Veristand软件的程序,实时性高,且可以选配控制卡,搭配使用。

2、网络配置

2.1 IP设置

① 将3台机器配置到同一网段内,假设分别设置成VTD:192 .168.0.1,Carsim、Veristand:192 .168.0.2,实时机192 .168.0.3,并将对应的网线插到交换机,确保互相之间能够ping通。

二、Carsim工程配置

1、创建工程

1.1 复制NI的模板,创建新工程

在这里插入图片描述
在这里插入图片描述

2、创建数据库

2.1 复制数据库模板,创建新的数据库

① 打开刚刚创建的Carsim工程,可以在该界面中进行如下操作复制数据库作为自己的数据库工程:点击Duplicate按钮弹出Duplicate Dataset界面,在2、3中可对数据库名称进行设置。
在这里插入图片描述

3、参数配置

3.1 模块概况

3.1.1 车辆模型配置(Simulated Test Specifications)
3.1.2 过程模型配置(Procedure)
3.1.3 运行模式配置(Run Control)
在这里插入图片描述

3.2 车辆模型配置(Simulated Test Specifications)

3.2.1 下列参数可根据实际情况进行更改,这里做仿真演示,不修改;
在这里插入图片描述

3.3 过程模型配置(Procedure)

3.3.1 驾驶员模型配置;
① 设置以节气门开度0+初始速度0KM/h的控制方式,以油门踏板和速度的方式对车辆进行纵向控制,将在Veristand开放输入接口,控制车辆速度。
② 刹车设置默认的0Mpa。(以刹车踏板对车辆进行制动控制,将在Veristand开放输入接口,控制刹车。
③ 选择挡位自动控制。

在这里插入图片描述

3.3.2 起始和终止条件设置;
① 运行模式设置为Run forever,Casim动力学模型要一直运行,VTD才能和Carsim一起联动。否则,如果Carsim设置运行100m,那么100m之后VTD中的车辆将会停止,因为动力学模型只控制车辆运行100m,所以这里要设置为Run forever,让车一直在跑,直到主动断开动力学模型,即断开Carsim和VTD之间的通讯。

3.3.3 道路设置
① 道路摩檫力设置0.85,根据实际情况设定。
② 对车辆在道路上的起始位置和航向角进行设置。
在这里插入图片描述

3.4 运行模式配置(Run Control)

3.4.1 运行模式配置
① 主页Run Control中选择NI-RT Target的方式
在这里插入图片描述

3.4.2 运行模式参数配置(Run Control参数配置)
点击刚刚配置的NI -RT Target,进入内部配置相关参数
1、配置NI 实时机登录的用户名和密码,这块可以在NI-MAX配置。
2、配置NI 实时机的IP和本地电脑的IP。
3、配置Veristand的工程路径,所以需要提前建立好Veristand的工程。
4、配置Casim对NI-Veristand的输入、输出接口。

在这里插入图片描述
3.4.3 输入接口配置
① IMP_MXU:
每个轮胎的受到的摩擦力。在道路设置那里已经配置过了,可以不选,我这里是想自定义摩檫力。

② IMP_ZGND:
四轮接地点。需要从VTD端传递数据过来,用于形成VTD和Carsim的闭环的控制。

③ IMP_STEER_SW:
方向盘控制。这个也要根据项目需求选择, 正常情况下让VTD场景的Driver开就行了,可以自定义数值,但是这样的话需要Casim和VTD场景匹配(道路及场景设置),否则有可能发生这种情况,Carsim的车运行的位置不在车道内,VTD运行的车在车道内,则会出现掉帧情况,不过选上也没关系,但不输入数值不会影响到仿真。

④ IMP_THROTTLE_ENGINE:
节气门开度。车速的控制由油门踏板决定,输入对踏板需求值,经过Carsim的动力学运算,输出实际的加速度和速度,从而控制车辆。

⑤ IMP_PCON_BK:
主缸压力。经过Carsim的动力学运算,输出实际的加速度和速度,从而控制车辆。

⑥ IMP_SPEED:
目标速度。这个不选,因为我们是通过节气门的方式控制车辆速度的。
在这里插入图片描述
3.4.4 输出接口配置
注意:这里做一下特别注意选择位置、速度、加速度,不要选择以世界坐标系为主的x0,vx,ax(不用添加到输出变量中去,下图只是为了突出效果),因为这样控制车辆会基于世界坐标去移动;而我选择的是以质心为坐标系的参数,相当于是车辆坐标系,如下图Xcg_SM、VxNf_SM、Ax_SM。
以下是真正要选择的参数:
① 4-6:Pitch俯仰角、Roll横摆角、Yaw航向角;
② 13-18、31-33:基于车辆坐标系的位置、速度、加速度;
在这里插入图片描述

综上,完成了Casim最基础的配置,如果想对Casim的input、output参数修改,可以使用Veristand优化模型。

3.4.5 更新Casim的DLL文件
① 点击Send之后会更新DLL文件到C:\Users\Public\Documents\CarSim2019.0_Data\Extensions\NI-RT\Solver_DLLs(具体看安装的版本和安装位置)

在这里插入图片描述
在这里插入图片描述
最后我们将在Veristand中使用这个DLL文件。

三、VTD工程配置

1、创建工程

1.1 复制Setup和SampleProject

① 复制VTD.2021/Data/Setups中的Standard文件,VTD.2021/Data/Projects中的SampleProject并重命名作为自己的工程;
② 进入“…/VIRES/VTD.2021/bin”文件夹路径,点击鼠标右键,选择打开终端;在弹出的命令窗口输入 “./vtdStart.sh -select”回车,即打开VTD并选择需要用到的setup的数字打开VTD;;
③ 点击左上角File按钮,选择Open Projects,并在弹出的对话框中选择刚创建的SampleProject。

1.2 设置TsakControl

在VTD GUI界面中点击Parameterbrowser设置 TaskControl 的参数。在弹出的界面中先在下拉框2中选择Projects对TaskControl进行设置。其中:
①ImageGenerator里portType设置为TCP;
②RDB中portType类型为TCP ,composeSingleMessage设置为true;
③Dynamics里syncMode设置为frame;
④Sync中source设定为RDB,点击保存。在下拉框2中选择Setup继续配置,其各参数需与Projects中保持一致,完成Setup和projects的配置后,点击保存按钮并关闭该配置界面。如下图示:
在这里插入图片描述
在这里插入图片描述

1.3 配置ModuleManager

ModuleManager是配置VTD内部各模块间通讯方式的文件,本示例中需对其进行部分修改。首先打开Data/Projects/Current/Config/ModuleManager/moduleManager.xml文件,作如下更改
① 修改<RDB> < Port type=TCP” /> <RDB> 保证是TCP可以和TC通信;
② 注释掉VTD动力学模型<!--DynamicsPlugin name=”viTrafficDyn”> </DynamicsPlugin-->(!–和–是注释符号);

1.4 场景编辑

①选中仿真所用场景。在Project Configuration模块点击FILES,在右侧界面选择所用场景,右击点击Edit Scenario即可打开Scenario界面进行场景编辑;
在这里插入图片描述
② 在Scenario界面,点击左侧1添加车辆,放到2路上。双击所加车辆出现右侧界面,在Initlalisation界面设置4主车名称为Ego,因为Ego的ID一般为1,后续Carsim控制这个车辆需要用到这个ID;5 Animation选择External;
在这里插入图片描述
③ 选择1:Actions,点击2:新建NEW(element pos),3 :对新建的element pos命名为pedal,4:Release type选择Relative Position,5:选择scp命令,勾选use选项,输入驾驶员操控命令:

<Player name="Ego"><Driver ctrlLatLong="ghostdriver" sendPedals="true" brakePedalScale="1.0" throttlePedalScale="1.0"/></Player>

在这里插入图片描述
③ 点击2:新建NEW(element pos),3 :对新建的element pos命名为Contain point,4:Release type选择Relative Position,5:选择scp命令,勾选use选项,输入轮胎接地点命令:

<ContactPoint id="1"><PosPlayer Player="Ego" dx="2.7" dy="0.9"/></ContactPoint>  
<ContactPoint id="2"><PosPlayer Player="Ego" dx="2.7" dy="-0.9"/></ContactPoint>
<ContactPoint id="3"><PosPlayer Player="Ego" dx="0.0"   dy="0.9"/></ContactPoint>
<ContactPoint id="4"><PosPlayer Player="Ego" dx="0.0"   dy="-0.9"/></ContactPoint>

完成设置后,回到上一层页面,点击Save,保存一下配置。

四、Veristand工程配置

1、创建工程

1.1 创建默认工程

在这里插入图片描述

1.2 编辑System Explorer

① 点击Controller,右键选择Locate in System Explorer
在这里插入图片描述
② 右键Custom device
在这里插入图片描述
③ 右键添加制作的VTD的Custom Device(上一篇文章有介绍怎么制作CD),只要发两个包就行了,一个是Trigger和Driver Control。
在这里插入图片描述
在这里插入图片描述
④ 点击Simulation Models,添加动力学模型的DLL,第二点Casim工程有讲到怎么生成DLL。
在这里插入图片描述
在这里插入图片描述
点击OK,成功加载Carsim dll模型。

⑤ Carsim模型和VTD Custom参数连接
注意事项 :

  1. Carsim的变量和VTD的变量存在比例关系,比如Carsim的参数Pitch、Roll、YAW需要从弧度转换成角度再连接到VTD,比如Carsim的参数VxNf_SM、VyNf_SM、VzNf_SM速度是KM/H需要转换成m/s.
  2. Carsim输出的Z坐标应该是Zo,而不是Zcg_SM,因为Zcg_SM是以质心为原点的车辆坐标系,仿真的时候车会飞起来,所以要选择Z0,以世界坐标系为原点。
    3)需要给VTD参数的Playerid赋值1,用来控制VTD的Ego车。
    方向盘、油门踏板可以单独调出来控制车辆
    在这里插入图片描述
    在这里插入图片描述

五、运行程序

VTD
点击红框1中的apply按钮,将配置好的Setup和Project等文件加载到VTD软件中,当红框2中的run等按钮激活变蓝后,表明配置成功,点击2即可运行VTD。
在这里插入图片描述
Veristand
点击Deploy即可登录
在这里插入图片描述

综上完成简单的Carsim、NI、VTD的联合仿真,后续会细化里面的一些逻辑控制。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年3月4日 下午12:50
下一篇 2023年3月4日 下午12:51

相关推荐