def test_obs_traj(self):
     map_filename = "external/bark_ml_project/bark_ml/environments/blueprints/highway/city_highway_straight.xodr"
     params = ParameterServer()
     behavior = BehaviorDiscreteMacroActionsML(params)
     evaluator = GoalReached(params)
     observer = NearestAgentsObserver(params)
     viewer = MPViewer(params=params,
                       x_range=[-35, 35],
                       y_range=[-35, 35],
                       follow_agent_id=True)
     env = HyDiscreteHighway(params=params,
                             map_filename=map_filename,
                             behavior=behavior,
                             evaluator=evaluator,
                             observer=observer,
                             viewer=viewer,
                             render=True)
     env.reset()
     actions = np.random.randint(0, 7, 100)
     for action in actions:
         concatenated_state, _, _, _ = env.step(action)
         nn_ip_state = concatenated_state
         ego_nn_input_state = deepcopy(
             concatenated_state[0:observer._len_ego_state])
         reverted_observed_state = observer.rev_observe_for_ego_vehicle(
             nn_ip_state)
         ext_reverted_observed_state = np.zeros(
             (reverted_observed_state.shape[0] + 1))
         ext_reverted_observed_state[1:] = reverted_observed_state
         renormed_ego_state = observer._select_state_by_index(
             observer._norm(ext_reverted_observed_state))
         time.sleep(0.2)
         np.testing.assert_array_almost_equal(ego_nn_input_state,
                                              renormed_ego_state)
Esempio n. 2
0
def GetFeatureSpace(env):
    """This method extracts the observation feature space from the given environment.

  Args:
      env (gym.environment): The environment from which the feature space is extracted.

  Returns:
      FeatureSpace: The feature space with the low and high bounds set
  """
    observation = env.reset()
    observer = NearestAgentsObserver()
    observer._max_num_vehicles = int(len(observation) / 4) - 1
    observer.Reset(env._world)

    space = list(
        np.array([
            observer._world_x_range, observer._world_y_range,
            observer._ThetaRange, observer._VelocityRange
        ] * (observer._max_num_vehicles + 1)).transpose())

    class FeatureSpace:
        """The feature space wrapper.
    """
        def __init__(self, low, high):
            """Constructor
      """
            self.high = high
            self.low = low

    return FeatureSpace(space[0], space[1])
Esempio n. 3
0
def main():
    args = configure_args()
    if is_local:
        dir_prefix = ""
    else:
        dir_prefix="hy-iqn-lfd-full-exp.runfiles/hythe/"
    logging.info(f"Executing job: {args.jobname}")
    logging.info(f"Experiment server at: {os.getcwd()}")
    params = ParameterServer(filename=os.path.join(dir_prefix, params_file),
                             log_if_default=True)
    params = configure_params(params, seed=args.jobname)
    experiment_id = params["Experiment"]["random_seed"]
    params_filename = os.path.join(params["Experiment"]["dir"], "params_{}.json".format(experiment_id))

    behavior = BehaviorDiscreteMacroActionsML(params)
    evaluator = GoalReached(params)
    observer = NearestAgentsObserver(params)
    viewer = MPViewer(params=params,
                      x_range=[-35, 35],
                      y_range=[-35, 35],
                      follow_agent_id=True)

    # extract params and save experiment parameters
    params["ML"]["BaseAgent"]["SummaryPath"] = os.path.join(params["Experiment"]["dir"], "agent/summaries")
    params["ML"]["BaseAgent"]["CheckpointPath"] = os.path.join(params["Experiment"]["dir"], "agent/checkpoints")

    params.Save(filename=params_filename)
    logging.info('-' * 60)
    logging.info("Writing params to :{}".format(params_filename))
    logging.info('-' * 60)

    # database creation
    dbs1 = DatabaseSerializer(test_scenarios=1, test_world_steps=2,
                             num_serialize_scenarios=num_demo_scenarios)
    dbs1.process(os.path.join(dir_prefix, "configuration/database"),
      filter_sets="**/**/interaction_merging_light_dense_1D.json")
    local_release_filename = dbs1.release(version="lfd_offline")
    db1 = BenchmarkDatabase(database_root=local_release_filename)
    scenario_generator1, _, _ = db1.get_scenario_generator(0)

    env = HyDiscreteHighway(params=params,
                            scenario_generation=scenario_generator1,
                            behavior=behavior,
                            evaluator=evaluator,
                            observer=observer,
                            viewer=viewer,
                            render=False)

    scenario, _ = scenario_generator1.get_next_scenario()
    world = scenario.GetWorldState()
    observer.Reset(world)

    assert env.action_space._n == 8, "Action Space is incorrect!"
    run(args, params, env, db=db1)
    params.Save(params_filename)
    logging.info('-' * 60)
    logging.info("Writing params to :{}".format(params_filename))
    logging.info('-' * 60)
