Hello Jakob, thank you again for the explanation. Is it possible to know when the ego vehicle may choose to overtake a blocking leader, or is there a 50% chance it may do one of the two?
Also, I just realized I can use TraCI's openGap() function ( https://sumo.dlr.de/daily/pydoc/traci._vehicle.html#VehicleDomain-openGap ) to try and define my custom "cooperate" function as I am not able to point the cases where setting lcCooperative to 1 would fail to act as a "cooperate" function. I know that there is a way to get the vehicles that block a certain ego vehicle for any lateral and longitudinal direction using getNeighbors(self, vehID, mode) function, but is it possible to get the vehicles that are *being blocked* by a specified ego vehicle? For example, ego vehicle "f1" is blocking vehicles "f2" and "f3" from completing a lane change action into the ego vehicle's lane? Thank you. Sincerely, Hriday On Thu, 21 Apr 2022 at 08:03, Jakob Erdmann <[email protected]> wrote: > lcCooperative=1 (or rather lcCooperativeSpeed=1 which takes lcCooperative > as it's default) is mainly responsible for slowing down to open gaps: > - ego slows down if it is the follower > - the blocker slows down if it is the follower > Either slowing down is hindered if the vehicle to slow down has > lcCooperativeSpeed < 1 > Note, that sometimes, the ego vehicle may elect to overtake a blocking > leader rather than to slow down and merge behind. > > Am Do., 21. Apr. 2022 um 00:08 Uhr schrieb Hriday Sanghvi via sumo-user < > [email protected]>: > >> Hello Jakob, >> >> Thank you for your reply. >> >> Regarding 2., Is this the only "speed adjustment" that setting >> lcCooperative to 1 for a particular vehicle would do - it would change the >> speed of the blocking vehicle(s) such that the condition for the secure gap >> between leader and follower holds true? Or it doesn't work that way because >> of the referenced bug previously - a bug where "the ego may ignore advice >> that it gives to itself (i.e. slow down to merge behind the leader) because >> it currently does not distinguish who is helped by any given speed advice"? >> >> Sincerely, >> Hriday >> >> On Tue, 19 Apr 2022 at 19:38, Jakob Erdmann <[email protected]> >> wrote: >> >>> 1. >>> a) wantsAndCouldChangeLane always returns false for direction=0 at the >>> moment >>> b) Yes. the lane change state is only stored for "legal" targets >>> >>> 2. for any vehicle that will have lateral overlap with ego (during or at >>> the end of the maneuver) the distance between the follower and the leader >>> must be at least as big as the value of >>> traci.vehicle.getSecureGap(followerID, followerSpeed, leaderSpeed, >>> leaderMaxDecel, leaderID) >>> >>> regards, >>> Jakob >>> >>> Am Di., 19. Apr. 2022 um 00:10 Uhr schrieb Hriday Sanghvi via sumo-user < >>> [email protected]>: >>> >>>> Hello, if this question needs more information / screenshots - I could >>>> try and modify it if it's not clear. >>>> >>>> Thank you. >>>> >>>> Sincerely, >>>> Hriday >>>> >>>> >>>> On Wed, 13 Apr 2022 at 19:58, Hriday Sanghvi <[email protected]> wrote: >>>> >>>>> Hello, >>>>> >>>>> Lane change mode: 1621 (default) >>>>> Lane change model: SL2015 >>>>> Max. duration given for a vehicle to perform a lane change: 10 s >>>>> (arbitrary) >>>>> >>>>> 1. I am trying to discourage lane changes enforced by TraCI that are >>>>> not valid, i.e., >>>>> >>>>> A vehicle trying to move to the right or the left from the rightmost >>>>> or leftmost lane in the network respectively, or a vehicle that cannot >>>>> perform a certain lane change operation within the given time due to other >>>>> vehicles blocking it. >>>>> >>>>> For a lane change operation initiated on a vehicle by >>>>> >>>>> traci.vehicle.*changeLaneRelative*(vehID=*veh_id*, indexOffset=*dr*, >>>>>> duration=*lc_max_duration*) >>>>> >>>>> >>>>> The following code should tell me if the lane change will be a success: >>>>> >>>>> *lcs* = traci.vehicle.*getLaneChangeState*(vehID=*veh_id*, direction= >>>>>> *dr*)[1] # index 1 for TraCI >>>>>> *lc_success* = traci.vehicle.*wantsAndCouldChangeLane*(vehID=*veh_id*, >>>>>> direction=*dr*, state=*lcs*) >>>>> >>>>> >>>>> However, in the particular case where direction=0 (stay in the same >>>>> lane), it still returns false. This made sense in a situation where the >>>>> vehicle was still in the middle of a previous lane change from another >>>>> lane >>>>> (where it was between two lanes, and hence cannot "stay" in the same >>>>> lane). >>>>> >>>>> a. But it also happened to a vehicle that had departed from the >>>>> rightmost lane and chose to "stay". I could not understand it even with >>>>> the >>>>> help of the console output's 'pretty' version of the Lane change state for >>>>> the TraCI command as shown: >>>>> >>>>> veh id: f.2 (currently on lane 0) >>>>>> lc success: False >>>>>> lcs pretty: ['stay', 'TraCI', 'sublane'] >>>>>> Direction: 0 >>>>> >>>>> >>>>> b. On a side note, the pretty version of the lane change state seems >>>>> to be empty when it encounters a situation where the TraCI command tries >>>>> to >>>>> move the vehicle to a lane that doesn't exist, i.e. "move right" on the >>>>> rightmost lane - just looking for confirmation? >>>>> >>>>> veh id: f.0 (currently on lane 0) >>>>>> lc success: False >>>>>> lcs pretty: [] >>>>>> Direction: -1 >>>>> >>>>> >>>>> 2. I am trying to program an action that translates to "cooperate" >>>>> with another vehicle. For this, I need to know what needs to be done in a >>>>> situation where a leader/follower vehicle on the same or a different lane >>>>> is blocking another vehicle from changing lanes. So if I can figure out >>>>> the >>>>> minimum changes that need to be made to resolve this situation - for >>>>> example, the lateral distance between the ego vehicle and blocking vehicle >>>>> has to be at least *X *m and the longitudinal distance between ego >>>>> and blocking vehicle has to be at least *Y *m or maybe the relative >>>>> speed difference has to be at least *S *m/s, then the lane change can >>>>> go ahead. >>>>> >>>>> As I understand it, my question would be answered from this: >>>>> >>>>> https://github.com/eclipse/sumo/blob/f71860fb1b15868e0be63338bfcbd3fc05b08451/src/microsim/lcmodels/MSLCM_SL2015.cpp#L2190 >>>>> >>>>> but there are many components like the TraCI constant tc.LC_BLOCKED >>>>> and how/when it is set that I don't fully understand. >>>>> >>>>> Please advise. Thank you. >>>>> >>>>> Sincerely, >>>>> Hriday >>>>> >>>> _______________________________________________ >>>> sumo-user mailing list >>>> [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 >>> >> _______________________________________________ >> sumo-user mailing list >> [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 >
_______________________________________________ sumo-user mailing list [email protected] To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
