ad_rss_map_integration
RssRouteCheckerData.hpp
Go to the documentation of this file.
1 // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 //
3 // Copyright (C) 2019-2021 Intel Corporation
4 //
5 // SPDX-License-Identifier: LGPL-2.1-only
6 //
7 // ----------------- END LICENSE BLOCK -----------------------------------
12 #pragma once
13 
14 #include <map>
15 #include "ad/rss/core/RssCheck.hpp"
17 
21 namespace ad {
25 namespace rss {
29 namespace map {
30 
35 {
36 public:
40 
44 
48 
52 
56  {
57  return mRssObjectData.id < other.mRssObjectData.id;
58  }
59 
61  bool mActive{false};
62 
64  bool mClearObjectHistory{false};
65 
68 };
69 
73 template <class OBJECT_INSTANCE_TYPE> class RssRouteCheckerPedestrianData : public RssRouteCheckerObjectData
74 {
75 public:
79 
83 
87 
91 
93 
95  void updateAdapter(typename RssPedestrianAdapterType::Ptr artificialObjectAdapter)
96  {
97  mPedestrianAdapter = artificialObjectAdapter;
98  }
99 
102  {
103  return mPedestrianAdapter;
104  }
105 
108  {
109  return mPedestrianAdapter;
110  }
111 
114 
115 protected:
118 };
119 
123 template <class OBJECT_INSTANCE_TYPE> class RssRouteCheckerVehicleData : public RssRouteCheckerObjectData
124 {
125 public:
129 
133 
137 
141 
143 
145 
146  void updateAdapter(typename RssVehicleAdapterType::Ptr vehicleAdapter)
147  {
148  mVehicleAdapter = vehicleAdapter;
149  }
150 
153  {
154  return mVehicleAdapter;
155  }
156 
159  {
160  return mVehicleAdapter;
161  }
162 
165  {
171  };
172 
181  void updateRoutes(::ad::physics::Distance const routePreviewDistance,
182  ::ad::map::lane::LaneIdSet const &mapAreaLanes,
184 
190 
195 
198 
200  std::vector<::ad::map::point::ENUPoint> mRoutingTargets;
201 
202 protected:
206  std::vector<::ad::map::point::ENUPoint> handleRoutingTargets();
207 
218  std::vector<::ad::map::route::FullRoute> createRoutes(::ad::physics::Distance const routePreviewDistance,
219  ::ad::map::lane::LaneIdSet const &mapAreaLanes);
220 
229  void shortenRoutes();
230 
237  void extendRoutes(::ad::physics::Distance const routePreviewDistance,
238  std::vector<::ad::map::point::ENUPoint> const &routingTargetsToAppend,
239  ::ad::map::lane::LaneIdSet const &mapAreaLanes);
240 
241  RssRouteId mNextRouteId{1};
242  bool mExternalRoutes{false};
243 
246 };
247 
251 typedef std::map<RssRouteId, ::ad::rss::core::RssCheck::Ptr> RssRouteCheckMap;
252 
256 template <class OBJECT_INSTANCE_TYPE>
257 class RssRouteCheckerEgoVehicleData : public RssRouteCheckerVehicleData<OBJECT_INSTANCE_TYPE>
258 {
259 public:
263 
267 
271 
275 
277 
279  void updateAdapter(typename RssEgoVehicleAdapterType::Ptr egoVehicleAdapter)
280  {
282  mEgoVehicleAdapter = egoVehicleAdapter;
283  }
284 
287  {
288  return mEgoVehicleAdapter;
289  }
290 
293  {
294  return mEgoVehicleAdapter;
295  }
296 
302 
308  void evaluateRoutes();
309 
312 
316 
317 protected:
320 
324 };
325 
329 template <class OBJECT_INSTANCE_TYPE> class RssRouteCheckerArtificialObjectData : public RssRouteCheckerObjectData
330 {
331 public:
335 
339 
343 
347 
350  {
351  mArtificialObjectAdapter = artificialObjectAdapter;
352  }
353 
356  {
358  }
359 
362  {
364  }
365 
366 protected:
369 };
370 
373 template <class OBJECT_INSTANCE_TYPE>
375  = std::map<::ad::rss::world::ObjectId, RssRouteCheckerPedestrianData<OBJECT_INSTANCE_TYPE>>;
376 
379 template <class OBJECT_INSTANCE_TYPE>
381  = std::map<::ad::rss::world::ObjectId, RssRouteCheckerVehicleData<OBJECT_INSTANCE_TYPE>>;
382 
385 template <class OBJECT_INSTANCE_TYPE>
387  = std::map<::ad::rss::world::ObjectId, RssRouteCheckerEgoVehicleData<OBJECT_INSTANCE_TYPE>>;
388 
391 template <class OBJECT_INSTANCE_TYPE>
393  = std::map<::ad::rss::world::ObjectId, RssRouteCheckerArtificialObjectData<OBJECT_INSTANCE_TYPE>>;
394 
395 } // namespace map
396 } // namespace rss
397 } // namespace ad
398 
399 #include "ad/rss/map/detail/RssRouteCheckerDataDetail.hpp"
std::shared_ptr< RssArtificialObjectAdapter const > ConstPtr
Smart pointer on constant RssArtificialObjectAdapter.
Definition: RssObjectAdapter.hpp:264
std::shared_ptr< RssArtificialObjectAdapter > Ptr
Smart pointer on RssArtificialObjectAdapter.
Definition: RssObjectAdapter.hpp:259
Base class to access ego vehicle information required to perform the RSS checks in conjunction with t...
Definition: RssObjectAdapter.hpp:531
std::shared_ptr< RssEgoVehicleAdapter > Ptr
Smart pointer on RssEgoVehicleAdapter.
Definition: RssObjectAdapter.hpp:536
std::shared_ptr< RssEgoVehicleAdapter const > ConstPtr
Smart pointer on constant RssEgoVehicleAdapter.
Definition: RssObjectAdapter.hpp:541
Definition: RssObjectAdapter.hpp:191
std::shared_ptr< RssPedestrianAdapter const > ConstPtr
Smart pointer on constant RssPedestrianAdapter.
Definition: RssObjectAdapter.hpp:201
std::shared_ptr< RssPedestrianAdapter > Ptr
Smart pointer on RssPedestrianAdapter.
Definition: RssObjectAdapter.hpp:196
Class to store data of RssArtificialObjectAdapter.
Definition: RssRouteCheckerData.hpp:330
RssRouteCheckerArtificialObjectData(RssRouteCheckerArtificialObjectData const &other)=default
default copy constructor
RssRouteCheckerArtificialObjectData & operator=(const RssRouteCheckerArtificialObjectData &other)=default
default assignment operator
RssArtificialObjectAdapter< OBJECT_INSTANCE_TYPE >::Ptr mArtificialObjectAdapter
the current RssArtificialObjectAdapter
Definition: RssRouteCheckerData.hpp:368
RssArtificialObjectAdapter< OBJECT_INSTANCE_TYPE >::ConstPtr getAdapter() const
function to get the adapter class of this
Definition: RssRouteCheckerData.hpp:361
RssRouteCheckerArtificialObjectData()=default
default constructor
RssArtificialObjectAdapter< OBJECT_INSTANCE_TYPE >::Ptr getAdapter()
function to get the adapter class of this
Definition: RssRouteCheckerData.hpp:355
void updateAdapter(typename RssArtificialObjectAdapter< OBJECT_INSTANCE_TYPE >::Ptr artificialObjectAdapter)
function to update the adapter class of this
Definition: RssRouteCheckerData.hpp:349
~RssRouteCheckerArtificialObjectData()=default
default destrutor
Class to store data of RssVehicleAdapter.
Definition: RssRouteCheckerData.hpp:258
RssRouteCheckerEgoVehicleData()=default
default constructor
RssEgoVehicleAdapterType::Ptr mEgoVehicleAdapter
the current RssEgoVehicleAdapter
Definition: RssRouteCheckerData.hpp:319
RssRouteCheckerEgoVehicleData(RssRouteCheckerEgoVehicleData const &other)=default
default copy constructor
void updateVehicleDynamicsOnRoutes()
Supporting function to update the vehicle dynamics on route.
Definition: RssRouteCheckerDataDetail.hpp:476
RssEgoVehicleAdapterType::ConstPtr getAdapter() const
function to get the adapter class of this
Definition: RssRouteCheckerData.hpp:292
void updateAdapter(typename RssEgoVehicleAdapterType::Ptr egoVehicleAdapter)
function to update the adapter class of this
Definition: RssRouteCheckerData.hpp:279
RssRouteCheckerEgoVehicleData & operator=(const RssRouteCheckerEgoVehicleData &other)=default
default assignment operator
RssEgoVehicleAdapterType::Ptr getAdapter()
function to get the adapter class of this
Definition: RssRouteCheckerData.hpp:286
void evaluateRoutes()
Supporting function to evaluate current route likelihood in respect to the VehicleDynamicsOnRoute.
Definition: RssRouteCheckerDataDetail.hpp:525
RssRouteCheckMap mRssRouteCheckMap
the current RssRouteCheckMap
Definition: RssRouteCheckerData.hpp:311
~RssRouteCheckerEgoVehicleData()=default
default destrutor
Class to store data of RssObjectAdapter.
Definition: RssRouteCheckerData.hpp:35
bool mActive
flag indicating if the object is active
Definition: RssRouteCheckerData.hpp:61
RssRouteCheckerObjectData(const RssRouteCheckerObjectData &other)=default
default copy constructor
RssRouteCheckerObjectData & operator=(const RssRouteCheckerObjectData &other)=default
default assignment operator
RssRouteCheckerObjectData()=default
default constructor
RssObjectData mRssObjectData
the actual RssObjectData of this
Definition: RssRouteCheckerData.hpp:67
~RssRouteCheckerObjectData()=default
default destrutor
bool operator<(RssRouteCheckerObjectData const &other)
sorting operator to enable map usage
Definition: RssRouteCheckerData.hpp:55
bool mClearObjectHistory
flag indicating if the object's history has to be cleared
Definition: RssRouteCheckerData.hpp:64
Class to store data of RssPedestrianAdapter.
Definition: RssRouteCheckerData.hpp:74
RssPedestrianAdapterType::Ptr mPedestrianAdapter
the current RssPedestrianAdapter
Definition: RssRouteCheckerData.hpp:117
RssPedestrianAdapterType::ConstPtr getAdapter() const
function to get the adapter class of this
Definition: RssRouteCheckerData.hpp:107
~RssRouteCheckerPedestrianData()=default
default destrutor
RssRouteCheckerPedestrianData()=default
default constructor
RssRouteCheckerPedestrianData & operator=(const RssRouteCheckerPedestrianData &other)=default
default assignment operator
RssRouteCheckerPedestrianData(RssRouteCheckerPedestrianData const &other)=default
default copy constructor
void updateAdapter(typename RssPedestrianAdapterType::Ptr artificialObjectAdapter)
function to update the adapter class of this
Definition: RssRouteCheckerData.hpp:95
RssPedestrianAdapterType::Ptr getAdapter()
function to get the adapter class of this
Definition: RssRouteCheckerData.hpp:101
Class to store data of RssVehicleAdapter.
Definition: RssRouteCheckerData.hpp:124
std::vector<::ad::map::point::ENUPoint > mRoutingTargets
the list of routing target to be used for routing purposes
Definition: RssRouteCheckerData.hpp:200
std::vector<::ad::map::route::FullRoute > createRoutes(::ad::physics::Distance const routePreviewDistance, ::ad::map::lane::LaneIdSet const &mapAreaLanes)
Supporting function to create new routes.
Definition: RssRouteCheckerDataDetail.hpp:291
void updateAdapter(typename RssVehicleAdapterType::Ptr vehicleAdapter)
function to update the adapter class of this
Definition: RssRouteCheckerData.hpp:146
std::vector<::ad::map::point::ENUPoint > handleRoutingTargets()
Supporting function to process routing targets.
Definition: RssRouteCheckerDataDetail.hpp:93
RssRouteList mRoutes
the sorted list of routes
Definition: RssRouteCheckerData.hpp:194
void extendRoutes(::ad::physics::Distance const routePreviewDistance, std::vector<::ad::map::point::ENUPoint > const &routingTargetsToAppend, ::ad::map::lane::LaneIdSet const &mapAreaLanes)
Supporting function to extend the predicted routes.
Definition: RssRouteCheckerDataDetail.hpp:181
RouteExtensionMode
enumeration defining the mode on route extension
Definition: RssRouteCheckerData.hpp:165
@ eAllowMultipleRoutes
allow the creation of all possible route candidates
RssVehicleAdapterType::ConstPtr getAdapter() const
function to get the adapter class of this
Definition: RssRouteCheckerData.hpp:158
RssVehicleAdapterType::Ptr mVehicleAdapter
the current RssVehicleAdapter
Definition: RssRouteCheckerData.hpp:245
RssRouteCheckerVehicleData(RssRouteCheckerVehicleData const &other)=default
default copy constructor
RssRouteCheckerVehicleData()=default
default constructor
void updateRoutes(::ad::physics::Distance const routePreviewDistance, ::ad::map::lane::LaneIdSet const &mapAreaLanes, RouteExtensionMode routeExtensionMode=RouteExtensionMode::eAllowMultipleRoutes)
Supporting function to update the routes of this.
Definition: RssRouteCheckerDataDetail.hpp:369
~RssRouteCheckerVehicleData()
default destrutor
Definition: RssRouteCheckerDataDetail.hpp:21
RssRouteCheckerVehicleData & operator=(const RssRouteCheckerVehicleData &other)=default
default assignment operator
void shortenRoutes()
Supporting function to shorten the predicted routes.
Definition: RssRouteCheckerDataDetail.hpp:127
void normalizeAndOrderRoutes()
Supporting function to normalize the sum of the route likelihood to 1.0 and reorder the list in desce...
Definition: RssRouteCheckerDataDetail.hpp:443
RouteExtensionMode mRouteExtensionMode
the current active route extension mode
Definition: RssRouteCheckerData.hpp:192
RssVehicleAdapterType::Ptr getAdapter()
function to get the adapter class of this
Definition: RssRouteCheckerData.hpp:152
Base class to access vehicle information required to perform the RSS checks in conjunction with the R...
Definition: RssObjectAdapter.hpp:362
std::shared_ptr< RssVehicleAdapter const > ConstPtr
Smart pointer on constant RssVehicleAdapter.
Definition: RssObjectAdapter.hpp:372
std::shared_ptr< RssVehicleAdapter > Ptr
Smart pointer on RssVehicleAdapter.
Definition: RssObjectAdapter.hpp:367
std::vector<::ad::rss::map::RssRoute > RssRouteList
DataType RssRouteList.
Definition: RssRouteList.hpp:42
std::map<::ad::rss::world::ObjectId, RssRouteCheckerEgoVehicleData< OBJECT_INSTANCE_TYPE > > RssRouteCheckerEgoVehicleDataMap
Definition: RssRouteCheckerData.hpp:387
std::map<::ad::rss::world::ObjectId, RssRouteCheckerArtificialObjectData< OBJECT_INSTANCE_TYPE > > RssRouteCheckerArtificialObjectDataMap
Definition: RssRouteCheckerData.hpp:393
std::map<::ad::rss::world::ObjectId, RssRouteCheckerVehicleData< OBJECT_INSTANCE_TYPE > > RssRouteCheckerVehicleDataMap
Definition: RssRouteCheckerData.hpp:381
uint64_t RssRouteId
DataType RssRouteId.
Definition: RssRouteId.hpp:39
std::map<::ad::rss::world::ObjectId, RssRouteCheckerPedestrianData< OBJECT_INSTANCE_TYPE > > RssRouteCheckerPedestrianDataMap
Definition: RssRouteCheckerData.hpp:375
std::map< RssRouteId, ::ad::rss::core::RssCheck::Ptr > RssRouteCheckMap
typedef for a RssCheck map in respect to the RssRouteId
Definition: RssRouteCheckerData.hpp:251
namespace ad
Definition: RouteAccelerations.hpp:33
DataType RssObjectData.
Definition: RssObjectData.hpp:52
::ad::rss::world::ObjectId id
Definition: RssObjectData.hpp:135