VTD的SCP(Simulation Control Protocol )用于进行非周期性的,即事件性的信息交互。通过发送SCP命令给到TaskControl,TaskControl根据命令的内容分发到进程,从而实现对VTD的操作,因此SCP是VTD自动化的基础。
1、VTD软件主页面最下方有SCP的发送和接收的命令栏,命令栏会显示所有发送和接收到的SCP命令。
1、我们可以在Scenario界面添加车辆,通过双击车辆进入properties界面,然后在Actions界面中的SCP中添加SCP命令;
1)创建端口号为48179的TCP连接
2)根据SCP的格式进行组包,如下图所示
假设发送的SCP命令为:
<Player><Driver name="Ego" sendPedals="true" />Player>
则需要通过TCP发送给VTD的数据如下:
AC9C 0100 7365 6E64 6572 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 7265 6365 6976 6572 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0039 0000 003C 506C 6179 6572 206E 616D 653D 2245 676F 223E 3C44 7269 7665 7220 2073 656E 6450 6564 616C 733D 2274 7275 6522 202F 3E3C 2F50 6C61 7965 723E
1、格式解析
//标签数量有三个的时候的写法
形式一:
<主标签>
<一级标签 一级标签成员 = "常量/枚举值">
<二级标签 二级标签成员 = "常量/枚举值">
二级标签>
一级标签>
主标签>
形式二:
<主标签>
<一级标签 一级标签成员 = "常量/枚举值">
<二级标签 二级标签成员 = "常量/枚举值" />
一级标签>
主标签>
//标签数量有二个的时候的写法
形式一:
<主标签>
<一级标签 一级标签成员="常量/枚举值" >
一级标签>
主标签>
形式二:
<主标签>
<一级标签 一级标签成员="常量/枚举值" />
主标签>
注意:
2、格式举例
//标签数量有三个的时候的写法
形式一:
<Set>
<Trigger owner="Ego">
<ExternalTrigger id="1">
ExternalTrigger>
Trigger>
Set>
形式二:
<Set>
<Trigger owner="Ego">
<ExternalTrigger id="1" />
Trigger>
Set>
//标签数量有二个的时候的写法
形式一:
<Traffic>
<ActionSpeedChange actor="Ego" force="true" rate="1" target="0.003" >
ActionSpeedChange>
Traffic>
形式二:
<Traffic>
<ActionSpeedChange actor="Ego" force="true" rate="1" target="0.003" />
Traffic>
介绍一些常用的标签,在SCP DOC里面可以找到。
IG 相关的部分,需要可视化部分,下述分类主要讲述ImageGenerator对应子标签的作用
Environment
自然环境设置:太阳 GUI
Camera
相机设置:内参数 FOV 等 display.xml
Symbol
符号设置:2D/3D 问题或图形 SymbolStd.xml
Display
显示设置 GUI
Instrument
2D 仪表盘
ImageGenerator
IG 设置:控制 switch,后处理的变量和材质
LightSource
光源设置:车辆大灯 LightSrcStd.xml
Observer
鸟瞰设置
整个仿真控制相关的部分,下述分类主要讲述TaskControl对应子标签的作用
Video
录制视频
Record
录制数据
SimCtrl
仿真控制:启动,停止,初始化,配置等
Replay
回放数据
TaskControl
TC 设置:显示仿真时间和车速,vtdParamServerAutoLoad.stp.xml
交通、驾驶员、交通参与者等信息的设置,下述分类主要讲述Traffic对应子标签的作用
Traffic
交通设置:理解逻辑之后进行设置,详细看 Traffic 部分
TrafficLight
交通等设置:直接设置 state phase
Player
车来/行人设置:车辆指示灯
EgoCtrl
本车命令:即 SE 中可以给出的行为
Path
路径设置
Set
对一个实体进行设置(包括 object):位置
传感器插件动力学插件 ,下述分类主要讲述ModuleManager对应子标签的作用
Plugin
管理 Plugin
Sensor
传感器设置 moduleManager.xml
DynamicsPlugin
动力学设置 moduleManager.xml
查寻和配置 ,下述分类主要讲述Information对应子标签的作用
Query
询问一个实体的信息:交通参与者、物体、相机、窗口
Relpy
回复一个实体的信息,对应 Query
GSIConfig
通用仿真接口设置
RDB
RDB 设置
SCP
SCP 设置
Parameter
用于自定义参数
Info
信息
ContactPoint
构造触点
Dynamics
和 veDYNA 联合使用
Sound
声音
VIL
车在环设置
Team
多驾驶模拟器联合
Rail
轨道交通
车速控制:以1m/s²的加速度到8m/s的速度
<Traffic><ActionSpeedChange actor="Ego" force="true" rate="1" target="8" />Traffic>
变道控制:3s完成左变道控制
<Traffic><ActionLaneChange actor="Ego" direction="1" force="true" time="3" />Traffic>
变道控制:3s完成右变道控制
<Traffic><ActionLaneChange actor="Ego" direction="-1" force="true" time="3" />Traffic>
位置查询:查询名称为Ego的车辆位置
<Query entity="player" name="Ego"><PosInertial />Query>
位置设置:设置车辆的绝对位置
<Set entity="player" name="Ego"><PosInertial x="1850" y="733" hDeg="110.0"/>Set>
仿真状态设置:停止仿真
<SimCtrl><Stop />SimCtrl>
仿真状态设置:开始仿真
<SimCtrl><Start mode="opration" />SimCtrl>
仿真状态设置:单步运行
<SimCtrl><Step size="1"/>SimCtrl>
3D显示:BoundingBox显示
<Symbol name="bbox" ><BoundingBox player="Ego" />Symbol>
交通灯:切换交通灯
<TrafficLight id="221"><Mask value="0x01000000"/>TrafficLight>
//Traffic light for the vehicles: 0x10000000 = red, 0x01000000 = yellow, 0x00100000 = green. Traffic light for the pedestrians: 0x10000000 = red, 0x01000000 = green.
车灯:切换车灯
<Player name="Ego">
<Light type="indicator right" state="on"/>
<Light type="indicator left" state="off"/>
Player>
行驶路径创建:pathshape路径创建
<Path name="pathshape" type="polyline">
<Waypoint><PosInertial player="Ego" x="6043.431" y="-2741.197" z="0"/>Waypoint>
<Waypoint><PosInertial player="Ego" x="6046.624" y="-2697.614" z="0"/>Waypoint>
<Waypoint><PosInertial player="Ego" x="6039.388" y="-2666.049" z="0"/>Waypoint>
Path>
行驶路径配置:pathshape路径配置
<Traffic>
<ActionNominalTrajectory waypointSequence="ascending" startS="0" radius="25" force="true" targetS="100" delayTime="0.0" command="add" />
Traffic>
视屏录制:开始录制
1. Configure the video output:
<Video> <Output path="/tmp/" name="myVideo" /> Video>
2. Start the live recording
<Video> <Start live="true"/> Video>
3. Stop the live recording
<Video> <Stop/> Video>