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.
|
#include <route_following_plugin.hpp>
Public Member Functions | |
RouteFollowingPlugin (const rclcpp::NodeOptions &) | |
Default constructor for RouteFollowingPlugin class. More... | |
carma_ros2_utils::CallbackReturn | on_configure_plugin () |
Method which is triggered when this plugin is moved from the UNCONFIGURED to INACTIVE states. This method should be used to load parameters and is required to be implemented. More... | |
carma_ros2_utils::CallbackReturn | on_activate_plugin () |
Method which is triggered when this plugin is moved from the INACTIVE to ACTIVE states. This method should be used to prepare for future callbacks for plugin's capabilites. More... | |
bool | get_availability () |
Get the availability status of this plugin based on the current operating environment. Method must be overriden by extending classes. More... | |
std::string | get_version_id () |
Returns the version id of this plugin. More... | |
Public Member Functions inherited from carma_guidance_plugins::StrategicPlugin | |
StrategicPlugin (const rclcpp::NodeOptions &) | |
StrategicPlugin constructor. More... | |
virtual | ~StrategicPlugin ()=default |
Virtual destructor for safe deletion. More... | |
virtual void | plan_maneuvers_callback (std::shared_ptr< rmw_request_id_t > srv_header, carma_planning_msgs::srv::PlanManeuvers::Request::SharedPtr req, carma_planning_msgs::srv::PlanManeuvers::Response::SharedPtr resp)=0 |
Extending class provided callback which should return a planned trajectory based on the provided trajectory planning request. More... | |
std::string | get_capability () override |
Get the capability string representing this plugins capabilities Method must be overriden by extending classes. Expectation is that abstract plugin type parent classes will provide a default implementation. More... | |
uint8_t | get_type () override final |
Returns the type of this plugin according to the carma_planning_msgs::Plugin type enum. Extending classes for the specific type should override this method. More... | |
carma_ros2_utils::CallbackReturn | handle_on_configure (const rclcpp_lifecycle::State &) override final |
carma_ros2_utils::CallbackReturn | handle_on_activate (const rclcpp_lifecycle::State &) override final |
carma_ros2_utils::CallbackReturn | handle_on_deactivate (const rclcpp_lifecycle::State &) override final |
carma_ros2_utils::CallbackReturn | handle_on_cleanup (const rclcpp_lifecycle::State &) override final |
carma_ros2_utils::CallbackReturn | handle_on_shutdown (const rclcpp_lifecycle::State &) override final |
carma_ros2_utils::CallbackReturn | handle_on_error (const rclcpp_lifecycle::State &, const std::string &exception_string) override final |
Public Member Functions inherited from carma_guidance_plugins::PluginBaseNode | |
PluginBaseNode (const rclcpp::NodeOptions &) | |
PluginBaseNode constructor. More... | |
virtual | ~PluginBaseNode ()=default |
Virtual destructor for safe deletion. More... | |
virtual std::shared_ptr< carma_wm::WMListener > | get_world_model_listener () final |
Method to return the default world model listener provided as a convience by this base class If this method or get_world_model() are not called then the world model remains uninitialized and will not create unnecessary subscriptions. More... | |
virtual carma_wm::WorldModelConstPtr | get_world_model () final |
Method to return the default world model provided as a convience by this base class If this method or get_world_model_listener() are not called then the world model remains uninitialized and will not create unnecessary subscriptions. More... | |
virtual bool | get_activation_status () final |
Returns the activation status of this plugin. The plugins API callbacks will only be triggered when this method returns true. More... | |
virtual uint8_t | get_type () |
Returns the type of this plugin according to the carma_planning_msgs::Plugin type enum. Extending classes for the specific type should override this method. More... | |
std::string | get_plugin_name_and_ns () const |
Return the name of this plugin with namespace. NOTE: If only the name of the plugin is required, use get_plugin_name() More... | |
std::string | get_plugin_name () const |
Return the name of this plugin. More... | |
virtual bool | get_availability ()=0 |
Get the availability status of this plugin based on the current operating environment. Method must be overriden by extending classes. More... | |
virtual std::string | get_capability ()=0 |
Get the capability string representing this plugins capabilities Method must be overriden by extending classes. Expectation is that abstract plugin type parent classes will provide a default implementation. More... | |
virtual std::string | get_version_id ()=0 |
Returns the version id of this plugin. More... | |
virtual carma_ros2_utils::CallbackReturn | on_configure_plugin ()=0 |
Method which is triggered when this plugin is moved from the UNCONFIGURED to INACTIVE states. This method should be used to load parameters and is required to be implemented. More... | |
virtual carma_ros2_utils::CallbackReturn | on_activate_plugin () |
Method which is triggered when this plugin is moved from the INACTIVE to ACTIVE states. This method should be used to prepare for future callbacks for plugin's capabilites. More... | |
virtual carma_ros2_utils::CallbackReturn | on_deactivate_plugin () |
Method which is triggered when this plugin is moved from the ACTIVE to INACTIVE states. This method should be used to disable any functionality which should cease execution when plugin is inactive. More... | |
virtual carma_ros2_utils::CallbackReturn | on_cleanup_plugin () |
Method which is triggered when this plugin is moved from the INACTIVE to UNCONFIGURED states. This method should be used to fully reset the plugin such that a future call to on_configure_plugin would leave the plugin in a fresh state as though just launched. More... | |
virtual carma_ros2_utils::CallbackReturn | on_shutdown_plugin () |
Method which is triggered when this plugin is moved from any state to FINALIZED This method should be used to generate any shutdown logs or final cleanup. More... | |
virtual carma_ros2_utils::CallbackReturn | on_error_plugin (const std::string &exception_string) |
Method which is triggered when an unhandled exception occurs in this plugin This method should be used to cleanup such that the plugin could be moved to UNCONFIGURED state if possible. More... | |
carma_ros2_utils::CallbackReturn | handle_on_configure (const rclcpp_lifecycle::State &) override |
carma_ros2_utils::CallbackReturn | handle_on_activate (const rclcpp_lifecycle::State &) override |
carma_ros2_utils::CallbackReturn | handle_on_deactivate (const rclcpp_lifecycle::State &) override |
carma_ros2_utils::CallbackReturn | handle_on_cleanup (const rclcpp_lifecycle::State &) override |
carma_ros2_utils::CallbackReturn | handle_on_shutdown (const rclcpp_lifecycle::State &) override |
carma_ros2_utils::CallbackReturn | handle_on_error (const rclcpp_lifecycle::State &, const std::string &exception_string) override |
FRIEND_TEST (carma_guidance_plugins_test, connections_test) | |
Public Attributes | |
std::shared_ptr< carma_wm::WMListener > | wml_ |
carma_wm::WorldModelConstPtr | wm_ |
Private Member Functions | |
carma_planning_msgs::msg::Maneuver | composeLaneFollowingManeuverMessage (double start_dist, double end_dist, double start_speed, double target_speed, const std::vector< lanelet::Id > &lane_ids) const |
Compose a lane keeping maneuver message based on input params. More... | |
carma_planning_msgs::msg::Maneuver | composeLaneChangeManeuverMessage (double start_dist, double end_dist, double start_speed, double target_speed, lanelet::Id starting_lane_id, lanelet::Id ending_lane_id) const |
Compose a lane change maneuver message based on input params NOTE: The start and stop time are not set. This is because this is recomputed based on requests from the arbitrator. More... | |
carma_planning_msgs::msg::Maneuver | composeStopAndWaitManeuverMessage (double start_dist, double end_dist, double start_speed, lanelet::Id starting_lane_id, lanelet::Id ending_lane_id, double stopping_accel) const |
Compose a stop and wait maneuver message based on input params. NOTE: The start and stop time are not set. This is because this is recomputed based on requests from the arbitrator. More... | |
bool | isLaneChangeNeeded (lanelet::routing::LaneletRelations relations, lanelet::Id target_id) const |
Given a LaneletRelations and ID of the next lanelet in the shortest path. More... | |
void | setManeuverStartDist (carma_planning_msgs::msg::Maneuver &maneuver, double start_dist) const |
Set the start distance of a maneuver based on the progress along the route. More... | |
void | updateTimeProgress (std::vector< carma_planning_msgs::msg::Maneuver > &maneuvers, rclcpp::Time start_time) const |
Given an array of maneuvers update the starting time for each. More... | |
void | updateStartingSpeed (carma_planning_msgs::msg::Maneuver &maneuver, double start_speed) const |
Given an maneuver update the starting speed. More... | |
void | plan_maneuvers_callback (std::shared_ptr< rmw_request_id_t > srv_header, carma_planning_msgs::srv::PlanManeuvers::Request::SharedPtr req, carma_planning_msgs::srv::PlanManeuvers::Response::SharedPtr resp) |
Service callback for arbitrator maneuver planning. More... | |
double | findSpeedLimit (const lanelet::ConstLanelet &llt) |
Given a Lanelet, find it's associated Speed Limit. More... | |
std::vector< carma_planning_msgs::msg::Maneuver > | routeCb (const lanelet::routing::LaneletPath &route_shortest_path) |
Calculate maneuver plan for remaining route. This callback is triggered when a new route has been received and processed by the world model. More... | |
std::vector< carma_planning_msgs::msg::Maneuver > | addStopAndWaitAtRouteEnd (const std::vector< carma_planning_msgs::msg::Maneuver > &input_maneuvers, double route_end_downtrack, double stopping_entry_speed, double stopping_logitudinal_accel, double lateral_accel_limit, double min_maneuver_length) const |
Adds a StopAndWait maneuver to the end of a maneuver set stopping at the provided downtrack value NOTE: The priority of this method is to plan the stopping maneuver therefore earlier maneuvers will be modified or removed if required to allow the stopping behavior to be executed. More... | |
bool | maneuverWithBufferStartsAfterDowntrack (const carma_planning_msgs::msg::Maneuver &maneuver, double downtrack, double lateral_accel, double min_maneuver_length) const |
Identifies if a maneuver starts after the provided downtrack with compensation for a dynamic buffer size based on the maneuver type. More... | |
std::string | getNewManeuverId () const |
This method returns a new UUID as a string for assignment to a Maneuver message. More... | |
void | returnToShortestPath (const lanelet::ConstLanelet ¤t_lanelet) |
This method re-routes the vehicle back to the shortest path, if the vehicle has left the shortest path, but is still on the route Re-routing is performed by generating a new shortest path via the closest lanelet on the original shortest path. More... | |
void | bumper_pose_cb () |
Callback for the front bumper pose transform. More... | |
void | twist_cb (geometry_msgs::msg::TwistStamped::UniquePtr msg) |
Callback for the twist subscriber, which will store latest twist locally. More... | |
void | current_maneuver_plan_cb (carma_planning_msgs::msg::ManeuverPlan::UniquePtr msg) |
Callback for the ManeuverPlan subscriber, will store the current maneuver plan received locally. Used as part of the detection system for differentiating leaving the shortest path via another plugin vs. control drift taking the vehicle's reference point outside of the intended lane. More... | |
rclcpp::Duration | getManeuverDuration (carma_planning_msgs::msg::Maneuver &maneuver, double epsilon) const |
returns duration as ros::Duration required to complete maneuver given its start dist, end dist, start speed and end speed More... | |
void | initializeBumperTransformLookup () |
Initialize transform lookup from front bumper to map. More... | |
FRIEND_TEST (RouteFollowingPluginTest, testComposeManeuverMessage) | |
FRIEND_TEST (RouteFollowingPluginTest, testIdentifyLaneChange) | |
FRIEND_TEST (RouteFollowingPlugin, TestAssociateSpeedLimit) | |
FRIEND_TEST (RouteFollowingPlugin, TestAssociateSpeedLimitusingosm) | |
FRIEND_TEST (RouteFollowingPlugin, TestHelperfunctions) | |
FRIEND_TEST (RouteFollowingPlugin, TestReturnToShortestPath) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseOne) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseTwo) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseThree) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseFour) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseFive) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseSix) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseSeven) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseEight) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseNine) | |
FRIEND_TEST (StopAndWaitTestFixture, CaseTen) | |
Private Attributes | |
carma_ros2_utils::SubPtr< geometry_msgs::msg::TwistStamped > | twist_sub_ |
carma_ros2_utils::SubPtr< carma_planning_msgs::msg::ManeuverPlan > | current_maneuver_plan_sub_ |
std::unordered_set< lanelet::Id > | shortest_path_set_ |
Config | config_ |
double | current_speed_ = 0.0 |
double | epsilon_ = 0.0001 |
geometry_msgs::msg::PoseStamped | pose_msg_ |
lanelet::BasicPoint2d | current_loc_ |
carma_planning_msgs::msg::ManeuverPlan::UniquePtr | current_maneuver_plan_ |
std::vector< carma_planning_msgs::msg::Maneuver > | latest_maneuver_plan_ |
std::string | lane_change_plugin_ = "cooperative_lanechange" |
std::string | stop_and_wait_plugin_ = "stop_and_wait_plugin" |
std::string | planning_strategic_plugin_ = "route_following_plugin" |
std::string | lanefollow_planning_tactical_plugin_ = "inlanecruising_plugin" |
rclcpp::TimerBase::SharedPtr | bumper_pose_timer_ |
geometry_msgs::msg::TransformStamped | tf_ |
tf2::Stamped< tf2::Transform > | frontbumper_transform_ |
tf2_ros::Buffer | tf2_buffer_ |
std::unique_ptr< tf2_ros::TransformListener > | tf2_listener_ |
Static Private Attributes | |
static constexpr double | MAX_LANE_WIDTH = 3.70 |
Definition at line 62 of file route_following_plugin.hpp.
|
explicit |
Default constructor for RouteFollowingPlugin class.
Definition at line 88 of file route_following_plugin.cpp.
References route_following_plugin::Config::accel_limit_, config_, route_following_plugin::Config::lane_change_plugin_, route_following_plugin::Config::lanefollow_planning_tactical_plugin_, route_following_plugin::Config::lateral_accel_limit_, route_following_plugin::Config::min_maneuver_length_, route_following_plugin::Config::min_plan_duration_, route_following_plugin::Config::route_end_point_buffer_, route_following_plugin::Config::stop_and_wait_plugin_, route_following_plugin::Config::stopping_accel_limit_multiplier_, and route_following_plugin::Config::vehicle_id.
|
private |
Adds a StopAndWait maneuver to the end of a maneuver set stopping at the provided downtrack value NOTE: The priority of this method is to plan the stopping maneuver therefore earlier maneuvers will be modified or removed if required to allow the stopping behavior to be executed.
input_maneuvers | The set of maneuvers to modify to support the StopAndWait maneuver. |
route_end_downtrack | The target stopping point (normally the end of the route) which the vehicle should stop before. Units meters |
stopping_entry_speed | The expected entry speed for stopping. This is used to compute the stopping distance. Units m/s |
stopping_logitudinal_accel | The target deceleration (unsigned) for the stopping operation. Units m/s/s |
lateral_accel_limit | The lateral acceleration limit allowed for lane changes. Units m/s/s |
min_maneuver_length | The absolute minimum allowable maneuver length for any existing maneuvers in meters |
NOTE: Only min_maneuver_length can be a zero-valued input. All other parameters must be positive values greater than zero.
std::invalid_argument | If existing maneuvers cannot be modified to allow stopping maneuver creation, or if the generated maneuvers do not overlap any lanelets in the map. |
ASSUMPTION: At the moment the stopping entry speed is not updated because the assumption is that any previous maneuvers which were slower need not be accounted for as planning for a higher speed will always be capable of handling that case and any which were faster would already have their speed reduced by the maneuver which this speed was derived from.
Alogirthm in this block is as follows
Definition at line 265 of file route_following_plugin.cpp.
References composeLaneFollowingManeuverMessage(), composeStopAndWaitManeuverMessage(), config_, GET_MANEUVER_PROPERTY, maneuverWithBufferStartsAfterDowntrack(), route_following_plugin::Config::min_maneuver_length_, SET_MANEUVER_PROPERTY, route_following_plugin::anonymous_namespace{route_following_plugin.cpp}::setManeuverLaneletIds(), carma_cooperative_perception::to_string(), and wm_.
Referenced by routeCb().
|
private |
Callback for the front bumper pose transform.
Definition at line 531 of file route_following_plugin.cpp.
References current_loc_, current_maneuver_plan_, frontbumper_transform_, GET_MANEUVER_PROPERTY, process_bag::i, latest_maneuver_plan_, planning_strategic_plugin_, returnToShortestPath(), shortest_path_set_, tf2_buffer_, tf_, and wm_.
Referenced by on_activate_plugin().
|
private |
Compose a lane change maneuver message based on input params NOTE: The start and stop time are not set. This is because this is recomputed based on requests from the arbitrator.
start_dist | Start downtrack distance of the current maneuver |
end_dist | End downtrack distance of the current maneuver |
start_speed | Start speed of the current maneuver |
start_lane_id | Starting Lanelet ID of the current maneuver |
ending_lane_id | Ending Lanelet ID of the current maneuver |
target_speed | Target speed of the current maneuver |
Definition at line 753 of file route_following_plugin.cpp.
References getNewManeuverId(), lane_change_plugin_, planning_strategic_plugin_, and carma_cooperative_perception::to_string().
Referenced by routeCb().
|
private |
Compose a lane keeping maneuver message based on input params.
start_dist | Start downtrack distance of the current maneuver |
end_dist | End downtrack distance of the current maneuver |
start_speed | Start speed of the current maneuver |
target_speed | Target speed pf the current maneuver, usually it is the lanelet speed limit |
lane_ids | List of lanelet IDs that the current maneuver traverses. Message expects these to be contiguous and end to end |
Definition at line 724 of file route_following_plugin.cpp.
References getNewManeuverId(), lanefollow_planning_tactical_plugin_, planning_strategic_plugin_, and carma_cooperative_perception::to_string().
Referenced by addStopAndWaitAtRouteEnd(), and routeCb().
|
private |
Compose a stop and wait maneuver message based on input params. NOTE: The start and stop time are not set. This is because this is recomputed based on requests from the arbitrator.
start_dist | Start downtrack distance of the current maneuver |
end_dist | End downtrack distance of the current maneuver |
start_speed | Start speed of the current maneuver |
start_lane_id | Starting Lanelet ID of the current maneuver |
ending_lane_id | Ending Lanelet ID of the current maneuver |
stopping_accel | Acceleration used for calculating the stopping distance |
Definition at line 784 of file route_following_plugin.cpp.
References config_, getNewManeuverId(), planning_strategic_plugin_, route_following_plugin::Config::route_end_point_buffer_, stop_and_wait_plugin_, and carma_cooperative_perception::to_string().
Referenced by addStopAndWaitAtRouteEnd().
|
private |
Callback for the ManeuverPlan subscriber, will store the current maneuver plan received locally. Used as part of the detection system for differentiating leaving the shortest path via another plugin vs. control drift taking the vehicle's reference point outside of the intended lane.
msg | Latest ManeuverPlan message |
Definition at line 165 of file route_following_plugin.cpp.
References current_maneuver_plan_.
Referenced by on_configure_plugin().
|
private |
Given a Lanelet, find it's associated Speed Limit.
llt | Constant Lanelet object |
Definition at line 826 of file route_following_plugin.cpp.
References wm_.
Referenced by routeCb().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
virtual |
Get the availability status of this plugin based on the current operating environment. Method must be overriden by extending classes.
Implements carma_guidance_plugins::PluginBaseNode.
Definition at line 403 of file route_following_plugin.cpp.
|
virtual |
Returns the version id of this plugin.
Implements carma_guidance_plugins::PluginBaseNode.
Definition at line 408 of file route_following_plugin.cpp.
|
private |
returns duration as ros::Duration required to complete maneuver given its start dist, end dist, start speed and end speed
maneuver | The maneuver message to calculate duration for |
epsilon | The acceptable min start_speed + target_speed in the maneuver message, under which the maneuver is treated as faulty. Throws exception if sum of start and target speed of maneuver is below limit defined by parameter epsilon |
Definition at line 609 of file route_following_plugin.cpp.
References GET_MANEUVER_PROPERTY, and route_following_plugin::anonymous_namespace{route_following_plugin.cpp}::getManeuverEndSpeed().
Referenced by plan_maneuvers_callback(), and updateTimeProgress().
|
private |
This method returns a new UUID as a string for assignment to a Maneuver message.
Definition at line 778 of file route_following_plugin.cpp.
Referenced by composeLaneChangeManeuverMessage(), composeLaneFollowingManeuverMessage(), and composeStopAndWaitManeuverMessage().
|
private |
Initialize transform lookup from front bumper to map.
Definition at line 839 of file route_following_plugin.cpp.
References tf2_buffer_, and tf2_listener_.
Referenced by on_configure_plugin().
|
private |
Given a LaneletRelations and ID of the next lanelet in the shortest path.
relations | LaneletRelations relative to the previous lanelet |
target_id | ID of the next lanelet in the shortest path |
Definition at line 813 of file route_following_plugin.cpp.
Referenced by routeCb().
|
private |
Identifies if a maneuver starts after the provided downtrack with compensation for a dynamic buffer size based on the maneuver type.
maneuver | The maneuver to compare |
downtrack | The downtrack value to evaluate in meters |
lateral_accel | The max lateral acceleration allowed for lane changes in m/s/s |
min_maneuver_length | The absolute minimum allowable for any maneuver in meters |
Definition at line 381 of file route_following_plugin.cpp.
References GET_MANEUVER_PROPERTY, route_following_plugin::anonymous_namespace{route_following_plugin.cpp}::getManeuverEndSpeed(), and MAX_LANE_WIDTH.
Referenced by addStopAndWaitAtRouteEnd().
|
virtual |
Method which is triggered when this plugin is moved from the INACTIVE to ACTIVE states. This method should be used to prepare for future callbacks for plugin's capabilites.
Reimplemented from carma_guidance_plugins::PluginBaseNode.
Definition at line 150 of file route_following_plugin.cpp.
References bumper_pose_cb(), and bumper_pose_timer_.
|
virtual |
Method which is triggered when this plugin is moved from the UNCONFIGURED to INACTIVE states. This method should be used to load parameters and is required to be implemented.
Implements carma_guidance_plugins::PluginBaseNode.
Definition at line 104 of file route_following_plugin.cpp.
References route_following_plugin::Config::accel_limit_, config_, current_maneuver_plan_cb(), current_maneuver_plan_sub_, carma_guidance_plugins::PluginBaseNode::get_world_model(), carma_guidance_plugins::PluginBaseNode::get_world_model_listener(), initializeBumperTransformLookup(), route_following_plugin::Config::lane_change_plugin_, route_following_plugin::Config::lanefollow_planning_tactical_plugin_, route_following_plugin::Config::lateral_accel_limit_, latest_maneuver_plan_, route_following_plugin::Config::min_maneuver_length_, route_following_plugin::Config::min_plan_duration_, route_following_plugin::Config::route_end_point_buffer_, routeCb(), route_following_plugin::Config::stop_and_wait_plugin_, route_following_plugin::Config::stopping_accel_limit_multiplier_, twist_cb(), twist_sub_, wm_, and wml_.
|
privatevirtual |
Service callback for arbitrator maneuver planning.
req | Plan maneuver request |
resp | Plan maneuver response with a list of maneuver plan |
Implements carma_guidance_plugins::StrategicPlugin.
Definition at line 413 of file route_following_plugin.cpp.
References config_, epsilon_, GET_MANEUVER_PROPERTY, getManeuverDuration(), process_bag::i, latest_maneuver_plan_, route_following_plugin::Config::min_plan_duration_, setManeuverStartDist(), carma_cooperative_perception::to_string(), updateStartingSpeed(), and updateTimeProgress().
|
private |
This method re-routes the vehicle back to the shortest path, if the vehicle has left the shortest path, but is still on the route Re-routing is performed by generating a new shortest path via the closest lanelet on the original shortest path.
current_lanelet | curretn lanelet where the vehicle is at |
Definition at line 845 of file route_following_plugin.cpp.
References latest_maneuver_plan_, routeCb(), shortest_path_set_, and wm_.
Referenced by bumper_pose_cb().
|
private |
Calculate maneuver plan for remaining route. This callback is triggered when a new route has been received and processed by the world model.
route_shortest_path | A list of lanelets along the shortest path of the route using which the maneuver plan is calculated. |
Definition at line 169 of file route_following_plugin.cpp.
References route_following_plugin::Config::accel_limit_, addStopAndWaitAtRouteEnd(), composeLaneChangeManeuverMessage(), composeLaneFollowingManeuverMessage(), config_, current_loc_, current_speed_, findSpeedLimit(), GET_MANEUVER_PROPERTY, route_following_plugin::anonymous_namespace{route_following_plugin.cpp}::getManeuverEndSpeed(), isLaneChangeNeeded(), route_following_plugin::Config::lateral_accel_limit_, route_following_plugin::Config::min_maneuver_length_, shortest_path_set_, route_following_plugin::Config::stopping_accel_limit_multiplier_, and wm_.
Referenced by on_configure_plugin(), and returnToShortestPath().
|
private |
Set the start distance of a maneuver based on the progress along the route.
maneuver | A maneuver (non-specific to type) to be performed |
start_dist | the starting distance that the maneuver need to be updated to |
Definition at line 697 of file route_following_plugin.cpp.
Referenced by plan_maneuvers_callback().
|
private |
Callback for the twist subscriber, which will store latest twist locally.
msg | Latest twist message |
Definition at line 160 of file route_following_plugin.cpp.
References current_speed_.
Referenced by on_configure_plugin().
|
private |
Given an maneuver update the starting speed.
maneuver | maneuver to update the starting speed for |
start_time | The starting speed for the maneuver passed as argument |
Definition at line 670 of file route_following_plugin.cpp.
Referenced by plan_maneuvers_callback().
|
private |
Given an array of maneuvers update the starting time for each.
maneuvers | An array of maneuvers (non-specific to type) |
start_time | The starting time for the first maneuver in the sequence, each consequent maneuver is pushed ahead by same amount |
Definition at line 628 of file route_following_plugin.cpp.
References epsilon_, and getManeuverDuration().
Referenced by plan_maneuvers_callback().
|
private |
Definition at line 264 of file route_following_plugin.hpp.
Referenced by on_activate_plugin().
|
private |
Definition at line 238 of file route_following_plugin.hpp.
Referenced by RouteFollowingPlugin(), addStopAndWaitAtRouteEnd(), composeStopAndWaitManeuverMessage(), on_configure_plugin(), plan_maneuvers_callback(), and routeCb().
|
private |
Definition at line 248 of file route_following_plugin.hpp.
Referenced by bumper_pose_cb(), and routeCb().
|
private |
Definition at line 251 of file route_following_plugin.hpp.
Referenced by bumper_pose_cb(), and current_maneuver_plan_cb().
|
private |
Definition at line 230 of file route_following_plugin.hpp.
Referenced by on_configure_plugin().
|
private |
Definition at line 241 of file route_following_plugin.hpp.
Referenced by routeCb(), and twist_cb().
|
private |
Definition at line 244 of file route_following_plugin.hpp.
Referenced by plan_maneuvers_callback(), and updateTimeProgress().
|
private |
Definition at line 301 of file route_following_plugin.hpp.
Referenced by bumper_pose_cb().
|
private |
Definition at line 257 of file route_following_plugin.hpp.
Referenced by composeLaneChangeManeuverMessage().
|
private |
Definition at line 261 of file route_following_plugin.hpp.
Referenced by composeLaneFollowingManeuverMessage().
|
private |
Definition at line 254 of file route_following_plugin.hpp.
Referenced by bumper_pose_cb(), on_configure_plugin(), plan_maneuvers_callback(), and returnToShortestPath().
|
staticconstexprprivate |
Definition at line 235 of file route_following_plugin.hpp.
Referenced by maneuverWithBufferStartsAfterDowntrack().
|
private |
Definition at line 260 of file route_following_plugin.hpp.
Referenced by bumper_pose_cb(), composeLaneChangeManeuverMessage(), composeLaneFollowingManeuverMessage(), and composeStopAndWaitManeuverMessage().
|
private |
Definition at line 247 of file route_following_plugin.hpp.
|
private |
Definition at line 233 of file route_following_plugin.hpp.
Referenced by bumper_pose_cb(), returnToShortestPath(), and routeCb().
|
private |
Definition at line 258 of file route_following_plugin.hpp.
Referenced by composeStopAndWaitManeuverMessage().
|
private |
Definition at line 304 of file route_following_plugin.hpp.
Referenced by bumper_pose_cb(), and initializeBumperTransformLookup().
|
private |
Definition at line 305 of file route_following_plugin.hpp.
Referenced by initializeBumperTransformLookup().
|
private |
Definition at line 298 of file route_following_plugin.hpp.
Referenced by bumper_pose_cb().
|
private |
Definition at line 229 of file route_following_plugin.hpp.
Referenced by on_configure_plugin().
carma_wm::WorldModelConstPtr route_following_plugin::RouteFollowingPlugin::wm_ |
Definition at line 77 of file route_following_plugin.hpp.
Referenced by addStopAndWaitAtRouteEnd(), bumper_pose_cb(), findSpeedLimit(), on_configure_plugin(), returnToShortestPath(), and routeCb().
std::shared_ptr<carma_wm::WMListener> route_following_plugin::RouteFollowingPlugin::wml_ |
Definition at line 76 of file route_following_plugin.hpp.
Referenced by on_configure_plugin().