Esempio n. 4
0
def simulate_scenario(param_server: ParameterServer, sim_time_step: float,
                      renderer: str = "") -> dict:
  """Simulates one scenario with the given parameters.

  Args:
      param_server (ParameterServer): The parameters that specify the scenario.
      sim_time_step (float): The timestep used for the simulation.
      renderer (str, optional): The renderer used during simulation [pygame, matplotlib]. Defaults to "".

  Returns:
      dict: The expert trajectories recorded during simulation.
  """
  scenario, start_ts, end_ts = create_scenario(param_server)

  sim_steps = int((end_ts - start_ts) / sim_time_step)
  sim_time_step_seconds = sim_time_step / 1000

  param_server["ML"]["StateObserver"]["MaxNumAgents"] = 3

  observer = NearestAgentsObserver(param_server)
  observer_not_normalized = NearestAgentsObserver(param_server)
  observer_not_normalized._NormalizationEnabled = False

  expert_trajectories = {}

  viewer = None
  if renderer:
    viewer = get_viewer(param_server, renderer)

  # Run the scenario in a loop
  world_state = scenario.GetWorldState()
  for i in range(0, sim_steps):
    if i % 25 == 0:
      print(f"Simulated {i}/{sim_steps} timesteps.")
    if viewer:
      if renderer == "matplotlib_jupyter":
        viewer = get_viewer(param_server, renderer)
      clear_output(wait=True)
      viewer.clear()
      viewer.drawWorld(world_state, scenario.eval_agent_ids)

    observations = measure_world(
      world_state, observer, observer_not_normalized)
    for agent_id, values in observations.items():
      if agent_id not in expert_trajectories:
        expert_trajectories[agent_id] = defaultdict(list)
      expert_trajectories[agent_id]["obs_norm"].append(values["obs_norm"])
      expert_trajectories[agent_id]["obs"].append(values["obs"])
      expert_trajectories[agent_id]["time"].append(values["time"])
      expert_trajectories[agent_id]["wheelbase"].append(2.7)

    world_state.Step(sim_time_step_seconds)

  if viewer:
    plt.close()
  return expert_trajectories
Esempio n. 5
0
    def test_iqn_agent(self):
        params = ParameterServer()
        params["ML"]["BaseAgent"]["NumSteps"] = 2
        params["ML"]["BaseAgent"]["MaxEpisodeSteps"] = 2

        bp = DiscreteHighwayBlueprint(params,
                                      number_of_senarios=10,
                                      random_seed=0)
        env = SingleAgentRuntime(blueprint=bp, render=False)
        env._observer = NearestAgentsObserver(params)
        env._action_wrapper = BehaviorDiscreteMacroActionsML(params)

        iqn_agent = IQNAgent(agent_save_dir="./save_dir",
                             env=env,
                             params=params)
        iqn_agent.train_episode()

        iqn_agent.save(checkpoint_type="best")
        iqn_agent.save(checkpoint_type="last")

        loaded_agent = IQNAgent(agent_save_dir="./save_dir",
                                checkpoint_load="best")
        loaded_agent2 = IQNAgent(agent_save_dir="./save_dir",
                                 checkpoint_load="last")

        loaded_agent_with_env = IQNAgent(env=env,
                                         agent_save_dir="./save_dir",
                                         checkpoint_load="last")
        loaded_agent_with_env.train_episode()

        self.assertEqual(loaded_agent.ml_behavior.action_space.n,
                         iqn_agent.ml_behavior.action_space.n)
        return
Esempio n. 6
0
 def test_create_environment(self):
     map_interface = self.map_interface
     observer = NearestAgentsObserver()
     env = ExternalRuntime(map_interface=map_interface,
                           observer=observer,
                           params=self.params)
     self.assertTrue(isinstance(env.observation_space, gym.spaces.box.Box))
