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

Reply via email to