ad_map_access
AdMapMatching.hpp
Go to the documentation of this file.
1 // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 //
3 // Copyright (C) 2018-2021 Intel Corporation
4 //
5 // SPDX-License-Identifier: MIT
6 //
7 // ----------------- END LICENSE BLOCK -----------------------------------
12 #pragma once
13 
14 #include <list>
15 
16 #include "ad/map/match/Types.hpp"
18 #include "ad/map/route/Types.hpp"
19 
21 namespace ad {
23 namespace map {
25 namespace match {
26 
39 {
40 public:
44  AdMapMatching();
45 
49  ~AdMapMatching() = default;
50 
54  void setMaxHeadingHintFactor(double newHeadingHintFactor)
55  {
56  mHeadingHintFactor = std::max(1., newHeadingHintFactor);
57  }
58 
62  double getMaxHeadingHintFactor() const
63  {
64  return mHeadingHintFactor;
65  }
66 
70  void setRouteHintFactor(double newRouteHintFactor)
71  {
72  mRouteHintFactor = std::max(1., newRouteHintFactor);
73  }
74 
78  double getRouteHintFactor() const
79  {
80  return mRouteHintFactor;
81  }
82 
93  void addHeadingHint(point::ECEFHeading const &headingHint)
94  {
95  mHeadingHints.push_back(headingHint);
96  }
97 
107  void addHeadingHint(point::ENUHeading const &yaw, point::GeoPoint const &enuReferencePoint)
108  {
109  mHeadingHints.push_back(point::createECEFHeading(yaw, enuReferencePoint));
110  }
111 
116  {
117  mHeadingHints.clear();
118  }
119 
128  void addRouteHint(route::FullRoute const &routeHint)
129  {
130  mRouteHints.push_back(routeHint);
131  }
132 
137  {
138  mRouteHints.clear();
139  }
140 
144  void clearHints()
145  {
146  clearRouteHints();
148  }
149 
154  void setRelevantLanes(::ad::map::lane::LaneIdSet const &relevantLanes)
155  {
156  mRelevantLanes = relevantLanes;
157  }
158 
163  {
164  mRelevantLanes.clear();
165  }
166 
177  physics::Distance const &distance,
178  physics::Probability const &minProbability) const;
179 
191  point::GeoPoint const &enuReferencePoint,
192  physics::Distance const &distance,
193  physics::Probability const &minProbability) const;
194 
208  physics::Distance const &distance,
209  physics::Probability const &minProbability) const;
210 
226  physics::Distance const &distance,
227  physics::Probability const &minProbability);
228 
247  physics::Distance const &samplingDistance
248  = physics::Distance(1.)) const;
249 
266  physics::Distance const &samplingDistance
267  = physics::Distance(1.)) const;
268 
272  point::ENUHeading getLaneENUHeading(MapMatchedPosition const &mapMatchedPosition) const;
273 
287  physics::Distance const &distance,
288  ::ad::map::lane::LaneIdSet const &relevantLanes
289  = ::ad::map::lane::LaneIdSet());
290 
304  physics::Distance const &distance,
305  ::ad::map::lane::LaneIdSet const &relevantLanes
306  = ::ad::map::lane::LaneIdSet());
307 
320  route::FullRoute const &route);
321 
322 private:
323  // Copy operators and constructors are deleted to avoid accidental copies
324  AdMapMatching(AdMapMatching const &) = delete;
325  AdMapMatching(AdMapMatching &&) = delete;
326  AdMapMatching &operator=(AdMapMatching &&) = delete;
327  AdMapMatching &operator=(AdMapMatching const &) = delete;
328 
329  static match::MapMatchedPositionConfidenceList findLanesInputChecked(point::ECEFPoint const &ecefPoint,
330  physics::Distance const &distance,
331  ::ad::map::lane::LaneIdSet const &relevantLanes);
332 
334  findLanesInputChecked(std::vector<lane::Lane::ConstPtr> const &relevantLanes,
335  point::ECEFPoint const &ecefPoint,
336  physics::Distance const &distance);
337 
338  static std::vector<lane::Lane::ConstPtr> getRelevantLanesInputChecked(point::ECEFPoint const &ecefPoint,
339  physics::Distance const &distance);
340  static void normalizeResults(match::MapMatchedPositionConfidenceList &mapMatchingResults,
341  physics::Probability const &probabilitySum);
342 
344  findLanesInputCheckedAltitudeUnknown(point::GeoPoint const &geoPoint,
345  physics::Distance const &distance,
346  ::ad::map::lane::LaneIdSet const &relevantLanes);
347 
348  static std::vector<lane::Lane::ConstPtr>
349  getRelevantLanesInputChecked(point::ECEFPoint const &ecefPoint,
350  physics::Distance const &distance,
351  ::ad::map::lane::LaneIdSet const &relevantLanes);
352 
360  void addLaneRegions(LaneOccupiedRegionList &laneOccupiedRegions,
361  MapMatchedPositionConfidenceList const &mapMatchedPositions) const;
362  void addLaneRegions(LaneOccupiedRegionList &laneOccupiedRegions,
363  LaneOccupiedRegionList const &otherLaneOccupiedRegions) const;
364 
365  MapMatchedPositionConfidenceList considerMapMatchingHints(MapMatchedPositionConfidenceList const &mapMatchedPositions,
366  physics::Probability const &minProbability) const;
367  bool isLanePartOfRouteHints(lane::LaneId const &laneId) const;
368  double getHeadingFactor(MapMatchedPosition const &matchedPosition) const;
369 
370  std::list<point::ECEFHeading> mHeadingHints;
371  double mHeadingHintFactor{2.};
372  std::list<route::FullRoute> mRouteHints;
373  double mRouteHintFactor{10.};
374 
375  ::ad::map::lane::LaneIdSet mRelevantLanes;
376 };
377 
378 } // namespace match
379 } // namespace map
380 } // namespace ad
ad
namespace ad
Definition: GeometryStoreItem.hpp:28
ad::map::match::AdMapMatching::setRelevantLanes
void setRelevantLanes(::ad::map::lane::LaneIdSet const &relevantLanes)
set the lanes that are relevant for map matching All the rest of the lanes in the map are ignored.
Definition: AdMapMatching.hpp:154
Types.hpp
ad::map::match::ENUObjectPositionList
std::vector<::ad::map::match::ENUObjectPosition > ENUObjectPositionList
DataType ENUObjectPositionList.
Definition: ENUObjectPositionList.hpp:42
ad::map::match::AdMapMatching::clearRouteHints
void clearRouteHints()
clears the list of route hints
Definition: AdMapMatching.hpp:136
ad::map::match::AdMapMatching::addHeadingHint
void addHeadingHint(point::ECEFHeading const &headingHint)
add a hint for the heading of the vehicle/object
Definition: AdMapMatching.hpp:93
ad::map::point::ECEFHeading
DataType ECEFHeading.
Definition: ECEFHeading.hpp:45
ad::map::point::GeoPoint
DataType GeoPoint.
Definition: GeoPoint.hpp:47
ad::map::match::AdMapMatching::getLaneOccupiedRegions
LaneOccupiedRegionList getLaneOccupiedRegions(ENUObjectPositionList enuObjectPositionList, physics::Distance const &samplingDistance=physics::Distance(1.)) const
get the lane occupied regions from a list of ENUObjectPositionList
ad::map::match::AdMapMatching::getRouteHintFactor
double getRouteHintFactor() const
get the probability multiplier for valid route hints
Definition: AdMapMatching.hpp:78
ad::map::match::AdMapMatching::clearRelevantLanes
void clearRelevantLanes()
clear the list of relevant lanes.
Definition: AdMapMatching.hpp:162
ad::map::match::AdMapMatching::clearHeadingHints
void clearHeadingHints()
clears the list of heading hints
Definition: AdMapMatching.hpp:115
ad::map::point::ENUPoint
DataType ENUPoint.
Definition: ENUPoint.hpp:51
ad::map::point::distance
physics::Distance distance(BoundingSphere const &left, BoundingSphere const &right)
Computes distance between BoundingSpheres.
Definition: BoundingSphereOperation.hpp:29
ad::map::match::AdMapMatching::addRouteHint
void addRouteHint(route::FullRoute const &routeHint)
add a hint for the route of the vehicle/object
Definition: AdMapMatching.hpp:128
ad::map::match::AdMapMatching::setMaxHeadingHintFactor
void setMaxHeadingHintFactor(double newHeadingHintFactor)
set the maximum probability multiplier for heading hints
Definition: AdMapMatching.hpp:54
ad::map::lane::LaneId
DataType LaneId.
Definition: LaneId.hpp:66
ad::map::match::AdMapMatching
performs map matching of a given point to the map
Definition: AdMapMatching.hpp:38
ad::map::match::AdMapMatching::getMapMatchedPositions
MapMatchedPositionConfidenceList getMapMatchedPositions(point::GeoPoint const &geoPoint, physics::Distance const &distance, physics::Probability const &minProbability) const
get the map matched positions
ad::map::match::AdMapMatching::~AdMapMatching
~AdMapMatching()=default
destructor
ad::map::match::MapMatchedPositionConfidenceList
std::vector<::ad::map::match::MapMatchedPosition > MapMatchedPositionConfidenceList
DataType MapMatchedPositionConfidenceList.
Definition: MapMatchedPositionConfidenceList.hpp:44
ad::map::point::ENUHeading
DataType ENUHeading.
Definition: ENUHeading.hpp:65
ad::map::match::AdMapMatching::getLaneENUHeading
point::ENUHeading getLaneENUHeading(MapMatchedPosition const &mapMatchedPosition) const
Method to be called to retrieve the lane heading at a mapMatchedPosition.
ad::map::match::AdMapMatching::AdMapMatching
AdMapMatching()
default constructor
ad::map::match::MapMatchedObjectBoundingBox
DataType MapMatchedObjectBoundingBox.
Definition: MapMatchedObjectBoundingBox.hpp:45
ad::map::match::AdMapMatching::findRouteLanes
static MapMatchedPositionConfidenceList findRouteLanes(point::ECEFPoint const &ecefPoint, route::FullRoute const &route)
Spatial Lane Search. Returns the map matched position in respect to all Lanes of the given route.
ad::map::match::AdMapMatching::findLanes
static MapMatchedPositionConfidenceList findLanes(point::ECEFPoint const &ecefPoint, physics::Distance const &distance, ::ad::map::lane::LaneIdSet const &relevantLanes=::ad::map::lane::LaneIdSet())
Spatial Lane Search. Returns all Lanes where any part of surface is less than specified physics::Dist...
ad::map::match::AdMapMatching::getMapMatchedBoundingBox
MapMatchedObjectBoundingBox getMapMatchedBoundingBox(ENUObjectPosition const &enuObjectPosition, physics::Distance const &samplingDistance=physics::Distance(1.)) const
get the map matched bounding box
ad::map::match::AdMapMatching::clearHints
void clearHints()
clears route and heading hints at once
Definition: AdMapMatching.hpp:144
ad::map::match::AdMapMatching::setRouteHintFactor
void setRouteHintFactor(double newRouteHintFactor)
set the probability multiplier for valid route hints
Definition: AdMapMatching.hpp:70
ad::map::point::createECEFHeading
ECEFHeading createECEFHeading(ECEFPoint const &start, ECEFPoint const &end)
create a heading in ECEF as a directional vector
ad::map::point::ECEFPoint
DataType ECEFPoint.
Definition: ECEFPoint.hpp:45
Types.hpp
ad::map::match::AdMapMatching::addHeadingHint
void addHeadingHint(point::ENUHeading const &yaw, point::GeoPoint const &enuReferencePoint)
add a hint for the heading of the vehicle/object
Definition: AdMapMatching.hpp:107
ad::map::route::FullRoute
DataType FullRoute.
Definition: FullRoute.hpp:59
ad::map::match::LaneOccupiedRegionList
std::vector<::ad::map::match::LaneOccupiedRegion > LaneOccupiedRegionList
DataType LaneOccupiedRegionList.
Definition: LaneOccupiedRegionList.hpp:42
ad::map::match::MapMatchedPosition
DataType MapMatchedPosition.
Definition: MapMatchedPosition.hpp:49
ad::map::match::ENUObjectPosition
DataType ENUObjectPosition.
Definition: ENUObjectPosition.hpp:46
Operation.hpp
ad::map::match::AdMapMatching::getMaxHeadingHintFactor
double getMaxHeadingHintFactor() const
get the maximum probability multiplier for heading hints
Definition: AdMapMatching.hpp:62