Esempio n. 7
0
    def test_collect_demonstrations(self):
        params = ParameterServer()
        bp = DiscreteHighwayBlueprint(params,
                                      number_of_senarios=10,
                                      random_seed=0)
        env = SingleAgentRuntime(blueprint=bp, render=False)
        env._observer = NearestAgentsObserver(params)
        env._action_wrapper = BehaviorDiscreteMacroActionsML(params)
        env._evaluator = TestEvaluator()

        demo_behavior = bark_ml.library_wrappers.lib_fqf_iqn_qrdqn.\
                tests.test_demo_behavior.TestDemoBehavior(params)
        collector = DemonstrationCollector()
        collection_result = collector.CollectDemonstrations(env, demo_behavior, 4, "./test_demo_collected", \
               use_mp_runner=False, runner_init_params={"deepcopy" : False})
        self.assertTrue(
            os.path.exists("./test_demo_collected/collection_result"))
        print(collection_result.get_data_frame().to_string())

        experiences = collector.ProcessCollectionResult(
            eval_criteria={"goal_r1": lambda x: x})
        # expected length = 2 scenarios (only every second reaches goal) x 3 steps (4 executed, but first not counted)
        self.assertEqual(len(experiences), 2 * 3)

        collector.dump("./final_collections")

        loaded_collector = DemonstrationCollector.load("./final_collections")
        experiences_loaded = loaded_collector.GetDemonstrationExperiences()
        print(experiences_loaded)
        self.assertEqual(len(experiences_loaded), 2 * 3)
Esempio n. 8
0
  def test_nearest_observer(self):
    params = ParameterServer()
    bp = ContinuousHighwayBlueprint(params)
    env = SingleAgentRuntime(blueprint=bp, render=True)
    env.reset()
    world = env._world

    # under test
    observer = NearestAgentsObserver(params)

    eval_id = env._scenario._eval_agent_ids[0]
    observed_world = world.Observe([eval_id])[0]
    start_time = time.time()
    observed_state = observer.Observe(observed_world)
    end_time = time.time()
    print(f"It took {end_time-start_time} seconds.")
    print(observed_state, observer.observation_space.shape)
Esempio n. 9
0
 def create_runtime_and_setup_empty_world(self, params):
     map_interface = self.map_interface
     observer = NearestAgentsObserver()
     env = ExternalRuntime(map_interface=map_interface,
                           observer=observer,
                           params=params,
                           viewer=viewer)
     env.setupWorld()
     return env
Esempio n. 10
0
def main():
    map_filename = "external/bark_ml_project/bark_ml/environments/blueprints/highway/city_highway_straight.xodr"
    params_filename = glob.glob(os.path.join(demo_root, "params_[!behavior]*"))
    params = ParameterServer(filename=params_filename[0], log_if_default=True)
    behavior = BehaviorDiscreteMacroActionsML(params)
    evaluator = GoalReached(params)
    if is_belief_observer:
        splits = 2
        bparams_filename = glob.glob(os.path.join(demo_root, "behavior_*"))
        params_behavior = ParameterServer(filename=bparams_filename[0])
        behavior_space = BehaviorSpace(params_behavior)

        hypothesis_set, hypothesis_params = behavior_space.create_hypothesis_set_fixed_split(
            split=splits)
        observer = BeliefObserver(params, hypothesis_set, splits=splits)
    else:
        observer = NearestAgentsObserver(params)
    viewer = MPViewer(params=params,
                      x_range=[-35, 35],
                      y_range=[-35, 35],
                      follow_agent_id=True)
    env = HyDiscreteHighway(params=params,
                            map_filename=map_filename,
                            behavior=behavior,
                            evaluator=evaluator,
                            observer=observer,
                            viewer=viewer,
                            render=False)

    env.reset()

    ego_world_states = []
    _, demonstrations = unpack_load_demonstrations(demo_root)
    for demo in demonstrations:
        ego_state = np.zeros((observer._len_ego_state + 1))
        (nn_ip_state, action, reward, next_state, done, is_demo) = demo
        ego_nn_input_state = deepcopy(nn_ip_state[0:observer._len_ego_state])
        ego_state[1:] = ego_nn_input_state
        reverted_observed_state = observer.rev_observe_for_ego_vehicle(
            ego_state)
        ego_world_states.append(
            (reverted_observed_state[int(StateDefinition.X_POSITION)],
             reverted_observed_state[int(StateDefinition.Y_POSITION)],
             reverted_observed_state[int(StateDefinition.THETA_POSITION)],
             reverted_observed_state[int(StateDefinition.VEL_POSITION)],
             action, int(is_demo)))
    df = pd.DataFrame(ego_world_states,
                      columns=[
                          'pos_x', 'pos_y', 'orientation', 'velocity',
                          'action', 'is_demo'
                      ])
    print(df.head(10))
    df.to_pickle(os.path.join(demo_root, "demonstrations/demo_dataframe"))
    return
