2424namespace nav2_regulated_pure_pursuit_controller
2525{
2626
27- using nav2::declare_parameter_if_not_declared;
2827using rcl_interfaces::msg::ParameterType;
2928
3029ParameterHandler::ParameterHandler (
@@ -35,160 +34,90 @@ ParameterHandler::ParameterHandler(
3534{
3635 plugin_name_ = plugin_name;
3736
38- declare_parameter_if_not_declared (
39- node, plugin_name_ + " .desired_linear_vel" , rclcpp::ParameterValue (0.5 ));
40- declare_parameter_if_not_declared (
41- node, plugin_name_ + " .lookahead_dist" , rclcpp::ParameterValue (0.6 ));
42- declare_parameter_if_not_declared (
43- node, plugin_name_ + " .min_lookahead_dist" , rclcpp::ParameterValue (0.3 ));
44- declare_parameter_if_not_declared (
45- node, plugin_name_ + " .max_lookahead_dist" , rclcpp::ParameterValue (0.9 ));
46- declare_parameter_if_not_declared (
47- node, plugin_name_ + " .lookahead_time" , rclcpp::ParameterValue (1.5 ));
48- declare_parameter_if_not_declared (
49- node, plugin_name_ + " .rotate_to_heading_angular_vel" , rclcpp::ParameterValue (1.8 ));
50- declare_parameter_if_not_declared (
51- node, plugin_name_ + " .transform_tolerance" , rclcpp::ParameterValue (0.1 ));
52- declare_parameter_if_not_declared (
53- node, plugin_name_ + " .use_velocity_scaled_lookahead_dist" ,
54- rclcpp::ParameterValue (false ));
55- declare_parameter_if_not_declared (
56- node, plugin_name_ + " .min_approach_linear_velocity" , rclcpp::ParameterValue (0.05 ));
57- declare_parameter_if_not_declared (
58- node, plugin_name_ + " .approach_velocity_scaling_dist" ,
59- rclcpp::ParameterValue (0.6 ));
60- declare_parameter_if_not_declared (
61- node, plugin_name_ + " .max_allowed_time_to_collision_up_to_carrot" ,
62- rclcpp::ParameterValue (1.0 ));
63- declare_parameter_if_not_declared (
64- node, plugin_name_ + " .min_distance_to_obstacle" ,
65- rclcpp::ParameterValue (-1.0 ));
66- declare_parameter_if_not_declared (
67- node, plugin_name_ + " .use_regulated_linear_velocity_scaling" , rclcpp::ParameterValue (true ));
68- declare_parameter_if_not_declared (
69- node, plugin_name_ + " .use_cost_regulated_linear_velocity_scaling" ,
70- rclcpp::ParameterValue (true ));
71- declare_parameter_if_not_declared (
72- node, plugin_name_ + " .cost_scaling_dist" , rclcpp::ParameterValue (0.6 ));
73- declare_parameter_if_not_declared (
74- node, plugin_name_ + " .cost_scaling_gain" , rclcpp::ParameterValue (1.0 ));
75- declare_parameter_if_not_declared (
76- node, plugin_name_ + " .inflation_cost_scaling_factor" , rclcpp::ParameterValue (3.0 ));
77- declare_parameter_if_not_declared (
78- node, plugin_name_ + " .regulated_linear_scaling_min_radius" , rclcpp::ParameterValue (0.90 ));
79- declare_parameter_if_not_declared (
80- node, plugin_name_ + " .regulated_linear_scaling_min_speed" , rclcpp::ParameterValue (0.25 ));
81- declare_parameter_if_not_declared (
82- node, plugin_name_ + " .use_fixed_curvature_lookahead" , rclcpp::ParameterValue (false ));
83- declare_parameter_if_not_declared (
84- node, plugin_name_ + " .curvature_lookahead_dist" , rclcpp::ParameterValue (0.6 ));
85- declare_parameter_if_not_declared (
86- node, plugin_name_ + " .use_rotate_to_heading" , rclcpp::ParameterValue (true ));
87- declare_parameter_if_not_declared (
88- node, plugin_name_ + " .rotate_to_heading_min_angle" , rclcpp::ParameterValue (0.785 ));
89- declare_parameter_if_not_declared (
90- node, plugin_name_ + " .max_angular_accel" , rclcpp::ParameterValue (3.2 ));
91- declare_parameter_if_not_declared (
92- node, plugin_name_ + " .use_cancel_deceleration" , rclcpp::ParameterValue (false ));
93- declare_parameter_if_not_declared (
94- node, plugin_name_ + " .cancel_deceleration" , rclcpp::ParameterValue (3.2 ));
95- declare_parameter_if_not_declared (
96- node, plugin_name_ + " .allow_reversing" , rclcpp::ParameterValue (false ));
97- declare_parameter_if_not_declared (
98- node, plugin_name_ + " .max_robot_pose_search_dist" ,
99- rclcpp::ParameterValue (costmap_size_x / 2.0 ));
100- declare_parameter_if_not_declared (
101- node, plugin_name_ + " .interpolate_curvature_after_goal" ,
102- rclcpp::ParameterValue (false ));
103- declare_parameter_if_not_declared (
104- node, plugin_name_ + " .use_collision_detection" ,
105- rclcpp::ParameterValue (true ));
106- declare_parameter_if_not_declared (
107- node, plugin_name_ + " .stateful" , rclcpp::ParameterValue (true ));
108-
109- node->get_parameter (plugin_name_ + " .desired_linear_vel" , params_.desired_linear_vel );
37+ params_.desired_linear_vel =
38+ node->declare_or_get_parameter (plugin_name_ + " .desired_linear_vel" , 0.5 );
11039 params_.base_desired_linear_vel = params_.desired_linear_vel ;
111- node->get_parameter (plugin_name_ + " .lookahead_dist" , params_.lookahead_dist );
112- node->get_parameter (plugin_name_ + " .min_lookahead_dist" , params_.min_lookahead_dist );
113- node->get_parameter (plugin_name_ + " .max_lookahead_dist" , params_.max_lookahead_dist );
114- node->get_parameter (plugin_name_ + " .lookahead_time" , params_.lookahead_time );
115- node->get_parameter (
116- plugin_name_ + " .rotate_to_heading_angular_vel" ,
117- params_.rotate_to_heading_angular_vel );
118- node->get_parameter (plugin_name_ + " .transform_tolerance" , params_.transform_tolerance );
119- node->get_parameter (
120- plugin_name_ + " .use_velocity_scaled_lookahead_dist" ,
121- params_.use_velocity_scaled_lookahead_dist );
122- node->get_parameter (
123- plugin_name_ + " .min_approach_linear_velocity" ,
124- params_.min_approach_linear_velocity );
125- node->get_parameter (
126- plugin_name_ + " .approach_velocity_scaling_dist" ,
127- params_.approach_velocity_scaling_dist );
40+ params_.lookahead_dist =
41+ node->declare_or_get_parameter (plugin_name_ + " .lookahead_dist" , 0.6 );
42+ params_.min_lookahead_dist =
43+ node->declare_or_get_parameter (plugin_name_ + " .min_lookahead_dist" , 0.3 );
44+ params_.max_lookahead_dist =
45+ node->declare_or_get_parameter (plugin_name_ + " .max_lookahead_dist" , 0.9 );
46+ params_.lookahead_time =
47+ node->declare_or_get_parameter (plugin_name_ + " .lookahead_time" , 1.5 );
48+ params_.rotate_to_heading_angular_vel = node->declare_or_get_parameter (
49+ plugin_name_ + " .rotate_to_heading_angular_vel" , 1.8 );
50+ params_.transform_tolerance = node->declare_or_get_parameter (
51+ plugin_name_ + " .transform_tolerance" , 0.1 );
52+ params_.use_velocity_scaled_lookahead_dist = node->declare_or_get_parameter (
53+ plugin_name_ + " .use_velocity_scaled_lookahead_dist" , false );
54+ params_.min_approach_linear_velocity = node->declare_or_get_parameter (
55+ plugin_name_ + " .min_approach_linear_velocity" , 0.05 );
56+ params_.approach_velocity_scaling_dist = node->declare_or_get_parameter (
57+ plugin_name_ + " .approach_velocity_scaling_dist" , 0.6 );
12858 if (params_.approach_velocity_scaling_dist > costmap_size_x / 2.0 ) {
12959 RCLCPP_WARN (
13060 logger_, " approach_velocity_scaling_dist is larger than forward costmap extent, "
13161 " leading to permanent slowdown" );
13262 }
133- node-> get_parameter (
134- plugin_name_ + " .max_allowed_time_to_collision_up_to_carrot " ,
135- params_ .max_allowed_time_to_collision_up_to_carrot );
136- node->get_parameter (
137- plugin_name_ + " .min_distance_to_obstacle" ,
138- params_.min_distance_to_obstacle );
139- node->get_parameter (
140- plugin_name_ + " .use_regulated_linear_velocity_scaling" ,
141- params_.use_regulated_linear_velocity_scaling );
142- node->get_parameter (
143- plugin_name_ + " .use_cost_regulated_linear_velocity_scaling" ,
144- params_.use_cost_regulated_linear_velocity_scaling );
145- node->get_parameter (plugin_name_ + " .cost_scaling_dist" , params_. cost_scaling_dist );
146- node-> get_parameter (plugin_name_ + " .cost_scaling_gain " , params_.cost_scaling_gain );
147- node->get_parameter (
148- plugin_name_ + " .inflation_cost_scaling_factor" ,
149- params_ .inflation_cost_scaling_factor );
150- node->get_parameter (
151- plugin_name_ + " .regulated_linear_scaling_min_radius" ,
152- params_.regulated_linear_scaling_min_radius );
153- node-> get_parameter (
154- plugin_name_ + " .regulated_linear_scaling_min_speed " ,
155- params_. regulated_linear_scaling_min_speed );
156- node->get_parameter (
157- plugin_name_ + " .use_fixed_curvature_lookahead " ,
158- params_.use_fixed_curvature_lookahead );
159- node-> get_parameter (
160- plugin_name_ + " .curvature_lookahead_dist " ,
161- params_. curvature_lookahead_dist );
162- node-> get_parameter (plugin_name_ + " .use_rotate_to_heading " , params_.use_rotate_to_heading );
163- node->get_parameter (
164- plugin_name_ + " .rotate_to_heading_min_angle " , params_.rotate_to_heading_min_angle );
165- node-> get_parameter ( plugin_name_ + " .max_angular_accel " , params_. max_angular_accel );
166- node->get_parameter (plugin_name_ + " .use_cancel_deceleration " , params_. use_cancel_deceleration );
167- node-> get_parameter ( plugin_name_ + " .cancel_deceleration" , params_. cancel_deceleration );
168- node-> get_parameter (plugin_name_ + " .allow_reversing " , params_.allow_reversing );
169- node->get_parameter (
170- plugin_name_ + " .max_robot_pose_search_dist" ,
171- params_ .max_robot_pose_search_dist );
63+ params_. max_allowed_time_to_collision_up_to_carrot =
64+ node-> declare_or_get_parameter (
65+ plugin_name_ + " .max_allowed_time_to_collision_up_to_carrot" , 1.0 );
66+ params_. min_distance_to_obstacle = node->declare_or_get_parameter (
67+ plugin_name_ + " .min_distance_to_obstacle" , - 1.0 );
68+ params_.use_regulated_linear_velocity_scaling =
69+ node->declare_or_get_parameter (
70+ plugin_name_ + " .use_regulated_linear_velocity_scaling" , true );
71+ params_.use_cost_regulated_linear_velocity_scaling =
72+ node->declare_or_get_parameter (
73+ plugin_name_ + " .use_cost_regulated_linear_velocity_scaling" , true );
74+ params_.cost_scaling_dist =
75+ node->declare_or_get_parameter (plugin_name_ + " .cost_scaling_dist" , 0.6 );
76+ params_.cost_scaling_gain =
77+ node->declare_or_get_parameter (plugin_name_ + " .cost_scaling_gain " , 1.0 );
78+ params_ .inflation_cost_scaling_factor = node-> declare_or_get_parameter (
79+ plugin_name_ + " .inflation_cost_scaling_factor" , 3.0 );
80+ params_. regulated_linear_scaling_min_radius = node->declare_or_get_parameter (
81+ plugin_name_ + " .regulated_linear_scaling_min_radius" , 0.90 );
82+ params_.regulated_linear_scaling_min_speed = node-> declare_or_get_parameter (
83+ plugin_name_ + " .regulated_linear_scaling_min_speed " , 0.25 );
84+ params_. use_fixed_curvature_lookahead = node-> declare_or_get_parameter (
85+ plugin_name_ + " .use_fixed_curvature_lookahead " , false );
86+ params_. curvature_lookahead_dist = node->declare_or_get_parameter (
87+ plugin_name_ + " .curvature_lookahead_dist " , 0.6 );
88+ params_.use_rotate_to_heading = node-> declare_or_get_parameter (
89+ plugin_name_ + " .use_rotate_to_heading " , true );
90+ params_. rotate_to_heading_min_angle = node-> declare_or_get_parameter (
91+ plugin_name_ + " .rotate_to_heading_min_angle " , 0.785 );
92+ params_.max_angular_accel =
93+ node->declare_or_get_parameter (plugin_name_ + " .max_angular_accel " , 3.2 );
94+ params_.use_cancel_deceleration = node-> declare_or_get_parameter (
95+ plugin_name_ + " .use_cancel_deceleration " , false );
96+ params_. cancel_deceleration = node->declare_or_get_parameter (
97+ plugin_name_ + " .cancel_deceleration" , 3.2 );
98+ params_.allow_reversing =
99+ node->declare_or_get_parameter (plugin_name_ + " .allow_reversing " , false );
100+ params_ .max_robot_pose_search_dist = node-> declare_or_get_parameter (
101+ plugin_name_ + " .max_robot_pose_search_dist" , costmap_size_x / 2.0 );
172102 if (params_.max_robot_pose_search_dist < 0.0 ) {
173103 RCLCPP_WARN (
174104 logger_, " Max robot search distance is negative, setting to max to search"
175105 " every point on path for the closest value." );
176106 params_.max_robot_pose_search_dist = std::numeric_limits<double >::max ();
177107 }
178108
179- node->get_parameter (
180- plugin_name_ + " .interpolate_curvature_after_goal" ,
181- params_.interpolate_curvature_after_goal );
109+ params_.interpolate_curvature_after_goal = node->declare_or_get_parameter (
110+ plugin_name_ + " .interpolate_curvature_after_goal" , false );
182111 if (!params_.use_fixed_curvature_lookahead && params_.interpolate_curvature_after_goal ) {
183112 RCLCPP_WARN (
184113 logger_, " For interpolate_curvature_after_goal to be set to true, "
185114 " use_fixed_curvature_lookahead should be true, it is currently set to false. Disabling." );
186115 params_.interpolate_curvature_after_goal = false ;
187116 }
188- node->get_parameter (
189- plugin_name_ + " .use_collision_detection" ,
190- params_.use_collision_detection );
191- node->get_parameter (plugin_name_ + " .stateful" , params_. stateful );
117+ params_. use_collision_detection = node->declare_or_get_parameter (
118+ plugin_name_ + " .use_collision_detection" , true );
119+ params_.stateful =
120+ node->declare_or_get_parameter (plugin_name_ + " .stateful" , true );
192121
193122 if (params_.inflation_cost_scaling_factor <= 0.0 ) {
194123 RCLCPP_WARN (
0 commit comments