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.
light_controlled_intersection_tactical_plugin.hpp File Reference
#include <rclcpp/rclcpp.hpp>
#include <functional>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/geometry.hpp>
#include <boost/shared_ptr.hpp>
#include <lanelet2_core/geometry/Point.h>
#include <lanelet2_core/primitives/Lanelet.h>
#include <lanelet2_core/geometry/LineString.h>
#include <carma_planning_msgs/msg/trajectory_plan_point.hpp>
#include <carma_planning_msgs/msg/trajectory_plan.hpp>
#include <carma_planning_msgs/srv/plan_trajectory.hpp>
#include <carma_planning_msgs/msg/maneuver.hpp>
#include <autoware_msgs/msg/lane.hpp>
#include <carma_debug_ros2_msgs/msg/trajectory_curvature_speeds.hpp>
#include <basic_autonomy/basic_autonomy.hpp>
#include <basic_autonomy/helper_functions.hpp>
#include "light_controlled_intersection_tactical_plugin/light_controlled_intersection_tactical_plugin_node.hpp"
Include dependency graph for light_controlled_intersection_tactical_plugin.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  light_controlled_intersection_tactical_plugin::TrajectoryParams
 
class  light_controlled_intersection_tactical_plugin::LightControlledIntersectionTacticalPlugin
 Class containing primary business logic for the Light Controlled Intersection Tactical Plugin. More...
 

Namespaces

namespace  light_controlled_intersection_tactical_plugin
 

Macros

#define GET_MANEUVER_PROPERTY(mvr, property)
 Macro definition to enable easier access to fields shared across the maneuver types. More...
 

Typedefs

using light_controlled_intersection_tactical_plugin::PointSpeedPair = basic_autonomy::waypoint_generation::PointSpeedPair
 
using light_controlled_intersection_tactical_plugin::GeneralTrajConfig = basic_autonomy::waypoint_generation::GeneralTrajConfig
 
using light_controlled_intersection_tactical_plugin::DetailedTrajConfig = basic_autonomy::waypoint_generation::DetailedTrajConfig
 
using light_controlled_intersection_tactical_plugin::DebugPublisher = std::function< void(const carma_debug_ros2_msgs::msg::TrajectoryCurvatureSpeeds &)>
 

Enumerations

enum  light_controlled_intersection_tactical_plugin::TSCase {
  light_controlled_intersection_tactical_plugin::CASE_1 = 1 , light_controlled_intersection_tactical_plugin::CASE_2 = 2 , light_controlled_intersection_tactical_plugin::CASE_3 = 3 , light_controlled_intersection_tactical_plugin::CASE_4 = 4 ,
  light_controlled_intersection_tactical_plugin::CASE_5 = 5 , light_controlled_intersection_tactical_plugin::CASE_6 = 6 , light_controlled_intersection_tactical_plugin::CASE_7 = 7 , light_controlled_intersection_tactical_plugin::CASE_8 = 8
}
 

Macro Definition Documentation

◆ GET_MANEUVER_PROPERTY

#define GET_MANEUVER_PROPERTY (   mvr,
  property 
)
Value:
(((mvr).type == carma_planning_msgs::msg::Maneuver::INTERSECTION_TRANSIT_LEFT_TURN ? (mvr).intersection_transit_left_turn_maneuver.property :\
((mvr).type == carma_planning_msgs::msg::Maneuver::INTERSECTION_TRANSIT_RIGHT_TURN ? (mvr).intersection_transit_right_turn_maneuver.property :\
((mvr).type == carma_planning_msgs::msg::Maneuver::INTERSECTION_TRANSIT_STRAIGHT ? (mvr).intersection_transit_straight_maneuver.property :\
((mvr).type == carma_planning_msgs::msg::Maneuver::LANE_FOLLOWING ? (mvr).lane_following_maneuver.property :\
throw std::invalid_argument("GET_MANEUVER_PROPERTY (property) called on maneuver with invalid type id " + std::to_string((mvr).type)))))))
auto to_string(const UtmZone &zone) -> std::string
Definition: utm_zone.cpp:21

Macro definition to enable easier access to fields shared across the maneuver types.

Parameters
mvrThe maneuver object to invoke the accessors on
propertyThe name of the field to access on the specific maneuver types. Must be shared by all extant maneuver types
Returns
Expands to an expression (in the form of chained ternary operators) that evaluates to the desired field NOTE: Here is the definition of the int_valued, float_valued, and string_valued meta data parameters that is implicitly agreed between LCI Strategic and Tactical plugins All lane_following_maneuver.properties: string_valued_meta_data[0]: light_controlled_intersection_strategy name float_valued_meta_data[0]: Trajectory Segment 1 starting acceleration a1_; float_valued_meta_data[1]: Trajectory Segment 1 starting velocity v1_; float_valued_meta_data[2]: Trajectory Segment 1 starting downtrack x1_; float_valued_meta_data[3]: Trajectory Segment 2 starting acceleration a2_; float_valued_meta_data[4]: Trajectory Segment 2 starting velocity v2_; float_valued_meta_data[5]: Trajectory Segment 2 starting downtrack x2_; float_valued_meta_data[6]: Trajectory Segment 3 starting acceleration a3_; float_valued_meta_data[7]: Trajectory Segment 3 starting velocity v3_; float_valued_meta_data[8]: Trajectory Segment 3 starting downtrack x3_; int_valued_meta_data[0]: Trajectory Smoothing Case Number int_valued_meta_data[1]: Is Trajectory Smoothing Algorithm Successful? (0: False, 1: True)

Definition at line 62 of file light_controlled_intersection_tactical_plugin.hpp.