Esempio n. 11
0
 def test_create_sac_agent(self):
     params = ParameterServer()
     map_interface = self.map_interface
     observer = NearestAgentsObserver()
     env = ExternalRuntime(map_interface=map_interface,
                           observer=observer,
                           params=params)
     env.ml_behavior = BehaviorContinuousML(params)
     sac_agent = BehaviorSACAgent(environment=env, params=params)
     env.ml_behavior = sac_agent
     self.assertTrue(isinstance(env.ml_behavior, BehaviorSACAgent))
Esempio n. 12
0
 def test_agent_wrapping(self):
     params = ParameterServer()
     env = gym.make("highway-v1", params=params)
     env._observer = NearestAgentsObserver(params)
     env.reset()
     params["ML"]["BaseAgent"]["MaxEpisodeSteps"] = 2
     params["ML"]["BaseAgent"]["NumEvalEpisodes"] = 2
     train_bench = TrainingBenchmarkDatabase()
     agent = FQFAgent(env=env,
                      params=params,
                      agent_save_dir="./temp_save",
                      training_benchmark=train_bench)
     agent.train_episode()
     agent.evaluate()
Esempio n. 13
0
def main():
    args = configure_args()
    exp_dir = args.exp_dir or "results/training/toy_evaluation"
    params_filename = glob.glob(os.path.join(exp_dir, "params_*"))
    params = ParameterServer(filename=params_filename[0])
    behavior_params_filename = glob.glob(
        os.path.join(exp_dir, "behavior_params*"))
    if behavior_params_filename:
        splits = 8
        behavior_params = ParameterServer(filename=behavior_params_filename[0])
        behavior_space = BehaviorSpace(behavior_params)
        hypothesis_set, _ = behavior_space.create_hypothesis_set_fixed_split(
            split=splits)
        observer = BeliefObserver(params, hypothesis_set, splits=splits)
        behavior = BehaviorDiscreteMacroActionsML(behavior_params)
    else:
        behavior = BehaviorDiscreteMacroActionsML(params)
        observer = NearestAgentsObserver(params)

    evaluator = GoalReached(params)

    scenario_params = ParameterServer(
        filename=
        "configuration/database/scenario_sets/interaction_merging_light_dense_1D.json"
    )
    scenario_generator = ConfigurableScenarioGeneration(params=scenario_params,
                                                        num_scenarios=5)
    scenario_file = glob.glob(os.path.join(exp_dir, "scenarios_list*"))
    scenario_generator.load_scenario_list(scenario_file[0])
    viewer = MPViewer(params=params,
                      x_range=[-35, 35],
                      y_range=[-35, 35],
                      follow_agent_id=True)
    env = HyDiscreteHighway(behavior=behavior,
                            observer=observer,
                            evaluator=evaluator,
                            viewer=viewer,
                            scenario_generation=scenario_generator,
                            render=True)

    env.reset()
    actions = [0, 1, 2, 3, 4, 5, 6]
    for action in actions:
        print(action)
        env.step(action)
    agent = FQFAgent(env=env, test_env=env, params=params)

    agent.load_models(os.path.join(exp_dir, "agent/checkpoints/final"))
Esempio n. 14
0
 def test_env(self):
     map_filename = "external/bark_ml_project/bark_ml/environments/blueprints/highway/city_highway_straight.xodr"
     params = ParameterServer()
     behavior = BehaviorDiscreteMacroActionsML(params)
     evaluator = GoalReached(params)
     observer = NearestAgentsObserver(params)
     viewer = MPViewer(params=params,
                       x_range=[-35, 35],
                       y_range=[-35, 35],
                       follow_agent_id=True)
     env = HyDiscreteHighway(params=params,
                             map_filename=map_filename,
                             behavior=behavior,
                             evaluator=evaluator,
                             observer=observer,
                             viewer=viewer,
                             render=True)
     env.reset()
     actions = [5] * 100
     print(actions)
     for action in actions:
         env.step(action)
         time.sleep(0.2)
     return
