def create_source_config_agents(self, agent_states, agent_geometries, behavior_models, execution_models, dynamic_models, goal_definitions, controlled_agent_ids, world, agent_params, **kwargs): num_agents = len(agent_states) if any( len(lst) != num_agents for lst in [ agent_geometries, behavior_models, execution_models, dynamic_models, goal_definitions, controlled_agent_ids ]): raise ValueError( "Config readers did not return equal sized of lists") agents = [] controlled_ids = [] for idx, agent_state in enumerate(agent_states): bark_agent = Agent(np.array(agent_state), behavior_models[idx], dynamic_models[idx], execution_models[idx], agent_geometries[idx], agent_params, goal_definitions[idx], world.map) if "agent_ids" in kwargs: bark_agent.SetAgentId(kwargs["agent_ids"][idx]) if controlled_agent_ids[idx]: controlled_ids.append(kwargs["agent_ids"][idx]) else: bark_agent.SetAgentId(idx) if controlled_agent_ids[idx]: controlled_ids.append(idx) agents.append(bark_agent) return agents, controlled_ids
def AgentFromTrackfile(self, track_params, param_server, scenario_track_info, agent_id): if scenario_track_info.GetEgoTrackInfo().GetTrackId() == agent_id: agent_track_info = scenario_track_info.GetEgoTrackInfo() elif agent_id in scenario_track_info.GetOtherTrackInfos().keys(): agent_track_info = scenario_track_info.GetOtherTrackInfos( )[agent_id] else: raise ValueError("unknown agent id {}".format(agent_id)) fname = agent_track_info.GetFileName() # track_params["filename"] track_id = agent_track_info.GetTrackId() # track_params["track_id"] agent_id = agent_track_info.GetTrackId() track = self.TrackFromTrackfile(fname, track_id) start_time = scenario_track_info.GetStartTs() end_time = scenario_track_info.GetEndTs() behavior_model = track_params["behavior_model"] model_converter = ModelJsonConversion() if behavior_model is None: # each agent need's its own param server behavior = BehaviorFromTrack( track, param_server.AddChild("agent{}".format(agent_id)), start_time, end_time) else: behavior = behavior_model try: initial_state = InitStateFromTrack(track, start_time) except: raise ValueError( "Could not retrieve initial state of agent {} at t={}.".format( agent_id, start_time)) try: dynamic_model = model_converter.convert_model( track_params["dynamic_model"], param_server) except: raise ValueError("Could not create dynamic_model") try: execution_model = model_converter.convert_model( track_params["execution_model"], param_server) except: raise ValueError("Could not retrieve execution_model") try: vehicle_shape = ShapeFromTrack( track, param_server["DynamicModel"]["wheel_base", "Wheel base", 2.7]) except: raise ValueError("Could not create vehicle_shape") bark_agent = Agent(initial_state, behavior, dynamic_model, execution_model, vehicle_shape, param_server.AddChild("agent{}".format(agent_id)), GoalDefinitionFromTrack(track, end_time), track_params["map_interface"]) # set agent id from track bark_agent.SetAgentId(track_id) return bark_agent
def AgentFromTrackfile(self, track_params, param_server, scenario_track_info, agent_id, goal_def): if scenario_track_info.GetEgoTrackInfo().GetTrackId() == agent_id: agent_track_info = scenario_track_info.GetEgoTrackInfo() elif agent_id in scenario_track_info.GetOtherTrackInfos().keys(): agent_track_info = scenario_track_info.GetOtherTrackInfos( )[agent_id] else: raise ValueError("unknown agent id {}".format(agent_id)) fname = agent_track_info.GetFileName() # track_params["filename"] track_id = agent_track_info.GetTrackId() # track_params["track_id"] agent_id = agent_track_info.GetTrackId() track = self.TrackFromTrackfile(fname, track_id) xy_offset = scenario_track_info.GetXYOffset() # create behavior model from track, we use start time of scenario here start_time = scenario_track_info.GetStartTimeMs() end_time = scenario_track_info.GetEndTimeMs() behavior_model = track_params["behavior_model"] model_converter = ModelJsonConversion() if behavior_model is None: # each agent need's its own param server behavior = BehaviorFromTrack( track, param_server.AddChild("agent{}".format(agent_id)), xy_offset, start_time, end_time) else: behavior = behavior_model # retrieve initial state of valid agent if agent_id in scenario_track_info._other_agents_track_infos: start_time_init_state = max( scenario_track_info._other_agents_track_infos[agent_id]. GetStartTimeMs(), start_time) else: start_time_init_state = start_time try: initial_state = InitStateFromTrack(track, xy_offset, start_time_init_state) except: raise ValueError( "Could not retrieve initial state of agent {} at t={}.".format( agent_id, start_time_init_state)) if self._use_shape_from_track: wb = WheelbaseFromTrack(track) crad = ColRadiusFromTrack(track) else: wb = self._wb crad = self._crad param_server["DynamicModel"]["wheel_base"] = wb try: dynamic_model = model_converter.convert_model( track_params["dynamic_model"], param_server) except: raise ValueError("Could not create dynamic_model") try: execution_model = model_converter.convert_model( track_params["execution_model"], param_server) except: raise ValueError("Could not retrieve execution_model") try: if self._use_rectangle_shape: vehicle_shape = GenerateCarRectangle(wb, crad) else: vehicle_shape = GenerateCarLimousine(wb, crad) except: raise ValueError("Could not create vehicle_shape") if goal_def is None: goal_def = GoalDefinitionFromTrack(track, end_time, xy_offset=xy_offset) bark_agent = Agent(initial_state, behavior, dynamic_model, execution_model, vehicle_shape, param_server.AddChild("agent{}".format(agent_id)), goal_def, track_params["map_interface"]) # set agent id from track bark_agent.SetAgentId(track_id) return bark_agent