22 #include "nav2_navfn_planner/parameter_handler.hpp"
23 #include "nav2_core/controller_exceptions.hpp"
25 namespace nav2_navfn_planner
28 using nav2::declare_parameter_if_not_declared;
29 using rcl_interfaces::msg::ParameterType;
32 const nav2::LifecycleNode::SharedPtr & node,
33 std::string & plugin_name, rclcpp::Logger & logger)
36 plugin_name_ = plugin_name;
38 params_.tolerance = node->declare_or_get_parameter(plugin_name +
".tolerance", 0.5);
39 params_.use_astar = node->declare_or_get_parameter(plugin_name +
".use_astar",
false);
40 params_.allow_unknown = node->declare_or_get_parameter(plugin_name +
".allow_unknown",
true);
41 params_.use_final_approach_orientation = node->declare_or_get_parameter(plugin_name +
42 ".use_final_approach_orientation",
false);
46 const std::vector<rclcpp::Parameter> & parameters)
48 rcl_interfaces::msg::SetParametersResult result;
49 result.successful =
true;
50 for (
const auto & parameter : parameters) {
51 const auto & param_type = parameter.get_type();
52 const auto & param_name = parameter.get_name();
53 if (param_name.find(plugin_name_ +
".") != 0) {
56 if (param_type == ParameterType::PARAMETER_DOUBLE) {
57 if (parameter.as_double() <= 0.0) {
59 logger_,
"The value of parameter '%s' is incorrectly set to %f, "
60 "it should be >0. Ignoring parameter update.",
61 param_name.c_str(), parameter.as_double());
62 result.successful =
false;
71 const std::vector<rclcpp::Parameter> & parameters)
73 std::lock_guard<std::mutex> lock_reinit(mutex_);
75 for (
const auto & parameter : parameters) {
76 const auto & param_type = parameter.get_type();
77 const auto & param_name = parameter.get_name();
78 if (param_name.find(plugin_name_ +
".") != 0) {
81 if (param_type == ParameterType::PARAMETER_DOUBLE) {
82 if (param_name == plugin_name_ +
".tolerance") {
83 params_.tolerance = parameter.as_double();
85 }
else if (param_type == ParameterType::PARAMETER_BOOL) {
86 if (param_name == plugin_name_ +
".use_astar") {
87 params_.use_astar = parameter.as_bool();
88 }
else if (param_name == plugin_name_ +
".allow_unknown") {
89 params_.allow_unknown = parameter.as_bool();
90 }
else if (param_name == plugin_name_ +
".use_final_approach_orientation") {
91 params_.use_final_approach_orientation = parameter.as_bool();
Handles parameters and dynamic parameters for Navfn.
rcl_interfaces::msg::SetParametersResult validateParameterUpdatesCallback(const std::vector< rclcpp::Parameter > ¶meters) override
Validate incoming parameter updates before applying them. This callback is triggered when one or more...
void updateParametersCallback(const std::vector< rclcpp::Parameter > ¶meters) override
Apply parameter updates after validation This callback is executed when parameters have been successf...
ParameterHandler(const nav2::LifecycleNode::SharedPtr &node, std::string &plugin_name, rclcpp::Logger &logger)
Constructor for nav2_navfn_planner::ParameterHandler.