簡體   English   中英

Carla 模擬器中的 XMLSchemaChildrenValidationError (Python 3.7)

[英]XMLSchemaChildrenValidationError in Carla simulator (Python 3.7)

我一直在嘗試在 Carla 0.9.5 中使用帶有 openscenario 文件的場景運行器(使用 Python 3.7):

python scenario_runner.py --openscenario openscenario_file.xosc

而且我不斷收到以下錯誤:

    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

我是 python 和 carla 的新手。 我查找了這種類型的錯誤,但是我找不到任何有用的信息,有什么想法嗎? 據我了解,它看起來像子“條件”是無效的子元素,但我不知道為什么。

錯誤很明顯

在 position 2. 預期帶有標簽“條件”的意外孩子。

驗證器看到一個<Conditions>元素,其中應該有一個<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>

這就是您的 XML 所做的:

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

解決方案是更新您的 XML 以匹配架構,或者更新您的架構以匹配 XML。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM