Skip to content

Commit 1303d45

Browse files
adding dynamic params to RPP and cleaningup style in others (ros-navigation#2607)
* adding dynamic params to RPP and cleaningup style in others * adding tests * tests working
1 parent d2f56fe commit 1303d45

File tree

17 files changed

+205
-17
lines changed

17 files changed

+205
-17
lines changed

nav2_controller/include/nav2_controller/plugins/simple_goal_checker.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class SimpleGoalChecker : public nav2_core::GoalChecker
7676
// Cached squared xy_goal_tolerance_
7777
double xy_goal_tolerance_sq_;
7878
// Dynamic parameters handler
79-
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler;
79+
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_;
8080
std::string plugin_name_;
8181

8282
/**

nav2_controller/include/nav2_controller/plugins/simple_progress_checker.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class SimpleProgressChecker : public nav2_core::ProgressChecker
6363

6464
bool baseline_pose_set_{false};
6565
// Dynamic parameters handler
66-
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler;
66+
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_;
6767
std::string plugin_name_;
6868

6969
/**

nav2_controller/include/nav2_controller/plugins/stopped_goal_checker.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class StoppedGoalChecker : public SimpleGoalChecker
6868
protected:
6969
double rot_stopped_velocity_, trans_stopped_velocity_;
7070
// Dynamic parameters handler
71-
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler;
71+
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_;
7272
std::string plugin_name_;
7373

7474
/**

nav2_controller/plugins/simple_goal_checker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ void SimpleGoalChecker::initialize(
8585
xy_goal_tolerance_sq_ = xy_goal_tolerance_ * xy_goal_tolerance_;
8686

8787
// Add callback for dynamic parameters
88-
dyn_params_handler = node->add_on_set_parameters_callback(
88+
dyn_params_handler_ = node->add_on_set_parameters_callback(
8989
std::bind(&SimpleGoalChecker::dynamicParametersCallback, this, _1));
9090
}
9191

nav2_controller/plugins/simple_progress_checker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void SimpleProgressChecker::initialize(
5151
time_allowance_ = rclcpp::Duration::from_seconds(time_allowance_param);
5252

5353
// Add callback for dynamic parameters
54-
dyn_params_handler = node->add_on_set_parameters_callback(
54+
dyn_params_handler_ = node->add_on_set_parameters_callback(
5555
std::bind(&SimpleProgressChecker::dynamicParametersCallback, this, _1));
5656
}
5757

nav2_controller/plugins/stopped_goal_checker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ void StoppedGoalChecker::initialize(
7575
node->get_parameter(plugin_name + ".trans_stopped_velocity", trans_stopped_velocity_);
7676

7777
// Add callback for dynamic parameters
78-
dyn_params_handler = node->add_on_set_parameters_callback(
78+
dyn_params_handler_ = node->add_on_set_parameters_callback(
7979
std::bind(&StoppedGoalChecker::dynamicParametersCallback, this, _1));
8080
}
8181

nav2_dwb_controller/dwb_plugins/include/dwb_plugins/kinematic_parameters.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class KinematicsHandler
122122
std::atomic<KinematicParameters *> kinematics_;
123123

124124
// Dynamic parameters handler
125-
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler;
125+
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_;
126126
/**
127127
* @brief Callback executed when a paramter change is detected
128128
* @param parameters list of changed parameters

nav2_dwb_controller/dwb_plugins/src/kinematic_parameters.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ void KinematicsHandler::initialize(
115115
kinematics.base_max_vel_theta_ = kinematics.max_vel_theta_;
116116

117117
// Add callback for dynamic parameters
118-
dyn_params_handler = nh->add_on_set_parameters_callback(
118+
dyn_params_handler_ = nh->add_on_set_parameters_callback(
119119
std::bind(&KinematicsHandler::dynamicParametersCallback, this, _1));
120120

121121
kinematics.min_speed_xy_sq_ = kinematics.min_speed_xy_ * kinematics.min_speed_xy_;

nav2_navfn_planner/include/nav2_navfn_planner/navfn_planner.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ class NavfnPlanner : public nav2_core::GlobalPlanner
219219
rclcpp_lifecycle::LifecycleNode::WeakPtr node_;
220220

221221
// Dynamic parameters handler
222-
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler;
222+
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_;
223223

224224
/**
225225
* @brief Callback executed when a paramter change is detected

nav2_navfn_planner/src/navfn_planner.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ NavfnPlanner::activate()
104104
name_.c_str());
105105
// Add callback for dynamic parameters
106106
auto node = node_.lock();
107-
dyn_params_handler = node->add_on_set_parameters_callback(
107+
dyn_params_handler_ = node->add_on_set_parameters_callback(
108108
std::bind(&NavfnPlanner::dynamicParametersCallback, this, _1));
109109
}
110110

@@ -114,7 +114,7 @@ NavfnPlanner::deactivate()
114114
RCLCPP_INFO(
115115
logger_, "Deactivating plugin %s of type NavfnPlanner",
116116
name_.c_str());
117-
dyn_params_handler.reset();
117+
dyn_params_handler_.reset();
118118
}
119119

120120
void

nav2_regulated_pure_pursuit_controller/include/nav2_regulated_pure_pursuit_controller/regulated_pure_pursuit_controller.hpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <vector>
2121
#include <memory>
2222
#include <algorithm>
23+
#include <mutex>
2324

2425
#include "nav2_core/controller.hpp"
2526
#include "rclcpp/rclcpp.hpp"
@@ -227,6 +228,14 @@ class RegulatedPurePursuitController : public nav2_core::Controller
227228
*/
228229
double findDirectionChange(const geometry_msgs::msg::PoseStamped & pose);
229230

231+
/**
232+
* @brief Callback executed when a parameter change is detected
233+
* @param event ParameterEvent message
234+
*/
235+
rcl_interfaces::msg::SetParametersResult
236+
dynamicParametersCallback(std::vector<rclcpp::Parameter> parameters);
237+
238+
rclcpp_lifecycle::LifecycleNode::WeakPtr node_;
230239
std::shared_ptr<tf2_ros::Buffer> tf_;
231240
std::string plugin_name_;
232241
std::shared_ptr<nav2_costmap_2d::Costmap2DROS> costmap_ros_;
@@ -266,6 +275,10 @@ class RegulatedPurePursuitController : public nav2_core::Controller
266275
std::shared_ptr<rclcpp_lifecycle::LifecyclePublisher<geometry_msgs::msg::PointStamped>>
267276
carrot_pub_;
268277
std::shared_ptr<rclcpp_lifecycle::LifecyclePublisher<nav_msgs::msg::Path>> carrot_arc_pub_;
278+
279+
// Dynamic parameters handler
280+
std::mutex mutex_;
281+
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_;
269282
};
270283

