Path: blob/main/tests/complex/traci/bugs/ticket4418/runner.py
169689 views
#!/usr/bin/env python1# -*- coding: utf-8 -*-2# Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo3# Copyright (C) 2008-2025 German Aerospace Center (DLR) and others.4# This program and the accompanying materials are made available under the5# terms of the Eclipse Public License 2.0 which is available at6# https://www.eclipse.org/legal/epl-2.0/7# This Source Code may also be made available under the following Secondary8# Licenses when the conditions for such availability set forth in the Eclipse9# Public License 2.0 are satisfied: GNU General Public License, version 210# or later which is available at11# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html12# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later1314# @file runner.py15# @author Leonhard Luecken16# @author Michael Behrisch17# @author Jakob Erdmann18# @author Daniel Krajzewicz19# @date 2011-03-04202122from __future__ import print_function23from __future__ import absolute_import24import os25import sys2627if "SUMO_HOME" in os.environ:28sys.path.append(os.path.join(os.environ["SUMO_HOME"], "tools"))2930import traci # noqa31import sumolib # noqa323334def step():35s = traci.simulation.getTime()36traci.simulationStep()37return s383940traci.start([sumolib.checkBinary('sumo'), "-c", "sumo.sumocfg"])4142lead = "lead"43follow = "follow"4445stopPos = 20046slowDownDist = 104748for i in range(10000):49step()50remDist = stopPos - traci.vehicle.getLanePosition(follow)51if remDist < slowDownDist:52# stop after distance remDist (which is the stop position for the leader53# (mimics glosa situation in front of traffic light where this problem was observed))54# d = v*v/(2*a) => a = v*v/(2*d) => tstop = v/a = 2*d/v55speed = traci.vehicle.getSpeed(follow)56tstop = 2*remDist / speed57print("Commanding slow down for vehicle '%s' at time %s. Remaining distance: %s, speed: %s" %58(follow, traci.simulation.getTime(), remDist, speed))59traci.vehicle.slowDown(follow, 0, tstop)60break6162while traci.simulation.getMinExpectedNumber() > 0:63step()64# done65traci.close()666768