SUMO - Как контролировать скорость транспортного средства через Traci по заданному маршруту / траектории через перекресток - PullRequest
0 голосов
/ 25 апреля 2019

Мне нужно установить скорость транспортного средства на каждом временном шаге, используя значения ускорения в сети, состоящей только из одного пересечения с четырьмя соединенными двойными полосами движения (см. Изображение). Поэтому я использовал команду setSpeed, но столкнулся с проблемами. В Sumo-GUI показанная скорость в параметрах транспортного средства показывает заданное значение скорости, а также getSpeed ​​обеспечивает требуемую скорость. Тем не менее, путем вычисления фактической скорости с использованием пройденных расстояний между отдельными временными шагами (рассчитанными по положению транспортного средства), разделенными на временной шаг, на полосах движения достигаются различные значения. Разница в скорости также распознается в визуализации моделирования. Как только пересечение будет достигнуто, скорость будет правильной. SpeedMode был установлен на ноль, а ограничения скорости на дорожках установлены на 100, так что это не может быть проблемой. Любая помощь будет высоко оценен. Я тестировал SUMO 1.1.0 и 1.2.0. В следующем упомянутом перекрестке показан пример кода, в котором транспортное средство должно постоянно двигаться со скоростью 5 м / с (ускорение = 0) и его мощность. Как видно, фактическая скорость при движении по полосам около 3,8 и скорости 5 м / с при пересечении перекрестка. Следующий маршрут проходит слева направо.

Simple junction scenario

КОД:

from sumolib import checkBinary
import sys
import traci

step_length = 0.5
traci.start([checkBinary('sumo-gui'), '-c', "Config.sumocfg", '--step-length', str(step_length)])

start_vel = 5
helper_var = 0
vehID = 'car1'
traci.simulationStep()
traci.vehicle.setSpeedMode(vehID, 0)
traci.vehicle.setLaneChangeMode(vehID, 0)
traci.vehicle.setSpeed(vehID, start_vel)
traci.simulationStep()
while traci.simulation.getMinExpectedNumber():
    acceleration = 0
    newSpeed = traci.vehicle.getSpeed(vehID) + step_length * acceleration
    print("Wanted new speed: ", newSpeed)
    traci.vehicle.setSpeed(vehID, newSpeed)
    traci.simulationStep()
    print("Apparently new speed: ", traci.vehicle.getSpeed(vehID))
    if helper_var != 0:
        print("Actual new speed: ", abs((helper_var - traci.vehicle.getPosition(vehID)[0])/step_length))
        helper_var = traci.vehicle.getPosition(vehID)[0]
    else:
        helper_var = traci.vehicle.getPosition(vehID)[0]
    print('---------------------------------------------')
traci.close()
sys.stdout.flush()

ЧАСТЬ ВЫХОДА ДО И ПОСЛЕ ПЕРЕСЕЧЕНИЯ СОЕДИНЕНИЯ:

Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.8000000000000007
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.799999999999997
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.8000000000000043
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.847999999999997
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  5.0
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  5.0
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  5.000000000000002
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  4.999999999999998
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  5.0
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  4.664
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.8000000000000007
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.799999999999997
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.8000000000000043
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.799999999999997
---------------------------------------------
Wanted new speed:  5.0
Apparently new speed:  5.0
Actual new speed:  3.8000000000000043
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...