Hello, subscribing to vehicles around a junction should work but there are many alternatives: - retrieve all vehicles currently on an edge or lane with edge.getLastStepVehicleIDs (lane.getLastStepVehicleIDs) - add detectors to your scenario (i.e inductionLoop) and query them (inductionLoop.getLastStepVehicleIDs) to use this for vehicles that are on a junction, see https://sumo.dlr.de/docs/Networks/SUMO_Road_Networks.html#internal_edges
regards, Jakob Am Mi., 17. März 2021 um 09:09 Uhr schrieb <[email protected] >: > My scenario: > > I have set up a working “net” with edges, junctions and lanes. Imported > from Open Streetmap and it all works wel. I made routes and trips with > 0d2trips and duarouter. > > > > Now I want to interact with the “vehicles”. Say I have located a beginning > (edge or junction) and an end (edge or junction) in a “net”… and when a > “vehicle” passes a junction or edge I want a signa land obtain the > “vehicle” information. Most likely its ID, because then I can obtain > position, speed, etc.. > > > > How can I do this? I have tried something in TRACI in Python…. but I > cannot “obtain” the “vehicle ID” and the trigger/event (for me) is > uncertain if I did this right? > > > > I “add” the codesnippet and not working code. > > > > [code] > > import os, sys > > if 'SUMO_HOME' in os.environ: > > tools = os.path.join(os.environ['SUMO_HOME'], 'tools') > > sys.path.append(tools) > > else: > > sys.exit("please declare environment variable 'SUMO_HOME'") > > > > sumoBinary = "D:/eclipse/Sumo/bin/sumo-gui" > > sumoCmd = [sumoBinary, "-c", "D:/eclipse/Sumo/autobahn - kopie.sumocfg"] > > > > import traci > > import traci.constants as tc > > traci.start(sumoCmd) > > junctionID = "6499463362" > > traci.junction.subscribeContext(junctionID, tc.CMD_GET_VEHICLE_VARIABLE, > 25, [tc.VAR_SPEED, tc.VAR_WAITING_TIME]) > > traci.edge.subscribeContext("6861416#3", tc.CMD_GET_LANE_VARIABLE,50) > > > > step = 0 > > j_info = {} > > > > while step < 1000: > > traci.simulationStep() > > #print("Vehicle:", tc.CMD_GET_VEHICLE_VARIABLE) > > pos_x, pos_y = traci.junction.getPosition(junctionID) > > lon, lat = traci.simulation.convertGeo(pos_x, pos_y) > > print("Lat:"+str(lat)); > > print("Lon:"+str(lon)); > > print("Time:", traci.simulation.getTime()) > > print("Vehicles:", traci.simulation.getLoadedNumber()) > > data2 = tc.CMD_GET_VEHICLE_VARIABLE > > > > vehicles=traci.vehicle.getIDList() > > > > i=0 > > > > for i in range(0,len(vehicles)): > > print(len(vehicles)) > > print(vehicles[i]) > > > > edge = traci.edge.getSubscriptionResults("6861416#3") > > > > > > print("EdgeID:", edge) > > #if traci.inductionloop.getLastStepVehicleNumber("0") > 0: > > # traci.trafficlight.setRedYellowGreenState("0", "GrGr") > > #"{'283': {64: 27.72624641781673, 122: 0.0}}") > > > > step += 1 > > > > #for det in traci.lane.getIDList(): > > # print(" last=", traci.lane.getLastStepVehicleIDs(det)) > > > > junction_info = traci.junction.getSubscriptionResults(junctionID) > > print("Data:", str(junction_info )) > > if junction_info: > > j_info = junction_info > > print("Data:", > traci.vehicle.getAngle(j_info)) > > > > if str(type(junction_info )) == "<type 'dict'>": > > for car in junction_info .items(): > > print("YES") > > print("Car:",car) > > #if str(type(data)) == "<type 'dict'>": > > # for car in data: > > #agent = agents[car] > > #agent.collectSumoData(car, data[car]) > > > > traci.close() > > [\code] > > > > Thanks Ben > > > > _______________________________________________ > sumo-user mailing list > [email protected] > To unsubscribe from this list, visit > https://www.eclipse.org/mailman/listinfo/sumo-user >
_______________________________________________ sumo-user mailing list [email protected] To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
