Nav2 Navigation Stack - kilted  kilted
ROS 2 Navigation Stack
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
nav2_route::RouteServer Class Reference

An action server implements a Navigation Route-Graph planner to compliment free-space planning in the Planner Server. More...

#include <nav2_route/include/nav2_route/route_server.hpp>

Inheritance diagram for nav2_route::RouteServer:
Inheritance graph
[legend]
Collaboration diagram for nav2_route::RouteServer:
Collaboration graph
[legend]

Public Types

using ComputeRoute = nav2_msgs::action::ComputeRoute
 
using ComputeRouteGoal = ComputeRoute::Goal
 
using ComputeRouteResult = ComputeRoute::Result
 
using ComputeRouteServer = nav2_util::SimpleActionServer< ComputeRoute >
 
using ComputeAndTrackRoute = nav2_msgs::action::ComputeAndTrackRoute
 
using ComputeAndTrackRouteGoal = ComputeAndTrackRoute::Goal
 
using ComputeAndTrackRouteFeedback = ComputeAndTrackRoute::Feedback
 
using ComputeAndTrackRouteResult = ComputeAndTrackRoute::Result
 
using ComputeAndTrackRouteServer = nav2_util::SimpleActionServer< ComputeAndTrackRoute >
 

Public Member Functions

 RouteServer (const rclcpp::NodeOptions &options=rclcpp::NodeOptions())
 A constructor for nav2_route::RouteServer. More...
 
 ~RouteServer ()=default
 A destructor for nav2_route::RouteServer.
 
- Public Member Functions inherited from nav2_util::LifecycleNode
 LifecycleNode (const std::string &node_name, const std::string &ns="", const rclcpp::NodeOptions &options=rclcpp::NodeOptions())
 A lifecycle node constructor. More...
 
void add_parameter (const std::string &name, const rclcpp::ParameterValue &default_value, const std::string &description="", const std::string &additional_constraints="", bool read_only=false)
 Declare a parameter that has no integer or floating point range constraints. More...
 
void add_parameter (const std::string &name, const rclcpp::ParameterValue &default_value, const floating_point_range fp_range, const std::string &description="", const std::string &additional_constraints="", bool read_only=false)
 Declare a parameter that has a floating point range constraint. More...
 
void add_parameter (const std::string &name, const rclcpp::ParameterValue &default_value, const integer_range int_range, const std::string &description="", const std::string &additional_constraints="", bool read_only=false)
 Declare a parameter that has an integer range constraint. More...
 
std::shared_ptr< nav2_util::LifecycleNodeshared_from_this ()
 Get a shared pointer of this.
 
nav2_util::CallbackReturn on_error (const rclcpp_lifecycle::State &)
 Abstracted on_error state transition callback, since unimplemented as of 2020 in the managed ROS2 node state machine. More...
 
void autostart ()
 Automatically configure and active the node.
 
virtual void on_rcl_preshutdown ()
 Perform preshutdown activities before our Context is shutdown. Note that this is related to our Context's shutdown sequence, not the lifecycle node state machine.
 
void createBond ()
 Create bond connection to lifecycle manager.
 
void destroyBond ()
 Destroy bond connection to lifecycle manager.
 

Protected Member Functions

nav2_util::CallbackReturn on_configure (const rclcpp_lifecycle::State &state) override
 Configure member variables and initializes planner. More...
 
nav2_util::CallbackReturn on_activate (const rclcpp_lifecycle::State &state) override
 Activate member variables. More...
 
nav2_util::CallbackReturn on_deactivate (const rclcpp_lifecycle::State &state) override
 Deactivate member variables. More...
 
nav2_util::CallbackReturn on_cleanup (const rclcpp_lifecycle::State &state) override
 Reset member variables. More...
 
nav2_util::CallbackReturn on_shutdown (const rclcpp_lifecycle::State &state) override
 Called when in shutdown state. More...
 
void computeRoute ()
 Main route action server callbacks for computing and tracking a route.
 
void computeAndTrackRoute ()
 
template<typename GoalT >
Route findRoute (const std::shared_ptr< const GoalT > goal, ReroutingState &rerouting_info=ReroutingState())
 Abstract method combining finding the starting/ending nodes and the route planner to find the Node locations of interest and route to the goal. More...
 
template<typename ActionT >
void processRouteRequest (std::shared_ptr< nav2_util::SimpleActionServer< ActionT >> &action_server)
 Main processing called by both action server callbacks to centralize the great deal of shared code between them.
 
