15 #include "nav2_mppi_controller/tools/parameters_handler.hpp"
21 const nav2::LifecycleNode::WeakPtr & parent, std::string & name)
24 auto node = node_.lock();
25 node_name_ = node->get_name();
26 logger_ = node->get_logger();
32 auto node = node_.lock();
33 if (post_set_param_handler_ && node) {
34 node->remove_post_set_parameters_callback(post_set_param_handler_.get());
36 post_set_param_handler_.reset();
37 if (on_set_param_handler_ && node) {
38 node->remove_on_set_parameters_callback(on_set_param_handler_.get());
40 on_set_param_handler_.reset();
45 auto node = node_.lock();
48 get_param(verbose_,
"verbose",
false);
49 post_set_param_handler_ = node->add_post_set_parameters_callback(
52 std::placeholders::_1));
53 on_set_param_handler_ = node->add_on_set_parameters_callback(
56 std::placeholders::_1));
59 rcl_interfaces::msg::SetParametersResult
61 const std::vector<rclcpp::Parameter> & parameters)
63 rcl_interfaces::msg::SetParametersResult result;
64 result.successful =
true;
67 std::vector<rclcpp::Parameter> plugin_params;
68 for (
auto & param : parameters) {
69 const std::string & param_name = param.get_name();
70 if (param_name.find(name_ +
".") != 0) {
73 plugin_params.push_back(param);
76 if (!plugin_params.empty()) {
77 for (
auto & param : plugin_params) {
78 const std::string & param_name = param.get_name();
79 if (
auto callback = get_pre_callbacks_.find(param_name);
80 callback != get_pre_callbacks_.end())
82 callback->second(param, result);
87 if (!result.successful) {
88 RCLCPP_ERROR(logger_,
"%s", result.reason.c_str());
94 const std::vector<rclcpp::Parameter> & parameters)
96 std::lock_guard<std::mutex> lock(parameters_change_mutex_);
97 std::vector<rclcpp::Parameter> plugin_params;
98 for (
auto & param : parameters) {
99 const std::string & param_name = param.get_name();
100 if (param_name.find(name_ +
".") != 0) {
103 plugin_params.push_back(param);
106 if (!plugin_params.empty()) {
107 for (
auto & param : plugin_params) {
108 const std::string & param_name = param.get_name();
109 if (
auto callback = get_param_callbacks_.find(param_name);
110 callback != get_param_callbacks_.end())
112 callback->second(param);
115 for (
auto & post_cb : post_callbacks_) {
rcl_interfaces::msg::SetParametersResult validateParameterUpdatesCallback(const std::vector< rclcpp::Parameter > ¶meters)
Validate incoming parameter updates before applying them. This callback is triggered when one or more...
auto getParamGetter(const std::string &ns)
Get an object to retrieve parameters.
void start()
Starts processing dynamic parameter changes.
void updateParametersCallback(const std::vector< rclcpp::Parameter > ¶meters)
Apply parameter updates after validation This callback is executed when parameters have been successf...
ParametersHandler()=default
Constructor for mppi::ParametersHandler.
~ParametersHandler()
Destructor for mppi::ParametersHandler.