Source code for igp2.agents.maneuver_agent
from typing import List
from igp2.agents.agent import Agent
from igp2.planlibrary.maneuver import ManeuverConfig
from igp2.planlibrary.maneuver_cl import CLManeuverFactory
from igp2.core.agentstate import AgentState
from igp2.core.vehicle import TrajectoryVehicle, Action, Observation
[docs]
class ManeuverAgent(Agent):
""" For testing purposes. Agent that executes a sequence of maneuvers"""
def __init__(self,
maneuver_configs: List[ManeuverConfig],
agent_id: int,
initial_state: AgentState,
fps: int = 20,
view_radius: float = None):
super().__init__(agent_id, initial_state, view_radius)
self._vehicle = TrajectoryVehicle(initial_state, initial_state.metadata, fps)
self.maneuver_configs = maneuver_configs
self.maneuver = None
[docs]
def create_next_maneuver(self, agent_id, observation):
if len(self.maneuver_configs) > 0:
config = self.maneuver_configs.pop(0)
config.config_dict["fps"] = self.fps
self.maneuver = CLManeuverFactory.create(
config, agent_id, observation.frame, observation.scenario_map)
else:
self.maneuver = None
[docs]
def next_action(self, observation: Observation = None) -> Action:
if self.maneuver is None or self.maneuver.done(observation):
self.create_next_maneuver(self.agent_id, observation)
if self.maneuver is None:
return Action(0., 0.)
else:
return self.maneuver.next_action(observation)
[docs]
def done(self, observation: Observation) -> bool:
return False