Esempio n. 15
0
 def __init__(self,
              params=None,
              ml_behavior=None,
              num_scenarios=100,
              viewer=True):
     # NOTE: scneario number is wrong
     scenario_generation = ConfigurableScenarioGeneration(
         num_scenarios=num_scenarios, params=params)
     if viewer:
         viewer = MPViewer(params=params,
                           x_range=[-35, 35],
                           y_range=[-35, 35],
                           follow_agent_id=True)
     dt = 0.2
     # NOTE: evaluator and observer could be overwritten
     evaluator = GoalReached(params)
     observer = NearestAgentsObserver(params)
     ml_behavior = ml_behavior
     super().__init__(scenario_generation=scenario_generation,
                      viewer=viewer,
                      dt=dt,
                      evaluator=evaluator,
                      observer=observer,
                      ml_behavior=ml_behavior)
Esempio n. 16
0
def main():
    print("Experiment server at:", os.getcwd())
    params = ParameterServer(
        filename=
        "hy-exp-run.runfiles/hythe/configuration/params/default_exp_runne_params.json"
    )
    params = configure_params(params)
    num_scenarios = 5
    random_seed = 0
    behavior = BehaviorDiscreteMacroActionsML(params)
    # evaluator = GoalReachedGuiding(params)
    evaluator = GoalReached(params)
    observer = NearestAgentsObserver(params)
    viewer = MPViewer(params=params,
                      x_range=[-35, 35],
                      y_range=[-35, 35],
                      follow_agent_id=True)
    experiment_id = params["Experiment"]["random_seed"]
    params_filename = "./{}_default_exp_runner_params.json".format(
        experiment_id)
    print(params_filename)
    params.Save(filename=params_filename)
    # database creation
    dbs = DatabaseSerializer(
        test_scenarios=2, test_world_steps=2, num_serialize_scenarios=20
    )  # increase the number of serialize scenarios to 100
    dbs.process("hy-exp-run.runfiles/hythe/configuration/database")
    local_release_filename = dbs.release(version="test",
                                         sub_dir="hy_bark_packaged_databases")
    db = BenchmarkDatabase(database_root=local_release_filename)

    # switch this to other generator to get other index
    # scenario_generator, _, _ = db.get_scenario_generator(0)
    scenario_generator, _, _ = db.get_scenario_generator(1)
    #
    # env = GymSingleAgentRuntime(ml_behavior = behavior,
    #                             observer = observer,
    #                             evaluator = evaluator,
    #                             step_time=0.2,
    #                             viewer=viewer,
    #                             scenario_generator=scenario_generator,
    #                             render=False)

    env = HyDiscreteHighway(params=params,
                            scenario_generation=scenario_generator,
                            behavior=behavior,
                            evaluator=evaluator,
                            observer=observer,
                            viewer=viewer,
                            render=False)

    run(params, env)
    # video_renderer.drawWorld(env._world)
    env._viewer.export_video("./test_video")
    # from gym.envs.registration import register
    # register(
    #     id='highway-v1',
    #     entry_point='bark_ml.environments.gym:DiscreteHighwayGym'
    # )
    # import gym
    # env = gym.make("highway-v1")
    # env.reset()
    # actions = [5]*100
    # print(actions)
    # for action in actions:
    #     env.step(action)
    #     time.sleep(0.2)
    return
