简体   繁体   English

Carla 模拟器中的 XMLSchemaChildrenValidationError (Python 3.7)

[英]XMLSchemaChildrenValidationError in Carla simulator (Python 3.7)

I have been trying to use scenario runner with an openscenario file in Carla 0.9.5 (using Python 3.7):我一直在尝试在 Carla 0.9.5 中使用带有 openscenario 文件的场景运行器(使用 Python 3.7):

python scenario_runner.py --openscenario openscenario_file.xosc

And I keep getting the following error:而且我不断收到以下错误:

    Traceback (most recent call last):
  File "scenario_runner.py", line 413, in <module>
    SCENARIORUNNER.run(ARGUMENTS)
  File "scenario_runner.py", line 224, in run
    self.run_openscenario(args)
  File "scenario_runner.py", line 311, in run_openscenario
    config = OpenScenarioConfiguration(args.openscenario)
  File "C:\scenario_runner-0.9.5.1\srunner\tools\openscenario_parser.py", line 37, in __init__
    self._validate_openscenario_configuration()
  File "C:\scenario_runner-0.9.5.1\srunner\tools\openscenario_parser.py", line 58, in _validate_openscenario_configuration
    xsd.validate(self.xml_tree)
  File "C:\Python\Python37\site-packages\xmlschema\validators\schema.py", line 1269, in validate
    raise error
xmlschema.validators.exceptions.XMLSchemaChildrenValidationError: failed validating <Element 'Event' at 0x000002621BDF6458> with XsdGroup(model='sequence', occurs=[1, 1]):

Reason: Unexpected child with tag 'Conditions' at position 2. Tag 'StartConditions' expected.

Schema:

  <xsd:complexType xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:sequence>
          <xsd:element maxOccurs="unbounded" name="Action">
              <xsd:complexType>
                  <xsd:choice>
                      <xsd:element name="Global" type="OSCGlobalAction" />
                      <xsd:element name="UserDefined" type="OSCUserDefinedAction" />
                      <xsd:element name="Private" type="OSCPrivateAction" />
                  </xsd:choice>
                  <xsd:attribute name="name" type="xsd:string" use="required" />
              </xsd:complexType>
          </xsd:element>
          <xsd:element name="StartConditions">
              <xsd:complexType>
                  <xsd:sequence>
                      <xsd:element maxOccurs="unbounded" name="ConditionGroup" type="OSCConditionGroup" />
                  </xsd:sequence>
              </xsd:complexType>
          </xsd:element>
      </xsd:sequence>
      ...
      ...
  </xsd:complexType>

Instance:

  <Event name="MyLaneChangeLeftEvent" priority="overwrite">
      <Action name="MyLaneChangeLeftAction">
          <Private>
              <Lateral>
                  <LaneChange>
                      <Dynamics shape="sinusoidal" time="5" />
                      <Target>
                          <Relative object="$owner" value="1" />
                      </Target>
                  </LaneChange>
              </Lateral>
          </Private>
      </Action>
      <Conditions>
          <Start>
              <ConditionGroup>
                  <Condition delay="0" edge="rising" name="MyStartCondition1">
                      <ByEntity>
                          <TriggeringEntities rule="any">
                              <Entity name="$owner" />
      ...
      ...
  </Event>

Path: /OpenSCENARIO/Storyboard/Story/Act/Sequence/Maneuver/Event

I am quite new in python and carla.我是 python 和 carla 的新手。 I looked up this type of error, however I couldn't find any useful information, any ideas?我查找了这种类型的错误,但是我找不到任何有用的信息,有什么想法吗? From what I understand it looks like the child "Conditions" is and invalid child element, but I am not sure why.据我了解,它看起来像子“条件”是无效的子元素,但我不知道为什么。

The error is quite clear错误很明显

Unexpected child with tag 'Conditions' at position 2. Tag 'StartConditions' expected.在 position 2. 预期带有标签“条件”的意外孩子。

The validator sees a <Conditions> element where there would be a <StartConditions> expected.验证器看到一个<Conditions>元素,其中应该有一个<StartConditions>预期。

Your schema says "after 1..N occurrences of <Action> there must be a <StartConditions> " :您的架构说“在<Action>出现 1..N 次之后,必须有一个<StartConditions>

<xsd:complexType xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:sequence>
        <xsd:element maxOccurs="unbounded" name="Action">
            <xsd:complexType>
                <xsd:choice>
                    <xsd:element name="Global" type="OSCGlobalAction" />
                    <xsd:element name="UserDefined" type="OSCUserDefinedAction" />
                    <xsd:element name="Private" type="OSCPrivateAction" />
                </xsd:choice>
                <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
        </xsd:element>
        <xsd:element name="StartConditions">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element maxOccurs="unbounded" name="ConditionGroup" type="OSCConditionGroup" />
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

And this is what your XML does:这就是您的 XML 所做的:

<Event name="MyLaneChangeLeftEvent" priority="overwrite">
    <Action name="MyLaneChangeLeftAction">  <!-- position 1 -->
        <!-- ... -->
    </Action>
    <Conditions>                            <!-- position 2 -->
        <!-- ... -->
    </Conditions>
</Event>

The solution is to either update your XML to match the schema, or to update your schema to match the XML.解决方案是更新您的 XML 以匹配架构,或者更新您的架构以匹配 XML。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM