Skip to content

Commit b35a4b5

Browse files
Use the new declare_or_get_parameter API for nav2_controller. (#5624)
* Migrate majority of parameter declarations to use the new parameter API. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> * Migrate controller_server.cpp to use declare_or_get_parameter API. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> --------- Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
1 parent 62ebc54 commit b35a4b5

File tree

7 files changed

+47
-80
lines changed

7 files changed

+47
-80
lines changed

‎nav2_controller/plugins/pose_progress_checker.cpp‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@ void PoseProgressChecker::initialize(
3939
SimpleProgressChecker::initialize(parent, plugin_name);
4040
auto node = parent.lock();
4141

42-
nav2::declare_parameter_if_not_declared(
43-
node, plugin_name + ".required_movement_angle", rclcpp::ParameterValue(0.5));
44-
node->get_parameter_or(plugin_name + ".required_movement_angle", required_movement_angle_, 0.5);
42+
required_movement_angle_ = node->declare_or_get_parameter(
43+
plugin_name + ".required_movement_angle", 0.5);
4544

4645
// Add callback for dynamic parameters
4746
dyn_params_handler_ = node->add_on_set_parameters_callback(

‎nav2_controller/plugins/position_goal_checker.cpp‎

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,8 @@ void PositionGoalChecker::initialize(
4141
plugin_name_ = plugin_name;
4242
auto node = parent.lock();
4343

44-
nav2::declare_parameter_if_not_declared(
45-
node,
46-
plugin_name + ".xy_goal_tolerance", rclcpp::ParameterValue(0.25));
47-
nav2::declare_parameter_if_not_declared(
48-
node,
49-
plugin_name + ".stateful", rclcpp::ParameterValue(true));
50-
51-
node->get_parameter(plugin_name + ".xy_goal_tolerance", xy_goal_tolerance_);
52-
node->get_parameter(plugin_name + ".stateful", stateful_);
44+
xy_goal_tolerance_ = node->declare_or_get_parameter(plugin_name + ".xy_goal_tolerance", 0.25);
45+
stateful_ = node->declare_or_get_parameter(plugin_name + ".stateful", true);
5346

5447
xy_goal_tolerance_sq_ = xy_goal_tolerance_ * xy_goal_tolerance_;
5548

‎nav2_controller/plugins/simple_goal_checker.cpp‎

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -69,19 +69,9 @@ void SimpleGoalChecker::initialize(
6969
plugin_name_ = plugin_name;
7070
auto node = parent.lock();
7171

72-
nav2::declare_parameter_if_not_declared(
73-
node,
74-
plugin_name + ".xy_goal_tolerance", rclcpp::ParameterValue(0.25));
75-
nav2::declare_parameter_if_not_declared(
76-
node,
77-
plugin_name + ".yaw_goal_tolerance", rclcpp::ParameterValue(0.25));
78-
nav2::declare_parameter_if_not_declared(
79-
node,
80-
plugin_name + ".stateful", rclcpp::ParameterValue(true));
81-
82-
node->get_parameter(plugin_name + ".xy_goal_tolerance", xy_goal_tolerance_);
83-
node->get_parameter(plugin_name + ".yaw_goal_tolerance", yaw_goal_tolerance_);
84-
node->get_parameter(plugin_name + ".stateful", stateful_);
72+
xy_goal_tolerance_ = node->declare_or_get_parameter(plugin_name + ".xy_goal_tolerance", 0.25);
73+
yaw_goal_tolerance_ = node->declare_or_get_parameter(plugin_name + ".yaw_goal_tolerance", 0.25);
74+
stateful_ = node->declare_or_get_parameter(plugin_name + ".stateful", true);
8575

8676
xy_goal_tolerance_sq_ = xy_goal_tolerance_ * xy_goal_tolerance_;
8777

‎nav2_controller/plugins/simple_progress_checker.cpp‎

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,9 @@ void SimpleProgressChecker::initialize(
3636

3737
clock_ = node->get_clock();
3838

39-
nav2::declare_parameter_if_not_declared(
40-
node, plugin_name + ".required_movement_radius", rclcpp::ParameterValue(0.5));
41-
nav2::declare_parameter_if_not_declared(
42-
node, plugin_name + ".movement_time_allowance", rclcpp::ParameterValue(10.0));
43-
// Scale is set to 0 by default, so if it was not set otherwise, set to 0
44-
node->get_parameter_or(plugin_name + ".required_movement_radius", radius_, 0.5);
45-
double time_allowance_param = 0.0;
46-
node->get_parameter_or(plugin_name + ".movement_time_allowance", time_allowance_param, 10.0);
39+
radius_ = node->declare_or_get_parameter(plugin_name + ".required_movement_radius", 0.5);
40+
double time_allowance_param = node->declare_or_get_parameter(
41+
plugin_name + ".movement_time_allowance", 10.0);
4742
time_allowance_ = rclcpp::Duration::from_seconds(time_allowance_param);
4843

4944
// Add callback for dynamic parameters

‎nav2_controller/plugins/stopped_goal_checker.cpp‎

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,10 @@ void StoppedGoalChecker::initialize(
6565

6666
auto node = parent.lock();
6767

68-
nav2::declare_parameter_if_not_declared(
69-
node,
70-
plugin_name + ".rot_stopped_velocity", rclcpp::ParameterValue(0.25));
71-
nav2::declare_parameter_if_not_declared(
72-
node,
73-
plugin_name + ".trans_stopped_velocity", rclcpp::ParameterValue(0.25));
74-
75-
node->get_parameter(plugin_name + ".rot_stopped_velocity", rot_stopped_velocity_);
76-
node->get_parameter(plugin_name + ".trans_stopped_velocity", trans_stopped_velocity_);
68+
rot_stopped_velocity_ = node->declare_or_get_parameter(
69+
plugin_name + ".rot_stopped_velocity", 0.25);
70+
trans_stopped_velocity_ = node->declare_or_get_parameter(
71+
plugin_name + ".trans_stopped_velocity", 0.25);
7772

7873
// Add callback for dynamic parameters
7974
dyn_params_handler_ = node->add_on_set_parameters_callback(

‎nav2_controller/src/controller_server.cpp‎

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -49,26 +49,6 @@ ControllerServer::ControllerServer(const rclcpp::NodeOptions & options)
4949
{
5050
RCLCPP_INFO(get_logger(), "Creating controller server");
5151

52-
declare_parameter("controller_frequency", 20.0);
53-
54-
declare_parameter("progress_checker_plugins", default_progress_checker_ids_);
55-
declare_parameter("goal_checker_plugins", default_goal_checker_ids_);
56-
declare_parameter("controller_plugins", default_ids_);
57-
declare_parameter("min_x_velocity_threshold", rclcpp::ParameterValue(0.0001));
58-
declare_parameter("min_y_velocity_threshold", rclcpp::ParameterValue(0.0001));
59-
declare_parameter("min_theta_velocity_threshold", rclcpp::ParameterValue(0.0001));
60-
61-
declare_parameter("speed_limit_topic", rclcpp::ParameterValue("speed_limit"));
62-
63-
declare_parameter("failure_tolerance", rclcpp::ParameterValue(0.0));
64-
declare_parameter("use_realtime_priority", rclcpp::ParameterValue(false));
65-
declare_parameter("publish_zero_velocity", rclcpp::ParameterValue(true));
66-
declare_parameter("costmap_update_timeout", 0.30); // 300ms
67-
68-
declare_parameter("odom_topic", rclcpp::ParameterValue("odom"));
69-
declare_parameter("odom_duration", rclcpp::ParameterValue(0.3));
70-
declare_parameter("search_window", rclcpp::ParameterValue(2.0));
71-
7252
// The costmap node is used in the implementation of the controller
7353
costmap_ros_ = std::make_shared<nav2_costmap_2d::Costmap2DROS>(
7454
"local_costmap", std::string{get_namespace()},
@@ -91,7 +71,8 @@ ControllerServer::on_configure(const rclcpp_lifecycle::State & state)
9171
RCLCPP_INFO(get_logger(), "Configuring controller interface");
9272

9373
RCLCPP_INFO(get_logger(), "getting progress checker plugins..");
94-
get_parameter("progress_checker_plugins", progress_checker_ids_);
74+
progress_checker_ids_ = declare_or_get_parameter(
75+
"progress_checker_plugins", default_progress_checker_ids_);
9576
if (progress_checker_ids_ == default_progress_checker_ids_) {
9677
for (size_t i = 0; i < default_progress_checker_ids_.size(); ++i) {
9778
nav2::declare_parameter_if_not_declared(
@@ -101,7 +82,7 @@ ControllerServer::on_configure(const rclcpp_lifecycle::State & state)
10182
}
10283

10384
RCLCPP_INFO(get_logger(), "getting goal checker plugins..");
104-
get_parameter("goal_checker_plugins", goal_checker_ids_);
85+
goal_checker_ids_ = declare_or_get_parameter("goal_checker_plugins", default_goal_checker_ids_);
10586
if (goal_checker_ids_ == default_goal_checker_ids_) {
10687
for (size_t i = 0; i < default_goal_checker_ids_.size(); ++i) {
10788
nav2::declare_parameter_if_not_declared(
@@ -110,7 +91,7 @@ ControllerServer::on_configure(const rclcpp_lifecycle::State & state)
11091
}
11192
}
11293

113-
get_parameter("controller_plugins", controller_ids_);
94+
controller_ids_ = declare_or_get_parameter("controller_plugins", default_ids_);
11495
if (controller_ids_ == default_ids_) {
11596
for (size_t i = 0; i < default_ids_.size(); ++i) {
11697
nav2::declare_parameter_if_not_declared(
@@ -123,21 +104,20 @@ ControllerServer::on_configure(const rclcpp_lifecycle::State & state)
123104
goal_checker_types_.resize(goal_checker_ids_.size());
124105
progress_checker_types_.resize(progress_checker_ids_.size());
125106

126-
get_parameter("controller_frequency", controller_frequency_);
127-
get_parameter("min_x_velocity_threshold", min_x_velocity_threshold_);
128-
get_parameter("min_y_velocity_threshold", min_y_velocity_threshold_);
129-
get_parameter("min_theta_velocity_threshold", min_theta_velocity_threshold_);
107+
controller_frequency_ = declare_or_get_parameter("controller_frequency", 20.0);
108+
min_x_velocity_threshold_ = declare_or_get_parameter("min_x_velocity_threshold", 0.0001);
109+
min_y_velocity_threshold_ = declare_or_get_parameter("min_y_velocity_threshold", 0.0001);
110+
min_theta_velocity_threshold_ = declare_or_get_parameter("min_theta_velocity_threshold", 0.0001);
130111
RCLCPP_INFO(get_logger(), "Controller frequency set to %.4fHz", controller_frequency_);
131112

132-
std::string speed_limit_topic, odom_topic;
133-
get_parameter("speed_limit_topic", speed_limit_topic);
134-
get_parameter("odom_topic", odom_topic);
135-
double odom_duration;
136-
get_parameter("odom_duration", odom_duration);
137-
get_parameter("failure_tolerance", failure_tolerance_);
138-
get_parameter("use_realtime_priority", use_realtime_priority_);
139-
get_parameter("publish_zero_velocity", publish_zero_velocity_);
140-
get_parameter("search_window", search_window_);
113+
std::string speed_limit_topic = declare_or_get_parameter(
114+
"speed_limit_topic", std::string("speed_limit"));
115+
std::string odom_topic = declare_or_get_parameter("odom_topic", std::string("odom"));
116+
double odom_duration = declare_or_get_parameter("odom_duration", 0.3);
117+
failure_tolerance_ = declare_or_get_parameter("failure_tolerance", 0.0);
118+
use_realtime_priority_ = declare_or_get_parameter("use_realtime_priority", false);
119+
publish_zero_velocity_ = declare_or_get_parameter("publish_zero_velocity", true);
120+
search_window_ = declare_or_get_parameter("search_window", 2.0);
141121

142122
costmap_ros_->configure();
143123
// Launch a thread to run the costmap node
@@ -231,8 +211,7 @@ ControllerServer::on_configure(const rclcpp_lifecycle::State & state)
231211
vel_publisher_ = std::make_unique<nav2_util::TwistPublisher>(node, "cmd_vel");
232212
tracking_feedback_pub_ = create_publisher<nav2_msgs::msg::TrackingFeedback>("tracking_feedback");
233213

234-
double costmap_update_timeout_dbl;
235-
get_parameter("costmap_update_timeout", costmap_update_timeout_dbl);
214+
double costmap_update_timeout_dbl = declare_or_get_parameter("costmap_update_timeout", 0.30);
236215
costmap_update_timeout_ = rclcpp::Duration::from_seconds(costmap_update_timeout_dbl);
237216

238217
// Create the action server that we implement with our followPath method

‎nav2_controller/test/test_dynamic_parameters.cpp‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,26 @@ class ControllerShim : public nav2_controller::ControllerServer
3131
{
3232
}
3333

34+
/**
35+
* @brief Declare parameters needed for dynamic parameter testing.
36+
*
37+
* This method mirrors the parameter declarations in the
38+
* on_configure method of ControllerServer.
39+
*/
40+
void declareTestParameters()
41+
{
42+
declare_parameter("min_x_velocity_threshold", 0.0001);
43+
declare_parameter("min_y_velocity_threshold", 0.0001);
44+
declare_parameter("min_theta_velocity_threshold", 0.0001);
45+
declare_parameter("failure_tolerance", 0.0);
46+
}
47+
3448
// Since we cannot call configure/activate due to costmaps
3549
// requiring TF
3650
void setDynamicCallback()
3751
{
52+
declareTestParameters();
53+
3854
auto node = shared_from_this();
3955
// Add callback for dynamic parameters
4056
dyn_params_handler_ = node->add_on_set_parameters_callback(

0 commit comments

Comments
 (0)