Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [sumo-user] lcAssertive Behavior

Basically,
you have this:
getSecureGap = brakeGapEgo - brakeGapLeader
so if you plug in a leaderSpeed of 0 then the formula gives brakeGapLeader = 0 and thus
getSecureGap = brakeGapEgo
However, the function MSCFModel::brakeGap includes a term of tau * speed. So if you are interested in the brakeGap without this term,
you have to set tau=0 before calling the function

33m happens to be the brakeGap at 15m/s including tau

print(traci.vehicle.getSecureGap(veh, 15, 0, 4.5)) => 33
print(traci.vehicle.getSecureGap(veh, 20, 0, 4.5)) => 55
traci.vehicle.setTau(veh, 0.0)
print(traci.vehicle.getSecureGap(veh, 20, 0, 4.5)) => 35

Am Di., 21. Apr. 2020 um 00:44 Uhr schrieb Bae, Jong In <jbae42@xxxxxxxxxx>:
Thank you so much for your help.

I am terribly sorry to continue to bother you with this but could you please explain how the brakeGap of the ego vehicle came out to be 35m in the secureBackGap?
I was able to get other values that you sent me but I'm getting the brakeGap of the ego vehicle as 33m, instead of 35m. 

Below are the settings on the vehicles.

Follower Ego Leader
minGap 0 0 2.5
Tau 1 0.1 1
Speed 15 20 15
Decel 4.5 4.5 4.5

I apologize for the inconvenience but this would greatly help.

Thank you once again for your help.

-James Bae 

From: sumo-user-bounces@xxxxxxxxxxx <sumo-user-bounces@xxxxxxxxxxx> on behalf of Jakob Erdmann <namdre.sumo@xxxxxxxxx>
Sent: Monday, April 20, 2020 2:27 AM
To: Sumo project User discussions <sumo-user@xxxxxxxxxxx>
Subject: Re: [sumo-user] lcAssertive Behavior
 
Hello,
default step-length is 1s
default action-step-length = step-length (i.e. if you only set step-length, then the action step length changes automatically unless configured differently)

regarding your calculations: I cannot be bothered to wade through all the numbers but here are hints/suggestions:
- follower minGap = 2.5 according to your table but in shows up as 0 in your last sum
- the formula for steps in brakeGapEuler rounds 'steps' to the next lowest integer
- the secureBackGap is 0 because the brakeGap of the ego vehicle (35m) is much larger than the brakeGap of the follower (18m)
- the secureFrontGap is 19m (at default tau=1 it would be 37m)

You can test all these numbers using traci (in the latest development version):

import os,sys
sys.path.append(os.path.join(os.environ['SUMO_HOME'], 'tools'))
import traci

traci.start(['sumo', '-n', 'net.net.xml', '--no-step-log'])
veh = 'v0'
traci.vehicle.add(veh, "")
print(traci.vehicle.getSecureGap(veh, 15, 20, 4.5))
print(traci.vehicle.getSecureGap(veh, 20, 15, 4.5))
traci.vehicle.setTau(veh, 0.1)
print(traci.vehicle.getSecureGap(veh, 20, 15, 4.5))

# compute brakeGap for vehicle (leader brakeGap is 0 at speed 0)
traci.vehicle.setTau(veh, 0.0)
print(traci.vehicle.getSecureGap(veh, 20, 0, 4.45))
print(traci.vehicle.getSecureGap(veh, 15, 0, 4.45))

traci.close()

Am Mo., 20. Apr. 2020 um 04:11 Uhr schrieb Bae, Jong In <jbae42@xxxxxxxxxx>:
Jakob,

Based on your helpful comments, I calculated 'Required Gap' using a simple scenario. However, when I ran the scenario with 'lcAssertive=2', the lane change was still successful when available gap < required gap /2. So it seems like I have some errors in my calculations.

I've attached my calculation steps with scenario settings and the functions I used. Could you please take a look at it and see where I might have made a mistake?

Also, if I didn't make any change on the time-step length or action step length, what are the default values of those two?

Thank you so much for your help and your time.
Have a great day.

-James Bae 

From: sumo-user-bounces@xxxxxxxxxxx <sumo-user-bounces@xxxxxxxxxxx> on behalf of Jakob Erdmann <namdre.sumo@xxxxxxxxx>
Sent: Wednesday, April 15, 2020 3:02 PM
To: Sumo project User discussions <sumo-user@xxxxxxxxxxx>
Subject: Re: [sumo-user] lcAssertive Behavior
 
1) the secureBackGap is computed by calling the carFollowModel of the follower vehicle (which is done to ensure traffic safety even though it's arguably unrealistic). Due to the high tau value of the follower a huge gap is required.

2) The decel argument for the brakeGap function holds the maximum (desired) deceleration rather than the current deceleration. The value should never be 0 (or the brake gap would be infinite)

3) the neighLead and neighFollow values are pairs of MSVehicle* and distance. Hence .second is the distance (Note, that minGap has already been subtracted)