Esempio n. 17
0
    def __init__(self,
                 params=None,
                 num_scenarios=250,
                 random_seed=0,
                 ml_behavior=None,
                 viewer=True,
                 mode="dense"):
        params["BehaviorIDMClassic"]["BrakeForLaneEnd"] = True
        params["BehaviorIDMClassic"]["BrakeForLaneEndEnabledDistance"] = 100.
        params["BehaviorIDMClassic"]["BrakeForLaneEndDistanceOffset"] = 30.
        params["BehaviorIDMClassic"]["DesiredVelocity"] = 10.
        params["World"]["remove_agents_out_of_map"] = False
        # TODO: modify dense
        # ds_min and ds_max
        if mode == "dense":
            ds_min = 7.
            ds_max = 12.
        if mode == "medium":
            ds_min = 12.
            ds_max = 17.
        left_lane = MergingLaneCorridorConfig(params=params,
                                              road_ids=[0, 1],
                                              ds_min=ds_min,
                                              ds_max=ds_max,
                                              min_vel=9.,
                                              max_vel=11.,
                                              s_min=5.,
                                              s_max=45.,
                                              lane_corridor_id=0,
                                              controlled_ids=None)
        right_lane = MergingLaneCorridorConfig(params=params,
                                               road_ids=[0, 1],
                                               lane_corridor_id=1,
                                               ds_min=ds_min,
                                               ds_max=ds_max,
                                               s_min=5.,
                                               s_max=25.,
                                               min_vel=9.,
                                               max_vel=11.,
                                               controlled_ids=True)
        scenario_generation = \
          ConfigWithEase(
            num_scenarios=num_scenarios,
            map_file_name=os.path.join(os.path.dirname(__file__), "../../../environments/blueprints/merging/DR_DEU_Merging_MT_v01_centered.xodr"),  # pylint: disable=unused-import
            random_seed=random_seed,
            params=params,
            lane_corridor_configs=[left_lane, right_lane])
        if viewer:
            viewer = BufferedMPViewer(params=params,
                                      x_range=[-25, 25],
                                      y_range=[-25, 25],
                                      follow_agent_id=True)
        dt = 0.2
        params["ML"]["RewardShapingEvaluator"]["PotentialVelocityFunctor"][
            "DesiredVel", "Desired velocity for the ego agent.", 20]
        evaluator = RewardShapingEvaluator(params)
        observer = NearestAgentsObserver(params)
        ml_behavior = ml_behavior

        super().__init__(scenario_generation=scenario_generation,
                         viewer=viewer,
                         dt=dt,
                         evaluator=evaluator,
                         observer=observer,
                         ml_behavior=ml_behavior)
Esempio n. 18
0
def main():
    map_filename = "external/bark_ml_project/bark_ml/environments/blueprints/highway/city_highway_straight.xodr"
    params = ParameterServer(filename=os.path.join(
        exp_root, "params_iqn_pre_exp_2sdi64.json"),
                             log_if_default=True)
    params_behavior = ParameterServer(filename=os.path.join(
        exp_root, "behavior_params_iqn_pre_exp_2sdi64.json"))
    behavior = BehaviorDiscreteMacroActionsML(params)
    evaluator = GoalReached(params)
    if is_belief_observer:
        splits = 2
        behavior_space = BehaviorSpace(params_behavior)

        hypothesis_set, hypothesis_params = behavior_space.create_hypothesis_set_fixed_split(
            split=splits)
        observer = BeliefObserver(params, hypothesis_set, splits=splits)
    else:
        observer = NearestAgentsObserver(params)
    viewer = MPViewer(params=params,
                      x_range=[-35, 35],
                      y_range=[-35, 35],
                      follow_agent_id=True)

    # database creation
    dbs1 = DatabaseSerializer(test_scenarios=1,
                              test_world_steps=2,
                              num_serialize_scenarios=1)
    dbs1.process(os.path.join("", "configuration/database"),
                 filter_sets="**/**/interaction_merging_light_dense_1D.json")
    local_release_filename = dbs1.release(version="lfd_offline")
    db1 = BenchmarkDatabase(database_root=local_release_filename)
    scenario_generator1, _, _ = db1.get_scenario_generator(0)

    env = HyDiscreteHighway(params=params,
                            scenario_generation=scenario_generator1,
                            map_filename=map_filename,
                            behavior=behavior,
                            evaluator=evaluator,
                            observer=observer,
                            viewer=viewer,
                            render=False)

    scenario, _ = scenario_generator1.get_next_scenario()
    world = scenario.GetWorldState()
    observer.Reset(world)
    env.reset()

    agent = pick_agent(exp_root, env, params)
    ego_world_states = []
    memory = agent.memory
    learned_states = memory["state"]
    actions = memory['action']
    is_demos = memory['is_demo']
    for state, action, is_demo in zip(learned_states, actions, is_demos):
        ego_state = np.zeros((observer._len_ego_state + 1))
        ego_nn_input_state = deepcopy(state[0:observer._len_ego_state])
        ego_state[1:] = ego_nn_input_state
        reverted_observed_state = observer.rev_observe_for_ego_vehicle(
            ego_state)
        ego_world_states.append(
            (reverted_observed_state[int(StateDefinition.X_POSITION)],
             reverted_observed_state[int(StateDefinition.Y_POSITION)],
             reverted_observed_state[int(StateDefinition.THETA_POSITION)],
             reverted_observed_state[int(StateDefinition.VEL_POSITION)],
             action[0], is_demo[0]))
    df = pd.DataFrame(ego_world_states,
                      columns=[
                          'pos_x', 'pos_y', 'orientation', 'velocity',
                          'action', 'is_demo'
                      ])
    print(df.head(10))
    if not os.path.exists(os.path.join(exp_root, "demonstrations")):
        os.makedirs(os.path.join(exp_root, "demonstrations"))
    df.to_pickle(os.path.join(exp_root, "demonstrations", "learned_dataframe"))
    return