271284
} // namespace nav2_regulated_pure_pursuit_controller

nav2_regulated_pure_pursuit_controller/src/regulated_pure_pursuit_controller.cpp

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <string>
1818
#include <limits>
1919
#include <memory>
20+
#include <vector>
2021
#include <utility>
2122

2223
#include "nav2_regulated_pure_pursuit_controller/regulated_pure_pursuit_controller.hpp"
@@ -32,6 +33,7 @@ using std::abs;
3233
using nav2_util::declare_parameter_if_not_declared;
3334
using nav2_util::geometry_utils::euclidean_distance;
3435
using namespace nav2_costmap_2d; // NOLINT
36+
using rcl_interfaces::msg::ParameterType;
3537

3638
namespace nav2_regulated_pure_pursuit_controller
3739
{
@@ -42,6 +44,7 @@ void RegulatedPurePursuitController::configure(
4244
const std::shared_ptr<nav2_costmap_2d::Costmap2DROS> & costmap_ros)
4345
{
4446
auto node = parent.lock();
47+
node_ = parent;
4548
if (!node) {
4649
throw nav2_core::PlannerException("Unable to lock node!");
4750
}
@@ -202,6 +205,12 @@ void RegulatedPurePursuitController::activate()
202205
global_path_pub_->on_activate();
203206
carrot_pub_->on_activate();
204207
carrot_arc_pub_->on_activate();
208+
// Add callback for dynamic parameters
209+
auto node = node_.lock();
210+
dyn_params_handler_ = node->add_on_set_parameters_callback(
211+
std::bind(
212+
&RegulatedPurePursuitController::dynamicParametersCallback,
213+
this, std::placeholders::_1));
205214
}
206215

207216
void RegulatedPurePursuitController::deactivate()
@@ -214,6 +223,7 @@ void RegulatedPurePursuitController::deactivate()
214223
global_path_pub_->on_deactivate();
215224
carrot_pub_->on_deactivate();
216225
carrot_arc_pub_->on_deactivate();
226+
dyn_params_handler_.reset();
217227
}
218228

