1 /****************************************************************************/ 2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo 3 // Copyright (C) 2017-2018 German Aerospace Center (DLR) and others. 4 // TraaS module 5 // Copyright (C) 2013-2017 Dresden University of Technology 6 // This program and the accompanying materials 7 // are made available under the terms of the Eclipse Public License v2.0 8 // which accompanies this distribution, and is available at 9 // http://www.eclipse.org/legal/epl-v20.html 10 // SPDX-License-Identifier: EPL-2.0 11 /****************************************************************************/ 12 /// @file Main.java 13 /// @author Mario Krumnow 14 /// @date 2013 15 /// @version $Id$ 16 /// 17 // 18 /****************************************************************************/ 19 import java.util.LinkedList; 20 import it.polito.appeal.traci.SumoTraciConnection; 21 import de.tudresden.sumo.cmd.Simulation; 22 import de.tudresden.sumo.cmd.Vehicle; 23 import de.tudresden.sumo.cmd.Vehicletype; 24 import de.tudresden.sumo.cmd.Edge; 25 import de.tudresden.sumo.cmd.Lane; 26 import de.tudresden.sumo.cmd.Route; 27 import de.tudresden.sumo.cmd.Poi; 28 import de.tudresden.sumo.cmd.Polygon; 29 import de.tudresden.sumo.cmd.Person; 30 import de.tudresden.sumo.cmd.Inductionloop; 31 import de.tudresden.sumo.cmd.Trafficlight; 32 import de.tudresden.ws.container.SumoVehicleData; 33 import de.tudresden.ws.container.SumoStopFlags; 34 import de.tudresden.ws.container.SumoStringList; 35 import de.tudresden.ws.container.SumoStage; 36 import de.tudresden.ws.container.SumoTLSController; 37 import de.tudresden.ws.container.SumoTLSProgram; 38 39 public class APITest { 40 41 static String sumo_bin = "sumo"; 42 static String config_file = "simulation/config.sumo.cfg"; 43 static double step_length = 1.0; 44 main(String[] args)45 public static void main(String[] args) { 46 47 48 try{ 49 50 SumoTraciConnection conn = new SumoTraciConnection(sumo_bin, config_file); 51 conn.addOption("step-length", step_length+""); 52 conn.addOption("start", "true"); //start sumo immediately 53 54 //start Traci Server 55 conn.runServer(); 56 conn.setOrder(1); 57 58 SumoStage stage = (SumoStage)conn.do_job_get(Simulation.findRoute("gneE0", "gneE2", "car", 0, 0)); 59 System.out.println("findRoute result stage:"); 60 for (String s : stage.edges) { 61 System.out.println(" " + s); 62 } 63 LinkedList<SumoStage> stages = (LinkedList<SumoStage>)conn.do_job_get(Simulation.findIntermodalRoute("gneE0", "gneE2", "", 0, 0, 64 1.5, 1, 50, 50, 0, "", "", "")); 65 System.out.println("findIntermodalRoute result stages:"); 66 for (SumoStage s2 : stages) { 67 for (String s : s2.edges) { 68 System.out.println(" " + s); 69 } 70 71 } 72 for(int i=0; i<36; i++){ 73 74 conn.do_timestep(); 75 conn.do_job_set(Vehicle.addFull("v"+i, "r1", "car", "now", "0", "0", "max", "current", "max", "current", "", "", "", 0, 0)); 76 double timeSeconds = (double)conn.do_job_get(Simulation.getTime()); 77 int tlsPhase = (int)conn.do_job_get(Trafficlight.getPhase("gneJ1")); 78 String tlsPhaseName = (String)conn.do_job_get(Trafficlight.getPhaseName("gneJ1")); 79 System.out.println(String.format("Step %s, tlsPhase %s (%s)", timeSeconds, tlsPhase, tlsPhaseName)); 80 81 SumoVehicleData vehData = (SumoVehicleData)conn.do_job_get(Inductionloop.getVehicleData("loop1")); 82 for (SumoVehicleData.VehicleData d : vehData.ll) { 83 System.out.println(String.format(" veh=%s len=%s entry=%s leave=%s type=%s", d.vehID, d.length, d.entry_time, d.leave_time, d.typeID)); 84 } 85 if (i == 10) { 86 SumoStopFlags flags = new SumoStopFlags(false, false , false, false, false); 87 conn.do_job_set(Vehicle.setStop("v0","gneE0", 200, (byte)0, 10, flags)); 88 } 89 } 90 SumoStringList vehIDs = (SumoStringList)conn.do_job_get(Vehicle.getIDList()); 91 String vehIDsStr = ""; 92 for (String id : vehIDs) { 93 vehIDsStr += (id + " "); 94 } 95 System.out.println("VehicleIDs: " + vehIDsStr); 96 97 conn.do_job_set(Vehicle.setParameter("v0","vehParam", "vehValue")); 98 System.out.println("vehicle.getParameter: " + (String)conn.do_job_get(Vehicle.getParameter("v0", "vehParam"))); 99 100 conn.do_job_set(Vehicle.setAdaptedTraveltime("v0", 100, 200, "gneE0", 200)); 101 System.out.println("Vehicletype.getAdaptedTraveltime: " + (double)conn.do_job_get(Vehicle.getAdaptedTraveltime("v0", 150, "gneE0"))); 102 103 conn.do_job_set(Vehicletype.setParameter("car","vehtypeParam", "vehtypeValue")); 104 System.out.println("Vehicletype.getParameter: " + (String)conn.do_job_get(Vehicletype.getParameter("car", "vehtypeParam"))); 105 106 conn.do_job_set(Edge.setParameter("gneE0","edgeParam", "edgeValue")); 107 System.out.println("Edge.getParameter: " + (String)conn.do_job_get(Edge.getParameter("gneE0", "edgeParam"))); 108 109 conn.do_job_set(Lane.setParameter("gneE0_1","laneParam", "laneValue")); 110 System.out.println("Lane.getParameter: " + (String)conn.do_job_get(Lane.getParameter("gneE0_1", "laneParam"))); 111 112 conn.do_job_set(Route.setParameter("r1","routeParam", "routeValue")); 113 System.out.println("Route.getParameter: " + (String)conn.do_job_get(Route.getParameter("r1", "routeParam"))); 114 115 conn.do_job_set(Poi.setParameter("t0","poiParam", "poiValue")); 116 System.out.println("Poi.getParameter: " + (String)conn.do_job_get(Poi.getParameter("t0", "poiParam"))); 117 118 conn.do_job_set(Trafficlight.setParameter("gneJ1","tlsParam", "tlsValue")); 119 System.out.println("Trafficlight.getParameter: " + (String)conn.do_job_get(Trafficlight.getParameter("gneJ1", "tlsParam"))); 120 121 conn.do_job_set(Trafficlight.setPhaseDuration("gneJ1", 15)); 122 123 SumoTLSController tlsc = (SumoTLSController)conn.do_job_get(Trafficlight.getCompleteRedYellowGreenDefinition("gneJ1")); 124 System.out.println("Trafficlight.getCompleteRedYellowGreenDefinition: " + tlsc.programs); 125 126 SumoTLSProgram tlsp = (SumoTLSProgram)tlsc.programs.values().toArray()[0]; 127 conn.do_job_set(Trafficlight.setCompleteRedYellowGreenDefinition("gneJ1", tlsp)); 128 129 System.out.println("Trafficlight.getPhaseDuration: " + (double)conn.do_job_get(Trafficlight.getPhaseDuration("gneJ1"))); 130 System.out.println("Trafficlight.getNextSwitch: " + (double)conn.do_job_get(Trafficlight.getNextSwitch("gneJ1"))); 131 132 conn.close(); 133 134 }catch(Exception ex){ex.printStackTrace();} 135 136 } 137 138 } 139