Go to the documentation of this file.
33 namespace intersection {
320 route::RoadSegmentList::const_iterator
const &lastSegmentBeforeIntersection,
321 route::RoadSegmentList::const_iterator
const &firstSegmentWithinIntersection);
333 lane::LaneIdSet mLanesOnRoute;
339 lane::LaneIdSet mIncomingLanesOnRoute;
345 lane::LaneIdSet mInternalLanesWithHigherPriority;
349 lane::LaneIdSet mInternalLanesWithLowerPriority;
352 lane::LaneIdSet mInternalLanesFromSameIntersectionArm;
355 lane::LaneIdSet mIncomingLanes;
361 lane::LaneIdSet mOutgoingLanesOnRoute{};
370 lane::LaneIdSet mIncomingLanesWithHigherPriority;
376 lane::LaneIdSet mIncomingLanesWithLowerPriority;
379 lane::LaneIdSet mCrossingLanes;
382 std::map<TurnDirection, lane::LaneIdSet> mIntersectionArms;
389 physics::Speed mSpeedLimit;
392 lane::LaneIdSet
const &successors,
395 void extractIncomingLanes();
396 void extractCrossingLanes();
397 void extractLanesWithHigherPriority();
398 void extractLanesWithLowerPriority();
399 void extractLanesFromSameIntersectionArm();
400 void calculateParaPoints();
408 void calculateEnteringProrityParaPoints();
437 void orderIntersectionArmsAndExtractTurnDirection();
464 void adjustLanesForHasWay();
486 void adjustLanesForYield();
516 void adjustPriorityToRight();
523 void adjustLanesForTrafficLight();
531 bool turnDirectionCrossesStraightTraffic()
const;
536 lane::LaneIdSet successorsOnRouteLeavingIntersection(
route::FullRoute const &route,
537 route::RoadSegmentList::const_iterator
const &roadSegmentIt,
541 route::RoadSegmentList::const_iterator
const &roadSegmentIt,
544 lane::LaneIdSet successorsOnRouteLeavingIntersection(
route::LaneSegment const &laneSegment);
546 void calculateSpeedLimit();
556 void addLaneAndSuccessorsToInternalLanesWithHigherPriority(
lane::LaneId const &lanes,
568 void addLaneAndSuccessorsToInternalLanesWithHigherPriority(lane::LaneIdSet
const &lanes,
580 void addLaneAndSuccessorsToInternalLanesWithHigherPriorityIfCrossing(
591 void addLaneAndSuccessorsToInternalLanesWithHigherPriorityIfCrossing(
627 stringstream sstream;
628 sstream << intersection;
629 return sstream.str();
const point::ParaPointList & incomingParaPoints() const
namespace ad
Definition: GeometryStoreItem.hpp:28
struct defining iterator information on a route
Definition: RouteOperation.hpp:41
route::RoutePlanningCounter getRoutePlanningCounter() const
const point::ParaPointList & outgoingParaPoints() const
bool objectRouteOppositeToIntersectionRoute(route::FullRoute const &objectRoute) const
bool objectOnIncomingLane(match::MapMatchedObjectBoundingBox const &object) const
IntersectionType intersectionType() const
const landmark::LandmarkIdSet & applicableTrafficLights() const
return all traffic lights that are relevant for following the route
Logical representation of an intersection along the route.
Definition: Intersection.hpp:65
const lane::LaneIdSet & internalLanesWithHigherPriority() const
bool objectRouteCrossesLanesWithHigherPriority(route::FullRoute const &objectRoute) const
bool objectOnLaneWithHigherPriority(match::MapMatchedObjectBoundingBox const &object) const
const point::ParaPointList & outgoingParaPointsOnRoute() const
route::RouteParaPoint getIntersectionStartOnRoute() const
DataType Object.
Definition: Object.hpp:43
uint64_t SegmentCounter
DataType SegmentCounter.
Definition: SegmentCounter.hpp:41
DataType LandmarkId.
Definition: LandmarkId.hpp:66
DataType LaneSegment.
Definition: LaneSegment.hpp:53
bool objectOnIncomingLaneWithLowerPriority(match::MapMatchedObjectBoundingBox const &object) const
route::SegmentCounter getRouteSegmentCountFromDestination() const
uint64_t RoutePlanningCounter
DataType RoutePlanningCounter.
Definition: RoutePlanningCounter.hpp:39
bool objectOnInternalLaneWithLowerPriority(match::MapMatchedObjectBoundingBox const &object) const
const point::ParaPointList & paraPointsOnRoute() const
std::string to_string(::ad::map::access::GeometryStoreItem const &value)
overload of the std::to_string for GeometryStoreItem
Definition: GeometryStoreItem.hpp:183
bool objectRouteCrossesIntersectionRoute(route::FullRoute const &objectRoute) const
const lane::LaneIdSet & lanesOnRoute() const
bool objectOnIntersectionRoute(match::MapMatchedObjectBoundingBox const &object) const
DataType LaneId.
Definition: LaneId.hpp:66
const lane::LaneIdSet & outgoingLanes() const
std::shared_ptr< Intersection > IntersectionPtr
typedef for shared_ptr of Intersection class
Definition: Intersection.hpp:38
std::vector<::ad::map::point::ParaPoint > ParaPointList
DataType ParaPointList.
Definition: ParaPointList.hpp:42
TrafficLightType
DataType TrafficLightType.
Definition: TrafficLightType.hpp:43
bool objectRouteFromSameArmAsIntersectionRoute(route::FullRoute const &objectRoute) const
const lane::LaneIdSet & incomingLanesOnRoute() const
std::shared_ptr< Intersection const > IntersectionConstPtr
typedef for shared_ptr of const Intersection class
Definition: Intersection.hpp:48
const point::ParaPointList & incomingParaPointsWithHigherPriority() const
const lane::LaneIdSet & incomingLanes() const
IntersectionType
DataType IntersectionType.
Definition: IntersectionType.hpp:43
bool objectOnLaneWithLowerPriority(match::MapMatchedObjectBoundingBox const &object) const
DataType MapMatchedObjectBoundingBox.
Definition: MapMatchedObjectBoundingBox.hpp:45
TurnDirection
DataType TurnDirection.
Definition: TurnDirection.hpp:43
physics::Speed getSpeedLimit() const
return the speed limit of this intersection
DataType RouteParaPoint.
Definition: RouteParaPoint.hpp:45
const lane::LaneIdSet & incomingLanesWithHigherPriority() const
const lane::LaneIdSet & internalLanesWithLowerPriority() const
std::set< LandmarkId > LandmarkIdSet
Set to store landmark identifiers.
Definition: LandmarkIdSet.hpp:30
TurnDirection turnDirection() const
const lane::LaneIdSet & crossingLanes() const
bool objectOnIncomingLaneWithHigherPriority(match::MapMatchedObjectBoundingBox const &object) const
static IntersectionPtr getIntersectionForRoadSegment(route::RouteIterator const &routeIterator)
retrieve the intersection for the given routeIterator
DataType FullRoute.
Definition: FullRoute.hpp:59
static std::vector< IntersectionPtr > getIntersectionsForRoute(route::FullRoute const &route)
retrieve all intersections for the given route
bool onlySolidTrafficLightsOnRoute()
checks if there is just solid traffic lights on the intersection entry.
const lane::LaneIdSet & outgoingLanesOnRoute() const
bool objectOnCrossingLane(match::MapMatchedObjectBoundingBox const &object) const
DataType LaneInterval.
Definition: LaneInterval.hpp:51
Definition: CoreIntersection.hpp:58
const lane::LaneIdSet & incomingLanesWithLowerPriority() const
bool objectOnInternalLaneWithHigherPriority(match::MapMatchedObjectBoundingBox const &object) const
static IntersectionPtr getNextIntersectionOnRoute(route::FullRoute const &route)
retrieve the next intersection for the given route
const point::ParaPointList & incomingParaPointsWithLowerPriority() const
const point::ParaPointList & incomingParaPointsOnRoute() const
physics::Distance objectInterpenetrationDistanceWithIntersection(match::Object const &object) const
calculate and return the physics::Distance the object interpenetrates with the intersection
void updateRouteCounters(route::RoutePlanningCounter newRoutePlanningCounter, route::SegmentCounter newRouteSegmentCounter)
update the route counters according to new route