def _get_actor_transform(self, actor_name): """ Get the initial actor transform provided by the Init section Note: - The OpenScenario specification allows multiple definitions. We use the _first_ one - The OpenScenario specification allows different ways of specifying a position. We currently only support a specification with absolute world coordinates """ actor_transform = carla.Transform() actor_found = False for private_action in self.init.iter("Private"): if private_action.attrib.get('object', None) == actor_name: if actor_found: # pylint: disable=line-too-long print( "Warning: The actor '{}' was already assigned an initial position. Overwriting pose!" .format(actor_name)) # pylint: enable=line-too-long actor_found = True for position in private_action.iter('Position'): transform = OpenScenarioParser.convert_position_to_transform( position) if transform: actor_transform = transform if not actor_found: print( "Warning: The actor '{}' was not assigned an initial position. Using (0,0,0)" .format(actor_name)) return actor_transform
def _get_actor_transform(self, actor_name): """ Get the initial actor transform provided by the Init section Note: - The OpenScenario specification allows multiple definitions. We use the _first_ one - The OpenScenario specification allows different ways of specifying a position. We currently support the specification with absolute world coordinates and the relative positions RelativeWorld, RelativeObject and RelativeLane - When using relative positions the relevant reference point (e.g. transform of another actor) should be defined before! """ actor_transform = carla.Transform() actor_found = False for private_action in self.init.iter("Private"): if private_action.attrib.get('entityRef', None) == actor_name: if actor_found: # pylint: disable=line-too-long self.logger.warning( " Warning: The actor '%s' was already assigned an initial position. Overwriting pose!", actor_name) # pylint: enable=line-too-long actor_found = True for position in private_action.iter('Position'): transform = OpenScenarioParser.convert_position_to_transform( position, actor_list=self.other_actors + self.ego_vehicles) if transform: actor_transform = transform if not actor_found: # pylint: disable=line-too-long self.logger.warning( " Warning: The actor '%s' was not assigned an initial position. Using (0,0,0)", actor_name) # pylint: enable=line-too-long return actor_transform