File tree 6 files changed +17
-1
lines changed
6 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -293,7 +293,6 @@ MSLaneChanger::change() {
293
293
if (vehicle->getLaneChangeModel ().isChangingLanes () && !vehicle->getLaneChangeModel ().alreadyChanged ()) {
294
294
return continueChange (vehicle, myCandi);
295
295
}
296
- vehicle->getLaneChangeModel ().setSpeedLat (0 );
297
296
if (!myAllowsChanging || vehicle->getLaneChangeModel ().alreadyChanged () || vehicle->isStoppedOnLane ()) {
298
297
registerUnchanged (vehicle);
299
298
if (vehicle->isStoppedOnLane ()) {
Original file line number Diff line number Diff line change @@ -281,6 +281,7 @@ MSLaneChangerSublane::abortLCManeuver(MSVehicle* vehicle) {
281
281
vehicle->getLaneChangeModel ().setSpeedLat (0 );
282
282
vehicle->getLaneChangeModel ().setManeuverDist (0 .);
283
283
vehicle->getLaneChangeModel ().updateTargetLane ();
284
+ // vehicle->computeAngle();
284
285
}
285
286
286
287
Original file line number Diff line number Diff line change @@ -4308,6 +4308,8 @@ MSVehicle::executeMove() {
4308
4308
if (myType->getVehicleClass () == SVC_EMERGENCY) {
4309
4309
setEmergencyBlueLight (MSNet::getInstance ()->getCurrentTimeStep ());
4310
4310
}
4311
+ // must be done before angle computation
4312
+ myLaneChangeModel->resetSpeedLat ();
4311
4313
// State needs to be reset for all vehicles before the next call to MSEdgeControl::changeLanes
4312
4314
if (myActionStep) {
4313
4315
// check (#2681): Can this be skipped?
Original file line number Diff line number Diff line change @@ -426,6 +426,15 @@ MSAbstractLaneChangeModel::setSpeedLat(double speedLat) {
426
426
mySpeedLat = speedLat;
427
427
}
428
428
429
+
430
+ void
431
+ MSAbstractLaneChangeModel::resetSpeedLat () {
432
+ if (MSGlobals::gLaneChangeDuration > 0 && !isChangingLanes ()) {
433
+ setSpeedLat (0 );
434
+ }
435
+ }
436
+
437
+
429
438
bool
430
439
MSAbstractLaneChangeModel::updateCompletion () {
431
440
const bool pastBefore = pastMidpoint ();
Original file line number Diff line number Diff line change @@ -560,6 +560,10 @@ class MSAbstractLaneChangeModel {
560
560
return mySpeedLat;
561
561
}
562
562
563
+ /* @brief reset the angle (in case no lane changing happens in this step
564
+ * and the maneuver was finished in the previous step) */
565
+ virtual void resetSpeedLat ();
566
+
563
567
// / @brief return the lateral speed of the current lane change maneuver
564
568
double getAccelerationLat () const {
565
569
return myAccelerationLat;
Original file line number Diff line number Diff line change @@ -1076,6 +1076,7 @@ MSLCM_LC2013::prepareStep() {
1076
1076
scaledDelta = deltaPosLat * myVehicle.getSpeed () / myVehicle.getLane ()->getSpeedLimit ();
1077
1077
}
1078
1078
myVehicle.setLateralPositionOnLane (oldPosLat + scaledDelta);
1079
+ setSpeedLat (DIST2SPEED (scaledDelta));
1079
1080
}
1080
1081
}
1081
1082
You can’t perform that action at this time.
0 commit comments