Hi,
you can use traci.lane.getAllowed(“lane id”) to check if the given lane allows your vehicle type (see
https://sumo.dlr.de/docs/TraCI/Lane_Value_Retrieval.html). With traci.lane.setAllowed(“lane id”) you can change the vehicle types that are allow in the given lane (see
https://sumo.dlr.de/docs/TraCI/Change_Lane_State.html).
I’m not sure if it Is the best solution, but you could add turnarounds in your net to avoid dead ends and allow the vehicles to turn around in
the next junction. You can do this with netconvert:
netconvert –s yournet.net.xml --no-turnarounds false -o newnet.net.xml (see https://sumo.dlr.de/docs/netconvert.html)
Regards,
Giuliana
From: sumo-user-bounces@xxxxxxxxxxx [mailto:sumo-user-bounces@xxxxxxxxxxx]
On Behalf Of Paul Fierro
Sent: Freitag, 18. September 2020 19:07
To: Sumo project User discussions
Subject: [sumo-user] Dead End - changeTarget/MoveToXY issues
I want to set up the problem properly and then highlight the issue I am having.
I have a series of people that need to be picked up by a busroute, and I see numerous capabilities to handle bus routes that I am not using as of yet. What I am
doing now is I am visiting a RoadId or route segment near the person and when the vehicle arrives the person will board and then the bus will change its Target to a new destination target to the next customer in the route.
at times this fails because the person is on a road segment that does Not allow vehicles to travel down, like local road/rural road/private road. I have gotten around
this by writing a radius alternative algorithm using your api too discover a nearby road that does allow vehicles. This works fine.
Occasionally when the vehicle arrives to a person's nearby location, the route ends on a dead-end route. In this case changeTarget does not turn the vehicle around,
instead what may be an available destination is failed, as well as I am sure the original problem which some of the edges are not allowing vehicle's may also be failing.
Simply, I have tried moveToXY as a way to re orient the vehicle at angle -= 180 degrees. This would seem to be needed a prerequisite to calling changeTarget. This
is my current thinking and strategy. But somehow, I am calling movetoXY in manner that does not work. It must be in lane_index, edge_id, angle, xv, yv values. I need to turn this vehicle around so a change Target can take it to the next customer.
Lastly, is there a way to check if an edge allows vehicle or not, and potentially can that be changed.
tmp = traci.simulation.convertRoad( XcnvTry, YcnvTry )
stateNotTabu = StateNotInTabu([destEdgeId], nptabu)
tabu.append([destEdgeId])
print('Size of Tabu List:', len(tabu))
traci.vehicle.changeTarget(prid, destEdgeId )
initialChampionFound = True
dtry = distEuclid( XcnvTry, YcnvTry, XCustcnv, YCustcnv )
print( "NEW CHAMPION - Base Radius stRadius:", stRadius ," cnt:", cnt, " ch:", chDfrmOrig, chXtry , chYtry )
return chEdgeId, chXtry, chYtry, cnt
Could not make Bold work:
# route_id = traci.vehicle.getRouteID(prid)
# edge_id = traci.vehicle.getRoadID(prid)
# lane_index = traci.vehicle.getLaneIndex(prid)
# position = traci.vehicle.getPosition(prid)
# xv = tuple(position)[0]
# yv = tuple(position)[1]
# angle = traci.vehicle.getAngle(prid)
# fndMinus = edge_id.find('-')
# edge_id = '-' + edge_id
# traci.vehicle.moveToXY(prid, edge_id, lane_index, xv + 50, yv + 50, angle, keepRoute=2)
# traci.vehicle.changeTarget(prid, destEdgeId)
# initialChampionFound = True
# dtry = distEuclid(XcnvTry, YcnvTry, XCustcnv, YCustcnv)
|