ad_rss_map_integration
RssWorldModelCreation.hpp
Go to the documentation of this file.
1 // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 //
3 // Copyright (C) 2018-2022 Intel Corporation
4 //
5 // SPDX-License-Identifier: LGPL-2.1-only
6 //
7 // ----------------- END LICENSE BLOCK -----------------------------------
12 #pragma once
13 
14 #include <ad/map/landmark/Types.hpp>
15 #include <ad/map/lane/Types.hpp>
16 #include <ad/map/route/Types.hpp>
22 #include <ad/rss/world/WorldModel.hpp>
23 #include <mutex>
24 #include <ostream>
25 #include <string>
26 
28 
32 namespace ad {
36 namespace rss {
40 namespace map {
41 
42 class RssWorldModelCreator;
43 class RssObjectConversion;
44 
51 {
52 public:
61  RssWorldModelCreation(::ad::rss::world::TimeIndex const &time_index,
62  ::ad::rss::world::RssDynamics const &defaultEgoRssDynamics);
63 
73  RssWorldModelCreation(::ad::rss::world::TimeIndex const &time_index,
74  ::ad::rss::world::RssDynamics const &defaultEgoRssDynamics,
75  ConnectingRoutesCache &connecting_routes_cache);
76 
81 
85  void setRouteId(::ad::rss::map::RssRouteId const &route_id)
86  {
87  mRouteId = route_id;
88  }
89 
96  ad::physics::Distance const minimumDistanceToObjectsThatHaveToBeAnalyzed)
97  {
98  mMinimumDistanceToObjectsThatHaveToBeAnalyzed = minimumDistanceToObjectsThatHaveToBeAnalyzed;
99  }
100 
121  bool appendConstellations(RssObjectData const &egoObjectData,
122  ::ad::map::route::FullRoute const &egoRoute,
123  RssObjectData const &otherObjectData,
124  RssRestrictSpeedLimitMode const &restrict_speed_limit_mode,
125  ::ad::map::landmark::LandmarkIdSet const &greenTrafficLights,
127  ::ad::map::lane::LaneIdSet const &relevantLanes = ::ad::map::lane::LaneIdSet());
128 
151  bool appendConstellations(RssObjectData const &egoObjectData,
152  ::ad::map::route::FullRoute const &egoRoute,
153  RssObjectData const &otherObjectData,
154  RssRestrictSpeedLimitMode const &restrict_speed_limit_mode,
155  ::ad::map::landmark::LandmarkIdSet const &greenTrafficLights,
157  RssRouteList const &egoObjectPredictionHints,
158  RssRouteList const &otherObjectPredictionHints,
159  ::ad::map::lane::LaneIdSet const &relevantLanes = ::ad::map::lane::LaneIdSet());
160 
173  bool appendRoadBoundaries(RssObjectData const &egoObjectData,
174  ::ad::map::route::FullRoute const &route,
175  RssAppendRoadBoundariesMode const operationMode);
176 
184  ::ad::rss::world::WorldModel getWorldModel();
185 
192  static const ::ad::physics::Distance cMinConnectedRouteLength;
193 
194 private:
195  friend class RssWorldModelCreator;
196 
197  bool appendStructuredConstellations(::ad::rss::map::RssWorldModelCreator &constellationCreator,
198  std::shared_ptr<RssObjectConversion const> const &egoObject,
199  ::ad::map::route::FullRoute const &egoRoute,
200  std::shared_ptr<RssObjectConversion const> const &otherObject,
201  RssRouteList const &egoObjectPredictionHints,
202  RssRouteList const &otherObjectPredictionHints,
203  ::ad::map::lane::LaneIdSet const &relevantLanes,
204  ::ad::physics::Distance const &maxConnectingRouteDistance);
205 
206  bool appendConstellationToWorldModel(::ad::rss::world::Constellation const &constellation);
207 
208  ::ad::rss::world::WorldModel mWorldModel;
209  bool mFinalized;
210  std::mutex mWorldModelLock;
211  ::ad::rss::map::RssRouteId mRouteId{0};
212  ad::physics::Distance mMinimumDistanceToObjectsThatHaveToBeAnalyzed{RssWorldModelCreation::cMinConnectedRouteLength};
213  ConnectingRoutesCache *mConnectingRoutesCache;
214 };
215 
216 } // namespace map
217 } // namespace rss
218 } // namespace ad
class to cache ConnectingRouteList between vehicles to speed up world model creation
Definition: ConnectingRoutesCache.hpp:36
class providing supporting functions to create a world model and its constellations.
Definition: RssWorldModelCreation.hpp:51
RssWorldModelCreation(::ad::rss::world::TimeIndex const &time_index, ::ad::rss::world::RssDynamics const &defaultEgoRssDynamics)
create a constellation creation object
static const ::ad::physics::Distance cMinConnectedRouteLength
constant defining the minimum lenght to be used for the search of connected routes
Definition: RssWorldModelCreation.hpp:192
void setRouteId(::ad::rss::map::RssRouteId const &route_id)
Setter for a route_id provided on debug output.
Definition: RssWorldModelCreation.hpp:85
~RssWorldModelCreation()=default
default destructor
bool appendConstellations(RssObjectData const &egoObjectData, ::ad::map::route::FullRoute const &egoRoute, RssObjectData const &otherObjectData, RssRestrictSpeedLimitMode const &restrict_speed_limit_mode, ::ad::map::landmark::LandmarkIdSet const &greenTrafficLights, ::ad::rss::map::RssConstellationCreationMode const &mode, ::ad::map::lane::LaneIdSet const &relevantLanes=::ad::map::lane::LaneIdSet())
create possible constellations between ego vehicle and the object
bool appendConstellations(RssObjectData const &egoObjectData, ::ad::map::route::FullRoute const &egoRoute, RssObjectData const &otherObjectData, RssRestrictSpeedLimitMode const &restrict_speed_limit_mode, ::ad::map::landmark::LandmarkIdSet const &greenTrafficLights, ::ad::rss::map::RssConstellationCreationMode const &mode, RssRouteList const &egoObjectPredictionHints, RssRouteList const &otherObjectPredictionHints, ::ad::map::lane::LaneIdSet const &relevantLanes=::ad::map::lane::LaneIdSet())
create possible constellations between ego vehicle and the object
RssWorldModelCreation(::ad::rss::world::TimeIndex const &time_index, ::ad::rss::world::RssDynamics const &defaultEgoRssDynamics, ConnectingRoutesCache &connecting_routes_cache)
create a constellation creation object
void setMinimumDistanceToObjectsThatHaveToBeAnalyzed(ad::physics::Distance const minimumDistanceToObjectsThatHaveToBeAnalyzed)
Sets the distance below which a detailed analysis becomes necessary regardless of the objects stoppin...
Definition: RssWorldModelCreation.hpp:95
bool appendRoadBoundaries(RssObjectData const &egoObjectData, ::ad::map::route::FullRoute const &route, RssAppendRoadBoundariesMode const operationMode)
create constellations between ego vehicle and road boundaries
::ad::rss::world::WorldModel getWorldModel()
get the final world model object
class providing support to create the RSS world model and append RSS Constellations
Definition: RssWorldModelCreator.hpp:39
std::vector<::ad::rss::map::RssRoute > RssRouteList
DataType RssRouteList.
Definition: RssRouteList.hpp:42
RssAppendRoadBoundariesMode
DataType RssAppendRoadBoundariesMode.
Definition: RssAppendRoadBoundariesMode.hpp:44
RssConstellationCreationMode
DataType RssConstellationCreationMode.
Definition: RssConstellationCreationMode.hpp:44
RssRestrictSpeedLimitMode
DataType RssRestrictSpeedLimitMode.
Definition: RssRestrictSpeedLimitMode.hpp:44
uint64_t RssRouteId
DataType RssRouteId.
Definition: RssRouteId.hpp:39
namespace ad
Definition: RouteAccelerations.hpp:33
DataType RssObjectData.
Definition: RssObjectData.hpp:52