@@ -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
0 commit comments