Thank you.

I'll keep working on the calculation part until I get those values.

Also, if the traci function 'traci.vehicle.getSecureGap' is in the latest 
development version, how can I update my current version to the latest version?
I'm running into errors saying that 'VehicleDomain' object has no attribute 
'getSecureGap'.
And I can't find 'getSecureGap' function in the current version of the traci 
library that I have.

Thank you once again for all your help.

-James Bae



________________________________
From: [email protected] <[email protected]> on behalf 
of Jakob Erdmann <[email protected]>
Sent: Monday, April 20, 2020 2:27 AM
To: Sumo project User discussions <[email protected]>
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 
<[email protected]<mailto:[email protected]>>:
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: [email protected]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>> on behalf 
of Jakob Erdmann <[email protected]<mailto:[email protected]>>
Sent: Wednesday, April 15, 2020 3:02 PM
To: Sumo project User discussions 
<[email protected]<mailto:[email protected]>>
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 
<[email protected]<mailto:[email protected]>>:
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: [email protected]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>> on behalf 
of Jakob Erdmann <[email protected]<mailto:[email protected]>>
Sent: Monday, April 13, 2020 3:27 AM
To: Sumo project User discussions 
<[email protected]<mailto:[email protected]>>
Subject: Re: [sumo-user] lcAssertive Behavior

Hello,
1) It really is a simple division. The formula is here:
https://github.com/eclipse/sumo/blob/1c5cd080e83c7cad30f96a6c6b70bb4d80478bdb/src/microsim/MSLaneChanger.cpp#L781
https://github.com/eclipse/sumo/blob/1c5cd080e83c7cad30f96a6c6b70bb4d80478bdb/src/microsim/MSLaneChanger.cpp#L812
https://github.com/eclipse/sumo/blob/1c5cd080e83c7cad30f96a6c6b70bb4d80478bdb/src/microsim/lcmodels/MSLCM_LC2013.cpp#L2102-L2104

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 
<[email protected]<mailto:[email protected]>>:
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
[email protected]<mailto:[email protected]>
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
[email protected]<mailto:[email protected]>
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
[email protected]<mailto:[email protected]>
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
[email protected]
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/sumo-user

Reply via email to