> then I can use openGap() function to change the distance between the ego
and the blocked vehicle to be at least as big as the value of
traci.vehicle.getSecureGap(followerID, followerSpeed, leaderSpeed,
leaderMaxDecel, leaderID) and that would function as a "cooperative" move
by ego vehicle?

yes.

Am Mo., 25. Apr. 2022 um 23:44 Uhr schrieb Hriday Sanghvi via sumo-user <
[email protected]>:

> Hello,
>
> So now that I am able to retrieve the vehicles that are blocked by ego -
> do they fit the definition of "any vehicle that will have lateral overlap
> with ego (during or at the end of the maneuver)"? If yes, then I can use
> openGap() function to change the distance between the ego and the blocked
> vehicle to be at least as big as the value of
> traci.vehicle.getSecureGap(followerID, followerSpeed, leaderSpeed,
> leaderMaxDecel, leaderID) and that would function as a "cooperative" move
> by ego vehicle? Please advise if my understanding is not accurate.
>
> Thank you.
>
> Sincerely,
> Hriday
>
>
> On Mon, 25 Apr 2022 at 19:56, Jakob Erdmann <[email protected]> wrote:
>
>> > 2. For each vehicle *i* in that list *L, *I am checking the left
>> /right and following / leading blocking vehicles for vehicle *i, *and I
>> find that there is never a case when the *ego* *vehicle X is blocking
>> vehicle i.*
>>
>> According to you code, the second call to getRightFollowers uses vehID=vh
>> again rather than the intended rel_veh
>>
>> Am Mo., 25. Apr. 2022 um 20:31 Uhr schrieb Hriday Sanghvi via sumo-user <
>> [email protected]>:
>>
>>> Hello,
>>>
>>> As discussed previously, I am trying to find out if ego vehicle *X *is
>>> considered a blocking vehicle by any of its neighbouring vehicles. So using
>>> a combination of convenience functions built on *getNeighbors(self,
>>> vehID, mode) *from
>>> https://sumo.dlr.de/pydoc/traci._vehicle.html#VehicleDomain-getNeighbors
>>> - namely, *getRightFollowers(), getRightLeaders(), getLeftFollowers()
>>> and getLeftLeaders()* with the flag *blockingOnly=True, *I am:
>>>
>>> 1. Gathering any blocking vehicles on the left / right and following /
>>> leading of ego vehicle into a list *L.*
>>> 2. For each vehicle *i* in that list *L, *I am checking the left /right
>>> and following / leading blocking vehicles for vehicle *i, *and I find
>>> that there is never a case when the *ego* *vehicle X is blocking
>>> vehicle i.*
>>>
>>> I tested this out by visually observing the output as follows (example):
>>>
>>> ### STEP 1 ###
>>> Blocking vehicles around ego vehicle f.0 : ['f.1']
>>> Blocking vehicles for ego-blocking vehicle f.1 : []
>>>
>>> Blocking vehicles around ego vehicle f.1 : ['f.0']
>>> Blocking vehicles for ego-blocking vehicle f.0 : []
>>>
>>> ### STEP 2 ###
>>> Blocking vehicles around ego vehicle f.0 : ['f.4', 'f.1']
>>> Blocking vehicles for ego-blocking vehicle f.4 : ['f.1']
>>> .
>>> .
>>> .
>>>
>>> Python TraCI code:
>>>
>>> blocking_flag_ego = True
>>> blocking_flag_neighbors = True
>>>
>>> step = 1
>>> while len(traci.vehicle.getIDList()) <= 0:
>>> traci.simulationStep()
>>>
>>> LC_MODE = 513 # collision avoidance, safety-gap enforcement AND
>>> strategic changes ONLY if not conflicting with TraCI (to get on the correct
>>> route)
>>>
>>> while len(traci.vehicle.getIDList()) > 0:
>>> veh_list = traci.vehicle.getIDList()
>>> for vh in veh_list:
>>> traci.vehicle.setLaneChangeMode(vh, LC_MODE)
>>>
>>> relevant_vehicles = []
>>> speed = traci.vehicle.getSpeed(vh)
>>>
>>> right_followers = [x[0] for x in traci.vehicle.getRightFollowers(vehID=
>>> vh, blockingOnly=blocking_flag_ego)]
>>> right_leaders = [x[0] for x in traci.vehicle.getRightLeaders(vehID=vh,
>>> blockingOnly=blocking_flag_ego)]
>>> left_followers = [x[0] for x in traci.vehicle.getLeftFollowers(vehID=vh,
>>> blockingOnly=blocking_flag_ego)]
>>> left_leaders = [x[0] for x in traci.vehicle.getLeftLeaders(vehID=vh,
>>> blockingOnly=blocking_flag_ego)]
>>>
>>> relevant_vehicles.extend(right_followers)
>>> relevant_vehicles.extend(right_leaders)
>>> relevant_vehicles.extend(left_followers)
>>> relevant_vehicles.extend(left_leaders)
>>>
>>> print('Blocking vehicles around ego vehicle {} : {}'.format(vh,
>>> relevant_vehicles))
>>>
>>> for rel_veh in relevant_vehicles:
>>> blocking_vehicles = []
>>> right_followers_blocking = [x[0] for x in traci
>>> .vehicle.getRightFollowers(vehID=vh, blockingOnly=
>>> blocking_flag_neighbors) if x[0] not in [rel_veh]]
>>> right_leaders_blocking = [x[0] for x in traci.vehicle.getRightLeaders(
>>> vehID=vh, blockingOnly=blocking_flag_neighbors) if x[0] not in [rel_veh
>>> ]]
>>> left_followers_blocking = [x[0] for x in traci.vehicle.getLeftFollowers(
>>> vehID=vh, blockingOnly=blocking_flag_neighbors) if x[0] not in [rel_veh
>>> ]]
>>> left_leaders_blocking = [x[0] for x in traci.vehicle.getLeftLeaders(
>>> vehID=vh, blockingOnly=blocking_flag_neighbors) if x[0] not in [rel_veh
>>> ]]
>>>
>>> blocking_vehicles.extend(right_followers_blocking)
>>> blocking_vehicles.extend(right_leaders_blocking)
>>> blocking_vehicles.extend(left_followers_blocking)
>>> blocking_vehicles.extend(left_leaders_blocking)
>>> print('Blocking vehicles for ego-blocking vehicle {} : {}'.format(
>>> rel_veh, blocking_vehicles))
>>>
>>> if vh in blocking_vehicles: # IF ego is one of the vehicles blocking it
>>> print('Ego vehicle {} will cooperate'.format(vh))
>>> input()
>>>
>>> traci.simulationStep()
>>> print('### STEP {} ###'.format(step))
>>> step += 1
>>> traci.close()
>>>
>>> edges.xml:
>>>
>>> <?xml version='1.0' encoding='UTF-8'?>
>>> <edges>
>>> <edge from="1" id="1f2" numLanes="3" to="2" />
>>> </edges>
>>>
>>> nodes.xml:
>>>
>>> <nodes>
>>> <node id="1" x="0.0" y="0.0" type="priority"/>
>>> <node id="2" x="2000.0" y="0.0" type="priority"/>
>>> </nodes>
>>>
>>> routes.xml:
>>>
>>> <?xml version='1.0' encoding='UTF-8'?>
>>> <routes>
>>> <vType carFollowModel="Krauss" color="0,1,0" id="veh" length="5" sigma=
>>> "0" speedDev="0" speedFactor="1.0" />
>>> <route color="1,1,0" edges="1f2" id="r0" />
>>> <flow arrivalLane="random" begin="0" departLane="random" departSpeed=
>>> "random" id="f" number="100" route="r0" type="veh" vehsPerHour="10000"
>>> />
>>> </routes>
>>>
>>> If this is working as intended*, *how then would I go about finding out
>>> the list of vehicles that are being blocked by ego vehicle *X? *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

Reply via email to