Как заставить транспортные средства столкнуться в СУМО?

#veins #sumo

#вены #сумо

Вопрос:

Я хочу сделать предупреждение о столкновении и экстренное торможение в венах с помощью СУМО, но я обнаружил, что не могу заставить два транспортных средства столкнуться в СУМО. Итак, что я должен сделать, чтобы два транспортных средства столкнулись в СУМО?

collision.net.xml

     <net version="1.3" junctionCornerDetail="5" limitTurnSpeed="5.50">
    <location netOffset="0.00,0.00" convBoundary="-300.00,0.00,300.00,0.00" origBoundary="10000000000.00,10000000000.00,-10000000000.00,-10000000000.00" projParameter="!"/>
    <edge id=":gneJ1_0" function="internal">
        <lane id=":gneJ1_0_0" index="0" speed=" 30" length="0.10" shape="0.00,-1.60 0.00,-1.60"/>
    </edge>
    <edge id="gneE0" from="gneJ0" to="gneJ1" priority="-1">
        <lane id="gneE0_0" index="0" speed=" 30" length="300.00" shape="-300.00,-1.60 0.00,-1.60"/>
    </edge>
    <edge id="gneE1" from="gneJ1" to="gneJ2" priority="-1">
        <lane id="gneE1_0" index="0" speed=" 30" length="300.00" shape="0.00,-1.60 300.00,-1.60"/>
    </edge>
    <junction id="gneJ0" type="dead_end" x="-300.00" y="0.00" incLanes="" intLanes="" shape="-300.00,0.00 -300.00,-3.20"/>
    <junction id="gneJ1" type="priority" x="0.00" y="0.00" incLanes="gneE0_0" intLanes=":gneJ1_0_0" shape="0.00,0.00 0.00,-3.20 0.00,0.00">
        <request index="0" response="0" foes="0" cont="0"/>
    </junction>
    <junction id="gneJ2" type="dead_end" x="300.00" y="0.00" incLanes="gneE1_0" intLanes="" shape="300.00,-3.20 300.00,0.00"/>
    <connection from="gneE0" to="gneE1" fromLane="0" toLane="0" via=":gneJ1_0_0" dir="s" state="M"/>
    <connection from=":gneJ1_0" to="gneE1" fromLane="0" toLane="0" dir="s" state="M"/>
</net>
  

collision.rou.xml

 <routes>
    <vType sigma="0" id="t1" maxSpeed="70" minGap="0"/>
    <route edges="gneE0 gneE1" color="yellow" id="route_0"/>
    <vehicle id="vehicle_0" depart="0.00" departPos="100.00" departSpeed="0" color="red" route="route_0" type="t1"/>
    <vehicle id="vehicle_1" depart="0.00" departPos="95.00"  departSpeed="20" color="blue" route="route_0" type="t1"/>
</routes>
  

Ответ №1:

Цитирование https://sumo.dlr.de/docs/Simulation/Safety.html#deliberately_causing_collisions : Чтобы вызвать столкновения в установленное время, необходимо использовать TraCI. Помимо настройки скорости, также необходимо отключить проверки безопасности с помощью команд speedMode и laneChangeMode.

Это может быть сложно сделать в контексте вен.

Ответ №2:

Установите параметр «—default.action-step-length» равным «0.5»

Затем вы можете создать метод для установки следующих параметров для транспортного средства. Наверняка он столкнется с любым ведущим транспортным средством. (убедитесь, что Tau меньше длины шага действия)

  def add_aggressive_behavior(veh_id):
    traci.vehicle.setAccel(veh_id, 10)
    traci.vehicle.setDecel(veh_id, 4)
    traci.vehicle.setEmergencyDecel(veh_id, 0.1)
    traci.vehicle.setApparentDecel(veh_id, 0.1)
    traci.vehicle.setTau(veh_id, 0.01)

    traci.vehicle.setImperfection(veh_id, 0.1)
    traci.vehicle.setLaneChangeMode(veh_id, 0)
  

Ответ №3:

Первый: установите режим скорости (0) Второй: установите скорость автомобиля позади, установите скорость (100); Тогда столкнутся две машины!!!

Ответ №4:

Если вы заинтересованы в разработке алгоритмов для системы предупреждения о столкновении транспортных средств, вам может потребоваться спрогнозировать время и место столкновения, а не внедрять его. В противном случае вы можете создать файл маршрута с несколькими потоками, приближающимися с разных направлений, для имитации столкновения.