Path: blob/main/tests/complex/traci_java/api/data/APITest.java
169689 views
/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2017-2025 German Aerospace Center (DLR) and others.3// TraaS module4// Copyright (C) 2013-2017 Dresden University of Technology5// This program and the accompanying materials are made available under the6// terms of the Eclipse Public License 2.0 which is available at7// https://www.eclipse.org/legal/epl-2.0/8// This Source Code may also be made available under the following Secondary9// Licenses when the conditions for such availability set forth in the Eclipse10// Public License 2.0 are satisfied: GNU General Public License, version 211// or later which is available at12// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html13// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later14/****************************************************************************/15/// @file APITest.java16/// @author Mario Krumnow17/// @author Jakob Erdmann18/// @date 201319///20//21/****************************************************************************/22import org.eclipse.sumo.libtraci.*;2324public class APITest {2526public static void main(String[] args) {27Simulation.preloadLibraries();28String sumo_bin = "sumo";29String config_file = "data/config.sumocfg";30double step_length = 1;31if (args.length > 0) {32sumo_bin = args[0];33}34if (args.length > 1) {35config_file = args[1];36}3738Simulation.start(new StringVector(new String[] {sumo_bin,39"-c", config_file,40"--start"41}));424344double deltaT = Simulation.getDeltaT();45System.out.println("deltaT:" + deltaT);46TraCIStage stage = Simulation.findRoute("gneE0", "gneE2", "car", 0, 0);47System.out.println("findRoute result stage:");48for (String s : stage.getEdges()) {49System.out.println(" " + s);50}51TraCIStageVector stages = Simulation.findIntermodalRoute("gneE0", "gneE2", "", 0, 0,521.5, 1, 50, 50, 0, "", "", "");53System.out.println("findIntermodalRoute result stages:");54for (TraCIStage s2 : stages) {55for (String s : s2.getEdges()) {56System.out.println(" " + s);57}5859}60StringVector walk = new StringVector();61walk.add("gneE2");62walk.add("gneE3");63for (int i = 0; i < 36; i++) {6465Simulation.step();66Vehicle.add("v" + i, "r1", "car", "now", "0", "0", "max", "current", "max", "current", "", "", "", 0, 0);67double timeSeconds = Simulation.getTime();68int tlsPhase = TrafficLight.getPhase("gneJ1");69String tlsPhaseName = TrafficLight.getPhaseName("gneJ1");70System.out.println(String.format("Step %s, tlsPhase %s (%s)", timeSeconds, tlsPhase, tlsPhaseName));7172TraCIVehicleDataVector vehData = InductionLoop.getVehicleData("loop1");73for (TraCIVehicleData d : vehData) {74System.out.println(String.format(" veh=%s len=%s entry=%s leave=%s type=%s",75d.getId(), d.getLength(), d.getEntryTime(), d.getLeaveTime(), d.getTypeID()));76}77if (i == 10) {78Vehicle.setStop("v0", "gneE0", 200, 0, 10, 0, 10, -1);79}80Person.add("p" + i, "gneE2", 10.0, libtraci.getDEPARTFLAG_NOW(), "DEFAULT_PEDTYPE");81Person.appendWalkingStage("p" + i, walk, 50.0, -1, -1.0, "");82}83StringVector vehIDs = Vehicle.getIDList();84String vehIDsStr = "";85for (String id : vehIDs) {86vehIDsStr += (id + " ");87}88System.out.println("VehicleIDs: " + vehIDsStr);8990Vehicle.setParameter("v0", "vehParam", "vehValue");91System.out.println("vehicle.getParameter: " + Vehicle.getParameter("v0", "vehParam"));9293Vehicle.setAdaptedTraveltime("v0", "gneE0", 200, 100, 200);94System.out.println("VehicleType.getAdaptedTraveltime: " + Vehicle.getAdaptedTraveltime("v0", 150, "gneE0"));9596System.out.println("Vehicle.getRoute: " + Vehicle.getRoute("v0"));97StringVector route = new StringVector();98route.add("gneE0");99Vehicle.setRoute("v0", route);100System.out.println("Vehicle.getRoute: " + Vehicle.getRoute("v0"));101Vehicle.setRouteID("v0", "r1");102System.out.println("Vehicle.getRoute: " + Vehicle.getRoute("v0"));103104TraCINextTLSVector ntlsV = Vehicle.getNextTLS("v0");105for (TraCINextTLSData t : ntlsV) {106System.out.println("Vehicle.getNextTLS: id=" + t.getId() + " dist=" + t.getDist() + " state=" + t.getState());107}108109VehicleType.setParameter("car", "vehtypeParam", "vehtypeValue");110System.out.println("VehicleType.getParameter: " + VehicleType.getParameter("car", "vehtypeParam"));111112StringVector personIDs = Person.getIDList();113String personIDsStr = "";114for (String id : personIDs) {115personIDsStr += (id + " ");116}117System.out.println("PersonIDs: " + personIDsStr);118119TraCIStage personStage = Person.getStage("p0", 0);120System.out.println("Person.getStage: " + personStage.getType());121122Edge.setParameter("gneE0", "edgeParam", "edgeValue");123System.out.println("Edge.getParameter: " + Edge.getParameter("gneE0", "edgeParam"));124125Edge.adaptTraveltime("gneE0", 123, 2000, 4000);126System.out.println("Edge.getAdaptatedTraveltime: " + Edge.getAdaptedTraveltime("gneE0", 3000));127System.out.println("Edge.getAdaptatedTraveltime: " + Edge.getAdaptedTraveltime("gneE0", 1000));128System.out.println("Edge.getAdaptatedTraveltime: " + Edge.getAdaptedTraveltime("gneE0", 5000));129130Edge.setEffort("gneE0", 246, 2000, 4000);131System.out.println("Edge.getEffort: " + Edge.getEffort("gneE0", 3000));132System.out.println("Edge.getEffort: " + Edge.getEffort("gneE0", 1000));133System.out.println("Edge.getEffort: " + Edge.getEffort("gneE0", 5000));134135Lane.setParameter("gneE0_1", "laneParam", "laneValue");136System.out.println("Lane.getParameter: " + Lane.getParameter("gneE0_1", "laneParam"));137138Route.setParameter("r1", "routeParam", "routeValue");139System.out.println("Route.getParameter: " + Route.getParameter("r1", "routeParam"));140141POI.setParameter("t0", "poiParam", "poiValue");142System.out.println("Poi.getParameter: " + POI.getParameter("t0", "poiParam"));143144StringVector controlledJunctions = TrafficLight.getControlledJunctions("gneJ1");145System.out.println("TrafficLight.getControlledJunctions: " + controlledJunctions);146147TrafficLight.setParameter("gneJ1", "tlsParam", "tlsValue");148System.out.println("TrafficLight.getParameter: " + TrafficLight.getParameter("gneJ1", "tlsParam"));149150TrafficLight.setPhaseDuration("gneJ1", 15);151152TraCILogicVector tlsc = TrafficLight.getCompleteRedYellowGreenDefinition("gneJ1");153for (TraCILogic tls : tlsc) {154System.out.println("TrafficLight.getCompleteRedYellowGreenDefinition: " + tls.getProgramID());155}156157TraCILogic tlsp = tlsc.get(0);158TrafficLight.setCompleteRedYellowGreenDefinition("gneJ1", tlsp);159160System.out.println("TrafficLight.getPhaseDuration: " + (double)TrafficLight.getPhaseDuration("gneJ1"));161System.out.println("TrafficLight.getNextSwitch: " + (double)TrafficLight.getNextSwitch("gneJ1"));162163TraCIRoadPosition roadPos = Simulation.convertRoad(505.38, -42.08, false, "passenger");164System.out.println("Simulation.convertRoad: " + roadPos.getEdgeID() + ", " + roadPos.getPos() + ", " + roadPos.getLaneIndex());165166TraCIPosition geoPos = Simulation.convertGeo(505.38, -42.08, false);167System.out.println("Simulation.convertGeo: " + geoPos.getX() + ", " + geoPos.getY());168169for (TraCIConnection c : Lane.getLinks(":gneJ1_6_0")) {170System.out.println("Lane.getLinks to=" + c.getApproachedLane() + " via=" + c.getApproachedInternal() + " prio=" + c.getHasPrio() + " open=" + c.getIsOpen());171}172173Simulation.close();174175Simulation.start(new StringVector(new String[] {sumo_bin,176"-c", config_file,177"--start"178}));179180Simulation.saveState("file-state-now");181Simulation.close();182}183184}185186187