219229
std::unique_ptr<geometry_msgs::msg::PointStamped> RegulatedPurePursuitController::createCarrotMsg(
@@ -245,6 +255,8 @@ geometry_msgs::msg::TwistStamped RegulatedPurePursuitController::computeVelocity
245255
const geometry_msgs::msg::Twist & speed,
246256
nav2_core::GoalChecker * goal_checker)
247257
{
258+
std::lock_guard<std::mutex> lock_reinit(mutex_);
259+
248260
// Update for the current goal checker's state
249261
geometry_msgs::msg::Pose pose_tolerance;
250262
geometry_msgs::msg::Twist vel_tolerance;
@@ -668,6 +680,97 @@ bool RegulatedPurePursuitController::transformPose(
668680
return false;
669681
}
670682

683+
684+
rcl_interfaces::msg::SetParametersResult
685+
RegulatedPurePursuitController::dynamicParametersCallback(
686+
std::vector<rclcpp::Parameter> parameters)
687+
{
688+
rcl_interfaces::msg::SetParametersResult result;
689+
std::lock_guard<std::mutex> lock_reinit(mutex_);
690+
691+
for (auto parameter : parameters) {
692+
const auto & type = parameter.get_type();
693+
const auto & name = parameter.get_name();
694+
695+
if (type == ParameterType::PARAMETER_DOUBLE) {
696+
if (name == plugin_name_ + ".inflation_cost_scaling_factor") {
697+
if (parameter.as_double() <= 0.0) {
698+
RCLCPP_WARN(
699+
logger_, "The value inflation_cost_scaling_factor is incorrectly set, "
700+
"it should be >0. Ignoring parameter update.");
701+
continue;
702+
}
703+
inflation_cost_scaling_factor_ = parameter.as_double();
704+
} else if (name == plugin_name_ + ".desired_linear_vel") {
705+
desired_linear_vel_ = parameter.as_double();
706+
base_desired_linear_vel_ = parameter.as_double();
707+
} else if (name == plugin_name_ + ".lookahead_dist") {
708+
lookahead_dist_ = parameter.as_double();
709+
} else if (name == plugin_name_ + ".max_lookahead_dist") {
710+
max_lookahead_dist_ = parameter.as_double();
711+
} else if (name == plugin_name_ + ".min_lookahead_dist") {
712+
min_lookahead_dist_ = parameter.as_double();
713+
} else if (name == plugin_name_ + ".lookahead_time") {
714+
lookahead_time_ = parameter.as_double();
715+
} else if (name == plugin_name_ + ".rotate_to_heading_angular_vel") {
716+
rotate_to_heading_angular_vel_ = parameter.as_double();
717+
} else if (name == plugin_name_ + ".max_linear_accel") {
718+
max_linear_accel_ = parameter.as_double();
719+
} else if (name == plugin_name_ + ".max_linear_decel") {
720+
max_linear_decel_ = parameter.as_double();
721+
} else if (name == plugin_name_ + ".min_approach_linear_velocity") {
722+
min_approach_linear_velocity_ = parameter.as_double();
723+
} else if (name == plugin_name_ + ".max_allowed_time_to_collision") {
724+
max_allowed_time_to_collision_ = parameter.as_double();
725+
} else if (name == plugin_name_ + ".cost_scaling_dist") {
726+
cost_scaling_dist_ = parameter.as_double();
727+
} else if (name == plugin_name_ + ".cost_scaling_gain") {
728+
cost_scaling_gain_ = parameter.as_double();
729+
} else if (name == plugin_name_ + ".regulated_linear_scaling_min_radius") {
730+
regulated_linear_scaling_min_radius_ = parameter.as_double();
731+
} else if (name == plugin_name_ + ".transform_tolerance") {
732+
double transform_tolerance = parameter.as_double();
733+
transform_tolerance_ = tf2::durationFromSec(transform_tolerance);
734+
} else if (name == plugin_name_ + ".regulated_linear_scaling_min_speed") {
735+
regulated_linear_scaling_min_speed_ = parameter.as_double();
736+
} else if (name == plugin_name_ + ".max_angular_accel") {
737+
max_angular_accel_ = parameter.as_double();
738+
} else if (name == plugin_name_ + ".rotate_to_heading_min_angle") {
739+
rotate_to_heading_min_angle_ = parameter.as_double();
740+
}
741+
} else if (type == ParameterType::PARAMETER_BOOL) {
742+
if (name == plugin_name_ + ".use_velocity_scaled_lookahead_dist") {
743+
use_velocity_scaled_lookahead_dist_ = parameter.as_bool();
744+
} else if (name == plugin_name_ + ".use_regulated_linear_velocity_scaling") {
745+
use_regulated_linear_velocity_scaling_ = parameter.as_bool();
746+
} else if (name == plugin_name_ + ".use_cost_regulated_linear_velocity_scaling") {
747+
use_cost_regulated_linear_velocity_scaling_ = parameter.as_bool();
748+
} else if (name == plugin_name_ + ".use_approach_vel_scaling") {
749+
use_approach_vel_scaling_ = parameter.as_bool();
750+
} else if (name == plugin_name_ + ".use_rotate_to_heading") {
751+
if (parameter.as_bool() && allow_reversing_) {
752+
RCLCPP_WARN(
753+
logger_, "Both use_rotate_to_heading and allow_reversing "
754+
"parameter cannot be set to true. Rejecting parameter update.");
755+
continue;
756+
}
757+
use_rotate_to_heading_ = parameter.as_bool();
758+
} else if (name == plugin_name_ + ".allow_reversing") {
759+
if (use_rotate_to_heading_ && parameter.as_bool()) {
760+
RCLCPP_WARN(
761+
logger_, "Both use_rotate_to_heading and allow_reversing "
762+
"parameter cannot be set to true. Rejecting parameter update.");
763+
continue;
764+
}
765+
allow_reversing_ = parameter.as_bool();
766+
}
767+
}
768+
}
769+
770+
result.successful = true;
771+
return result;
772+
}
773+
671774
} // namespace nav2_regulated_pure_pursuit_controller
672775

673776
// Register this controller as a nav2_core plugin

nav2_regulated_pure_pursuit_controller/test/test_regulated_pp.cpp

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,3 +382,75 @@ TEST(RegulatedPurePursuitTest, applyConstraints)
382382
// dist_error, lookahead_dist, curvature, curr_speed, pose_cost, linear_vel);
383383
// EXPECT_NEAR(linear_vel, 0.5, 0.01);
384384
}
385+
386+
TEST(RegulatedPurePursuitTest, testDynamicParameter)
387+
{
388+
auto node = std::make_shared<rclcpp_lifecycle::LifecycleNode>("Smactest");
389+
auto costmap = std::make_shared<nav2_costmap_2d::Costmap2DROS>("global_costmap");
390+
costmap->on_configure(rclcpp_lifecycle::State());
391+
auto ctrl =
392+
std::make_unique<nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController>();
393+
auto tf = std::make_shared<tf2_ros::Buffer>(node->get_clock());
394+
ctrl->configure(node, "test", tf, costmap);
395+
ctrl->activate();
396+
397+
auto rec_param = std::make_shared<rclcpp::AsyncParametersClient>(
398+
node->get_node_base_interface(), node->get_node_topics_interface(),
399+
node->get_node_graph_interface(),
400+
node->get_node_services_interface());
401+
402+
auto results = rec_param->set_parameters_atomically(
403+
{rclcpp::Parameter("test.desired_linear_vel", 1.0),
404+
rclcpp::Parameter("test.lookahead_dist", 7.0),
405+
rclcpp::Parameter("test.max_lookahead_dist", 7.0),
406+
rclcpp::Parameter("test.min_lookahead_dist", 6.0),
407+
rclcpp::Parameter("test.lookahead_time", 1.8),
408+
rclcpp::Parameter("test.rotate_to_heading_angular_vel", 18.0),
409+
rclcpp::Parameter("test.max_linear_accel", 0.5),
410+
rclcpp::Parameter("test.max_linear_decel", 0.5),
411+
rclcpp::Parameter("test.min_approach_linear_velocity", 1.0),
412+
rclcpp::Parameter("test.max_allowed_time_to_collision", 2.0),
413+
rclcpp::Parameter("test.cost_scaling_dist", 2.0),
414+
rclcpp::Parameter("test.cost_scaling_gain", 4.0),
415+
rclcpp::Parameter("test.regulated_linear_scaling_min_radius", 10.0),
416+
rclcpp::Parameter("test.transform_tolerance", 30.0),
417+
rclcpp::Parameter("test.max_angular_accel", 3.0),
418+
rclcpp::Parameter("test.rotate_to_heading_min_angle", 0.7),
419+
rclcpp::Parameter("test.regulated_linear_scaling_min_speed", 4.0),
420+
rclcpp::Parameter("test.use_velocity_scaled_lookahead_dist", false),
421+
rclcpp::Parameter("test.use_regulated_linear_velocity_scaling", false),
422+
rclcpp::Parameter("test.use_cost_regulated_linear_velocity_scaling", false),
423+
rclcpp::Parameter("test.use_approach_linear_velocity_scaling", false),
424+
rclcpp::Parameter("test.allow_reversing", false),
425+
rclcpp::Parameter("test.use_rotate_to_heading", false)});
426+
427+
rclcpp::spin_until_future_complete(
428+
node->get_node_base_interface(),
429+
results);
430+
431+
EXPECT_EQ(node->get_parameter("test.desired_linear_vel").as_double(), 1.0);
432+
EXPECT_EQ(node->get_parameter("test.lookahead_dist").as_double(), 7.0);
433+
EXPECT_EQ(node->get_parameter("test.max_lookahead_dist").as_double(), 7.0);
434+
EXPECT_EQ(node->get_parameter("test.min_lookahead_dist").as_double(), 6.0);
435+
EXPECT_EQ(node->get_parameter("test.lookahead_time").as_double(), 1.8);
436+
EXPECT_EQ(node->get_parameter("test.rotate_to_heading_angular_vel").as_double(), 18.0);
437+
EXPECT_EQ(node->get_parameter("test.max_linear_accel").as_double(), 0.5);
438+
EXPECT_EQ(node->get_parameter("test.max_linear_decel").as_double(), 0.5);
439+
EXPECT_EQ(node->get_parameter("test.min_approach_linear_velocity").as_double(), 1.0);
440+
EXPECT_EQ(node->get_parameter("test.max_allowed_time_to_collision").as_double(), 2.0);
441+
EXPECT_EQ(node->get_parameter("test.cost_scaling_dist").as_double(), 2.0);
442+
EXPECT_EQ(node->get_parameter("test.cost_scaling_gain").as_double(), 4.0);
443+
EXPECT_EQ(node->get_parameter("test.regulated_linear_scaling_min_radius").as_double(), 10.0);
444+
EXPECT_EQ(node->get_parameter("test.transform_tolerance").as_double(), 30.0);
445+
EXPECT_EQ(node->get_parameter("test.max_angular_accel").as_double(), 3.0);
446+
EXPECT_EQ(node->get_parameter("test.rotate_to_heading_min_angle").as_double(), 0.7);
447+
EXPECT_EQ(node->get_parameter("test.regulated_linear_scaling_min_speed").as_double(), 4.0);
448+
EXPECT_EQ(node->get_parameter("test.use_velocity_scaled_lookahead_dist").as_bool(), false);
449+
EXPECT_EQ(node->get_parameter("test.use_regulated_linear_velocity_scaling").as_bool(), false);
450+
EXPECT_EQ(
451+
node->get_parameter(
452+
"test.use_cost_regulated_linear_velocity_scaling").as_bool(), false);
453+
EXPECT_EQ(node->get_parameter("test.use_approach_linear_velocity_scaling").as_bool(), false);
454+
EXPECT_EQ(node->get_parameter("test.allow_reversing").as_bool(), false);
455+
EXPECT_EQ(node->get_parameter("test.use_rotate_to_heading").as_bool(), false);
456+
}

nav2_smac_planner/include/nav2_smac_planner/smac_planner_2d.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ class SmacPlanner2D : public nav2_core::GlobalPlanner
120120
rclcpp_lifecycle::LifecycleNode::WeakPtr _node;
121121

122122
// Dynamic parameters handler
123-
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler;
123+
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_;
124124
};
125125

126126
} // namespace nav2_smac_planner

nav2_smac_planner/include/nav2_smac_planner/smac_planner_hybrid.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class SmacPlannerHybrid : public nav2_core::GlobalPlanner
121121
rclcpp_lifecycle::LifecycleNode::WeakPtr _node;
122122

123123
// Dynamic parameters handler
124-
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler;
124+
rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_;
125125
};
126126

127127
} // namespace nav2_smac_planner

nav2_smac_planner/src/smac_planner_2d.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ void SmacPlanner2D::activate()
168168
}
169169
auto node = _node.lock();
170170
// Add callback for dynamic parameters
171-
dyn_params_handler = node->add_on_set_parameters_callback(
171+
dyn_params_handler_ = node->add_on_set_parameters_callback(
172172
std::bind(&SmacPlanner2D::dynamicParametersCallback, this, _1));
173173
}
174174

@@ -181,7 +181,7 @@ void SmacPlanner2D::deactivate()
181181
if (_costmap_downsampler) {
182182
_costmap_downsampler->on_deactivate();
183183
}
184-
dyn_params_handler.reset();
184+
dyn_params_handler_.reset();
185185
}
186186

187187
void SmacPlanner2D::cleanup()

0 commit comments

Comments
 (0)