Newer
Older
from omegaconf import DictConfig
from nuplan.planning.scenario_builder.scenario_modifier.abstract_scenario_modifier import AbstractScenarioModifier
from nuplan.planning.scenario_builder.scenario_modifier.left_and_right_modifier import LeftAndRightModifier
from nuplan.planning.scenario_builder.scenario_modifier.occlusion_injection_modifier import OcclusionInjectionModifier
from nuplan.planning.scenario_builder.scenario_modifier.oncoming_vehicle_injection_for_left_turn_and_occlusion_injection import OncomingInjectionForLeftTurnAndOcclusionInjectionModifier
from nuplan.planning.scenario_builder.scenario_modifier.conflict_vehicle_injection_and_occlusion_injection import ConflictInjectionAndOcclusionInjectionModifier
from nuplan.planning.scenario_builder.scenario_modifier.sequential_conflict_with_occlusion_injection_modifier import SequentialConflictWithOcclusionInjectionModifier
def build_scenario_modifiers(scenario_modifier_types: List[str], cfg: DictConfig = None) -> List[AbstractScenarioModifier]:
modifiers = []
for type in scenario_modifier_types:
if type == "left-and-right":
modifiers.append(LeftAndRightModifier()) #this one is an example and just injects an agent to the left of ego in one modifiecation of the scenario and to the right in another
elif type == "occlusion-injection":
modifiers.append(OcclusionInjectionModifier())
elif type == "oncoming-left-turn-and-occlusion-injection":
modifiers.append(OncomingInjectionForLeftTurnAndOcclusionInjectionModifier())
elif type == "conflict-and-occlusion-injection":
modifiers.append(ConflictInjectionAndOcclusionInjectionModifier())
elif type == "sequential-conflict-with-occlusion-injection":
modifiers.append(SequentialConflictWithOcclusionInjectionModifier(cfg))
# elif type == "occludie-injection":
# modifiers.append(OccludieInjection())
else:
raise ValueError(f"Unknown scenario modifier type: {type}")
return modifiers