scenario_runner icon indicating copy to clipboard operation
scenario_runner copied to clipboard

Raise KeyError 'misc' when using MiscObject in OpenScenario files

Open PhyllisJi opened this issue 11 months ago • 6 comments

Describe the bug The OpenScenario file containing the MiscObject keyword could not complete compilation

Expected behavior Compiles properly

Screenshots 8901709204105_ pic

Desktop (please complete the following information):

  • OS: [e.g. Windows 10]
  • CARLA Version [e.g. CARLA 0.9.13]
  • Python version [e.g. 3.8]
  • Version [e.g. 0.9.13]

Additional context Add any other context about the problem here.

PhyllisJi avatar Feb 29 '24 11:02 PhyllisJi

Can I see your xosc file?

starrye avatar Mar 11 '24 06:03 starrye

Can I see your xosc file?

Of Course.

PhyllisJi avatar Mar 11 '24 08:03 PhyllisJi

Can I see your xosc file?

<?xml version="1.0" encoding="utf-8"?>
<OpenScenario>
  <FileHeader revMajor="1" revMinor="0" date="2024-03-11T16:19:49" description="CARLA:test" author=""/>
  <CatalogLocations>
  </CatalogLocations>
  <RoadNetwork>
    <LogicFile filepath="Town05"/>
  </RoadNetwork>
  <Entities>
    <ScenarioObject name="hero">
      <Vehicle name="vehicle.lincoln.mkz_2017" vehicleCategory="car">
        <Performance maxSpeed="69.444" maxAcceleration="200" maxDeceleration="10.0"/>
        <BoundingBox>
          <Center x="1.5" y="0.0" z="0.9"/>
          <Dimensions width="2.1" length="4.5" height="1.8"/>
        </BoundingBox>
        <Axles>
          <FrontAxle maxSteering="0.5" wheelDiameter="0.6" trackWidth="1.8" positionX="3.1" positionZ="0.3"/>
          <RearAxle maxSteering="0.0" wheelDiameter="0.6" trackWidth="1.8" positionX="0.0" positionZ="0.3"/>
        </Axles>
        <Properties/>
      </Vehicle>
    </ScenarioObject>
    <ScenarioObject name="adversary">
      <Vehicle name="vehicle.tesla.model3" vehicleCategory="car">
        <Performance maxSpeed="69.444" maxAcceleration="200" maxDeceleration="10.0"/>
        <BoundingBox>
          <Center x="1.5" y="0.0" z="0.9"/>
          <Dimensions width="2.1" length="4.5" height="1.8"/>
        </BoundingBox>
        <Axles>
          <FrontAxle maxSteering="0.5" wheelDiameter="0.6" trackWidth="1.8" positionX="3.1" positionZ="0.3"/>
          <RearAxle maxSteering="0.0" wheelDiameter="0.6" trackWidth="1.8" positionX="0.0" positionZ="0.3"/>
        </Axles>
        <Properties/>
      </Vehicle>
    </ScenarioObject>
    <ScenarioObject name="Box">
      <MiscObject name="box" miscObjectCategory="obstacle" model3d="../models/box_cc_by.osgb" mass="200.0">
        <BoundingBox>
          <Center x="0.0" y="0.0" z="0.75"/>
          <Dimensions width="1.0" length="2.0" height="1.2"/>
        </BoundingBox>
        <Properties/>
      </MiscObject>
    </ScenarioObject>
  </Entities>
  <Storyboard>
    <Init>
      <Actions>
        <GlobalAction>
          <EnvironmentAction>
            <Environment name="weather">
              <RoadCondition frictionScaleFactor="1.0"/>
              <Weather>
                <Precipitation precipitationType="dry"/>
                <Fog visualRange="100000.0"/>
                <Sun intensity="0.85" elevation="0.5" azimuth="0.5"/>
              </Weather>
              <TimeOfDay dateTime="2020-01-01T12:00:00" animation="true"/>
            </Environment>
          </EnvironmentAction>
        </GlobalAction>
        <Private entityRef="hero">
          <PrivateAction>
            <ControllerAction>
              <AssignControllerAction>
                <Controller name="HeroAgent">
                  <Properties>
                    <Property name="module" value="external_control"/>
                  </Properties>
                </Controller>
              </AssignControllerAction>
              <OverrideControllerValueAction>
                <Throttle value="0" active="false"/>
                <Brake value="0" active="false"/>
                <Clutch value="0" active="false"/>
                <ParkingBrake value="0" active="false"/>
                <SteeringWheel value="0" active="false"/>
                <Gear number="0" active="false"/>
              </OverrideControllerValueAction>
            </ControllerAction>
          </PrivateAction>
          <PrivateAction>
            <LateralAction>
              <LaneOffsetAction continuous="true">
                <LaneOffsetTarget>
                  <AbsoluteTargetLaneOffset value="0.0"/>
                </LaneOffsetTarget>
                <LaneOffsetActionDynamics maxLateralAcc="10.0" dynamicsShape="linear"/>
              </LaneOffsetAction>
            </LateralAction>
          </PrivateAction>
          <PrivateAction>
            <TeleportAction>
              <Position>
                <LanePosition roadId="1" laneId="-1" offset="0" s="45"/>
              </Position>
            </TeleportAction>
          </PrivateAction>
        </Private>
        <Private entityRef="adversary">
          <PrivateAction>
            <LateralAction>
              <LaneOffsetAction continuous="true">
                <LaneOffsetTarget>
                  <RelativeTargetLaneOffset value="0.0" entityRef="adversary"/>
                </LaneOffsetTarget>
                <LaneOffsetActionDynamics maxLateralAcc="1.0" dynamicsShape="linear"/>
              </LaneOffsetAction>
            </LateralAction>
          </PrivateAction>
          <PrivateAction>
            <RoutingAction>
              <AssignRouteAction>
                <Route name="HostStraightRoute" closed="false">
                  <Waypoint routeStrategy="shortest">
                    <Position>
                      <WorldPosition x="-128.5" y="-1.5" z="0.0" h="3.1415926"/>
                    </Position>
                  </Waypoint>
                  <Waypoint routeStrategy="shortest">
                    <Position>
                      <LanePosition roadId="1" laneId="1" offset="0" s="45"/>
                    </Position>
                  </Waypoint>
                  <Waypoint routeStrategy="shortest">
                    <Position>
                      <LanePosition roadId="1" laneId="1" offset="0" s="0"/>
                    </Position>
                  </Waypoint>
                  <Waypoint routeStrategy="shortest">
                    <Position>
                      <LanePosition roadId="5" laneId="-1" offset="0" s="30"/>
                    </Position>
                  </Waypoint>
                </Route>
              </AssignRouteAction>
            </RoutingAction>
          </PrivateAction>
          <PrivateAction>
            <LongitudinalAction>
              <SpeedAction>
                <SpeedActionTarget>
                  <AbsoluteTargetSpeed value="10.0"/>
                </SpeedActionTarget>
                <SpeedActionDynamics value="1.5" dynamicsShape="step" dynamicsDimension="distance"/>
              </SpeedAction>
            </LongitudinalAction>
          </PrivateAction>
        </Private>
        <Private entityRef="Box">
          <PrivateAction>
            <TeleportAction>
              <Position>
                <LanePosition roadId="1" laneId="-1" offset="0" s="35"/>
              </Position>
            </TeleportAction>
          </PrivateAction>
        </Private>
      </Actions>
    </Init>
    <Story name="MyStory">
      <Act name="Behaviour">
        <ManeuverGroup name="MyManeuverGroup" maximumExecutionCount="1">
          <Actors selectTriggeringEntities="false">
            <EntityRef entityRef="adversary"/>
          </Actors>
          <Maneuver name="MyManeuver">
            <Event name="MyEvent" priority="overwrite">
              <Action name="MyEventAction">
                <PrivateAction>
                  <LongitudinalAction>
                    <SpeedAction>
                      <SpeedActionDynamics dynamicsShape="step" value="1.5" dynamicsDimension="distance"/>
                      <SpeedActionTarget>
                        <AbsoluteTargetSpeed value="10"/>
                      </SpeedActionTarget>
                    </SpeedAction>
                  </LongitudinalAction>
                </PrivateAction>
              </Action>
              <StartTrigger>
                <ConditionGroup>
                  <Condition name="StartCondition" delay="0" conditionEdge="rising">
                    <ByEntityCondition>
                      <TriggeringEntities triggeringEntitiesRule="any">
                        <EntityRef entityRef="hero"/>
                      </TriggeringEntities>
                      <EntityCondition>
                        <RelativeDistanceCondition entityRef="adversary" relativeDistanceType="cartesianDistance" value="14.0" freespace="false" rule="lessThan"/>
                      </EntityCondition>
                    </ByEntityCondition>
                  </Condition>
                </ConditionGroup>
              </StartTrigger>
            </Event>
          </Maneuver>
        </ManeuverGroup>
        <StartTrigger/>
        <StopTrigger>
          <ConditionGroup>
            <Condition name="EndCondition" delay="0" conditionEdge="rising">
              <ByEntityCondition>
                <TriggeringEntities triggeringEntitiesRule="any">
                  <EntityRef entityRef="hero"/>
                </TriggeringEntities>
                <EntityCondition>
                  <TraveledDistanceCondition value="200.0"/>
                </EntityCondition>
              </ByEntityCondition>
            </Condition>
          </ConditionGroup>
        </StopTrigger>
      </Act>
    </Story>
    <StopTrigger/>
  </Storyboard>
