Skip to content
Snippets Groups Projects
scenario_modifier_builder.py 2.03 KiB
Newer Older
from typing import List

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