Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0333809da8 | |||
| ceb0e31659 | |||
| cc6923bfa9 | |||
| 1b2f1a459d | |||
| f3b4440707 |
@@ -1,3 +1,9 @@
|
|||||||
|
# 5.7.4
|
||||||
|
- Changes from 5.7.3:
|
||||||
|
- Bug fixes:
|
||||||
|
- Fixes 4100: Fix steps collapsing after non-closed roundabouts
|
||||||
|
- Fixes 4129: Fix invalid roundabout instructions for different driving modes
|
||||||
|
|
||||||
# 5.7.3
|
# 5.7.3
|
||||||
- Changes from 5.7.2:
|
- Changes from 5.7.2:
|
||||||
- Bug fixes:
|
- Bug fixes:
|
||||||
|
|||||||
+1
-1
@@ -55,7 +55,7 @@ endif()
|
|||||||
project(OSRM C CXX)
|
project(OSRM C CXX)
|
||||||
set(OSRM_VERSION_MAJOR 5)
|
set(OSRM_VERSION_MAJOR 5)
|
||||||
set(OSRM_VERSION_MINOR 7)
|
set(OSRM_VERSION_MINOR 7)
|
||||||
set(OSRM_VERSION_PATCH 3)
|
set(OSRM_VERSION_PATCH 4)
|
||||||
set(OSRM_VERSION "${OSRM_VERSION_MAJOR}.${OSRM_VERSION_MINOR}.${OSRM_VERSION_PATCH}")
|
set(OSRM_VERSION "${OSRM_VERSION_MAJOR}.${OSRM_VERSION_MINOR}.${OSRM_VERSION_PATCH}")
|
||||||
|
|
||||||
add_definitions(-DOSRM_PROJECT_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
|
add_definitions(-DOSRM_PROJECT_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
|
|||||||
@@ -37,3 +37,37 @@ Feature: Basic Roundabout
|
|||||||
| h,a | gh,ab,ab | depart,roundabout turn left exit-3,arrive |
|
| h,a | gh,ab,ab | depart,roundabout turn left exit-3,arrive |
|
||||||
| h,d | gh,cd,cd | depart,roundabout turn straight exit-2,arrive |
|
| h,d | gh,cd,cd | depart,roundabout turn straight exit-2,arrive |
|
||||||
| h,f | gh,ef,ef | depart,roundabout turn right exit-1,arrive |
|
| h,f | gh,ef,ef | depart,roundabout turn right exit-1,arrive |
|
||||||
|
|
||||||
|
# https://www.openstreetmap.org/way/223225602
|
||||||
|
Scenario: Enter and Exit with changing mode
|
||||||
|
Given the node map
|
||||||
|
"""
|
||||||
|
a
|
||||||
|
b
|
||||||
|
h g c d
|
||||||
|
e
|
||||||
|
f
|
||||||
|
"""
|
||||||
|
|
||||||
|
And the ways
|
||||||
|
| nodes | junction | highway |
|
||||||
|
| ab | | residential |
|
||||||
|
| cd | | residential |
|
||||||
|
| ef | | footway |
|
||||||
|
| gh | | footway |
|
||||||
|
| bgecb | roundabout | residential |
|
||||||
|
|
||||||
|
When I route I should get
|
||||||
|
| waypoints | route | turns |
|
||||||
|
| a,d | ab,cd,cd | depart,roundabout turn left exit-1,arrive |
|
||||||
|
| a,f | ab,ef,ef,ef | depart,roundabout turn left exit-1,notification right,arrive |
|
||||||
|
| a,h | ab,bgecb,gh,gh | depart,roundabout turn right exit-1,notification right,arrive |
|
||||||
|
| d,f | cd,ef,ef,ef | depart,roundabout turn sharp left exit-2,notification right,arrive |
|
||||||
|
| d,h | cd,gh,gh,gh | depart,roundabout turn left exit-2,notification right,arrive |
|
||||||
|
| d,a | cd,ab,ab | depart,roundabout turn right exit-1,arrive |
|
||||||
|
| f,h | ef,gh,gh,gh | depart,roundabout turn sharp left exit-3,notification right,arrive |
|
||||||
|
| f,a | ef,ab,ab | depart,roundabout turn straight exit-2,arrive |
|
||||||
|
| f,d | ef,cd,cd | depart,roundabout turn right exit-1,arrive |
|
||||||
|
| h,a | gh,ab,ab | depart,roundabout turn left exit-2,arrive |
|
||||||
|
| h,d | gh,cd,cd | depart,roundabout turn straight exit-1,arrive |
|
||||||
|
| h,f | gh,bgecb,ef,ef | depart,roundabout turn right exit-1,notification right,arrive |
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "osrm",
|
"name": "osrm",
|
||||||
"version": "5.7.3",
|
"version": "5.7.4",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "The Open Source Routing Machine is a high performance routing engine written in C++14 designed to run on OpenStreetMap data.",
|
"description": "The Open Source Routing Machine is a high performance routing engine written in C++14 designed to run on OpenStreetMap data.",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ double findTotalTurnAngle(const RouteStep &entry_step, const RouteStep &exit_ste
|
|||||||
// both angles are in the same direction, the total turn gets increased
|
// both angles are in the same direction, the total turn gets increased
|
||||||
//
|
//
|
||||||
// a ---- b
|
// a ---- b
|
||||||
// \
|
// \
|
||||||
// c
|
// c
|
||||||
// |
|
// |
|
||||||
// d
|
// d
|
||||||
@@ -315,11 +315,6 @@ RouteSteps collapseTurnInstructions(RouteSteps steps)
|
|||||||
if (entersRoundabout(current_step->maneuver.instruction) ||
|
if (entersRoundabout(current_step->maneuver.instruction) ||
|
||||||
staysOnRoundabout(current_step->maneuver.instruction))
|
staysOnRoundabout(current_step->maneuver.instruction))
|
||||||
{
|
{
|
||||||
// Skip over all instructions within the roundabout
|
|
||||||
for (; current_step + 1 != steps.end(); ++current_step)
|
|
||||||
if (leavesRoundabout(current_step->maneuver.instruction))
|
|
||||||
break;
|
|
||||||
|
|
||||||
// are we done for good?
|
// are we done for good?
|
||||||
if (current_step + 1 == steps.end())
|
if (current_step + 1 == steps.end())
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -171,9 +171,11 @@ void closeOffRoundabout(const bool on_roundabout,
|
|||||||
if (!guidance::haveSameMode(exit_step, prev_step))
|
if (!guidance::haveSameMode(exit_step, prev_step))
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(leavesRoundabout(exit_step.maneuver.instruction));
|
BOOST_ASSERT(leavesRoundabout(exit_step.maneuver.instruction));
|
||||||
prev_step.maneuver.instruction = exit_step.maneuver.instruction;
|
|
||||||
if (!entersRoundabout(prev_step.maneuver.instruction))
|
if (!entersRoundabout(prev_step.maneuver.instruction))
|
||||||
prev_step.maneuver.exit = exit_step.maneuver.exit;
|
{
|
||||||
|
prev_step.maneuver.instruction = exit_step.maneuver.instruction;
|
||||||
|
}
|
||||||
|
prev_step.maneuver.exit = exit_step.maneuver.exit;
|
||||||
exit_step.maneuver.instruction.type = TurnType::Notification;
|
exit_step.maneuver.instruction.type = TurnType::Notification;
|
||||||
step_index--;
|
step_index--;
|
||||||
}
|
}
|
||||||
@@ -198,9 +200,12 @@ void closeOffRoundabout(const bool on_roundabout,
|
|||||||
{
|
{
|
||||||
auto &propagation_step = steps[propagation_index];
|
auto &propagation_step = steps[propagation_index];
|
||||||
auto &next_step = steps[propagation_index + 1];
|
auto &next_step = steps[propagation_index + 1];
|
||||||
propagation_step.ElongateBy(next_step);
|
if (guidance::haveSameMode(propagation_step, next_step))
|
||||||
propagation_step.maneuver.exit = next_step.maneuver.exit;
|
{
|
||||||
next_step.Invalidate();
|
propagation_step.ElongateBy(next_step);
|
||||||
|
propagation_step.maneuver.exit = next_step.maneuver.exit;
|
||||||
|
next_step.Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
if (entersRoundabout(propagation_step.maneuver.instruction))
|
if (entersRoundabout(propagation_step.maneuver.instruction))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user