def run(self, carID): """ Executes the Traci client and the environment representation """ ego = carID step = 0 while traci.simulation.getTime() < 60: traci.simulationStep() fw = Framework() if carID in traci.vehicle.getIDList(): ego_trajectory = fw.getTrajectory(carID) intersections = fw.getIntersectingTrajectories( carID, ego_trajectory) if intersections is not None: #if len(ego_trajectory) > 1: framework = fw.getTensorFramework(carID, intersections, ego_trajectory) auto = Autonomous(carID, framework, ego_trajectory) distances = auto.getDistanceToIntercept() tfc = Traffic(distances) vehicles = tfc.getConflictoryTraffic() distances_tfc = tfc.getDistanceToIntercept(vehicles) safe = Safety(carID, framework, distances, distances_tfc) trc_safety = safe.getTrafficSafetyMeasures() #print(len(distances), len(trc_safety)) ego_safety = safe.getEgoSafetyMeasures() #print(ego_safety) prio = safe.getPriotizedTraffic(ego_safety, trc_safety) rel = safe.getRelevantTraffic(prio) #print(rel) # for i in range(len(rel)): # if rel[i][1]: # safe.getEgoSecurityDistance(carID, rel[i][1][0][0]) env = Tensor(carID, distances, rel, ego_safety, ego_trajectory) env.createEnvironmentTensor() #print(env.createEnvironmentTensor()) else: corridor = np.full((200, 3), fill_value=-1.0) corridor[0:200, 2] = 100 / np.maximum( traci.vehicle.getSpeed(self.carID), 0.001) #print(corridor) step += 1 traci.close() sys.stdout.flush()
def getTensor(self): fw = Framework() if self.carID in traci.vehicle.getIDList(): ego_trajectory = fw.getTrajectory(self.carID) intersections = fw.getIntersectingTrajectories( self.carID, ego_trajectory) if intersections is not None: #if len(ego_trajectory) > 1: framework = fw.getTensorFramework(self.carID, intersections, ego_trajectory) auto = Autonomous(self.carID, framework, ego_trajectory) distances = auto.getDistanceToIntercept() tfc = Traffic(distances) vehicles = tfc.getConflictoryTraffic() distances_tfc = tfc.getDistanceToIntercept(vehicles) self.distances_tfc = distances_tfc safe = Safety(self.carID, framework, distances, distances_tfc) trc_safety = safe.getTrafficSafetyMeasures() # print(len(distances), len(trc_safety)) ego_safety = safe.getEgoSafetyMeasures() # print(ego_safety) prio = safe.getPriotizedTraffic(ego_safety, trc_safety) rel = safe.getRelevantTraffic(prio) #print('\n', prio) #print(rel) self.rel = rel # print(rel) # for i in range(len(rel)): # if rel[i][1]: # safe.getEgoSecurityDistance(carID, rel[i][1][0][0]) env = Tensor(self.carID, distances, rel, ego_safety, ego_trajectory) #print(env.createEnvironmentTensor()) return env.createEnvironmentTensor() else: corridor = np.full((200, 3), fill_value=-1.0) #corridor[0:199, 2] = 0 corridor[0:200, 2] = 100 / np.maximum( traci.vehicle.getSpeed(self.carID), 0.001) #tensor = np.reshape(corridor[0:200], 600) return corridor