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

Reply via email to