ad_rss_map_integration
RssObjectConversion.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: LGPL-2.1-only
6 //
7 // ----------------- END LICENSE BLOCK -----------------------------------
12 #pragma once
13 
14 #include <ad/map/route/FullRoute.hpp>
16 #include <ad/rss/world/Object.hpp>
17 #include <memory>
18 
22 namespace ad {
26 namespace rss {
30 namespace map {
31 
36 {
37 public:
41  using Ptr = std::shared_ptr<RssObjectConversion>;
42 
46  using ConstPtr = std::shared_ptr<RssObjectConversion const>;
47 
53  explicit RssObjectConversion(RssObjectData const &object_data);
54 
61  RssObjectConversion(RssObjectData const &object_data,
62  ::ad::rss::world::OccupiedRegionVector const &objectOccupiedRegions);
63 
67  RssObjectConversion(const RssObjectConversion &other) = default;
68 
73 
77  ~RssObjectConversion() = default;
78 
83 
88 
94  ::ad::rss::world::RssDynamics getRssDynamics() const;
95 
101  ::ad::rss::world::Object const &getRssObject() const;
102 
104  ::ad::rss::world::ObjectId getId() const;
105 
118  static bool calculateConservativeMinStoppingDistance(::ad::rss::world::ObjectId const &object_id,
119  ::ad::physics::Speed const &current_speed,
120  ::ad::rss::world::RssDynamics const &rss_dynamics,
121  ::ad::physics::Distance &conservativeMinStoppingDistance);
131  bool calculateConservativeMinStoppingDistance(::ad::physics::Distance &conservativeMinStoppingDistance) const;
132 
135  void updateSpeedLimit(::ad::physics::Speed const &max_speed_on_acceleration);
136 
139  void laneIntervalAdded(::ad::map::route::LaneInterval const &lane_interval);
140 
148  void updateVelocityOnRoute(::ad::map::point::ENUHeading const &route_heading);
149 
159  bool updateVelocityOnRoute(::ad::map::route::FullRoute const &route);
160 
163  ::ad::map::match::Object const *getObjectMapMatchedPosition() const
164  {
165  return mObjectMapMatchedPosition;
166  }
167 
185  bool isOriginalSpeedAcceptable(::ad::physics::Speed const acceptableNegativeSpeed = ::ad::physics::Speed(-0.5)) const;
186 
190  ::ad::physics::SpeedRange const &getOriginalObjectSpeed() const
191  {
192  return mOriginalObjectSpeed;
193  }
194 
199  ::ad::physics::Distance getDistanceEstimate(RssObjectConversion::ConstPtr other) const;
200 
204  ::ad::physics::Distance getVehicleLength() const
205  {
206  return getRssObject().state.dimension.length;
207  }
208 
212  ::ad::physics::Distance getVehicleWidth() const
213  {
214  return getRssObject().state.dimension.width;
215  }
216 
217 private:
218  ::ad::rss::world::Object mRssObject;
219  ::ad::map::match::Object const *mObjectMapMatchedPosition;
220  ::ad::physics::Speed mMaxSpeedOnAcceleration;
221  ::ad::physics::SpeedRange const mOriginalObjectSpeed;
222  ::ad::rss::world::RssDynamics const &mRssDynamics;
223 
224  void initializeRssObject(::ad::rss::world::ObjectId const &object_id,
225  ::ad::rss::world::ObjectType const &object_type,
226  ::ad::rss::world::OccupiedRegionVector const &objectOccupiedRegions,
227  ::ad::map::match::ENUObjectPosition const &objectEnuPosition,
228  ::ad::physics::SpeedRange const &objectSpeed,
229  ::ad::physics::AngularVelocity const &objectYawRate,
230  ::ad::physics::Angle const &objectSteeringAngle);
231 
232  void addRestrictedOccupiedRegion(::ad::map::match::LaneOccupiedRegion const &laneOccupiedRegion,
233  ::ad::map::route::LaneInterval const &lane_interval);
234 };
235 
236 } // namespace map
237 } // namespace rss
238 } // namespace ad
class providing support to convert ad::map objects into ad::rss objects
Definition: RssObjectConversion.hpp:36
::ad::physics::Distance getVehicleLength() const
Definition: RssObjectConversion.hpp:204
RssObjectConversion(RssObjectConversion &&other)=default
standard move constructor
bool calculateConservativeMinStoppingDistance(::ad::physics::Distance &conservativeMinStoppingDistance) const
~RssObjectConversion()=default
standard destructor
::ad::map::match::Object const * getObjectMapMatchedPosition() const
return the map matched position object this was created with (might be nullptr)
Definition: RssObjectConversion.hpp:163
RssObjectConversion & operator=(RssObjectConversion &&other)=delete
delete standard move assignment operator
::ad::rss::world::RssDynamics getRssDynamics() const
RssObjectConversion(RssObjectData const &object_data, ::ad::rss::world::OccupiedRegionVector const &objectOccupiedRegions)
constructor with explicit occupied regions
std::shared_ptr< RssObjectConversion > Ptr
Smart pointer on RssObjectConversion.
Definition: RssObjectConversion.hpp:41
::ad::rss::world::Object const & getRssObject() const
void updateSpeedLimit(::ad::physics::Speed const &max_speed_on_acceleration)
update the max speed content
bool updateVelocityOnRoute(::ad::map::route::FullRoute const &route)
update the objects current velocity on the route
RssObjectConversion(const RssObjectConversion &other)=default
standard copy constructor
bool isOriginalSpeedAcceptable(::ad::physics::Speed const acceptableNegativeSpeed=::ad::physics::Speed(-0.5)) const
check if the original input speed is in acceptable range
::ad::rss::world::ObjectId getId() const
::ad::physics::SpeedRange const & getOriginalObjectSpeed() const
Definition: RssObjectConversion.hpp:190
static bool calculateConservativeMinStoppingDistance(::ad::rss::world::ObjectId const &object_id, ::ad::physics::Speed const &current_speed, ::ad::rss::world::RssDynamics const &rss_dynamics, ::ad::physics::Distance &conservativeMinStoppingDistance)
std::shared_ptr< RssObjectConversion const > ConstPtr
Smart pointer on constant RssObjectConversion.
Definition: RssObjectConversion.hpp:46
void updateVelocityOnRoute(::ad::map::point::ENUHeading const &route_heading)
update the objects current velocity on the route considering the provided route_heading
void laneIntervalAdded(::ad::map::route::LaneInterval const &lane_interval)
lane interval was added to the object route, so append relevant occupied regions
RssObjectConversion & operator=(const RssObjectConversion &other)=delete
delete standard assignment operator
::ad::physics::Distance getVehicleWidth() const
Definition: RssObjectConversion.hpp:212
::ad::physics::Distance getDistanceEstimate(RssObjectConversion::ConstPtr other) const
RssObjectConversion(RssObjectData const &object_data)
constructor
namespace ad
Definition: RouteAccelerations.hpp:33
DataType RssObjectData.
Definition: RssObjectData.hpp:52