14 #include <ad/map/access/Logging.hpp>
15 #include <ad/rss/core/Logging.hpp>
16 #include <ad/rss/core/shared_lock_guard.hpp>
51 typedef std::shared_ptr<RssRouteCheckerControl>
Ptr;
56 typedef std::shared_ptr<RssRouteCheckerControl const>
ConstPtr;
69 = std::function<::ad::rss::world::RssDynamics(OBJECT_INSTANCE_TYPE vehicle)>;
77 std::lock_guard<std::shared_timed_mutex>
const lock(mCallbackRwLock);
78 mDefaultRssDynamicsCallbacks[objectType] = callback;
86 core::shared_lock_guard
const shared_lock(mCallbackRwLock);
87 return mDefaultRssDynamicsCallbacks.find(objectType) != mDefaultRssDynamicsCallbacks.end();
96 OBJECT_INSTANCE_TYPE vehicle)
const
98 core::shared_lock_guard
const shared_lock(mCallbackRwLock);
99 auto findResult = mDefaultRssDynamicsCallbacks.find(objectType);
100 if (findResult != mDefaultRssDynamicsCallbacks.end())
102 return findResult->second(vehicle);
104 return ::ad::rss::world::RssDynamics();
121 OBJECT_INSTANCE_TYPE egoVehicle,
123 OBJECT_INSTANCE_TYPE vehicle)>;
130 std::lock_guard<std::shared_timed_mutex>
const lock(mCallbackRwLock);
131 mVehicleConstellationCallback = callback;
139 core::shared_lock_guard
const shared_lock(mCallbackRwLock);
140 return bool(mVehicleConstellationCallback);
158 OBJECT_INSTANCE_TYPE egoVehicle,
160 OBJECT_INSTANCE_TYPE vehicle)
const
162 core::shared_lock_guard
const shared_lock(mCallbackRwLock);
163 if (
bool(mVehicleConstellationCallback))
165 return mVehicleConstellationCallback(route, egoVehicleObject, egoVehicle, vehicleObject, vehicle);
167 return ::ad::rss::map::RssConstellationConfiguration();
184 OBJECT_INSTANCE_TYPE egoVehicle,
186 OBJECT_INSTANCE_TYPE pedestrian)>;
193 std::lock_guard<std::shared_timed_mutex>
const lock(mCallbackRwLock);
194 mPedestrianConstellationCallback = callback;
202 core::shared_lock_guard
const shared_lock(mCallbackRwLock);
203 return bool(mPedestrianConstellationCallback);
221 OBJECT_INSTANCE_TYPE egoVehicle,
223 OBJECT_INSTANCE_TYPE pedestrian)
const
225 core::shared_lock_guard
const shared_lock(mCallbackRwLock);
226 if (
bool(mPedestrianConstellationCallback))
228 return mPedestrianConstellationCallback(route, egoVehicleObject, egoVehicle, pedestrianObject, pedestrian);
230 return ::ad::rss::map::RssConstellationConfiguration();
246 OBJECT_INSTANCE_TYPE egoVehicle,
254 std::lock_guard<std::shared_timed_mutex>
const lock(mCallbackRwLock);
255 mArtificialObjectConstellationCallback = callback;
263 core::shared_lock_guard
const shared_lock(mCallbackRwLock);
264 return bool(mArtificialObjectConstellationCallback);
282 OBJECT_INSTANCE_TYPE egoVehicle,
285 core::shared_lock_guard
const shared_lock(mCallbackRwLock);
286 if (
bool(mArtificialObjectConstellationCallback))
288 return mArtificialObjectConstellationCallback(route, egoVehicleObject, egoVehicle, artificialObject);
290 return ::ad::rss::map::RssConstellationConfiguration();
297 mRssAppendRoadBoundariesMode = roadBoundariesMode;
304 return mRssAppendRoadBoundariesMode;
311 mCurrentGreenTrafficLights = currentGreenTrafficLights;
318 return mCurrentGreenTrafficLights;
325 mPositionJumpTraveledDistance = positionJumpTraveledDistance;
332 return mPositionJumpTraveledDistance;
341 ad::physics::Distance
const minimumDistanceToObjectsThatHaveToBeAnalyzed)
343 mMinimumDistanceToObjectsThatHaveToBeAnalyzed = minimumDistanceToObjectsThatHaveToBeAnalyzed;
353 return mMinimumDistanceToObjectsThatHaveToBeAnalyzed;
356 void setConsiderPositionConfidence(
bool const consider_position_confidence)
358 mConsiderPositionConfidence = consider_position_confidence;
360 bool getConsiderPositionConfidence()
362 return mConsiderPositionConfidence;
394 ::ad::map::point::ENUPointList
const &activeRoutingTargets)
396 std::lock_guard<std::mutex>
const lock(mRoutingLock);
397 mActiveRoutingTargets[vehicleId] = activeRoutingTargets;
406 std::lock_guard<std::mutex>
const lock(mRoutingLock);
407 auto findResult = mActiveRoutingTargets.find(vehicleId);
408 if (findResult != mActiveRoutingTargets.end())
410 return findResult->second;
412 return ::ad::map::point::ENUPointList();
421 ::ad::map::point::ENUPointList
const &routingTargetsToAppend)
423 std::lock_guard<std::mutex>
const lock(mRoutingLock);
425 operation.command = RssRoutingTargetCommand::AppendTargets;
426 operation.routingTargets = routingTargetsToAppend;
427 auto const insertResult = mRoutingTargetOperations.insert(std::make_pair(vehicleId, operation));
428 if (!insertResult.second)
430 insertResult.first->second.routingTargets.insert(
431 insertResult.first->second.routingTargets.end(), routingTargetsToAppend.begin(), routingTargetsToAppend.end());
441 ::ad::map::point::ENUPointList
const &newRoutingTargets)
443 std::lock_guard<std::mutex>
const lock(mRoutingLock);
445 operation.command = RssRoutingTargetCommand::ReplaceTargets;
446 operation.routingTargets = newRoutingTargets;
447 auto const insertResult = mRoutingTargetOperations.insert(std::make_pair(vehicleId, operation));
448 if (!insertResult.second)
450 insertResult.first->second = operation;
461 std::lock_guard<std::mutex>
const lock(mRoutingLock);
462 auto findResult = mRoutingTargetOperations.find(vehicleId);
463 if (findResult != mRoutingTargetOperations.end())
465 resultOperation = findResult->second;
466 mRoutingTargetOperations.erase(vehicleId);
468 return resultOperation;
486 std::lock_guard<std::mutex>
const lock(mRoutingLock);
487 mRoutingTargetOperations.erase(vehicleId);
488 mActiveRoutingTargets.erase(vehicleId);
494 mutable std::shared_timed_mutex mCallbackRwLock;
497 std::map<::ad::rss::world::ObjectType, DefaultRssDynamicsCallbackFunctionType> mDefaultRssDynamicsCallbacks;
504 ::ad::rss::map::RssAppendRoadBoundariesMode::Off};
505 ::ad::map::landmark::LandmarkIdSet mCurrentGreenTrafficLights;
507 mutable std::mutex mRoutingLock;
509 std::map<ad::rss::world::ObjectId, ::ad::map::point::ENUPointList> mActiveRoutingTargets;
510 std::map<ad::rss::world::ObjectId, RssRoutingTargetOperation> mRoutingTargetOperations;
512 ad::physics::Distance mPositionJumpTraveledDistance{20.};
514 bool mConsiderPositionConfidence{
true};
namespace ad
Definition: RouteAccelerations.hpp:33