Esempio n. 19
0
from bark_ml.environments.single_agent_runtime import SingleAgentRuntime
from bark_ml.observers.nearest_state_observer import NearestAgentsObserver
from bark_ml.environments.blueprints import DiscreteMergingBlueprint

# create scenario
if not os.path.exists("examples"):
    logging.info("changing directory")
    os.chdir("diadem_dqn.runfiles/bark_ml")

bark_params = ParameterServer(
    filename="examples/example_params/diadem_params.json")
bp = DiscreteMergingBlueprint(bark_params,
                              number_of_senarios=100,
                              random_seed=0)

observer = NearestAgentsObserver(bark_params)
runtime = SingleAgentRuntime(blueprint=bp, observer=observer, render=True)


def run_dqn_algorithm(parameter_files):
    exp_dir = "tmp_exp_dir"
    diadem_params = Params(filename=parameter_files)
    config_logging(console=True)
    environment = DiademBarkEnvironment(runtime=runtime)
    context = AgentContext(environment=environment,
                           datamanager=None,
                           preprocessor=None,
                           optimizer=tf.train.AdamOptimizer,
                           summary_service=PandasSummary())
    agent = AgentManager(params=diadem_params, context=context)
Esempio n. 20
0
def main():
    args = configure_args()
    if is_local:
        dir_prefix = ""
    else:
        dir_prefix = "hy-iqn-exp.runfiles/hythe/"
    print("Executing job :", args.jobname)
    print("Experiment server at :", os.getcwd())
    params = ParameterServer(filename=os.path.join(
        dir_prefix, "configuration/params/iqn_params.json"),
                             log_if_default=True)
    params = configure_params(params, seed=args.jobname)
    experiment_id = params["Experiment"]["random_seed"]
    params_filename = os.path.join(params["Experiment"]["dir"],
                                   "params_{}.json".format(experiment_id))

    # check if exp exists and handle preemption
    exp_exists = check_if_exp_exists(params)
    if exp_exists:
        print("Loading existing experiment from: {}".format(
            args.jobname, (params["Experiment"]["dir"])))
        if os.path.isfile(params_filename):
            params = ParameterServer(filename=params_filename,
                                     log_if_default=True)
    else:
        Path(params["Experiment"]["dir"]).mkdir(parents=True, exist_ok=True)

    behavior = BehaviorDiscreteMacroActionsML(params)
    evaluator = GoalReached(params)
    observer = NearestAgentsObserver(params)
    viewer = MPViewer(params=params,
                      x_range=[-35, 35],
                      y_range=[-35, 35],
                      follow_agent_id=True)

    # extract params and save experiment parameters
    params["ML"]["BaseAgent"]["SummaryPath"] = os.path.join(
        params["Experiment"]["dir"], "agent/summaries")
    params["ML"]["BaseAgent"]["CheckpointPath"] = os.path.join(
        params["Experiment"]["dir"], "agent/checkpoints")

    params.Save(filename=params_filename)
    logging.info('-' * 60)
    logging.info("Writing params to :{}".format(params_filename))
    logging.info('-' * 60)

    # database creation
    dbs = DatabaseSerializer(test_scenarios=2,
                             test_world_steps=2,
                             num_serialize_scenarios=num_scenarios)
    dbs.process(os.path.join(dir_prefix, "configuration/database"),
                filter_sets="**/**/interaction_merging_light_dense_1D.json")
    local_release_filename = dbs.release(version="test")
    db = BenchmarkDatabase(database_root=local_release_filename)
    scenario_generator, _, _ = db.get_scenario_generator(0)

    env = HyDiscreteHighway(params=params,
                            scenario_generation=scenario_generator,
                            behavior=behavior,
                            evaluator=evaluator,
                            observer=observer,
                            viewer=viewer,
                            render=False)
    assert env.action_space._n == 8, "Action Space is incorrect!"
    run(params, env, exp_exists)
    params.Save(params_filename)
    logging.info('-' * 60)
    logging.info("Writing params to :{}".format(params_filename))
    logging.info('-' * 60)