</OpenScenario>

PhyllisJi avatar Mar 11 '24 08:03 PhyllisJi

You can test the box by Carla whether there is or you can replace a default static object:static.prop.streetbarrier

starrye avatar Mar 11 '24 09:03 starrye

You can test the box by Carla whether there is or you can replace a default static object:static.prop.streetbarrier

I'm sorry, I don't quite understand. Could you be more specific

PhyllisJi avatar Mar 12 '24 08:03 PhyllisJi

you can change your xosc file to test whether the box exists

<ScenarioObject name="Box">
      <MiscObject name="box" miscObjectCategory="obstacle" model3d="../models/box_cc_by.osgb" mass="200.0">
        <BoundingBox>
          <Center x="0.0" y="0.0" z="0.75"/>
          <Dimensions width="1.0" length="2.0" height="1.2"/>
        </BoundingBox>
        <Properties/>
      </MiscObject>
    </ScenarioObject>

===>

<ScenarioObject name="Box">
      <MiscObject name="static.prop.streetbarrier" miscObjectCategory="obstacle" mass="0.0">
        <BoundingBox>
          <Center x="0.0" y="0.0" z="0.75"/>
          <Dimensions width="1.0" length="2.0" height="1.2"/>
        </BoundingBox>
        <Properties/>
      </MiscObject>
    </ScenarioObject>

starrye avatar Mar 12 '24 08:03 starrye

you can change your xosc file to test whether the box exists

<ScenarioObject name="Box">
      <MiscObject name="box" miscObjectCategory="obstacle" model3d="../models/box_cc_by.osgb" mass="200.0">
        <BoundingBox>
          <Center x="0.0" y="0.0" z="0.75"/>
          <Dimensions width="1.0" length="2.0" height="1.2"/>
        </BoundingBox>
        <Properties/>
      </MiscObject>
    </ScenarioObject>

===>

<ScenarioObject name="Box">
      <MiscObject name="static.prop.streetbarrier" miscObjectCategory="obstacle" mass="0.0">
        <BoundingBox>
          <Center x="0.0" y="0.0" z="0.75"/>
          <Dimensions width="1.0" length="2.0" height="1.2"/>
        </BoundingBox>
        <Properties/>
      </MiscObject>
    </ScenarioObject>

It works!Thank you!

PhyllisJi avatar Apr 12 '24 02:04 PhyllisJi