diff --git a/src/microsim/transportables/MSPModel_JuPedSim.cpp b/src/microsim/transportables/MSPModel_JuPedSim.cpp index b32a19643097..593ca7f87fe4 100644 --- a/src/microsim/transportables/MSPModel_JuPedSim.cpp +++ b/src/microsim/transportables/MSPModel_JuPedSim.cpp @@ -292,13 +292,13 @@ MSPModel_JuPedSim::execute(SUMOTime time) { } // Updates the agent position. - auto agent = JPS_Simulation_GetAgent(myJPSSimulation, state->getAgentId(), nullptr); + const JPS_Agent agent = JPS_Simulation_GetAgent(myJPSSimulation, state->getAgentId(), nullptr); state->setPreviousPosition(state->getPosition(*stage, DELTA_T)); - const auto position = JPS_Agent_GetPosition(agent); + const JPS_Point position = JPS_Agent_GetPosition(agent); state->setPosition(position.x, position.y); // Updates the agent direction. - const auto orientation = JPS_Agent_GetOrientation(agent); + const JPS_Point orientation = JPS_Agent_GetOrientation(agent); state->setAngle(atan2(orientation.y, orientation.x)); // Find on which edge the pedestrian is, using route's forward-looking edges because of how moveToXY is written. @@ -323,6 +323,11 @@ MSPModel_JuPedSim::execute(SUMOTime time) { UNUSED_PARAMETER(result); assert(result == false); // The person has not arrived yet. stage->activateEntryReminders(person); + JPS_CollisionFreeSpeedModelState modelState = JPS_Agent_GetCollisionFreeSpeedModelState(agent, nullptr); + const double newMaxSpeed = MIN2(candidateLane->getSpeedLimit(), person->getMaxSpeed()); + if (newMaxSpeed != JPS_CollisionFreeSpeedModelState_GetV0(modelState)) { + JPS_CollisionFreeSpeedModelState_SetV0(modelState, newMaxSpeed); + } } if (newPosition.distanceTo2D(state->getNextWaypoint()) < 2 * myExitTolerance) { diff --git a/tests/sumo/pedestrian_model/jupedsim/speed_change/errors.sumo b/tests/sumo/pedestrian_model/jupedsim/speed_change/errors.sumo new file mode 100644 index 000000000000..280b053e6399 --- /dev/null +++ b/tests/sumo/pedestrian_model/jupedsim/speed_change/errors.sumo @@ -0,0 +1 @@ +Warning: Polygon for junction 'J1' has been dilated as it is just a segment. diff --git a/tests/sumo/pedestrian_model/jupedsim/speed_change/fcd.sumo b/tests/sumo/pedestrian_model/jupedsim/speed_change/fcd.sumo new file mode 100644 index 000000000000..b486f7f7e9a7 --- /dev/null +++ b/tests/sumo/pedestrian_model/jupedsim/speed_change/fcd.sumo @@ -0,0 +1,2579 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/sumo/pedestrian_model/jupedsim/speed_change/input_routes.rou.xml b/tests/sumo/pedestrian_model/jupedsim/speed_change/input_routes.rou.xml new file mode 100644 index 000000000000..73e36d3b4480 --- /dev/null +++ b/tests/sumo/pedestrian_model/jupedsim/speed_change/input_routes.rou.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + diff --git a/tests/sumo/pedestrian_model/jupedsim/speed_change/net.net.xml b/tests/sumo/pedestrian_model/jupedsim/speed_change/net.net.xml new file mode 100644 index 000000000000..f6244adf4805 --- /dev/null +++ b/tests/sumo/pedestrian_model/jupedsim/speed_change/net.net.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/sumo/pedestrian_model/jupedsim/speed_change/options.sumo b/tests/sumo/pedestrian_model/jupedsim/speed_change/options.sumo new file mode 100644 index 000000000000..f90e1ad8036f --- /dev/null +++ b/tests/sumo/pedestrian_model/jupedsim/speed_change/options.sumo @@ -0,0 +1 @@ +--net-file net.net.xml --route-files input_routes.rou.xml --no-step-log --tripinfo-output tripinfos.xml --fcd-output fcd.xml diff --git a/tests/sumo/pedestrian_model/jupedsim/speed_change/output.sumo b/tests/sumo/pedestrian_model/jupedsim/speed_change/output.sumo new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tests/sumo/pedestrian_model/jupedsim/speed_change/tripinfos.sumo b/tests/sumo/pedestrian_model/jupedsim/speed_change/tripinfos.sumo new file mode 100644 index 000000000000..251011a12c9c --- /dev/null +++ b/tests/sumo/pedestrian_model/jupedsim/speed_change/tripinfos.sumo @@ -0,0 +1,48 @@ + + + + + + + + + diff --git a/tests/sumo/pedestrian_model/jupedsim/testsuite.sumo b/tests/sumo/pedestrian_model/jupedsim/testsuite.sumo index 73d544738a79..80d424ed837d 100644 --- a/tests/sumo/pedestrian_model/jupedsim/testsuite.sumo +++ b/tests/sumo/pedestrian_model/jupedsim/testsuite.sumo @@ -1,5 +1,8 @@ two_edges +# This test checks that when a pedestrian walks on a new edge, the max speed of the new edge is taken into account. +speed_change + # Test the geometry checks regarding non-simple polygons geometry_check