From 0033ac33dd9b33ee394db5414d477f64a7255ee7 Mon Sep 17 00:00:00 2001 From: Sergi Hernandez Juan <shernand@iri.upc.edu> Date: Mon, 15 Mar 2021 16:56:46 +0100 Subject: [PATCH] Solved some bugs when generating the junction roads: all optional records are checked before being used. --- OpenRoadEd/create_junction_road.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/OpenRoadEd/create_junction_road.cpp b/OpenRoadEd/create_junction_road.cpp index f0cfa2f..5f50c9e 100644 --- a/OpenRoadEd/create_junction_road.cpp +++ b/OpenRoadEd/create_junction_road.cpp @@ -112,7 +112,13 @@ unsigned int create_junction_road(RoadTree *road_tree, OpenDrive *open_drive,uns if(abs(lane->GetId())==abs(lane_link->GetFrom())) { lane_start_width=lane->GetWidthValue(s); - max_speed=lane->GetLaneSpeed(0)->GetMax(); + if(lane->GetLaneSpeedCount()>0) + max_speed=lane->GetLaneSpeed(0)->GetMax(); + else + { + std::cout << "Warning: Speed record missing. Using 60.0 Km/h" << std::endl; + max_speed=60.0; + } } } } @@ -253,7 +259,13 @@ unsigned int create_junction_road(RoadTree *road_tree, OpenDrive *open_drive,uns road->SetSuccessor("road",connection->GetConnectingRoad(), "start"); else road->SetSuccessor("road",connection->GetConnectingRoad(), "end"); - road->AddRoadType(0,predecessor->GetRoadType(0)->GetType()); + if(predecessor->GetRoadTypeCount()>0) + road->AddRoadType(0,predecessor->GetRoadType(0)->GetType()); + else + { + std::cout << "Warning: Road type record missing: Using town" << std::endl; + road->AddRoadType(0,"town"); + } road_tree->AddRoadType(road_index,0,false); road_id++; } @@ -367,7 +379,13 @@ unsigned int create_junction_road(RoadTree *road_tree, OpenDrive *open_drive,uns road->SetSuccessor("road",connection->GetConnectingRoad(), "start"); else road->SetSuccessor("road",connection->GetConnectingRoad(), "end"); - road->AddRoadType(0,predecessor->GetRoadType(0)->GetType()); + if(predecessor->GetRoadTypeCount()>0) + road->AddRoadType(0,predecessor->GetRoadType(0)->GetType()); + else + { + std::cout << "Warning: Road type record missing: Using town" << std::endl; + road->AddRoadType(0,"town"); + } road_tree->AddRoadType(road_index,0,false); road_id++; } -- GitLab