Fixed lane change link anomaly
This commit is contained in:
parent
4c85696547
commit
d36014511f
|
@ -9,7 +9,7 @@ namespace MapConstants {
|
||||||
static const uint LANE_CHANGE_LOOK_AHEAD = 5u;
|
static const uint LANE_CHANGE_LOOK_AHEAD = 5u;
|
||||||
// Cosine of the angle.
|
// Cosine of the angle.
|
||||||
static const float LANE_CHANGE_ANGULAR_THRESHOLD = 0.5f;
|
static const float LANE_CHANGE_ANGULAR_THRESHOLD = 0.5f;
|
||||||
static const float GRID_SIZE = 2.0f;
|
static const float GRID_SIZE = 4.0f;
|
||||||
}
|
}
|
||||||
using namespace MapConstants;
|
using namespace MapConstants;
|
||||||
|
|
||||||
|
@ -195,15 +195,30 @@ namespace MapConstants {
|
||||||
uint8_t change_right = static_cast<uint8_t>(carla::road::element::LaneMarking::LaneChange::Right);
|
uint8_t change_right = static_cast<uint8_t>(carla::road::element::LaneMarking::LaneChange::Right);
|
||||||
uint8_t change_left = static_cast<uint8_t>(carla::road::element::LaneMarking::LaneChange::Left);
|
uint8_t change_left = static_cast<uint8_t>(carla::road::element::LaneMarking::LaneChange::Left);
|
||||||
|
|
||||||
if ((lane_change & change_right) > 0) {
|
try {
|
||||||
WaypointPtr right_waypoint = raw_waypoint->GetRight();
|
if ((lane_change & change_right) > 0) {
|
||||||
SimpleWaypointPtr closest_simple_waypoint = GetWaypointInVicinity(right_waypoint->GetTransform().location);
|
WaypointPtr right_waypoint = raw_waypoint->GetRight();
|
||||||
reference_waypoint->SetRightWaypoint(closest_simple_waypoint);
|
SimpleWaypointPtr closest_simple_waypoint = GetWaypointInVicinity(right_waypoint->GetTransform().location);
|
||||||
}
|
if (closest_simple_waypoint == nullptr) {
|
||||||
if ((lane_change & change_left) > 0) {
|
closest_simple_waypoint = GetWaypoint(right_waypoint->GetTransform().location);
|
||||||
WaypointPtr left_waypoint = raw_waypoint->GetLeft();
|
}
|
||||||
SimpleWaypointPtr closest_simple_waypoint = GetWaypointInVicinity(left_waypoint->GetTransform().location);
|
reference_waypoint->SetRightWaypoint(closest_simple_waypoint);
|
||||||
reference_waypoint->SetLeftWaypoint(closest_simple_waypoint);
|
}
|
||||||
|
if ((lane_change & change_left) > 0) {
|
||||||
|
WaypointPtr left_waypoint = raw_waypoint->GetLeft();
|
||||||
|
SimpleWaypointPtr closest_simple_waypoint = GetWaypointInVicinity(left_waypoint->GetTransform().location);
|
||||||
|
if (closest_simple_waypoint == nullptr) {
|
||||||
|
closest_simple_waypoint = GetWaypoint(left_waypoint->GetTransform().location);
|
||||||
|
}
|
||||||
|
reference_waypoint->SetLeftWaypoint(closest_simple_waypoint);
|
||||||
|
}
|
||||||
|
} catch (const std::invalid_argument &e) {
|
||||||
|
cg::Location loc = reference_waypoint->GetLocation();
|
||||||
|
carla::log_info(
|
||||||
|
"Unable to link lane change connection at: "
|
||||||
|
+ std::to_string(loc.x) + " "
|
||||||
|
+ std::to_string(loc.y) + " "
|
||||||
|
+ std::to_string(loc.z));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue