Carma-platform v4.2.0
CARMA Platform is built on robot operating system (ROS) and utilizes open source software (OSS) that enables Cooperative Driving Automation (CDA) features to allow Automated Driving Systems to interact and cooperate with infrastructure and other vehicles through communication.
|
Class which provies exposes map publication and carma_wm update logic. More...
#include <WMBroadcaster.hpp>
Public Types | |
using | PublishMapCallback = std::function< void(const autoware_lanelet2_msgs::msg::MapBin &)> |
using | PublishMapUpdateCallback = std::function< void(const autoware_lanelet2_msgs::msg::MapBin &)> |
using | PublishCtrlRequestCallback = std::function< void(const carma_v2x_msgs::msg::TrafficControlRequest &)> |
using | PublishActiveGeofCallback = std::function< void(const carma_perception_msgs::msg::CheckActiveGeofence &)> |
using | PublishMobilityOperationCallback = std::function< void(const carma_v2x_msgs::msg::MobilityOperation &)> |
Public Member Functions | |
WMBroadcaster (const PublishMapCallback &map_pub, const PublishMapUpdateCallback &map_update_pub, const PublishCtrlRequestCallback &control_msg_pub, const PublishActiveGeofCallback &active_pub, std::shared_ptr< carma_ros2_utils::timers::TimerFactory > timer_factory, const PublishMobilityOperationCallback &tcm_ack_pub) | |
Constructor. More... | |
void | baseMapCallback (autoware_lanelet2_msgs::msg::MapBin::UniquePtr map_msg) |
Callback to set the base map when it has been loaded. More... | |
void | geoReferenceCallback (std_msgs::msg::String::UniquePtr geo_ref) |
Callback to set the base map georeference (proj string) More... | |
void | geofenceCallback (carma_v2x_msgs::msg::TrafficControlMessage::UniquePtr geofence_msg) |
Callback to add a geofence to the map. Currently only supports version 1 TrafficControlMessage. More... | |
void | externalMapMsgCallback (carma_v2x_msgs::msg::MapData::UniquePtr map_msg) |
Callback to MAP.msg which contains intersections' static info such geometry and lane ids. More... | |
void | addGeofence (std::shared_ptr< Geofence > gf_ptr) |
Adds a geofence to the current map and publishes the ROS msg. More... | |
void | removeGeofence (std::shared_ptr< Geofence > gf_ptr) |
Removes a geofence from the current map and publishes the ROS msg. More... | |
void | routeCallbackMessage (carma_planning_msgs::msg::Route::UniquePtr route_msg) |
Calls controlRequestFromRoute() and publishes the TrafficControlRequest Message returned after the completed operations. More... | |
visualization_msgs::msg::Marker | composeTCMMarkerVisualizer (const std::vector< lanelet::Point3d > &input) |
composeTCMMarkerVisualizer() compose TCM Marker visualization More... | |
carma_v2x_msgs::msg::TrafficControlRequestPolygon | composeTCRStatus (const lanelet::BasicPoint3d &localPoint, const carma_v2x_msgs::msg::TrafficControlBounds &cB, const lanelet::projection::LocalFrameProjector &local_projector) |
composeTCRStatus() compose TCM Request visualization on UI More... | |
carma_v2x_msgs::msg::TrafficControlRequest | controlRequestFromRoute (const carma_planning_msgs::msg::Route &route_msg, std::shared_ptr< j2735_v2x_msgs::msg::Id64b > req_id_for_testing=NULL) |
Pulls vehicle information from CARMA Cloud at startup by providing its selected route in a TrafficControlRequest message that is published after a route is selected. During operation at ~10s intervals the vehicle will make another control request for the remainder of its route. More... | |
lanelet::Points3d | getPointsInLocalFrame (const carma_v2x_msgs::msg::TrafficControlMessageV01 &geofence_msg) |
Extract geofence points from geofence message using its given proj and datum fields. More... | |
lanelet::ConstLaneletOrAreas | getAffectedLaneletOrAreas (const lanelet::Points3d &gf_pts) |
Gets the affected lanelet or areas based on the points in local frame. More... | |
void | setMaxLaneWidth (double max_lane_width) |
Sets the max lane width in meters. Geofence points are associated to a lanelet if they are within this distance to a lanelet as geofence points are guaranteed to apply to a single lane. More... | |
void | setIntersectionCoordCorrection (const std::vector< int64_t > &intersection_ids_for_correction, const std::vector< double > &intersection_correction) |
Sets the coordinate correction for intersection. More... | |
void | setConfigSpeedLimit (double cL) |
Sets the configured speed limit. More... | |
void | setVehicleParticipationType (std::string participant) |
Set the Vehicle Participation Type. More... | |
std::string | getVehicleParticipationType () |
Get the Vehicle Participation Type object. More... | |
void | geofenceFromMsg (std::shared_ptr< Geofence > gf_ptr, const carma_v2x_msgs::msg::TrafficControlMessageV01 &geofence_msg) |
Fills geofence object from TrafficControlMessageV01 ROS Msg. More... | |
std::vector< std::shared_ptr< Geofence > > | geofenceFromMapMsg (std::shared_ptr< Geofence > gf_ptr, const carma_v2x_msgs::msg::MapData &map_msg) |
Fills geofence object from MAP Data ROS Msg which contains intersections' static data such as geometry and signal_group. More... | |
double | distToNearestActiveGeofence (const lanelet::BasicPoint2d &curr_pos) |
Returns the route distance (downtrack or crosstrack in meters) to the nearest active geofence lanelet. More... | |
void | currentLocationCallback (geometry_msgs::msg::PoseStamped::UniquePtr current_pos) |
carma_perception_msgs::msg::CheckActiveGeofence | checkActiveGeofenceLogic (const geometry_msgs::msg::PoseStamped ¤t_pos) |
Returns a message indicating whether or not the vehicle is inside of an active geofence lanelet. More... | |
void | addRegionAccessRule (std::shared_ptr< Geofence > gf_ptr, const carma_v2x_msgs::msg::TrafficControlMessageV01 &msg_v01, const std::vector< lanelet::Lanelet > &affected_llts) const |
Adds RegionAccessRule to the map. More... | |
void | addRegionMinimumGap (std::shared_ptr< Geofence > gf_ptr, const carma_v2x_msgs::msg::TrafficControlMessageV01 &msg_v01, double min_gap, const std::vector< lanelet::Lanelet > &affected_llts, const std::vector< lanelet::Area > &affected_areas) const |
Adds Minimum Gap to the map. More... | |
std::vector< std::string > | participantsChecker (const carma_v2x_msgs::msg::TrafficControlMessageV01 &msg_v01) const |
Generates participants list. More... | |
std::vector< std::string > | invertParticipants (const std::vector< std::string > &input_participants) const |
Generates inverse participants list of the given participants. More... | |
std::vector< std::string > | combineParticipantsToVehicle (const std::vector< std::string > &input_participants) const |
Combines a list of the given participants into a single "vehicle" type if participants cover all possible vehicle types. Returns the input with no change if it doesn't cover all. More... | |
carma_planning_msgs::msg::Route | getRoute () |
Returns the most recently recieved route message. More... | |
std::shared_ptr< Geofence > | createWorkzoneGeofence (std::unordered_map< uint8_t, std::shared_ptr< Geofence > > work_zone_geofence_cache) |
Creates a single workzone geofence (in the vector) that includes all additional lanelets (housing traffic lights) and update_list that blocks old lanelets. Geofence will have minimum of 6 lanelet_additions_ (front parallel, front diagonal, middle lanelet(s), back diagonal, back parallel, 1 opposing lanelet with trafficlight). And regulatory_element_ of this geofence will be region_access_rule, where it blocks entire affected_parts of CLOSED, TAPERRIGHT, OPENRIGHT. It also blocks the opposing lane's lanelet that would have had the trafficlight, and new lanelet(s) would be added to replace it. More... | |
void | preprocessWorkzoneGeometry (std::unordered_map< uint8_t, std::shared_ptr< Geofence > > work_zone_geofence_cache, std::shared_ptr< std::vector< lanelet::Lanelet > > parallel_llts, std::shared_ptr< std::vector< lanelet::Lanelet > > opposite_llts) |
Preprocess for workzone area. Parallel_llts will have front_parallel and back_parallel lanelets that were created from splitting (if necessary) TAPERRIGHT and OPENRIGHT lanelets. Opposite_llts will have new lanelets split from REVERSE part with same direction as parallel lanelets that connect to diagonal ones. More... | |
std::shared_ptr< Geofence > | createWorkzoneGeometry (std::unordered_map< uint8_t, std::shared_ptr< Geofence > > work_zone_geofence_cache, lanelet::Lanelet parallel_llt_front, lanelet::Lanelet parallel_llt_back, std::shared_ptr< std::vector< lanelet::Lanelet > > middle_opposite_lanelets) |
Create workzone geofence. Create diagonal lanelets and a lanelet that houses opposing lane's trafficlight. Fill lanelet_additions_ with every newly created lanelets New lanelets will have traffic light. Old lanelets (and those from CLOSED) will be blocked using update_list as region_access_rule. More... | |
std::vector< lanelet::Lanelet > | splitLaneletWithPoint (const std::vector< lanelet::BasicPoint2d > &input_pts, const lanelet::Lanelet &input_llt, double error_distance) |
Split given lanelet with same proportion as the given points' downtrack relative to the lanelet. Newly created lanelet will have old regulatory elements copied into each of them. From the front and back boundaries, it is deemed not necessary to split if the ratios are within error_distance from either of it. For example, if front and back points of 3 points given are both within error_distance, only middle point will be used to split into 2 lanelets. It will return duplicate of old lanelet (with different id) if no splitting was done. More... | |
lanelet::Lanelets | splitOppositeLaneletWithPoint (std::shared_ptr< std::vector< lanelet::Lanelet > > opposite_llts, const lanelet::BasicPoint2d &input_pt, const lanelet::Lanelet &input_llt, double error_distance) |
Split given lanelet's adjacent, OPPOSITE lanelet with same proportion as the given point's downtrack relative to the lanelet. Newly created lanelet will have old regulatory elements copied into each of them. From the front and back boundaries, it is deemed not necessary to split if the ratios are within error_distance from either of it. It will return duplicate of old lanelet (with different id) if no splitting was done. More... | |
std::vector< lanelet::Lanelet > | splitLaneletWithRatio (std::vector< double > ratios, lanelet::Lanelet input_lanelet, double error_distance) const |
Split given lanelet with given downtrack ratios relative to the lanelet. Newly created lanelet will have old regulatory elements copied into each of them. From the front and back boundaries, it is deemed not necessary to split if the ratios are within error_distance from either of it. For example, if front and back points of 3 ratios given are both within error_distance, only middle ratio will be used to split, so 2 lanelets will be returned. It will return duplicate of old lanelet (with different id) if no splitting was done. More... | |
uint32_t | generate32BitId (const std::string &label) |
helper for generating 32bit traffic light Id from TCM label field consisting workzone intersection/signal group ids More... | |
bool | convertLightIdToInterGroupId (unsigned &intersection_id, unsigned &group_id, const lanelet::Id &lanelet_id) |
helper for generating intersection and group Id of a traffic light from lanelet id More... | |
void | setErrorDistance (double error_distance) |
void | publishLightId () |
helps to populate upcoming_intersection_ids_ from local traffic lanelet ids More... | |
void | setConfigVehicleId (const std::string &vehicle_id) |
Retrieve the vehicle ID from global vehicle parameters, and set instance memeber vehicle id. More... | |
void | setConfigACKPubTimes (int ack_pub_times) |
Sets the TCM Acknowledgement publish times. More... | |
void | pubTCMACK (j2735_v2x_msgs::msg::Id64b tcm_req_id, uint16_t msgnum, int ack_status, const std::string &ack_reason) |
Construct TCM acknowledgement object and populate it with params. Publish the object for a configured number of times. More... | |
void | updateUpcomingSGIntersectionIds () |
populate upcoming_intersection_ids_ from local traffic lanelet ids More... | |
Public Attributes | |
visualization_msgs::msg::MarkerArray | tcm_marker_array_ |
carma_v2x_msgs::msg::TrafficControlRequestPolygon | tcr_polygon_ |
std_msgs::msg::Int32MultiArray | upcoming_intersection_ids_ |
Private Types | |
enum class | AcknowledgementStatus { ACKNOWLEDGED = 1 , REJECTED = 2 } |
Private Member Functions | |
void | addRegulatoryComponent (std::shared_ptr< Geofence > gf_ptr) const |
void | addBackRegulatoryComponent (std::shared_ptr< Geofence > gf_ptr) const |
void | removeGeofenceHelper (std::shared_ptr< Geofence > gf_ptr) const |
void | addGeofenceHelper (std::shared_ptr< Geofence > gf_ptr) |
bool | shouldChangeControlLine (const lanelet::ConstLaneletOrArea &el, const lanelet::RegulatoryElementConstPtr ®em, std::shared_ptr< Geofence > gf_ptr) const |
This is a helper function that returns true if the provided regem is marked to be changed by the geofence as there are usually multiple passing control lines are in the lanelet. More... | |
bool | shouldChangeTrafficSignal (const lanelet::ConstLaneletOrArea &el, const lanelet::RegulatoryElementConstPtr ®em, std::shared_ptr< carma_wm::SignalizedIntersectionManager > sim) const |
This is a helper function that returns true if signal in the lanelet should be changed according to the records of signalizer intersection manager Used in managing multiple signal_groups in a single entry lanelet for example. More... | |
void | addPassingControlLineFromMsg (std::shared_ptr< Geofence > gf_ptr, const carma_v2x_msgs::msg::TrafficControlMessageV01 &msg_v01, const std::vector< lanelet::Lanelet > &affected_llts) const |
void | addScheduleFromMsg (std::shared_ptr< Geofence > gf_ptr, const carma_v2x_msgs::msg::TrafficControlMessageV01 &msg_v01) |
Populates the schedules member of the geofence object from given TrafficControlMessageV01 message. More... | |
void | scheduleGeofence (std::shared_ptr< carma_wm_ctrl::Geofence > gf_ptr_list) |
lanelet::LineString3d | createLinearInterpolatingLinestring (const lanelet::Point3d &front_pt, const lanelet::Point3d &back_pt, double increment_distance=0.25) |
lanelet::Lanelet | createLinearInterpolatingLanelet (const lanelet::Point3d &left_front_pt, const lanelet::Point3d &right_front_pt, const lanelet::Point3d &left_back_pt, const lanelet::Point3d &right_back_pt, double increment_distance=0.25) |
std::unordered_set< lanelet::Lanelet > | filterSuccessorLanelets (const std::unordered_set< lanelet::Lanelet > &possible_lanelets, const std::unordered_set< lanelet::Lanelet > &root_lanelets) |
Private Attributes | |
double | error_distance_ = 5 |
lanelet::ConstLanelets | route_path_ |
std::unordered_set< lanelet::Id > | active_geofence_llt_ids_ |
std::unordered_map< uint8_t, std::shared_ptr< Geofence > > | work_zone_geofence_cache_ |
std::unordered_map< uint32_t, lanelet::Id > | traffic_light_id_lookup_ |
lanelet::LaneletMapPtr | base_map_ |
lanelet::LaneletMapPtr | current_map_ |
lanelet::routing::RoutingGraphPtr | current_routing_graph_ |
lanelet::Velocity | config_limit |
std::string | participant_ = lanelet::Participants::VehicleCar |
std::unordered_set< std::string > | checked_geofence_ids_ |
std::unordered_set< std::string > | generated_geofence_reqids_ |
std::vector< lanelet::LaneletMapPtr > | cached_maps_ |
std::mutex | map_mutex_ |
PublishMapCallback | map_pub_ |
PublishMapUpdateCallback | map_update_pub_ |
PublishCtrlRequestCallback | control_msg_pub_ |
PublishActiveGeofCallback | active_pub_ |
GeofenceScheduler | scheduler_ |
PublishMobilityOperationCallback | tcm_ack_pub_ |
std::string | base_map_georef_ |
double | max_lane_width_ |
std::vector< carma_v2x_msgs::msg::TrafficControlMessageV01 > | workzone_remaining_msgs_ |
bool | workzone_geometry_published_ = false |
size_t | current_map_version_ = 0 |
carma_planning_msgs::msg::Route | current_route |
std::vector< autoware_lanelet2_msgs::msg::MapBin > | map_update_message_queue_ |
size_t | update_count_ = -1 |
std::shared_ptr< carma_wm::SignalizedIntersectionManager > | sim_ |
const std::string | geofence_ack_strategy_ = "carma3/Geofence_Acknowledgement" |
int | ack_pub_times_ = 1 |
std::string | vehicle_id_ |
Class which provies exposes map publication and carma_wm update logic.
The WMBroadcaster handles updating the lanelet2 base map and publishing the new versions to the rest of the CARMA Platform ROS network. The broadcaster also provides functions for adding or removing geofences from the map and notifying the rest of the system.
Definition at line 72 of file WMBroadcaster.hpp.
using carma_wm_ctrl::WMBroadcaster::PublishActiveGeofCallback = std::function<void(const carma_perception_msgs::msg::CheckActiveGeofence&)> |
Definition at line 78 of file WMBroadcaster.hpp.
using carma_wm_ctrl::WMBroadcaster::PublishCtrlRequestCallback = std::function<void(const carma_v2x_msgs::msg::TrafficControlRequest&)> |
Definition at line 77 of file WMBroadcaster.hpp.
using carma_wm_ctrl::WMBroadcaster::PublishMapCallback = std::function<void(const autoware_lanelet2_msgs::msg::MapBin&)> |
Definition at line 75 of file WMBroadcaster.hpp.
using carma_wm_ctrl::WMBroadcaster::PublishMapUpdateCallback = std::function<void(const autoware_lanelet2_msgs::msg::MapBin&)> |
Definition at line 76 of file WMBroadcaster.hpp.
using carma_wm_ctrl::WMBroadcaster::PublishMobilityOperationCallback = std::function<void(const carma_v2x_msgs::msg::MobilityOperation&)> |
Definition at line 79 of file WMBroadcaster.hpp.
|
strongprivate |
Enumerator | |
---|---|
ACKNOWLEDGED | |
REJECTED |
Definition at line 465 of file WMBroadcaster.hpp.
carma_wm_ctrl::WMBroadcaster::WMBroadcaster | ( | const PublishMapCallback & | map_pub, |
const PublishMapUpdateCallback & | map_update_pub, | ||
const PublishCtrlRequestCallback & | control_msg_pub, | ||
const PublishActiveGeofCallback & | active_pub, | ||
std::shared_ptr< carma_ros2_utils::timers::TimerFactory > | timer_factory, | ||
const PublishMobilityOperationCallback & | tcm_ack_pub | ||
) |
Constructor.
Definition at line 47 of file WMBroadcaster.cpp.
References addGeofence(), carma_wm_ctrl::GeofenceScheduler::onGeofenceActive(), carma_wm_ctrl::GeofenceScheduler::onGeofenceInactive(), removeGeofence(), routeCallbackMessage(), and scheduler_.
|
private |
Definition at line 1457 of file WMBroadcaster.cpp.
References current_map_, and shouldChangeControlLine().
Referenced by removeGeofenceHelper().
void carma_wm_ctrl::WMBroadcaster::addGeofence | ( | std::shared_ptr< Geofence > | gf_ptr | ) |
Adds a geofence to the current map and publishes the ROS msg.
Definition at line 1488 of file WMBroadcaster.cpp.
References active_geofence_llt_ids_, addGeofenceHelper(), composeTCMMarkerVisualizer(), createWorkzoneGeofence(), current_map_, current_map_version_, current_routing_graph_, geofenceFromMapMsg(), geofenceFromMsg(), map_mutex_, map_update_pub_, participant_, sim_, tcm_marker_array_, carma_wm::toBinMsg(), update_count_, and work_zone_geofence_cache_.
Referenced by WMBroadcaster().
|
private |
Definition at line 1912 of file WMBroadcaster.cpp.
References addRegulatoryComponent(), current_map_, and traffic_light_id_lookup_.
Referenced by addGeofence().
|
private |
Definition at line 880 of file WMBroadcaster.cpp.
References participantsChecker().
Referenced by geofenceFromMsg().
void carma_wm_ctrl::WMBroadcaster::addRegionAccessRule | ( | std::shared_ptr< Geofence > | gf_ptr, |
const carma_v2x_msgs::msg::TrafficControlMessageV01 & | msg_v01, | ||
const std::vector< lanelet::Lanelet > & | affected_llts | ||
) | const |
Adds RegionAccessRule to the map.
gf_ptr | geofence pointer |
msg_v01 | message type |
afffected_llts | affected lanelets |
Definition at line 926 of file WMBroadcaster.cpp.
References invertParticipants(), and participantsChecker().
Referenced by createWorkzoneGeometry(), and geofenceFromMsg().
void carma_wm_ctrl::WMBroadcaster::addRegionMinimumGap | ( | std::shared_ptr< Geofence > | gf_ptr, |
const carma_v2x_msgs::msg::TrafficControlMessageV01 & | msg_v01, | ||
double | min_gap, | ||
const std::vector< lanelet::Lanelet > & | affected_llts, | ||
const std::vector< lanelet::Area > & | affected_areas | ||
) | const |
Adds Minimum Gap to the map.
gf_ptr | geofence pointer |
double | min_gap |
afffected_llts | affected lanelets |
affected_areas | affected areas |
Definition at line 943 of file WMBroadcaster.cpp.
References participantsChecker().
Referenced by geofenceFromMsg().
|
private |
Definition at line 1416 of file WMBroadcaster.cpp.
References current_map_, shouldChangeControlLine(), shouldChangeTrafficSignal(), and sim_.
Referenced by addGeofenceHelper().
|
private |
Populates the schedules member of the geofence object from given TrafficControlMessageV01 message.
gf_ptr | geofence pointer |
msg_v01 | TrafficControlMessageV01 (geofence msg) |
Definition at line 117 of file WMBroadcaster.cpp.
References carma_wm_ctrl::GeofenceScheduler::getClockType(), process_bag::i, scheduler_, and carma_cooperative_perception::to_string().
Referenced by externalMapMsgCallback(), and geofenceCallback().
void carma_wm_ctrl::WMBroadcaster::baseMapCallback | ( | autoware_lanelet2_msgs::msg::MapBin::UniquePtr | map_msg | ) |
Callback to set the base map when it has been loaded.
map_msg | The map message to use as the base map |
Definition at line 56 of file WMBroadcaster.cpp.
References base_map_, config_limit, current_map_, current_map_version_, current_routing_graph_, lanelet::MapConformer::ensureCompliance(), carma_wm::fromBinMsg(), map_mutex_, map_pub_, participant_, and carma_wm::toBinMsg().
Referenced by carma_wm_ctrl::WMBroadcasterNode::handle_on_activate().
carma_perception_msgs::msg::CheckActiveGeofence carma_wm_ctrl::WMBroadcaster::checkActiveGeofenceLogic | ( | const geometry_msgs::msg::PoseStamped & | current_pos | ) |
Returns a message indicating whether or not the vehicle is inside of an active geofence lanelet.
current_pos | Current position of the vehicle |
Definition at line 2012 of file WMBroadcaster.cpp.
References active_geofence_llt_ids_, current_map_, and distToNearestActiveGeofence().
Referenced by currentLocationCallback().
std::vector< std::string > carma_wm_ctrl::WMBroadcaster::combineParticipantsToVehicle | ( | const std::vector< std::string > & | input_participants | ) | const |
Combines a list of the given participants into a single "vehicle" type if participants cover all possible vehicle types. Returns the input with no change if it doesn't cover all.
std::vector<std::string> | participants vector of strings |
Definition at line 1009 of file WMBroadcaster.cpp.
Referenced by participantsChecker().
visualization_msgs::msg::Marker carma_wm_ctrl::WMBroadcaster::composeTCMMarkerVisualizer | ( | const std::vector< lanelet::Point3d > & | input | ) |
composeTCMMarkerVisualizer() compose TCM Marker visualization
input | The message containing tcm information |
Definition at line 1826 of file WMBroadcaster.cpp.
References process_bag::i, and tcm_marker_array_.
Referenced by addGeofence().
carma_v2x_msgs::msg::TrafficControlRequestPolygon carma_wm_ctrl::WMBroadcaster::composeTCRStatus | ( | const lanelet::BasicPoint3d & | localPoint, |
const carma_v2x_msgs::msg::TrafficControlBounds & | cB, | ||
const lanelet::projection::LocalFrameProjector & | local_projector | ||
) |
composeTCRStatus() compose TCM Request visualization on UI
input | The message containing tcr information |
Definition at line 1792 of file WMBroadcaster.cpp.
References process_bag::i, and carma_cooperative_perception::to_string().
Referenced by controlRequestFromRoute().
carma_v2x_msgs::msg::TrafficControlRequest carma_wm_ctrl::WMBroadcaster::controlRequestFromRoute | ( | const carma_planning_msgs::msg::Route & | route_msg, |
std::shared_ptr< j2735_v2x_msgs::msg::Id64b > | req_id_for_testing = NULL |
||
) |
Pulls vehicle information from CARMA Cloud at startup by providing its selected route in a TrafficControlRequest message that is published after a route is selected. During operation at ~10s intervals the vehicle will make another control request for the remainder of its route.
route_msg | The message containing route information pulled from routeCallbackMessage() |
req_id_for_testing | this ptr is optional. it gives req_id for developer to test TrafficControlMessage as it needs it |
Definition at line 1641 of file WMBroadcaster.cpp.
References base_map_georef_, composeTCRStatus(), current_map_, generated_geofence_reqids_, carma_wm_ctrl::GeofenceScheduler::getClockType(), process_bag::i, route_path_, scheduler_, tcr_polygon_, and carma_cooperative_perception::to_string().
Referenced by routeCallbackMessage().
bool carma_wm_ctrl::WMBroadcaster::convertLightIdToInterGroupId | ( | unsigned & | intersection_id, |
unsigned & | group_id, | ||
const lanelet::Id & | lanelet_id | ||
) |
helper for generating intersection and group Id of a traffic light from lanelet id
[in] | traffic | lanelet_id |
[out] | intersection_id | and group_id |
Definition at line 1956 of file WMBroadcaster.cpp.
References traffic_light_id_lookup_.
Referenced by publishLightId().
|
private |
Definition at line 2192 of file WMBroadcaster.cpp.
References createLinearInterpolatingLinestring().
Referenced by createWorkzoneGeometry().
|
private |
Definition at line 2171 of file WMBroadcaster.cpp.
Referenced by createLinearInterpolatingLanelet().
std::shared_ptr< Geofence > carma_wm_ctrl::WMBroadcaster::createWorkzoneGeofence | ( | std::unordered_map< uint8_t, std::shared_ptr< Geofence > > | work_zone_geofence_cache | ) |
Creates a single workzone geofence (in the vector) that includes all additional lanelets (housing traffic lights) and update_list that blocks old lanelets. Geofence will have minimum of 6 lanelet_additions_ (front parallel, front diagonal, middle lanelet(s), back diagonal, back parallel, 1 opposing lanelet with trafficlight). And regulatory_element_ of this geofence will be region_access_rule, where it blocks entire affected_parts of CLOSED, TAPERRIGHT, OPENRIGHT. It also blocks the opposing lane's lanelet that would have had the trafficlight, and new lanelet(s) would be added to replace it.
work_zone_geofence_cache | Geofence map with size of 4 corresponding to CLOSED, TAPERRIGHT, OPENRIGHT, REVERSE TrafficControlMessages. Each should have gf_pts, affected_parts, schedule, and id filled. TAPERRIGHT's id and schedule is used as all should have same schedule. |
InvalidObjectStateError | if no map is available |
Definition at line 393 of file WMBroadcaster.cpp.
References createWorkzoneGeometry(), preprocessWorkzoneGeometry(), and carma_wm_ctrl::WorkZoneSection::TAPERRIGHT.
Referenced by addGeofence().
std::shared_ptr< Geofence > carma_wm_ctrl::WMBroadcaster::createWorkzoneGeometry | ( | std::unordered_map< uint8_t, std::shared_ptr< Geofence > > | work_zone_geofence_cache, |
lanelet::Lanelet | parallel_llt_front, | ||
lanelet::Lanelet | parallel_llt_back, | ||
std::shared_ptr< std::vector< lanelet::Lanelet > > | middle_opposite_lanelets | ||
) |
Create workzone geofence. Create diagonal lanelets and a lanelet that houses opposing lane's trafficlight. Fill lanelet_additions_ with every newly created lanelets New lanelets will have traffic light. Old lanelets (and those from CLOSED) will be blocked using update_list as region_access_rule.
work_zone_geofence_cache | Geofence map with size of 4 corresponding to CLOSED, TAPERRIGHT, OPENRIGHT, REVERSE TrafficControlMessages. Each should have gf_pts, affected_parts. |
parallel_llt_front | A lanelet whose end should connect to front diagonal lanelet |
parallel_llt_back | A lanelet whose start should connect to back diagonal lanelet |
middle_opposite_lanelets | A getInterGroupIdsByLightReg() connects to back diagonal (their directions are expected to be opposite of parallel ones) |
InvalidObjectStateError | if no map is available |
Definition at line 420 of file WMBroadcaster.cpp.
References addRegionAccessRule(), carma_wm_ctrl::WorkZoneSection::CLOSED, createLinearInterpolatingLanelet(), current_map_, error_distance_, generate32BitId(), process_bag::i, carma_wm_ctrl::WorkZoneSection::OPENRIGHT, carma_wm_ctrl::WorkZoneSection::REVERSE, splitOppositeLaneletWithPoint(), and carma_wm_ctrl::WorkZoneSection::TAPERRIGHT.
Referenced by createWorkzoneGeofence().
void carma_wm_ctrl::WMBroadcaster::currentLocationCallback | ( | geometry_msgs::msg::PoseStamped::UniquePtr | current_pos | ) |
Definition at line 1946 of file WMBroadcaster.cpp.
References active_pub_, checkActiveGeofenceLogic(), and current_map_.
Referenced by carma_wm_ctrl::WMBroadcasterNode::handle_on_activate().
double carma_wm_ctrl::WMBroadcaster::distToNearestActiveGeofence | ( | const lanelet::BasicPoint2d & | curr_pos | ) |
Returns the route distance (downtrack or crosstrack in meters) to the nearest active geofence lanelet.
curr_pos | Current position in local coordinates |
InvalidObjectStateError | if base_map is not set |
std::invalid_argument | if curr_pos is not on the road |
Definition at line 1868 of file WMBroadcaster.cpp.
References active_geofence_llt_ids_, carma_wm::TrackPos::crosstrack, current_map_, carma_wm::TrackPos::downtrack, map_mutex_, route_path_, and carma_wm::geometry::trackPos().
Referenced by checkActiveGeofenceLogic().
void carma_wm_ctrl::WMBroadcaster::externalMapMsgCallback | ( | carma_v2x_msgs::msg::MapData::UniquePtr | map_msg | ) |
Callback to MAP.msg which contains intersections' static info such geometry and lane ids.
map_msg | The ROS msg of the MAP.msg to process |
Definition at line 1030 of file WMBroadcaster.cpp.
References addScheduleFromMsg(), current_map_, scheduleGeofence(), and sim_.
Referenced by carma_wm_ctrl::WMBroadcasterNode::handle_on_activate().
|
private |
uint32_t carma_wm_ctrl::WMBroadcaster::generate32BitId | ( | const std::string & | label | ) |
helper for generating 32bit traffic light Id from TCM label field consisting workzone intersection/signal group ids
Definition at line 1252 of file WMBroadcaster.cpp.
References carma_wm::utils::get32BitId().
Referenced by createWorkzoneGeometry().
void carma_wm_ctrl::WMBroadcaster::geofenceCallback | ( | carma_v2x_msgs::msg::TrafficControlMessage::UniquePtr | geofence_msg | ) |
Callback to add a geofence to the map. Currently only supports version 1 TrafficControlMessage.
geofence_msg | The ROS msg of the geofence to add. |
Definition at line 1077 of file WMBroadcaster.cpp.
References ACKNOWLEDGED, addScheduleFromMsg(), checked_geofence_ids_, generated_geofence_reqids_, process_bag::i, map_mutex_, pubTCMACK(), REJECTED, scheduleGeofence(), and carma_cooperative_perception::to_string().
Referenced by carma_wm_ctrl::WMBroadcasterNode::handle_on_activate().
std::vector< std::shared_ptr< Geofence > > carma_wm_ctrl::WMBroadcaster::geofenceFromMapMsg | ( | std::shared_ptr< Geofence > | gf_ptr, |
const carma_v2x_msgs::msg::MapData & | map_msg | ||
) |
Fills geofence object from MAP Data ROS Msg which contains intersections' static data such as geometry and signal_group.
Geofence | object to fill with information extracted from this msg |
geofence_msg | The MAP ROS msg that contains intersection information |
InvalidObjectStateError | if base_map is not set or the base_map's georeference is empty |
Definition at line 217 of file WMBroadcaster.cpp.
References current_map_, current_routing_graph_, carma_wm_ctrl::MAP_MSG_INTERSECTION, carma_wm_ctrl::MAP_MSG_TF_SIGNAL, and sim_.
Referenced by addGeofence().
void carma_wm_ctrl::WMBroadcaster::geofenceFromMsg | ( | std::shared_ptr< Geofence > | gf_ptr, |
const carma_v2x_msgs::msg::TrafficControlMessageV01 & | geofence_msg | ||
) |
Fills geofence object from TrafficControlMessageV01 ROS Msg.
Geofence | object to fill with information extracted from this msg and previously cached msgs that are relevant |
geofence_msg | The ROS msg that contains geofence information |
InvalidObjectStateError | if base_map is not set or the base_map's georeference is empty |
Definition at line 262 of file WMBroadcaster.cpp.
References addPassingControlLineFromMsg(), addRegionAccessRule(), addRegionMinimumGap(), config_limit, current_map_, getAffectedLaneletOrAreas(), getPointsInLocalFrame(), participantsChecker(), carma_wm_ctrl::WorkZoneSection::REVERSE, and work_zone_geofence_cache_.
Referenced by addGeofence().
void carma_wm_ctrl::WMBroadcaster::geoReferenceCallback | ( | std_msgs::msg::String::UniquePtr | geo_ref | ) |
Callback to set the base map georeference (proj string)
georef_msg | Proj string that specifies the georeference of the map. It is used for transfering frames between that of geofence and that of the vehicle |
Definition at line 1198 of file WMBroadcaster.cpp.
References base_map_georef_, map_mutex_, and sim_.
Referenced by carma_wm_ctrl::WMBroadcasterNode::handle_on_activate().
lanelet::ConstLaneletOrAreas carma_wm_ctrl::WMBroadcaster::getAffectedLaneletOrAreas | ( | const lanelet::Points3d & | gf_pts | ) |
Gets the affected lanelet or areas based on the points in local frame.
geofence_msg | lanelet::Points3d in local frame NOTE:Currently this function only checks lanelets and will be expanded to areas in the future. |
Definition at line 1344 of file WMBroadcaster.cpp.
References current_map_, current_routing_graph_, carma_wm::query::getAffectedLaneletOrAreas(), and max_lane_width_.
Referenced by geofenceFromMsg().
lanelet::Points3d carma_wm_ctrl::WMBroadcaster::getPointsInLocalFrame | ( | const carma_v2x_msgs::msg::TrafficControlMessageV01 & | geofence_msg | ) |
Extract geofence points from geofence message using its given proj and datum fields.
geofence_msg | The ROS msg that contains proj and any point that lie on the target lanelet or area |
InvalidObjectStateError | if base_map is not set or the base_map's georeference is empty |
Definition at line 1264 of file WMBroadcaster.cpp.
References base_map_georef_, process_traj_logs::c, and current_map_.
Referenced by geofenceFromMsg().
carma_planning_msgs::msg::Route carma_wm_ctrl::WMBroadcaster::getRoute | ( | ) |
Returns the most recently recieved route message.
Definition at line 1627 of file WMBroadcaster.cpp.
References current_route.
std::string carma_wm_ctrl::WMBroadcaster::getVehicleParticipationType | ( | ) |
Get the Vehicle Participation Type object.
Definition at line 1247 of file WMBroadcaster.cpp.
References participant_.
std::vector< std::string > carma_wm_ctrl::WMBroadcaster::invertParticipants | ( | const std::vector< std::string > & | input_participants | ) | const |
Generates inverse participants list of the given participants.
std::vector<std::string> | participants vector of strings |
Definition at line 993 of file WMBroadcaster.cpp.
Referenced by addRegionAccessRule().
std::vector< std::string > carma_wm_ctrl::WMBroadcaster::participantsChecker | ( | const carma_v2x_msgs::msg::TrafficControlMessageV01 & | msg_v01 | ) | const |
Generates participants list.
msg_v01 | message type |
Definition at line 951 of file WMBroadcaster.cpp.
References combineParticipantsToVehicle().
Referenced by addPassingControlLineFromMsg(), addRegionAccessRule(), addRegionMinimumGap(), and geofenceFromMsg().
void carma_wm_ctrl::WMBroadcaster::preprocessWorkzoneGeometry | ( | std::unordered_map< uint8_t, std::shared_ptr< Geofence > > | work_zone_geofence_cache, |
std::shared_ptr< std::vector< lanelet::Lanelet > > | parallel_llts, | ||
std::shared_ptr< std::vector< lanelet::Lanelet > > | opposite_llts | ||
) |
Preprocess for workzone area. Parallel_llts will have front_parallel and back_parallel lanelets that were created from splitting (if necessary) TAPERRIGHT and OPENRIGHT lanelets. Opposite_llts will have new lanelets split from REVERSE part with same direction as parallel lanelets that connect to diagonal ones.
work_zone_geofence_cache | Geofence map with size of 4 corresponding to CLOSED, TAPERRIGHT, OPENRIGHT, REVERSE TrafficControlMessages. Each should have gf_pts, affected_parts. |
parallel_llts | list holding front_parallel and back_parallel. These are created from splitting old ones in place such that they connect to diagonal ones |
opposite_llts | list holding split and filtered lanelets from REVERSE part that connect to diagonal ones |
InvalidObjectStateError | if no map is available NOTE: REVERSE part's geofence points should have same direction as opposite lane's as that is what getAffectedLaneletOrArea requires. |
PARALLEL FRONT (TAPERRIGHT side)
PARALLEL BACK (OPENRIGHT side)
HANDLE MID HERE
OPPOSITE FRONT (OPENRIGHT side)
Fill in the middle part of middle lanelets
OPPOSITE BACK (TAPERRIGHT side)
Definition at line 600 of file WMBroadcaster.cpp.
References current_map_, current_routing_graph_, error_distance_, carma_wm::query::getLaneletsFromPoint(), process_bag::i, carma_wm_ctrl::WorkZoneSection::OPENRIGHT, carma_wm_ctrl::WorkZoneSection::REVERSE, splitLaneletWithPoint(), and carma_wm_ctrl::WorkZoneSection::TAPERRIGHT.
Referenced by createWorkzoneGeofence().
void carma_wm_ctrl::WMBroadcaster::publishLightId | ( | ) |
helps to populate upcoming_intersection_ids_ from local traffic lanelet ids
Definition at line 1971 of file WMBroadcaster.cpp.
References convertLightIdToInterGroupId(), current_map_, current_route, traffic_light_id_lookup_, and upcoming_intersection_ids_.
void carma_wm_ctrl::WMBroadcaster::pubTCMACK | ( | j2735_v2x_msgs::msg::Id64b | tcm_req_id, |
uint16_t | msgnum, | ||
int | ack_status, | ||
const std::string & | ack_reason | ||
) |
Construct TCM acknowledgement object and populate it with params. Publish the object for a configured number of times.
Definition at line 2262 of file WMBroadcaster.cpp.
References ack_pub_times_, geofence_ack_strategy_, process_bag::i, carma_wm_ctrl::GeofenceScheduler::now(), scheduler_, tcm_ack_pub_, and vehicle_id_.
Referenced by geofenceCallback().
void carma_wm_ctrl::WMBroadcaster::removeGeofence | ( | std::shared_ptr< Geofence > | gf_ptr | ) |
Removes a geofence from the current map and publishes the ROS msg.
Definition at line 1578 of file WMBroadcaster.cpp.
References active_geofence_llt_ids_, current_map_, current_map_version_, current_routing_graph_, map_mutex_, map_update_pub_, participant_, removeGeofenceHelper(), carma_wm::toBinMsg(), and update_count_.
Referenced by WMBroadcaster().
|
private |
Definition at line 1935 of file WMBroadcaster.cpp.
References addBackRegulatoryComponent().
Referenced by removeGeofence().
void carma_wm_ctrl::WMBroadcaster::routeCallbackMessage | ( | carma_planning_msgs::msg::Route::UniquePtr | route_msg | ) |
Calls controlRequestFromRoute() and publishes the TrafficControlRequest Message returned after the completed operations.
route_msg | The message containing route information |
Definition at line 1632 of file WMBroadcaster.cpp.
References control_msg_pub_, controlRequestFromRoute(), and current_route.
Referenced by WMBroadcaster(), and carma_wm_ctrl::WMBroadcasterNode::handle_on_activate().
|
private |
Definition at line 1137 of file WMBroadcaster.cpp.
References carma_wm_ctrl::GeofenceScheduler::addGeofence(), carma_wm_ctrl::WorkZoneSection::REVERSE, scheduler_, work_zone_geofence_cache_, and carma_wm_ctrl::WORKZONE_TCM_REQUIRED_SIZE.
Referenced by externalMapMsgCallback(), and geofenceCallback().
void carma_wm_ctrl::WMBroadcaster::setConfigACKPubTimes | ( | int | ack_pub_times | ) |
Sets the TCM Acknowledgement publish times.
ack_pub_times | the number of times it publishes TCM Acknowledgement |
Definition at line 1238 of file WMBroadcaster.cpp.
References ack_pub_times_.
void carma_wm_ctrl::WMBroadcaster::setConfigSpeedLimit | ( | double | cL | ) |
Sets the configured speed limit.
Definition at line 1228 of file WMBroadcaster.cpp.
References config_limit.
void carma_wm_ctrl::WMBroadcaster::setConfigVehicleId | ( | const std::string & | vehicle_id | ) |
Retrieve the vehicle ID from global vehicle parameters, and set instance memeber vehicle id.
vehicle_id | Vehicle ID from UniqueVehicleParams.yaml |
Definition at line 1234 of file WMBroadcaster.cpp.
References vehicle_id_.
void carma_wm_ctrl::WMBroadcaster::setErrorDistance | ( | double | error_distance | ) |
Definition at line 595 of file WMBroadcaster.cpp.
References error_distance_.
void carma_wm_ctrl::WMBroadcaster::setIntersectionCoordCorrection | ( | const std::vector< int64_t > & | intersection_ids_for_correction, |
const std::vector< double > & | intersection_correction | ||
) |
Sets the coordinate correction for intersection.
list | of intersection_ids corresponding to every two elements in correction list |
list | of intersection coord correction parameters in double in every 2 elements: delta_x, delta_y |
Definition at line 1213 of file WMBroadcaster.cpp.
References process_bag::i, and sim_.
void carma_wm_ctrl::WMBroadcaster::setMaxLaneWidth | ( | double | max_lane_width | ) |
Sets the max lane width in meters. Geofence points are associated to a lanelet if they are within this distance to a lanelet as geofence points are guaranteed to apply to a single lane.
Definition at line 1205 of file WMBroadcaster.cpp.
References max_lane_width_, and sim_.
void carma_wm_ctrl::WMBroadcaster::setVehicleParticipationType | ( | std::string | participant | ) |
Set the Vehicle Participation Type.
participant | vehicle participation type |
Definition at line 1242 of file WMBroadcaster.cpp.
References participant_.
|
private |
This is a helper function that returns true if the provided regem is marked to be changed by the geofence as there are usually multiple passing control lines are in the lanelet.
geofence_msg | The ROS msg that contains geofence information |
el | The LaneletOrArea that houses the regem |
regem | The regulatoryElement that needs to be checked NOTE: Currently this function only works on lanelets. It returns true if the regem is not passingControlLine or if the pcl should be changed. |
Definition at line 1357 of file WMBroadcaster.cpp.
References current_map_.
Referenced by addBackRegulatoryComponent(), and addRegulatoryComponent().
|
private |
This is a helper function that returns true if signal in the lanelet should be changed according to the records of signalizer intersection manager Used in managing multiple signal_groups in a single entry lanelet for example.
el | The LaneletOrArea that houses the regem |
regem | The regulatoryElement that needs to be checked |
sim | The signalized intersection manager that has records regems and corresponding lanelets NOTE: Currently this function only works on lanelets. It returns true if the regem is not CarmaTrafficSignal or if the signal should be changed. |
Definition at line 1388 of file WMBroadcaster.cpp.
References current_map_, and sim_.
Referenced by addRegulatoryComponent().
std::vector< lanelet::Lanelet > carma_wm_ctrl::WMBroadcaster::splitLaneletWithPoint | ( | const std::vector< lanelet::BasicPoint2d > & | input_pts, |
const lanelet::Lanelet & | input_llt, | ||
double | error_distance | ||
) |
Split given lanelet with same proportion as the given points' downtrack relative to the lanelet. Newly created lanelet will have old regulatory elements copied into each of them. From the front and back boundaries, it is deemed not necessary to split if the ratios are within error_distance from either of it. For example, if front and back points of 3 points given are both within error_distance, only middle point will be used to split into 2 lanelets. It will return duplicate of old lanelet (with different id) if no splitting was done.
input_pts | Points whose downtrack ratio relative to given lanelet will be used to split the lanelet |
input_llt | A lanelet to split |
error_distance | if within this distance (in meters) the point will be ignored |
InvalidObjectStateError | if no map is available. NOTE: this is requried to return mutable objects. |
Definition at line 755 of file WMBroadcaster.cpp.
References carma_wm::TrackPos::downtrack, splitLaneletWithRatio(), and carma_wm::geometry::trackPos().
Referenced by preprocessWorkzoneGeometry().
std::vector< lanelet::Lanelet > carma_wm_ctrl::WMBroadcaster::splitLaneletWithRatio | ( | std::vector< double > | ratios, |
lanelet::Lanelet | input_lanelet, | ||
double | error_distance | ||
) | const |
Split given lanelet with given downtrack ratios relative to the lanelet. Newly created lanelet will have old regulatory elements copied into each of them. From the front and back boundaries, it is deemed not necessary to split if the ratios are within error_distance from either of it. For example, if front and back points of 3 ratios given are both within error_distance, only middle ratio will be used to split, so 2 lanelets will be returned. It will return duplicate of old lanelet (with different id) if no splitting was done.
ratios | Ratios relative to given lanelet will be used to split the lanelet |
input_llt | A lanelet to split |
error_distance | if within this distance (in meters) the ratio will be ignored as it is too small |
InvalidObjectStateError | if no map is available. NOTE: this is requried to return mutable objects. |
Definition at line 797 of file WMBroadcaster.cpp.
References current_map_, and process_bag::i.
Referenced by splitLaneletWithPoint(), and splitOppositeLaneletWithPoint().
lanelet::Lanelets carma_wm_ctrl::WMBroadcaster::splitOppositeLaneletWithPoint | ( | std::shared_ptr< std::vector< lanelet::Lanelet > > | opposite_llts, |
const lanelet::BasicPoint2d & | input_pt, | ||
const lanelet::Lanelet & | input_llt, | ||
double | error_distance | ||
) |
Split given lanelet's adjacent, OPPOSITE lanelet with same proportion as the given point's downtrack relative to the lanelet. Newly created lanelet will have old regulatory elements copied into each of them. From the front and back boundaries, it is deemed not necessary to split if the ratios are within error_distance from either of it. It will return duplicate of old lanelet (with different id) if no splitting was done.
opposite_llts | return lanelets split form original one. lanelets sorted from front to back. |
input_pt | A point whose downtrack ratio relative to given lanelet will be used to split the lanelet |
input_llt | A lanelet to split |
error_distance | if within this distance (in meters) the point will be ignored |
InvalidObjectStateError | if no map is available. NOTE: this is requried to return mutable objects. NOTE: Opposite lanelet doesn't have to share points with current lanelet |
Definition at line 776 of file WMBroadcaster.cpp.
References current_map_, carma_wm::TrackPos::downtrack, carma_wm::query::nonConnectedAdjacentLeft(), splitLaneletWithRatio(), and carma_wm::geometry::trackPos().
Referenced by createWorkzoneGeometry().
void carma_wm_ctrl::WMBroadcaster::updateUpcomingSGIntersectionIds | ( | ) |
populate upcoming_intersection_ids_ from local traffic lanelet ids
Definition at line 2197 of file WMBroadcaster.cpp.
References current_map_, current_route, sim_, and upcoming_intersection_ids_.
|
private |
Definition at line 470 of file WMBroadcaster.hpp.
Referenced by pubTCMACK(), and setConfigACKPubTimes().
|
private |
Definition at line 411 of file WMBroadcaster.hpp.
Referenced by addGeofence(), checkActiveGeofenceLogic(), distToNearestActiveGeofence(), and removeGeofence().
|
private |
Definition at line 440 of file WMBroadcaster.hpp.
Referenced by currentLocationCallback().
|
private |
Definition at line 428 of file WMBroadcaster.hpp.
Referenced by baseMapCallback().
|
private |
Definition at line 443 of file WMBroadcaster.hpp.
Referenced by controlRequestFromRoute(), geoReferenceCallback(), and getPointsInLocalFrame().
|
private |
Definition at line 435 of file WMBroadcaster.hpp.
|
private |
Definition at line 433 of file WMBroadcaster.hpp.
Referenced by geofenceCallback().
|
private |
Definition at line 431 of file WMBroadcaster.hpp.
Referenced by baseMapCallback(), geofenceFromMsg(), and setConfigSpeedLimit().
|
private |
Definition at line 439 of file WMBroadcaster.hpp.
Referenced by routeCallbackMessage().
|
private |
Definition at line 429 of file WMBroadcaster.hpp.
Referenced by addBackRegulatoryComponent(), addGeofence(), addGeofenceHelper(), addRegulatoryComponent(), baseMapCallback(), checkActiveGeofenceLogic(), controlRequestFromRoute(), createWorkzoneGeometry(), currentLocationCallback(), distToNearestActiveGeofence(), externalMapMsgCallback(), geofenceFromMapMsg(), geofenceFromMsg(), getAffectedLaneletOrAreas(), getPointsInLocalFrame(), preprocessWorkzoneGeometry(), publishLightId(), removeGeofence(), shouldChangeControlLine(), shouldChangeTrafficSignal(), splitLaneletWithRatio(), splitOppositeLaneletWithPoint(), and updateUpcomingSGIntersectionIds().
|
private |
Definition at line 451 of file WMBroadcaster.hpp.
Referenced by addGeofence(), baseMapCallback(), and removeGeofence().
|
private |
Definition at line 453 of file WMBroadcaster.hpp.
Referenced by getRoute(), publishLightId(), routeCallbackMessage(), and updateUpcomingSGIntersectionIds().
|
private |
Definition at line 430 of file WMBroadcaster.hpp.
Referenced by addGeofence(), baseMapCallback(), geofenceFromMapMsg(), getAffectedLaneletOrAreas(), preprocessWorkzoneGeometry(), and removeGeofence().
|
private |
Definition at line 409 of file WMBroadcaster.hpp.
Referenced by createWorkzoneGeometry(), preprocessWorkzoneGeometry(), and setErrorDistance().
|
private |
Definition at line 434 of file WMBroadcaster.hpp.
Referenced by controlRequestFromRoute(), and geofenceCallback().
|
private |
Definition at line 469 of file WMBroadcaster.hpp.
Referenced by pubTCMACK().
|
private |
Definition at line 436 of file WMBroadcaster.hpp.
Referenced by addGeofence(), baseMapCallback(), distToNearestActiveGeofence(), geofenceCallback(), geoReferenceCallback(), and removeGeofence().
|
private |
Definition at line 437 of file WMBroadcaster.hpp.
Referenced by baseMapCallback().
|
private |
Queue which stores the map updates applied to the current map version as a sequence of diffs This queue is implemented as a vector because it gets reused by each new subscriber connection NOTE: This queue should be cleared each time the current_map_version changes
Definition at line 459 of file WMBroadcaster.hpp.
|
private |
Definition at line 438 of file WMBroadcaster.hpp.
Referenced by addGeofence(), and removeGeofence().
|
private |
Definition at line 444 of file WMBroadcaster.hpp.
Referenced by getAffectedLaneletOrAreas(), and setMaxLaneWidth().
|
private |
Definition at line 432 of file WMBroadcaster.hpp.
Referenced by addGeofence(), baseMapCallback(), getVehicleParticipationType(), removeGeofence(), and setVehicleParticipationType().
|
private |
Definition at line 410 of file WMBroadcaster.hpp.
Referenced by controlRequestFromRoute(), and distToNearestActiveGeofence().
|
private |
Definition at line 441 of file WMBroadcaster.hpp.
Referenced by WMBroadcaster(), addScheduleFromMsg(), controlRequestFromRoute(), pubTCMACK(), and scheduleGeofence().
|
private |
Definition at line 463 of file WMBroadcaster.hpp.
Referenced by addGeofence(), addRegulatoryComponent(), externalMapMsgCallback(), geofenceFromMapMsg(), geoReferenceCallback(), setIntersectionCoordCorrection(), setMaxLaneWidth(), shouldChangeTrafficSignal(), and updateUpcomingSGIntersectionIds().
|
private |
Definition at line 442 of file WMBroadcaster.hpp.
Referenced by pubTCMACK().
visualization_msgs::msg::MarkerArray carma_wm_ctrl::WMBroadcaster::tcm_marker_array_ |
Definition at line 404 of file WMBroadcaster.hpp.
Referenced by addGeofence(), and composeTCMMarkerVisualizer().
carma_v2x_msgs::msg::TrafficControlRequestPolygon carma_wm_ctrl::WMBroadcaster::tcr_polygon_ |
Definition at line 405 of file WMBroadcaster.hpp.
Referenced by controlRequestFromRoute().
|
private |
Definition at line 413 of file WMBroadcaster.hpp.
Referenced by addGeofenceHelper(), convertLightIdToInterGroupId(), and publishLightId().
std_msgs::msg::Int32MultiArray carma_wm_ctrl::WMBroadcaster::upcoming_intersection_ids_ |
Definition at line 406 of file WMBroadcaster.hpp.
Referenced by publishLightId(), and updateUpcomingSGIntersectionIds().
|
private |
Definition at line 461 of file WMBroadcaster.hpp.
Referenced by addGeofence(), and removeGeofence().
|
private |
Definition at line 471 of file WMBroadcaster.hpp.
Referenced by pubTCMACK(), and setConfigVehicleId().
|
private |
Definition at line 412 of file WMBroadcaster.hpp.
Referenced by addGeofence(), geofenceFromMsg(), and scheduleGeofence().
|
private |
Definition at line 446 of file WMBroadcaster.hpp.
|
private |
Definition at line 445 of file WMBroadcaster.hpp.