Apologize - I am subscribed to both lists. Thanks! On Mon, Dec 23, 2019 at 11:42 AM Jakob Erdmann <[email protected]> wrote:
> Thanks. Should be fixed now (207cd1cb79594cb12519392d3909acfd7cdf5e05). > regards, > Jakob > > btw, the [email protected] mailing list is a better place for this > type of discussion > > Am Mo., 23. Dez. 2019 um 17:14 Uhr schrieb Jaeger Bomb < > [email protected]>: > >> Hello, >> >> I currently manually and dynamically assign routes to sumo vehicles in my >> application. I link right into the microsim to do this (which works >> great). When I assign a new route, I remove all the stops from the the >> vehicle, since it will be a completely new route, with only one stop at the >> end. However, when I try to assign a new route on the same edge/lane as >> the player is on, only behind him, the application gets an out of bounds >> exception from the myStops variable in MSVehicle. >> >> What I suspect is happening is this: >> If there is a stop on the lane that the vehicle is currently on, >> myStopDist is being calculated. >> The addition of the route is successful (it's just the same edge I was >> on, only behind me) >> When I remove that stop, myStops (list of stops) goes to zero. However, >> the next time myStopDist is calculated is during planMoveInternal() , which >> is called after checkActionStep() is true. If it's not time to plan the >> next move, planMoveInternal() is not called. What causes the crash is in >> the executeMovements() function, where the blinker information is updated. >> Specifically, line 5277 (version 1.4) of MSVehicle. >> if (myStopDist < (myLane->getLength() - getPositionOnLane()) && >> myStops.begin()->pars.parking && myStopDist < getCarFollowModel()....... >> >> It passes the myStopDist check, since myStopDist hasn't been reset to >> double max. So when it tries to dive into myStop.begin() that's where the >> crash occurs, because myStops is empty! I think a good fix would be to >> check when a stop is deleted, and update the myStop distance if the stop is >> the one you are going to. That would be in addTraciStop() in the MSVehicle >> class. >> >> To Summarize (the best I can, I know this is an obscure use case). >> SUMO will allow me to reroute behind me, on the same lane or another >> lane. However, it will not let me add a stop behind me. I tried ignoring >> route requests behind me in the same lane, but then with multi-lane roads I >> get the same error. What I did that seems to work the best is add one line >> in the MSVehicle::addTraciStop(), after we delete the iteration (when >> deleting stops) - line 5750: >> myStops.erase(iter); >> // my code >> if (myStops.empty()) { >> myStopDist = std::numerical_limits<double>::max(); >> } >> // SUMO code >> >> This seems to work well. Let me know if any or none of this makes sense! >> Thanks, >> JB >> >> >> >> >> _______________________________________________ >> sumo-dev mailing list >> [email protected] >> To change your delivery options, retrieve your password, or unsubscribe >> from this list, visit >> https://www.eclipse.org/mailman/listinfo/sumo-dev >> > _______________________________________________ > sumo-user mailing list > [email protected] > To change your delivery options, retrieve your password, or unsubscribe > from this list, visit > https://www.eclipse.org/mailman/listinfo/sumo-user >
_______________________________________________ sumo-user mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-user
