diff --git a/.circleci/config.yml b/.circleci/config.yml index c76eb882b4..be858aa722 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -33,12 +33,12 @@ _commands: - restore_cache: name: Restore Cache << parameters.key >> keys: - - "<< parameters.key >>-v19\ + - "<< parameters.key >>-v20\ -{{ arch }}\ -{{ .Branch }}\ -{{ .Environment.CIRCLE_PR_NUMBER }}\ -{{ checksum \"<< parameters.workspace >>/lockfile.txt\" }}" - - "<< parameters.key >>-v19\ + - "<< parameters.key >>-v20\ -{{ arch }}\ -main\ -\ @@ -58,7 +58,7 @@ _commands: steps: - save_cache: name: Save Cache << parameters.key >> - key: "<< parameters.key >>-v19\ + key: "<< parameters.key >>-v20\ -{{ arch }}\ -{{ .Branch }}\ -{{ .Environment.CIRCLE_PR_NUMBER }}\ diff --git a/nav2_bringup/params/nav2_multirobot_params_1.yaml b/nav2_bringup/params/nav2_multirobot_params_1.yaml index baceb0e531..172a832100 100644 --- a/nav2_bringup/params/nav2_multirobot_params_1.yaml +++ b/nav2_bringup/params/nav2_multirobot_params_1.yaml @@ -108,6 +108,8 @@ bt_navigator: - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node - nav2_is_battery_charging_condition_bt_node + - nav2_progress_checker_selector_bt_node + - nav2_smoother_selector_bt_node error_code_names: - compute_path_error_code - follow_path_error_code diff --git a/nav2_bringup/params/nav2_multirobot_params_2.yaml b/nav2_bringup/params/nav2_multirobot_params_2.yaml index 583bb64b56..da426b4722 100644 --- a/nav2_bringup/params/nav2_multirobot_params_2.yaml +++ b/nav2_bringup/params/nav2_multirobot_params_2.yaml @@ -108,6 +108,8 @@ bt_navigator: - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node - nav2_is_battery_charging_condition_bt_node + - nav2_progress_checker_selector_bt_node + - nav2_smoother_selector_bt_node error_code_names: - compute_path_error_code - follow_path_error_code diff --git a/nav2_bringup/params/nav2_multirobot_params_all.yaml b/nav2_bringup/params/nav2_multirobot_params_all.yaml index 5fb4b9fe63..8249df84d1 100644 --- a/nav2_bringup/params/nav2_multirobot_params_all.yaml +++ b/nav2_bringup/params/nav2_multirobot_params_all.yaml @@ -108,6 +108,8 @@ bt_navigator: - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node - nav2_is_battery_charging_condition_bt_node + - nav2_progress_checker_selector_bt_node + - nav2_smoother_selector_bt_node error_code_names: - compute_path_error_code - follow_path_error_code diff --git a/nav2_bringup/params/nav2_params.yaml b/nav2_bringup/params/nav2_params.yaml index 5f0e6e775d..28b23ab289 100644 --- a/nav2_bringup/params/nav2_params.yaml +++ b/nav2_bringup/params/nav2_params.yaml @@ -108,6 +108,8 @@ bt_navigator: - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node - nav2_is_battery_charging_condition_bt_node + - nav2_progress_checker_selector_bt_node + - nav2_smoother_selector_bt_node error_code_names: - compute_path_error_code - follow_path_error_code diff --git a/nav2_bringup/rviz/nav2_default_view.rviz b/nav2_bringup/rviz/nav2_default_view.rviz index d8bade77d8..28e4f10334 100644 --- a/nav2_bringup/rviz/nav2_default_view.rviz +++ b/nav2_bringup/rviz/nav2_default_view.rviz @@ -20,9 +20,11 @@ Panels: Expanded: - /Current View1 Name: Views - Splitter Ratio: 0.5 + Splitter Ratio: 0.3333333432674408 - Class: nav2_rviz_plugins/Navigation 2 Name: Navigation 2 + - Class: nav2_rviz_plugins/Selector + Name: Selector Visualization Manager: Class: "" Displays: diff --git a/nav2_bt_navigator/behavior_trees/follow_point.xml b/nav2_bt_navigator/behavior_trees/follow_point.xml index 930a2691fb..6941a8c7e6 100644 --- a/nav2_bt_navigator/behavior_trees/follow_point.xml +++ b/nav2_bt_navigator/behavior_trees/follow_point.xml @@ -5,16 +5,18 @@ + + - + - + diff --git a/nav2_bt_navigator/behavior_trees/nav_to_pose_with_consistent_replanning_and_if_path_becomes_invalid.xml b/nav2_bt_navigator/behavior_trees/nav_to_pose_with_consistent_replanning_and_if_path_becomes_invalid.xml index b1d470435e..8fa2eca237 100644 --- a/nav2_bt_navigator/behavior_trees/nav_to_pose_with_consistent_replanning_and_if_path_becomes_invalid.xml +++ b/nav2_bt_navigator/behavior_trees/nav_to_pose_with_consistent_replanning_and_if_path_becomes_invalid.xml @@ -7,6 +7,8 @@ + + @@ -19,13 +21,13 @@ - + - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_through_poses_w_replanning_and_recovery.xml b/nav2_bt_navigator/behavior_trees/navigate_through_poses_w_replanning_and_recovery.xml index ebbe3cbbe5..7a235ff040 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_through_poses_w_replanning_and_recovery.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_through_poses_w_replanning_and_recovery.xml @@ -7,11 +7,13 @@ + + - + @@ -20,7 +22,7 @@ - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_and_recovery.xml b/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_and_recovery.xml index 228c7ad223..8cb0eb749c 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_and_recovery.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_and_recovery.xml @@ -8,9 +8,11 @@ + + - + @@ -18,7 +20,7 @@ - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_goal_patience_and_recovery.xml b/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_goal_patience_and_recovery.xml index 9de1f28e91..ea2a731590 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_goal_patience_and_recovery.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_goal_patience_and_recovery.xml @@ -9,9 +9,11 @@ + + - + @@ -25,7 +27,7 @@ - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_w_recovery_and_replanning_only_if_path_becomes_invalid.xml b/nav2_bt_navigator/behavior_trees/navigate_w_recovery_and_replanning_only_if_path_becomes_invalid.xml index aac9a72ae0..444c9458ff 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_w_recovery_and_replanning_only_if_path_becomes_invalid.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_w_recovery_and_replanning_only_if_path_becomes_invalid.xml @@ -8,6 +8,8 @@ + + @@ -17,13 +19,13 @@ - + - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_distance.xml b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_distance.xml index 9345d8f66d..61132d5f95 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_distance.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_distance.xml @@ -5,10 +5,12 @@ + + - + - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_goal_is_updated.xml b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_goal_is_updated.xml index 4ba2f67cc9..56e360933c 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_goal_is_updated.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_goal_is_updated.xml @@ -5,10 +5,12 @@ + + - + - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_path_becomes_invalid.xml b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_path_becomes_invalid.xml index 753de5d780..b9f903fd33 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_path_becomes_invalid.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_path_becomes_invalid.xml @@ -4,6 +4,8 @@ + + @@ -12,10 +14,10 @@ - + - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_speed.xml b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_speed.xml index 8134bbdcd1..a48ae89a76 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_speed.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_speed.xml @@ -5,10 +5,12 @@ + + - + - + diff --git a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_time.xml b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_time.xml index db0e733db1..f18111f5bd 100644 --- a/nav2_bt_navigator/behavior_trees/navigate_w_replanning_time.xml +++ b/nav2_bt_navigator/behavior_trees/navigate_w_replanning_time.xml @@ -5,10 +5,12 @@ + + - + - + diff --git a/nav2_bt_navigator/src/bt_navigator.cpp b/nav2_bt_navigator/src/bt_navigator.cpp index 82beb93999..c588e6ff4d 100644 --- a/nav2_bt_navigator/src/bt_navigator.cpp +++ b/nav2_bt_navigator/src/bt_navigator.cpp @@ -87,7 +87,9 @@ BtNavigator::BtNavigator(rclcpp::NodeOptions options) "nav2_assisted_teleop_cancel_bt_node", "nav2_back_up_cancel_bt_node", "nav2_drive_on_heading_cancel_bt_node", - "nav2_is_battery_charging_condition_bt_node" + "nav2_is_battery_charging_condition_bt_node", + "nav2_progress_checker_selector_bt_node", + "nav2_smoother_selector_bt_node" }; declare_parameter_if_not_declared( diff --git a/nav2_rviz_plugins/CMakeLists.txt b/nav2_rviz_plugins/CMakeLists.txt index 51df97f421..9bf25cd952 100644 --- a/nav2_rviz_plugins/CMakeLists.txt +++ b/nav2_rviz_plugins/CMakeLists.txt @@ -38,6 +38,7 @@ set(nav2_rviz_plugins_headers_to_moc include/nav2_rviz_plugins/goal_common.hpp include/nav2_rviz_plugins/goal_tool.hpp include/nav2_rviz_plugins/nav2_panel.hpp + include/nav2_rviz_plugins/selector.hpp include/nav2_rviz_plugins/particle_cloud_display/flat_weighted_arrows_array.hpp include/nav2_rviz_plugins/particle_cloud_display/particle_cloud_display.hpp ) @@ -51,6 +52,7 @@ set(library_name ${PROJECT_NAME}) add_library(${library_name} SHARED src/goal_tool.cpp src/nav2_panel.cpp + src/selector.cpp src/particle_cloud_display/flat_weighted_arrows_array.cpp src/particle_cloud_display/particle_cloud_display.cpp ${nav2_rviz_plugins_headers_to_moc} diff --git a/nav2_rviz_plugins/include/nav2_rviz_plugins/selector.hpp b/nav2_rviz_plugins/include/nav2_rviz_plugins/selector.hpp new file mode 100644 index 0000000000..0301b89399 --- /dev/null +++ b/nav2_rviz_plugins/include/nav2_rviz_plugins/selector.hpp @@ -0,0 +1,109 @@ +// Copyright (c) 2024 Neobotix GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef NAV2_RVIZ_PLUGINS__SELECTOR_HPP_ +#define NAV2_RVIZ_PLUGINS__SELECTOR_HPP_ + +#include +#include +#include +#include +#include +#include +#include + +#include "rclcpp/rclcpp.hpp" +#include "rviz_common/panel.hpp" +#include "vector" +#include "memory" +#include "string" +#include "std_msgs/msg/string.hpp" + +class QPushButton; + +namespace nav2_rviz_plugins +{ +class Selector : public rviz_common::Panel +{ + Q_OBJECT + +public: + explicit Selector(QWidget * parent = 0); + ~Selector(); + +private: + // The (non-spinning) client node used to invoke the action client + void timerEvent(QTimerEvent * event) override; + + rclcpp::Node::SharedPtr client_node_; + rclcpp::Publisher::SharedPtr pub_controller_; + rclcpp::Publisher::SharedPtr pub_planner_; + rclcpp::Publisher::SharedPtr pub_goal_checker_; + rclcpp::Publisher::SharedPtr pub_smoother_; + rclcpp::Publisher::SharedPtr pub_progress_checker_; + rclcpp::TimerBase::SharedPtr rclcpp_timer_; + + bool plugins_loaded_ = false; + bool server_failed_ = false; + bool tried_once_ = false; + + QBasicTimer timer_; + QVBoxLayout * main_layout_; + QHBoxLayout * row_1_layout_; + QHBoxLayout * row_2_layout_; + QHBoxLayout * row_3_layout_; + QHBoxLayout * row_1_label_layout_; + QHBoxLayout * row_2_label_layout_; + QHBoxLayout * row_3_label_layout_; + QComboBox * controller_; + QComboBox * planner_; + QComboBox * goal_checker_; + QComboBox * smoother_; + QComboBox * progress_checker_; + + void setController(); + void setPlanner(); + void setGoalChecker(); + void setSmoother(); + void setProgressChecker(); + + /* + * @brief Load the avaialble plugins into the combo box + * @param node The node to use for loading the plugins + * @param server_name The name of the server to load plugins for + * @param plugin_type The type of plugin to load + * @param combo_box The combo box to add the loaded plugins to + */ + void pluginLoader( + rclcpp::Node::SharedPtr node, + const std::string & server_name, + const std::string & plugin_type, + QComboBox * combo_box); + + /* + * @brief Set the selection from the combo box + * @param combo_box The combo box to set the selection for + * @param publisher Publish the selected plugin + */ + void setSelection( + QComboBox * combo_box, + rclcpp::Publisher::SharedPtr publisher); + +protected: + QVBoxLayout * layout1 = new QVBoxLayout; +}; + +} // namespace nav2_rviz_plugins + +#endif // NAV2_RVIZ_PLUGINS__SELECTOR_HPP_ diff --git a/nav2_rviz_plugins/plugins_description.xml b/nav2_rviz_plugins/plugins_description.xml index 197a9a750d..5597636190 100644 --- a/nav2_rviz_plugins/plugins_description.xml +++ b/nav2_rviz_plugins/plugins_description.xml @@ -12,6 +12,12 @@ The Nav2 rviz panel. + + The Nav2 rviz panel for selecting planners and controllers. + + diff --git a/nav2_rviz_plugins/src/selector.cpp b/nav2_rviz_plugins/src/selector.cpp new file mode 100644 index 0000000000..f0f3d4e335 --- /dev/null +++ b/nav2_rviz_plugins/src/selector.cpp @@ -0,0 +1,226 @@ +// Copyright (c) 2024 Neobotix GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "nav2_rviz_plugins/selector.hpp" +#include "rviz_common/display_context.hpp" + +using namespace std::chrono_literals; + +namespace nav2_rviz_plugins +{ +Selector::Selector(QWidget * parent) +: Panel(parent) +{ + client_node_ = std::make_shared("nav2_rviz_selector_node"); + rclcpp::QoS qos(rclcpp::KeepLast(1)); + qos.transient_local().reliable(); + + pub_controller_ = + client_node_->create_publisher("controller_selector", qos); + pub_planner_ = client_node_->create_publisher("planner_selector", qos); + pub_goal_checker_ = + client_node_->create_publisher("goal_checker_selector", qos); + pub_smoother_ = client_node_->create_publisher("smoother_selector", qos); + pub_progress_checker_ = + client_node_->create_publisher("progress_checker_selector", qos); + + main_layout_ = new QVBoxLayout; + row_1_label_layout_ = new QHBoxLayout; + row_2_label_layout_ = new QHBoxLayout; + row_3_label_layout_ = new QHBoxLayout; + row_1_layout_ = new QHBoxLayout; + row_2_layout_ = new QHBoxLayout; + row_3_layout_ = new QHBoxLayout; + controller_ = new QComboBox; + planner_ = new QComboBox; + goal_checker_ = new QComboBox; + smoother_ = new QComboBox; + progress_checker_ = new QComboBox; + + main_layout_->setContentsMargins(10, 10, 10, 10); + + row_1_label_layout_->addWidget(new QLabel("Controller")); + row_1_layout_->addWidget(controller_); + row_1_label_layout_->addWidget(new QLabel("Planner")); + row_1_layout_->addWidget(planner_); + row_2_label_layout_->addWidget(new QLabel("Goal Checker")); + row_2_layout_->addWidget(goal_checker_); + row_2_label_layout_->addWidget(new QLabel("Smoother")); + row_2_layout_->addWidget(smoother_); + row_3_label_layout_->addWidget(new QLabel("Progress Checker")); + row_3_layout_->addWidget(progress_checker_); + + main_layout_->addLayout(row_1_label_layout_); + main_layout_->addLayout(row_1_layout_); + main_layout_->addLayout(row_2_label_layout_); + main_layout_->addLayout(row_2_layout_); + main_layout_->addLayout(row_3_label_layout_); + main_layout_->addLayout(row_3_layout_); + + setLayout(main_layout_); + timer_.start(200, this); + + connect( + controller_, QOverload::of(&QComboBox::activated), this, + &Selector::setController); + + connect( + planner_, QOverload::of(&QComboBox::activated), this, + &Selector::setPlanner); + + connect( + goal_checker_, QOverload::of(&QComboBox::activated), this, + &Selector::setGoalChecker); + + connect( + smoother_, QOverload::of(&QComboBox::activated), this, + &Selector::setSmoother); + + connect( + progress_checker_, QOverload::of(&QComboBox::activated), this, + &Selector::setProgressChecker); +} + +Selector::~Selector() +{ +} + +// Publish the selected controller or planner +void Selector::setSelection( + QComboBox * combo_box, rclcpp::Publisher::SharedPtr publisher) +{ + // If "default" option is selected, it gets removed and the next item is selected + if (combo_box->findText("Default") != -1) { + combo_box->removeItem(0); + } + + // if there are no plugins available, return + if (combo_box->count() == 0) { + return; + } + + std_msgs::msg::String msg; + msg.data = combo_box->currentText().toStdString(); + + publisher->publish(msg); + timer_.start(200, this); +} + +// Call setSelection() for controller +void Selector::setController() +{ + setSelection(controller_, pub_controller_); +} + +// Call setSelection() for planner +void Selector::setPlanner() +{ + setSelection(planner_, pub_planner_); +} + +// Call setSelection() for goal checker +void Selector::setGoalChecker() +{ + setSelection(goal_checker_, pub_goal_checker_); +} + +// Call setSelection() for smoother +void Selector::setSmoother() +{ + setSelection(smoother_, pub_smoother_); +} + +void Selector::setProgressChecker() +{ + setSelection(progress_checker_, pub_progress_checker_); +} + +// Load the available plugins into the combo box +void Selector::pluginLoader( + rclcpp::Node::SharedPtr node, + const std::string & server_name, + const std::string & plugin_type, + QComboBox * combo_box) +{ + auto parameter_client = std::make_shared(node, server_name); + + // Do not load the plugins if the combo box is already populated + if (combo_box->count() > 0) { + return; + } + + // Wait for the service to be available before calling it + bool server_unavailable = false; + while (!parameter_client->wait_for_service(1s)) { + if (!rclcpp::ok()) { + RCLCPP_ERROR(node->get_logger(), "Interrupted while waiting for the service. Exiting."); + rclcpp::shutdown(); + } + RCLCPP_INFO( + node->get_logger(), + (server_name + " service not available").c_str()); + server_unavailable = true; + server_failed_ = true; + break; + } + + // Loading the plugins into the combo box + if (!plugins_loaded_) { + // If server unavaialble, let the combo box be empty + if (server_unavailable) { + return; + } + combo_box->addItem("Default"); + auto parameters = parameter_client->get_parameters({plugin_type}); + auto str_arr = parameters[0].as_string_array(); + for (auto str : str_arr) { + combo_box->addItem(QString::fromStdString(str)); + } + combo_box->setCurrentText("Default"); + } +} + +void +Selector::timerEvent(QTimerEvent * event) +{ + if (event->timerId() == timer_.timerId()) { + if (!plugins_loaded_) { + pluginLoader(client_node_, "controller_server", "controller_plugins", controller_); + pluginLoader(client_node_, "planner_server", "planner_plugins", planner_); + pluginLoader(client_node_, "controller_server", "goal_checker_plugins", goal_checker_); + pluginLoader(client_node_, "smoother_server", "smoother_plugins", smoother_); + pluginLoader( + client_node_, "controller_server", "progress_checker_plugins", + progress_checker_); + + plugins_loaded_ = true; + } + + // Restart the timer if the one of the server fails + if (server_failed_ && !tried_once_) { + RCLCPP_INFO(client_node_->get_logger(), "Retrying to connect to the failed server."); + server_failed_ = false; + plugins_loaded_ = false; + tried_once_ = true; + timer_.start(200, this); + return; + } + + timer_.stop(); + } +} + +} // namespace nav2_rviz_plugins +#include "pluginlib/class_list_macros.hpp" +PLUGINLIB_EXPORT_CLASS(nav2_rviz_plugins::Selector, rviz_common::Panel) diff --git a/nav2_system_tests/src/costmap_filters/keepout_params.yaml b/nav2_system_tests/src/costmap_filters/keepout_params.yaml index f5d79153ec..5c948331f0 100644 --- a/nav2_system_tests/src/costmap_filters/keepout_params.yaml +++ b/nav2_system_tests/src/costmap_filters/keepout_params.yaml @@ -92,6 +92,11 @@ bt_navigator: - nav2_back_up_cancel_bt_node - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node + - nav2_controller_selector_bt_node + - nav2_goal_checker_selector_bt_node + - nav2_planner_selector_bt_node + - nav2_smoother_selector_bt_node + - nav2_progress_checker_selector_bt_node controller_server: ros__parameters: diff --git a/nav2_system_tests/src/costmap_filters/speed_global_params.yaml b/nav2_system_tests/src/costmap_filters/speed_global_params.yaml index bf65fdf9ba..c887ac3ce5 100644 --- a/nav2_system_tests/src/costmap_filters/speed_global_params.yaml +++ b/nav2_system_tests/src/costmap_filters/speed_global_params.yaml @@ -93,6 +93,11 @@ bt_navigator: - nav2_back_up_cancel_bt_node - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node + - nav2_controller_selector_bt_node + - nav2_goal_checker_selector_bt_node + - nav2_planner_selector_bt_node + - nav2_smoother_selector_bt_node + - nav2_progress_checker_selector_bt_node controller_server: ros__parameters: diff --git a/nav2_system_tests/src/costmap_filters/speed_local_params.yaml b/nav2_system_tests/src/costmap_filters/speed_local_params.yaml index 3799062cf8..8bfe04488d 100644 --- a/nav2_system_tests/src/costmap_filters/speed_local_params.yaml +++ b/nav2_system_tests/src/costmap_filters/speed_local_params.yaml @@ -93,6 +93,11 @@ bt_navigator: - nav2_back_up_cancel_bt_node - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node + - nav2_controller_selector_bt_node + - nav2_goal_checker_selector_bt_node + - nav2_planner_selector_bt_node + - nav2_smoother_selector_bt_node + - nav2_progress_checker_selector_bt_node controller_server: ros__parameters: diff --git a/nav2_system_tests/src/gps_navigation/nav2_no_map_params.yaml b/nav2_system_tests/src/gps_navigation/nav2_no_map_params.yaml index b8bc078103..d11ef6ab53 100644 --- a/nav2_system_tests/src/gps_navigation/nav2_no_map_params.yaml +++ b/nav2_system_tests/src/gps_navigation/nav2_no_map_params.yaml @@ -67,6 +67,8 @@ bt_navigator: - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node - nav2_is_battery_charging_condition_bt_node + - nav2_progress_checker_selector_bt_node + - nav2_smoother_selector_bt_node error_code_names: - compute_path_error_code - follow_path_error_code