# 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 (有且必须仅有一个)
  1. RDB、Debug标签

    RDB与Debug标签下的内容与模板保持一致,不能做修改。

    <RDB>
            <Port name="RDBraw" number="48190" type="TCP"/>
        </RDB>
        <Debug enable="true"
               lightSource="false"
               driver="false"/>
    
  2. Sensor标签

    Sensor标签可允许多个,但其下面的元素的配置需要有固定顺序,且Sensor的属性name,type 必须标明,可参考如下:

    1. Load (必须且仅有一个)
    2. Frustum(可选,最多一个)
    3. Cull(可选,最多一个)
    4. Port(可选,最多一个)
    5. Player(可选,最多一个)
    6. Origin(可选,最多一个)
    7. Position(可选,最多一个)
    8. Database(可选,最多一个)
    9. Config(可选,最多一个)
    10. Output(可选,最多一个)
    11. Filter(必选,无限制)
    12. Debug(可选,最多一个)

    注意: 为保证评测任务成功运行,需在“ModuleManager.xml”中添加如下内容,且必须与模板内容保持一致,请勿修改。请您仔细阅读评测任务必需sensor

  3. DynamicsPlugin标签

    DynamicsPlugin有且必须仅有一个,且属性name必须标明。该标签下的元素无顺序要求,但每个元素虽多只有一个,建议按照以下顺序编写:

    1. Load (必须,仅有一个)
    2. Debug(可选,最多一个)
    3. Player(可选,最多一个)
    4. Driver(可选,最多一个)
    5. Vehicle(可选,最多一个)
    6. Output(可选,最多一个)
    7. 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>
上次更新: 2020/12/25 16:26:48