4) Its not vehicle IDs but vehicle pointers, otherwise correct. (When vehicles have an actionStepLength > stepLength the vNext values include some extrapolation though).

regards,
Jakob

Am Mi., 15. Apr. 2020 um 19:27 Uhr schrieb Bae, Jong In <jbae42@xxxxxxxxxx>:
Jakob,

Thank you so much for your reply. I have a few follow up questions.. The first 2 questions are referring to the attached images.

  1. Merging Issues: Attached image (Merging Issues) shows the scenario settings and parameter values of each vehicle. It shows a gap of roughly 150m but the subject vehicle fails to merge. I'm having trouble with understanding why 'lcState right' says blocked when the gap between leader and follower is about 150m. 

  2. If ACCEL2SPEED and SPEED2DIST are computing the change in speed ans distance per timestep, would Follwer and Leader's ACCEL2SPEED be 0 (since there is no change in speed between timesteps due to their constant speed) and SPEED2DIST be 15 (constant speed at 15m/s)? And how does ACCEL2SPEED of 0 work in the brakeGap function shown in the attached image (brake gap code)? This will make speedReduction = 0 and 'steps' undefined due to the denominator of 0. 

  3. What do 'neighFollow.second' and 'neighLeadsecond' mean in the link below?
    https://github.com/eclipse/sumo/blob/1c5cd080e83c7cad30f96a6c6b70bb4d80478bdb/src/microsim/MSLaneChanger.cpp#L812
    https://github.com/eclipse/sumo/blob/1c5cd080e83c7cad30f96a6c6b70bb4d80478bdb/src/microsim/MSLaneChanger.cpp#L781

  4. In the 'SecureFrontGap' and 'secureBackGap' functions, could you please verify what these arguments mean?
    https://github.com/eclipse/sumo/blob/1c5cd080e83c7cad30f96a6c6b70bb4d80478bdb/src/microsim/MSLaneChanger.cpp#L798-L799
    https://github.com/eclipse/sumo/blob/1c5cd080e83c7cad30f96a6c6b70bb4d80478bdb/src/microsim/MSLaneChanger.cpp#L767-L768
    - vehicle: subject vehicle ID (vehicle that is merging)
    neighLead.first/neighFollow.first – Leader/Follower vehicle ID
    vNextFollower – Follower vehicle speed
    vNextLeader – Leader vehicle speed

Thank you very much for your help!
-James 


From: sumo-user-bounces@xxxxxxxxxxx <sumo-user-bounces@xxxxxxxxxxx> on behalf of Jakob Erdmann <namdre.sumo@xxxxxxxxx>
Sent: Monday, April 13, 2020 3:27 AM
To: Sumo project User discussions <sumo-user@xxxxxxxxxxx>
Subject: Re: [sumo-user] lcAssertive Behavior
 
Hello,
1) It really is a simple division. The formula is here:

2) Yes. It contributes to the getSecureGap function of the carFollowModel.

3). With these parameters, lane changed most likely did not fail due to lack of gap. You can check the lane-change status in sumo-gui to learn more about the vehicle state (lcState right, lcState left in the vehicle parameter dialog). If you cannot figure it out, send me a sample scenario.

4). This is to be expected as you are dividing the secureGap by 200 which pretty much makes it vanish. The correct formula would be this however:
requiredGap = secureBackGap + followerMinGap + subjectLength + subjectMinGap + secureFrontGap
(When computing the remaining gap between vehicles the minGap is already subtracted. In a sense it acts like a fixed extension of the vehicle length.)

regards,
Jakob





Am Sa., 11. Apr. 2020 um 00:32 Uhr schrieb Bae, Jong In <jbae42@xxxxxxxxxx>:
Hi,

My team is exploring on how 'lcAssertive' influences the gap accepted by the vehicle attempting to merge.
The test scenario is a 2-lane road where two vehicles are traveling (at 15m/s) on the right lane and the merging vehicle is traveling (at a higher speed) on the left lane.
Our experiments aim to find the minimum gap accepted at each lcAssertive value.

My questions are as follows:

  1. The SUMO vehicle definitions state that "the required gap is divided by the value of lcAssertive". However based on our experiment results, it seemed like the accepted gap is adjusted by some sort of a function of lcAssertive instead of a simple division. How does lcAssertive influence the accepted gap (required gap)? Is the function (or equation) available somewhere in the source code?
  2. Does the tau value play any role in the minimum accepted gap?
  3. We observed lane change failure with the default value of lcAssertive (lcAssertive="1") or lcAssertive = 2 even when the available gap was very large. All the other values were kept as default as well (minGap = 2.5, Tau = 1). The gap between the two vehicles in the target lane was 300m. Is this a reasonable result?
  4. Our results show that with MinGap = 0 and lcAssertive as high as 200~300, the minimum accepted gap was reduced to 0.1m + vehicle length. If the required gap is determined by secureBackGap + subjectLength + subjectMinGap + secureFrontGap, does SUMO let us ignore the secureBackGap and secureFrontGap when MinGap is set as 0?
Thank you,

-James Bae 
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user

Back to the top