0
votes

I want to make Collision warning and emergency braking in veins with SUMO, but I find I can't make the two vehicles collide in SUMO. So What should I do to make the two vehicles collide in 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>
3

3 Answers

1
votes

Citing https://sumo.dlr.de/docs/Simulation/Safety.html#deliberately_causing_collisions: To force collisions at a set time, TraCI must be used. Besides setting the speed, it is also necessary to disable safety checks using the commands speedMode and laneChangeMode.

This might be hard to do in the context of Veins.

0
votes

First:setSpeedMode(0) Second: Set the speed of the car behind enough,setSpeed(100); Then two cars will collide!!!

0
votes

Set the "--default.action-step-length" parameter as "0.5"

Than you can create a method to set following parameters on a vehicle. For sure it will collide with any leading vehicle. (make sure Tau is smaller than action step length)

 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)