Skip to content

Commit

Permalink
[NavFn] Make the 3 parameters changeable at runtime (#2181)
Browse files Browse the repository at this point in the history
* make the 3 params changeable at runtime

* use parameter events callbacks

* doxygen

* lint
  • Loading branch information
doisyg authored and SteveMacenski committed Apr 5, 2021
1 parent a110f60 commit 1432d44
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
10 changes: 10 additions & 0 deletions nav2_navfn_planner/include/nav2_navfn_planner/navfn_planner.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,16 @@ class NavfnPlanner : public nav2_core::GlobalPlanner

// Whether to use the astar planner or default dijkstras
bool use_astar_;

// Subscription for parameter change
rclcpp::AsyncParametersClient::SharedPtr parameters_client_;
rclcpp::Subscription<rcl_interfaces::msg::ParameterEvent>::SharedPtr parameter_event_sub_;

/**
* @brief Callback executed when a paramter change is detected
* @param event ParameterEvent message
*/
void on_parameter_event_callback(const rcl_interfaces::msg::ParameterEvent::SharedPtr event);
};

} // namespace nav2_navfn_planner
Expand Down
35 changes: 35 additions & 0 deletions nav2_navfn_planner/src/navfn_planner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@

using namespace std::chrono_literals;
using nav2_util::declare_parameter_if_not_declared;
using rcl_interfaces::msg::ParameterType;
using std::placeholders::_1;

namespace nav2_navfn_planner
{
Expand Down Expand Up @@ -85,6 +87,16 @@ NavfnPlanner::configure(
planner_ = std::make_unique<NavFn>(
costmap_->getSizeInCellsX(),
costmap_->getSizeInCellsY());

// Setup callback for changes to parameters.
parameters_client_ = std::make_shared<rclcpp::AsyncParametersClient>(
node->get_node_base_interface(),
node->get_node_topics_interface(),
node->get_node_graph_interface(),
node->get_node_services_interface());

parameter_event_sub_ = parameters_client_->on_parameter_event(
std::bind(&NavfnPlanner::on_parameter_event_callback, this, _1));
}

void
Expand Down Expand Up @@ -453,6 +465,29 @@ NavfnPlanner::clearRobotCell(unsigned int mx, unsigned int my)
costmap_->setCost(mx, my, nav2_costmap_2d::FREE_SPACE);
}

void
NavfnPlanner::on_parameter_event_callback(
const rcl_interfaces::msg::ParameterEvent::SharedPtr event)
{
for (auto & changed_parameter : event->changed_parameters) {
const auto & type = changed_parameter.value.type;
const auto & name = changed_parameter.name;
const auto & value = changed_parameter.value;

if (type == ParameterType::PARAMETER_DOUBLE) {
if (name == name_ + ".tolerance") {
tolerance_ = value.double_value;
}
} else if (type == ParameterType::PARAMETER_BOOL) {
if (name == name_ + ".use_astar") {
use_astar_ = value.bool_value;
} else if (name == name_ + ".allow_unknown") {
allow_unknown_ = value.bool_value;
}
}
}
}

} // namespace nav2_navfn_planner

#include "pluginlib/class_list_macros.hpp"
Expand Down

0 comments on commit 1432d44

Please sign in to comment.