> 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
