|
40 | 40 |
|
41 | 41 | using namespace std::chrono_literals;
|
42 | 42 | using nav2_util::declare_parameter_if_not_declared;
|
| 43 | +using rcl_interfaces::msg::ParameterType; |
| 44 | +using std::placeholders::_1; |
43 | 45 |
|
44 | 46 | namespace nav2_navfn_planner
|
45 | 47 | {
|
@@ -85,6 +87,16 @@ NavfnPlanner::configure(
|
85 | 87 | planner_ = std::make_unique<NavFn>(
|
86 | 88 | costmap_->getSizeInCellsX(),
|
87 | 89 | costmap_->getSizeInCellsY());
|
| 90 | + |
| 91 | + // Setup callback for changes to parameters. |
| 92 | + parameters_client_ = std::make_shared<rclcpp::AsyncParametersClient>( |
| 93 | + node->get_node_base_interface(), |
| 94 | + node->get_node_topics_interface(), |
| 95 | + node->get_node_graph_interface(), |
| 96 | + node->get_node_services_interface()); |
| 97 | + |
| 98 | + parameter_event_sub_ = parameters_client_->on_parameter_event( |
| 99 | + std::bind(&NavfnPlanner::on_parameter_event_callback, this, _1)); |
88 | 100 | }
|
89 | 101 |
|
90 | 102 | void
|
@@ -453,6 +465,29 @@ NavfnPlanner::clearRobotCell(unsigned int mx, unsigned int my)
|
453 | 465 | costmap_->setCost(mx, my, nav2_costmap_2d::FREE_SPACE);
|
454 | 466 | }
|
455 | 467 |
|
| 468 | +void |
| 469 | +NavfnPlanner::on_parameter_event_callback( |
| 470 | + const rcl_interfaces::msg::ParameterEvent::SharedPtr event) |
| 471 | +{ |
| 472 | + for (auto & changed_parameter : event->changed_parameters) { |
| 473 | + const auto & type = changed_parameter.value.type; |
| 474 | + const auto & name = changed_parameter.name; |
| 475 | + const auto & value = changed_parameter.value; |
| 476 | + |
| 477 | + if (type == ParameterType::PARAMETER_DOUBLE) { |
| 478 | + if (name == name_ + ".tolerance") { |
| 479 | + tolerance_ = value.double_value; |
| 480 | + } |
| 481 | + } else if (type == ParameterType::PARAMETER_BOOL) { |
| 482 | + if (name == name_ + ".use_astar") { |
| 483 | + use_astar_ = value.bool_value; |
| 484 | + } else if (name == name_ + ".allow_unknown") { |
| 485 | + allow_unknown_ = value.bool_value; |
| 486 | + } |
| 487 | + } |
| 488 | + } |
| 489 | +} |
| 490 | + |
456 | 491 | } // namespace nav2_navfn_planner
|
457 | 492 |
|
458 | 493 | #include "pluginlib/class_list_macros.hpp"
|
|
0 commit comments