18 #include "nav2_route/plugins/edge_cost_functions/dynamic_edges_scorer.hpp"
24 const rclcpp_lifecycle::LifecycleNode::SharedPtr node,
25 const std::shared_ptr<tf2_ros::Buffer>,
26 std::shared_ptr<nav2_costmap_2d::CostmapSubscriber>,
27 const std::string & name)
29 RCLCPP_INFO(node->get_logger(),
"Configuring adjust edges scorer.");
31 logger_ = node->get_logger();
33 node->create_service<nav2_msgs::srv::DynamicEdges>(
34 std::string(node->get_name()) +
"/" +
getName() +
"/adjust_edges",
37 std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
39 dynamic_penalties_.clear();
40 closed_edges_.clear();
44 const std::shared_ptr<rmw_request_id_t>,
45 const std::shared_ptr<nav2_msgs::srv::DynamicEdges::Request> request,
46 std::shared_ptr<nav2_msgs::srv::DynamicEdges::Response> response)
48 RCLCPP_INFO(logger_,
"Edge closure and cost adjustment in progress!");
51 for (
unsigned int edge : request->closed_edges) {
52 closed_edges_.insert(edge);
56 for (
unsigned int edge : request->opened_edges) {
57 if (closed_edges_.find(edge) != closed_edges_.end()) {
58 closed_edges_.erase(edge);
63 for (
auto & edge : request->adjust_edges) {
64 dynamic_penalties_[edge.edgeid] = edge.cost;
67 response->success =
true;
73 const EdgeType & ,
float & cost)
76 if (closed_edges_.find(edge->edgeid) != closed_edges_.end()) {
80 const auto & dyn_pen = dynamic_penalties_.find(edge->edgeid);
81 if (dyn_pen != dynamic_penalties_.end()) {
82 cost = dyn_pen->second;
95 #include "pluginlib/class_list_macros.hpp"
Rejects edges that are in the closed set of edges for navigation to prevent routes from containing pa...
void closedEdgesCb(const std::shared_ptr< rmw_request_id_t > request_header, const std::shared_ptr< nav2_msgs::srv::DynamicEdges::Request > request, std::shared_ptr< nav2_msgs::srv::DynamicEdges::Response > response)
Service callback to process edge changes.
bool score(const EdgePtr edge, const RouteRequest &route_request, const EdgeType &edge_type, float &cost) override
Main scoring plugin API.
std::string getName() override
Get name of the plugin for parameter scope mapping.
void configure(const rclcpp_lifecycle::LifecycleNode::SharedPtr node, const std::shared_ptr< tf2_ros::Buffer > tf_buffer, std::shared_ptr< nav2_costmap_2d::CostmapSubscriber > costmap_subscriber, const std::string &name) override
Configure.
A plugin interface to score edges during graph search to modify the lowest cost path (e....
An object representing edges between nodes.
An object to store salient features of the route request including its start and goal node ids,...