rclcpp::Duration findPlanningDuration (const rclcpp::Time &start_time)
 Find the planning duration of the request and log warnings. More...
 
template<typename ActionT >
bool isRequestValid (std::shared_ptr< nav2_util::SimpleActionServer< ActionT >> &action_server)
 Find the routing request is valid (action server OK and not cancelled) More...
 
void populateActionResult (std::shared_ptr< ComputeRoute::Result > result, const Route &route, const nav_msgs::msg::Path &path, const rclcpp::Duration &planning_duration)
 Populate result for compute route action. More...
 
void populateActionResult (std::shared_ptr< ComputeAndTrackRoute::Result >, const Route &, const nav_msgs::msg::Path &, const rclcpp::Duration &)
 Populate result for compute and track route action. More...
 
void setRouteGraph (const std::shared_ptr< rmw_request_id_t >, const std::shared_ptr< nav2_msgs::srv::SetRouteGraph::Request > request, std::shared_ptr< nav2_msgs::srv::SetRouteGraph::Response > response)
 The service callback to set a new route graph. More...
 
template<typename GoalT >
void exceptionWarning (const std::shared_ptr< const GoalT > goal, const std::exception &ex)
 Log exception warnings, templated by action message type. More...
 
- Protected Member Functions inherited from nav2_util::LifecycleNode
void printLifecycleNodeNotification ()
 Print notifications for lifecycle node.
 
void register_rcl_preshutdown_callback ()
 
void runCleanups ()
 

Protected Attributes

std::shared_ptr< ComputeRouteServercompute_route_server_
 
std::shared_ptr< ComputeAndTrackRouteServercompute_and_track_route_server_
 
std::shared_ptr< tf2_ros::Buffer > tf_
 
std::shared_ptr< tf2_ros::TransformListener > transform_listener_
 
rclcpp_lifecycle::LifecyclePublisher< visualization_msgs::msg::MarkerArray >::SharedPtr graph_vis_publisher_
 
nav2_util::ServiceServer< nav2_msgs::srv::SetRouteGraph, std::shared_ptr< rclcpp_lifecycle::LifecycleNode > >::SharedPtr set_graph_service_
 
std::shared_ptr< GraphLoadergraph_loader_
 
std::shared_ptr< RoutePlannerroute_planner_
 
std::shared_ptr< RouteTrackerroute_tracker_
 
std::shared_ptr< PathConverterpath_converter_
 
std::shared_ptr< GoalIntentExtractorgoal_intent_extractor_
 
std::shared_ptr< nav2_costmap_2d::CostmapSubscribercostmap_subscriber_
 
Graph graph_
 
GraphToIDMap id_to_graph_map_
 
std::string route_frame_
 
std::string base_frame_
 
double max_planning_time_
 
- Protected Attributes inherited from nav2_util::LifecycleNode
std::unique_ptr< rclcpp::PreShutdownCallbackHandle > rcl_preshutdown_cb_handle_ {nullptr}
 
std::shared_ptr< bond::Bond > bond_ {nullptr}
 
double bond_heartbeat_period
 
rclcpp::TimerBase::SharedPtr autostart_timer_
 

Detailed Description

An action server implements a Navigation Route-Graph planner to compliment free-space planning in the Planner Server.

Definition at line 55 of file route_server.hpp.

Constructor & Destructor Documentation

◆ RouteServer()

nav2_route::RouteServer::RouteServer ( const rclcpp::NodeOptions &  options = rclcpp::NodeOptions())
explicit

A constructor for nav2_route::RouteServer.

Parameters
optionsAdditional options to control creation of the node.

Definition at line 24 of file route_server.cpp.

Member Function Documentation

◆ exceptionWarning()

template<typename GoalT >
void nav2_route::RouteServer::exceptionWarning ( const std::shared_ptr< const GoalT >  goal,
const std::exception &  ex 
)
protected

Log exception warnings, templated by action message type.

Parameters
goalGoal that failed
exceptionException message

Definition at line 390 of file route_server.cpp.

◆ findPlanningDuration()

rclcpp::Duration nav2_route::RouteServer::findPlanningDuration ( const rclcpp::Time &  start_time)
protected

Find the planning duration of the request and log warnings.

Parameters
start_timeStart of planning time
Returns
Duration of planning time

Definition at line 158 of file route_server.cpp.

◆ findRoute()

template<typename GoalT >
Route nav2_route::RouteServer::findRoute ( const std::shared_ptr< const GoalT >  goal,
ReroutingState rerouting_info = ReroutingState() 
)
protected