Esempio n. 21
0
    def __init__(self,
                 params=None,
                 num_scenarios=250,
                 random_seed=0,
                 ml_behavior=None,
                 viewer=True):
        lane_corridors = []
        lane_corridors.append(
            IntersectionLaneCorridorConfig(
                params=params,
                source_pos=[-40, -3],
                sink_pos=[40, -3],
                behavior_model=BehaviorMobilRuleBased(params),
                min_vel=10.,
                max_vel=12.,
                ds_min=10.,
                ds_max=25.,
                s_min=5.,
                s_max=50.,
                controlled_ids=None))
        lane_corridors.append(
            IntersectionLaneCorridorConfig(
                params=params,
                source_pos=[40, 3],
                sink_pos=[-40, 3],
                behavior_model=BehaviorMobilRuleBased(params),
                min_vel=10.,
                max_vel=12.,
                ds_min=15.,
                ds_max=25.,
                s_min=5.,
                s_max=50.,
                controlled_ids=None))
        lane_corridors.append(
            IntersectionLaneCorridorConfig(
                params=params,
                source_pos=[3, -30],
                sink_pos=[-40, 3],
                behavior_model=BehaviorMobilRuleBased(params),
                min_vel=5.,
                max_vel=10.,
                ds_min=40.,
                ds_max=40.,
                s_min=30.,
                s_max=40.,
                controlled_ids=True))

        scenario_generation = \
          ConfigWithEase(
            num_scenarios=num_scenarios,
            map_file_name=os.path.join(os.path.dirname(__file__), "../../../environments/blueprints/intersection/4way_intersection.xodr"),  # pylint: disable=unused-import
            random_seed=random_seed,
            params=params,
            lane_corridor_configs=lane_corridors)
        if viewer:
            viewer = BufferedMPViewer(params=params,
                                      x_range=[-30, 30],
                                      y_range=[-30, 30],
                                      follow_agent_id=True)
        dt = 0.2

        params["ML"]["RewardShapingEvaluator"]["PotentialVelocityFunctor"][
            "DesiredVel", "Desired velocity for the ego agent.", 6]
        evaluator = RewardShapingEvaluator(params)
        observer = NearestAgentsObserver(params)
        ml_behavior = ml_behavior

        super().__init__(scenario_generation=scenario_generation,
                         viewer=viewer,
                         dt=dt,
                         evaluator=evaluator,
                         observer=observer,
                         ml_behavior=ml_behavior)
Esempio n. 22
0
scenario_generator, _, _ = db.get_scenario_generator(0)

# load belief observer specifics
if is_belief_observer:
  splits = 2
  behavior_params_filename = glob.glob(os.path.join(exp_dir, "behavior_params*"))[0]
  params_behavior = ParameterServer(filename=behavior_params_filename, log_if_default=True)
  behavior_space = BehaviorSpace(params_behavior)

  hypothesis_set, hypothesis_params = behavior_space.create_hypothesis_set_fixed_split(split=splits)
  observer = BeliefObserver(params, hypothesis_set, splits=splits)
  behavior = BehaviorDiscreteMacroActionsML(params_behavior)
# if not, load default observer
else:
  behavior = BehaviorDiscreteMacroActionsML(params)
  observer = NearestAgentsObserver(params)

evaluator = GoalReached(params)

viewer = MPViewer(
  params=params,
  center= [960, 1000.8],
  enforce_x_length=True,
  x_length = 100.0,
  use_world_bounds=False)

# load env
env = HyDiscreteHighway(params=params,
                        scenario_generation=scenario_generator,
                        behavior=behavior,
                        evaluator=evaluator,