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

Reply via email to