# ModuleManager配置文件说明
ModuleManager,即模块管理器,提供在VTD环境中运行自定义插件的方法。一般有传感器插件和动力学插件两种,传感器插件用于处理模拟环境,动力学插件用于模拟车辆的动态行为。同时VTD还提供了SDK,方便用户开发自己的传感器和动力学模型。而模块管理器自身的基本配置,以及传感器插件和动力学插件的配置,都可以通过“ModuleManager.xml”文件进行配置。
目前Octopus支持用户自定义配置ModuleManager,您可以直接使用平台内置的“ModuleManager.xml”配置文件创建仿真任务,也可以上传自定义的配置文件进行仿真。
# 模板参考
打开在线仿真的VTD机器,在VTD软件系统路径下,提供了“ModuleManager.xml”默认模板,供参考使用,默认文件路径:
/home/vtd/VTD.2019.1/Data/Projects/Current/Config/ModuleManager/moduleManager.xml
如果在以上路径中,没有找到ModuleManager配置文件的本地副本,那么可以从发行版中复制它。文件路径如下,请勿直接修改发行版路径中的配置文件。
/home/vtd/VTD.2019.1/Data/Distros/Current/Config/ModuleManager/moduleManager.xml
# 校验规则
Octopus平台会对上传的“ModuleManager.xml”配置文件进行校验,检验标注主要参照VTD软件目录下的“/home/vtd/VTD.2019.1/Doc/SCP_HTML/index.html”文件中,Sensor 和 DynamicsPlugin 部分内容,需保证配置文件内容结构与模板一致,且不缺少关键字符,建议您使用经VTD加载使用验证过的有效配置文件,否则校验不通过将导致上传失败。以下将重点说明DynamicsPlugin部分校验规则。
DynamicsPlugin中标签顺序:
- RDB (有且必须仅有一个)
- Debug (有且必须仅有一个)
- Sensor (至少一个,允许多个)
- DynamicsPlugin (有且必须仅有一个)
RDB、Debug标签
RDB与Debug标签下的内容与模板保持一致,不能做修改。
<RDB> <Port name="RDBraw" number="48190" type="TCP"/> </RDB> <Debug enable="true" lightSource="false" driver="false"/>
Sensor标签
Sensor标签可允许多个,但其下面的元素的配置需要有固定顺序,且Sensor的属性name,type 必须标明,可参考如下:
- Load (必须且仅有一个)
- Frustum(可选,最多一个)
- Cull(可选,最多一个)
- Port(可选,最多一个)
- Player(可选,最多一个)
- Origin(可选,最多一个)
- Position(可选,最多一个)
- Database(可选,最多一个)
- Config(可选,最多一个)
- Output(可选,最多一个)
- Filter(必选,无限制)
- Debug(可选,最多一个)
注意: 为保证评测任务成功运行,需在“ModuleManager.xml”中添加如下内容,且必须与模板内容保持一致,请勿修改。请您仔细阅读评测任务必需sensor。
DynamicsPlugin标签
DynamicsPlugin有且必须仅有一个,且属性name必须标明。该标签下的元素无顺序要求,但每个元素虽多只有一个,建议按照以下顺序编写:
- Load (必须,仅有一个)
- Debug(可选,最多一个)
- Player(可选,最多一个)
- Driver(可选,最多一个)
- Vehicle(可选,最多一个)
- Output(可选,最多一个)
- Port(可选,最多一个)
# 评测任务必需sensor
<Sensor name="DefaultPerfectSensor" type="video"> //VTD默认的完美传感器,Octopus修改部分配置
<Load lib="libModulePerfectSensor.so" path="" persistent="true" />
<Frustum near="1.0" far="251.0" left="45.0" right="45.0" bottom="3.0" top="3.0" />
<Cull maxObjects="5" enable="true" />
<Port name="RDBout" number="48195" type="TCP" sendEgo="true" />
<Player default="true" />
<Position dx="3.5" dy="0.0" dz="0.5" dhDeg="0.0" dpDeg="0.0" drDeg="0.0" />
<Database resolveRepeatedObjects="true" continuousObjectTesselation="2.0" />
<Filter objectType="pedestrian"/>
<Filter objectType="vehicle"/>
<Filter objectType="obstacle"/>
<Filter objectType="trafficSign"/>
<Filter objectType="light"/>
<Filter objectType="laneInfoComplete"/>
<Filter objectType="roadMarks"/>
<Debug enable="false"
detection="false"
road="false"
position="true"
dimensions="false"
camera="false"
CSV="false"
packages="false"
culling="true"
contactPoints="false"
trafficSigns="false"/>
</Sensor>
<Sensor name="detectTrafficSign" type="video"> //Octopus添加,用于检测路标的传感器
<Load lib="libModulePerfectSensor.so" path="" persistent="true" />
<Frustum near="1.0" far="251.0" left="90" right="90.0" bottom="10.0" top="10.0" />
<Cull maxObjects="99" enable="true" />
<Port name="RDBout" number="48175" type="TCP" sendEgo="true" />
<Player default="true" />
<Position dx="3.5" dy="0.0" dz="1.5" dhDeg="0.0" dpDeg="0.0" drDeg="0.0" />
<Database resolveRepeatedObjects="true" continuousObjectTesselation="2.0" />
<Origin type = "inertial"/>
<Filter objectType="object"/>
<Filter objectType="trafficSign"/>
<Filter objectType="laneInfoComplete"/>
<Debug enable="false"
detection="false"
road="false"
position="true"
dimensions="false"
camera="false"
CSV="false"
packages="false"
culling="true"
contactPoints="false"
trafficSigns="false"/>
</Sensor>
<Sensor name="crash" type="video"> //Octopus添加,用于碰撞检测的传感器
<Load lib="libModuleCrashSensor.so" path="" persistent="true" />
<Filter rdbCategory="RDB_OBJECT_CATEGORY_PLAYER"/>
<Filter rdbCategory="RDB_OBJECT_CATEGORY_COMMON"/>
<Filter rdbCategory="RDB_OBJECT_CATEGORY_OPENDRIVE"/>
<Filter odrType="road" />
<Player default="true" />
<Debug enable="false"/>
</Sensor>