Beispiel #1
0
    def _build_configuration(self):
        """Builds a configuration using an SAC agent
    """
        # TODO(@hart): increase scenario number
        self._scenario_generator = \
          ConfigurableScenarioGeneration(num_scenarios=100,
                                         params=self._params)

        # USE THIS FOR DETERMINISTIC SCENARIO GEN.
        # self._scenario_generator = \
        #   DeterministicScenarioGeneration(num_scenarios=100,
        #                                   params=self._params)
        # self._observer = NearestObserver(self._params)
        self._observer = ClosestAgentsObserver(self._params)

        self._behavior_model = DynamicModel(params=self._params)
        self._evaluator = CustomEvaluator(params=self._params)
        sim_step_time = 0.2
        real_time_factor = 5

        resolution = (1920, 1080)
        dpi = 300
        fig_env = plt.figure(figsize=(resolution[0] / dpi,
                                      resolution[1] / dpi),
                             dpi=dpi)
        gs = gridspec.GridSpec(1, 1, left=0.0, right=1, bottom=0, top=0.9)
        axis = plt.subplot(gs[0])
        viewer = MPViewer(params=self._params,
                          y_length=80,
                          enforce_y_length=True,
                          enforce_x_length=False,
                          follow_agent_id=True,
                          axis=axis)
        # self._viewer = VideoRenderer(renderer=viewer, world_step_time=0.2)
        self._viewer = viewer
        self._runtime = RuntimeRL(action_wrapper=self._behavior_model,
                                  observer=self._observer,
                                  evaluator=self._evaluator,
                                  step_time=0.2,
                                  viewer=self._viewer,
                                  scenario_generator=self._scenario_generator)
        tfa_env = tf_py_environment.TFPyEnvironment(TFAWrapper(self._runtime))
        eval_tf_env = tf_py_environment.TFPyEnvironment(
            TFAWrapper(self._runtime))
        # self._agent = PPOAgent(tfa_env, params=self._params)
        # self._runner = PPORunner(tfa_env,
        #                          eval_tf_env,
        #                          self._agent,
        #                          params=self._params,
        #                          unwrapped_runtime=self._runtime)
        self._agent = SACAgent(tfa_env, params=self._params)
        self._runner = SACRunner(tfa_env,
                                 self._agent,
                                 params=self._params,
                                 unwrapped_runtime=self._runtime)
Beispiel #2
0
  def test_configurable_scenario_generation_default_params(self):
    params = ParameterServer()
    scenario_generation = ConfigurableScenarioGeneration(num_scenarios=2,params=params)
    scenario_generation.dump_scenario_list("test.scenario")

    scenario_loader = ScenarioGeneration()
    scenario_loader.load_scenario_list("test.scenario")

    self.assertEqual(len(scenario_loader._scenario_list), 2)
    self.assertEqual(len(scenario_loader._scenario_list[0]._agent_list), len(scenario_generation._scenario_list[0]._agent_list))

    scenario = scenario_loader.get_scenario(idx=0)

    params.save("default_params.json")
    def test_configurable_scenario_generation_sample_behavior_types(self):
        sink_source_dict = [{
            "SourceSink": [[5111.626, 5006.8305], [5110.789, 5193.1725]],
            "Description":
            "left_lane",
            "ConfigAgentStatesGeometries": {
                "Type": "UniformVehicleDistribution",
                "LanePositions": [0]
            },
            "ConfigBehaviorModels": {
                "Type": "FixedBehaviorType",
                "ModelType": "BehaviorIDMClassic",
                "ModelParams": {
                    "BehaviorIDMClassic::MaxVelocity": 60.0
                }
            },
            "ConfigExecutionModels": {
                "Type": "FixedExecutionType"
            },
            "ConfigDynamicModels": {
                "Type": "FixedDynamicType"
            },
            "ConfigGoalDefinitions": {
                "Type": "FixedGoalTypes"
            },
            "ConfigControlledAgents": {
                "Type": "NoneControlled"
            },
            "AgentParams": {}
        }, {
            "SourceSink": [[5111.626, 5006.8305], [5110.789, 5193.1725]],
            "Description":
            "right_lane",
            "ConfigAgentStatesGeometries": {
                "Type": "UniformVehicleDistribution",
                "LanePositions": [1]
            },
            "ConfigBehaviorModels": {
                "Type": "SampleBehaviorType"
            },
            "ConfigExecutionModels": {
                "Type": "FixedExecutionType"
            },
            "ConfigDynamicModels": {
                "Type": "FixedDynamicType"
            },
            "ConfigGoalDefinitions": {
                "Type": "FixedGoalTypes"
            },
            "ConfigControlledAgents": {
                "Type": "RandomSingleAgent"
            },
            "AgentParams": {}
        }]
        params = ParameterServer()
        params["Scenario"]["Generation"]["ConfigurableScenarioGeneration"][
            "SinksSources"] = sink_source_dict
        scenario_generation = ConfigurableScenarioGeneration(num_scenarios=2,
                                                             params=params)
        scenario_generation.dump_scenario_list("test.scenario")

        params.save("default_params_behavior_type_sampling.json")
# https://opensource.org/licenses/MIT




from modules.runtime.scenario.scenario_generation.configurable_scenario_generation import ConfigurableScenarioGeneration
from modules.runtime.commons.parameters import ParameterServer
from modules.runtime.viewer.matplotlib_viewer import MPViewer
from modules.runtime.runtime import Runtime
from modules.runtime.viewer.pygame_viewer import PygameViewer
import time
import os

scenario_param_file ="highway_merge_configurable.json" # must be within examples params folder
param_server = ParameterServer(filename= os.path.join("examples/params/",scenario_param_file))
scenario_generation = ConfigurableScenarioGeneration(num_scenarios=3, params=param_server)

viewer = MPViewer(
  params=param_server,
  x_range=[5060, 5160],
  y_range=[5070,5150],
  use_world_bounds=True)
sim_step_time = param_server["simulation"]["step_time",
                                           "Step-time used in simulation",
                                           0.2]
sim_real_time_factor = param_server["simulation"]["real_time_factor",
                                                  "execution in real-time or faster",
                                                  1]

env = Runtime(0.2,
              viewer,