ad_map_access
Route.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 <ad/physics/Distance.hpp>
15 #include <ad/physics/Duration.hpp>
16 #include <vector>
18 #include "ad/map/route/Routing.hpp"
19 
21 namespace ad {
23 namespace map {
25 namespace route {
29 namespace planning {
30 
34 class Route
35 {
36 public:
40  struct RawRoute
41  {
46  physics::Distance routeDistance{0.};
48  physics::Duration routeDuration{0.};
49  };
50 
54  typedef std::vector<point::ParaPointList> BasicRoute;
55 
59  enum class Type
60  {
61  INVALID,
62  SHORTEST,
64  };
65 
74  Route(const RoutingParaPoint &start,
75  const RoutingParaPoint &dest,
76  physics::Distance const &maxDistance,
77  physics::Duration const &maxDuration,
78  Type const &routingType);
79 
80  Route(Route const &) = delete;
81  Route(Route const &&) = delete;
82  Route &operator=(Route const &) = delete;
83  Route &operator=(Route &&) = delete;
84 
88  virtual ~Route() = default;
89 
91  const point::ParaPoint &getStart() const
92  {
93  return mStart.point;
94  }
95 
98  {
99  return mStart;
100  }
101 
103  const point::ParaPoint &getDest() const
104  {
105  return mDest.point;
106  }
107 
110  {
111  return mDest;
112  }
113 
115  Type getType() const
116  {
117  return mType;
118  }
119 
123  bool laneDirectionIsIgnored() const;
124 
129  virtual bool calculate() = 0;
130 
134  bool isValid() const
135  {
136  return mValid;
137  }
138 
140  const RawRoute &getRawRoute(size_t const routeIndex = 0u) const;
141 
143  const std::vector<RawRoute> &getRawRoutes() const
144  {
145  return mRawRoutes;
146  }
147 
149  BasicRoute getBasicRoute(size_t const routeIndex = 0u) const;
150 
152  std::vector<BasicRoute> getBasicRoutes() const;
153 
154 protected:
160  physics::Distance const mMaxDistance;
162  physics::Duration const mMaxDuration;
166  bool mValid;
168  std::vector<RawRoute> mRawRoutes;
169 };
170 
171 inline std::ostream &operator<<(std::ostream &os, Route::RawRoute const &value)
172 {
173  os << "Route::RawRoute("
174  << " routeDistance:" << value.routeDistance << " routeDuration:" << value.routeDuration
175  << " paraPoints:" << value.paraPointList << ")";
176  return os;
177 }
178 
179 } // namespace planning
180 } // namespace route
181 } // namespace map
182 } // namespace ad
ad
namespace ad
Definition: GeometryStoreItem.hpp:28
ad::map::route::planning::Route::Route
Route(const RoutingParaPoint &start, const RoutingParaPoint &dest, physics::Distance const &maxDistance, physics::Duration const &maxDuration, Type const &routingType)
Constructor. Calculates route between two points.
ad::map::route::planning::Route::getRawRoute
const RawRoute & getRawRoute(size_t const routeIndex=0u) const
ad::map::route::planning::Route::getBasicRoutes
std::vector< BasicRoute > getBasicRoutes() const
ad::map::route::planning::Route::getStart
const point::ParaPoint & getStart() const
Definition: Route.hpp:91
ad::map::route::planning::Route::getRoutingStart
const RoutingParaPoint & getRoutingStart() const
Definition: Route.hpp:97
ad::map::route::planning::Route::mStart
RoutingParaPoint mStart
Start point.
Definition: Route.hpp:156
ad::map::route::planning::Route::RawRoute::paraPointList
point::ParaPointList paraPointList
the list of ParaPoints that contain the route planning output
Definition: Route.hpp:44
ParaPointList.hpp
ad::map::point::ParaPoint
DataType ParaPoint.
Definition: ParaPoint.hpp:48
ad::map::route::planning::Route::Type::INVALID
@ INVALID
Invalid value.
ad::map::route::planning::Route::getType
Type getType() const
Definition: Route.hpp:115
ad::map::route::planning::Route::mMaxDuration
const physics::Duration mMaxDuration
prediction duration to be used
Definition: Route.hpp:162
ad::map::route::planning::Route::getRawRoutes
const std::vector< RawRoute > & getRawRoutes() const
Definition: Route.hpp:143
ad::map::route::planning::Route::RawRoute::routeDistance
physics::Distance routeDistance
the distance covered by the route
Definition: Route.hpp:46
ad::map::route::planning::Route::Type
Type
Routing type.
Definition: Route.hpp:59
ad::map::route::planning::Route::mMaxDistance
const physics::Distance mMaxDistance
prediction distance to be used
Definition: Route.hpp:160
ad::map::route::planning::Route::calculate
virtual bool calculate()=0
Performs the routing.
ad::map::route::planning::Route::getRoutingDest
const RoutingParaPoint & getRoutingDest() const
Definition: Route.hpp:109
ad::map::route::planning::Route::laneDirectionIsIgnored
bool laneDirectionIsIgnored() const
ad::map::route::planning::Route::isValid
bool isValid() const
Definition: Route.hpp:134
ad::map::route::planning::Route::mValid
bool mValid
Indicates if calculation was successful.
Definition: Route.hpp:166
ad::map::point::ParaPointList
std::vector<::ad::map::point::ParaPoint > ParaPointList
DataType ParaPointList.
Definition: ParaPointList.hpp:42
ad::map::route::planning::Route
Implements routing on the lane network.
Definition: Route.hpp:34
ad::map::route::planning::Route::RawRoute::routeDuration
physics::Duration routeDuration
the duration required by the route
Definition: Route.hpp:48
ad::map::route::planning::Route::getDest
const point::ParaPoint & getDest() const
Definition: Route.hpp:103
ad::map::route::planning::Route::~Route
virtual ~Route()=default
Destructor.
ad::map::route::planning::Route::Type::SHORTEST
@ SHORTEST
Shortest route by distance.
ad::map::route::planning::Route::getBasicRoute
BasicRoute getBasicRoute(size_t const routeIndex=0u) const
ad::map::route::planning::Route::BasicRoute
std::vector< point::ParaPointList > BasicRoute
Basic route description.
Definition: Route.hpp:54
ad::map::route::planning::Route::RawRoute
Basic route description.
Definition: Route.hpp:40
Routing.hpp
ad::map::route::planning::RoutingParaPoint
routing para point
Definition: Routing.hpp:44
ad::map::route::planning::Route::Type::SHORTEST_IGNORE_DIRECTION
@ SHORTEST_IGNORE_DIRECTION
Shortest route by distance, allow to drive also in lanes with other direction.
ad::map::route::planning::Route::mType
Type mType
Type of the route to be calculated.
Definition: Route.hpp:164
ad::map::route::planning::Route::mDest
RoutingParaPoint mDest
Destination point.
Definition: Route.hpp:158