Abstract method combining finding the starting/ending nodes and the route planner to find the Node locations of interest and route to the goal.

Parameters
goalThe request goal information
blocked_idsThe IDs of blocked graphs / edges
updated_start_idThe nodeID of an updated starting point when tracking a route that corresponds to the next point to route to from to continue progress
Returns
A route of the request

Definition at line 217 of file route_server.cpp.

Referenced by processRouteRequest().

Here is the caller graph for this function:

◆ isRequestValid()

template<typename ActionT >
bool nav2_route::RouteServer::isRequestValid ( std::shared_ptr< nav2_util::SimpleActionServer< ActionT >> &  action_server)
protected

Find the routing request is valid (action server OK and not cancelled)

Parameters
action_serverActions server to check
Returns
if the request is valid

Definition at line 173 of file route_server.cpp.

Referenced by processRouteRequest().

Here is the caller graph for this function:

◆ on_activate()

nav2_util::CallbackReturn nav2_route::RouteServer::on_activate ( const rclcpp_lifecycle::State &  state)
overrideprotected

Activate member variables.

Parameters
stateReference to LifeCycle node state
Returns
SUCCESS or FAILURE

Definition at line 109 of file route_server.cpp.

References nav2_util::LifecycleNode::createBond().

Here is the call graph for this function:

◆ on_cleanup()

nav2_util::CallbackReturn nav2_route::RouteServer::on_cleanup ( const rclcpp_lifecycle::State &  state)
overrideprotected

Reset member variables.

Parameters
stateReference to LifeCycle node state
Returns
SUCCESS or FAILURE

Definition at line 132 of file route_server.cpp.

◆ on_configure()

nav2_util::CallbackReturn nav2_route::RouteServer::on_configure ( const rclcpp_lifecycle::State &  state)
overrideprotected

Configure member variables and initializes planner.

Parameters
stateReference to LifeCycle node state
Returns
SUCCESS or FAILURE

Definition at line 29 of file route_server.cpp.

References computeRoute(), setRouteGraph(), and nav2_util::LifecycleNode::shared_from_this().

Here is the call graph for this function:

◆ on_deactivate()

nav2_util::CallbackReturn nav2_route::RouteServer::on_deactivate ( const rclcpp_lifecycle::State &  state)
overrideprotected

Deactivate member variables.

Parameters
stateReference to LifeCycle node state
Returns
SUCCESS or FAILURE

Definition at line 121 of file route_server.cpp.

References nav2_util::LifecycleNode::destroyBond().

Here is the call graph for this function:

◆ on_shutdown()

nav2_util::CallbackReturn nav2_route::RouteServer::on_shutdown ( const rclcpp_lifecycle::State &  state)
overrideprotected

Called when in shutdown state.

Parameters
stateReference to LifeCycle node state
Returns
SUCCESS or FAILURE

Definition at line 151 of file route_server.cpp.

◆ populateActionResult() [1/2]

void nav2_route::RouteServer::populateActionResult ( std::shared_ptr< ComputeAndTrackRoute::Result >  result,
const Route ,
const nav_msgs::msg::Path &  ,
const rclcpp::Duration &  execution_duration 
)
protected

Populate result for compute and track route action.

Parameters
resultResult to populate
routeRoute to use to populate result
pathPath to use to populate result
planning_durationTime to create a valid route

Definition at line 207 of file route_server.cpp.

◆ populateActionResult() [2/2]

void nav2_route::RouteServer::populateActionResult ( std::shared_ptr< ComputeRoute::Result >  result,
const Route route,
const nav_msgs::msg::Path &  path,
const rclcpp::Duration &  planning_duration 
)
protected

Populate result for compute route action.

Parameters
resultResult to populate
routeRoute to use to populate result
pathPath to use to populate result
planning_durationTime to create a valid route

Definition at line 196 of file route_server.cpp.

◆ setRouteGraph()

void nav2_route::RouteServer::setRouteGraph ( const std::shared_ptr< rmw_request_id_t >  ,
const std::shared_ptr< nav2_msgs::srv::SetRouteGraph::Request >  request,
std::shared_ptr< nav2_msgs::srv::SetRouteGraph::Response >  response 
)
protected

The service callback to set a new route graph.

Parameters
request_headerto the service
requestto the service
responsefrom the service

Definition at line 365 of file route_server.cpp.

Referenced by on_configure().

Here is the caller graph for this function:

The documentation for this class was generated from the following files: