diff --git a/nav2_behaviors/CMakeLists.txt b/nav2_behaviors/CMakeLists.txt index 273c5fe664e..2f2ad54f058 100644 --- a/nav2_behaviors/CMakeLists.txt +++ b/nav2_behaviors/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.5) project(nav2_behaviors) find_package(ament_cmake REQUIRED) +find_package(irobot_events_executor REQUIRED) find_package(nav2_common REQUIRED) find_package(rclcpp REQUIRED) find_package(rclcpp_action REQUIRED) @@ -30,6 +31,7 @@ set(executable_name behavior_server) set(dependencies rclcpp + irobot_events_executor rclcpp_action rclcpp_lifecycle rclcpp_components diff --git a/nav2_behaviors/package.xml b/nav2_behaviors/package.xml index 002a0b17364..501279c0dee 100644 --- a/nav2_behaviors/package.xml +++ b/nav2_behaviors/package.xml @@ -12,6 +12,7 @@ nav2_common rclcpp + irobot_events_executor rclcpp_action rclcpp_lifecycle nav2_behavior_tree diff --git a/nav2_behaviors/src/main.cpp b/nav2_behaviors/src/main.cpp index 4af82831f32..dc7b6b4f3c5 100644 --- a/nav2_behaviors/src/main.cpp +++ b/nav2_behaviors/src/main.cpp @@ -16,6 +16,7 @@ #include #include "nav2_behaviors/behavior_server.hpp" +#include "rclcpp/executors/events_executor/events_executor.hpp" #include "rclcpp/rclcpp.hpp" int main(int argc, char ** argv) @@ -23,7 +24,10 @@ int main(int argc, char ** argv) rclcpp::init(argc, argv); auto recoveries_node = std::make_shared(); - rclcpp::spin(recoveries_node->get_node_base_interface()); + auto executor = std::make_shared(); + + executor->add_node(recoveries_node->get_node_base_interface()); + executor->spin(); rclcpp::shutdown(); return 0; diff --git a/nav2_controller/CMakeLists.txt b/nav2_controller/CMakeLists.txt index e5ea991c34a..18c51224120 100644 --- a/nav2_controller/CMakeLists.txt +++ b/nav2_controller/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.5) project(nav2_controller) find_package(ament_cmake REQUIRED) +find_package(irobot_events_executor REQUIRED) find_package(nav2_core REQUIRED) find_package(nav2_common REQUIRED) find_package(angles REQUIRED) @@ -36,6 +37,7 @@ add_library(${library_name} SHARED set(dependencies angles rclcpp + irobot_events_executor rclcpp_action rclcpp_components std_msgs diff --git a/nav2_controller/package.xml b/nav2_controller/package.xml index a9f5922005e..318382fbb4e 100644 --- a/nav2_controller/package.xml +++ b/nav2_controller/package.xml @@ -19,6 +19,7 @@ nav_2d_msgs nav2_core pluginlib + irobot_events_executor ament_lint_common ament_lint_auto diff --git a/nav2_controller/src/main.cpp b/nav2_controller/src/main.cpp index a69adf583b7..a077993e6cb 100644 --- a/nav2_controller/src/main.cpp +++ b/nav2_controller/src/main.cpp @@ -15,13 +15,19 @@ #include #include "nav2_controller/controller_server.hpp" + +#include "rclcpp/executors/events_executor/events_executor.hpp" #include "rclcpp/rclcpp.hpp" int main(int argc, char ** argv) { rclcpp::init(argc, argv); auto node = std::make_shared(); - rclcpp::spin(node->get_node_base_interface()); + + auto executor = std::make_shared(); + + executor->add_node(node->get_node_base_interface()); + executor->spin(); rclcpp::shutdown(); return 0; diff --git a/nav2_costmap_2d/CMakeLists.txt b/nav2_costmap_2d/CMakeLists.txt index 84f86617ab5..765105fc897 100644 --- a/nav2_costmap_2d/CMakeLists.txt +++ b/nav2_costmap_2d/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.5) project(nav2_costmap_2d) find_package(ament_cmake REQUIRED) +find_package(irobot_events_executor REQUIRED) find_package(geometry_msgs REQUIRED) find_package(laser_geometry REQUIRED) find_package(map_msgs REQUIRED) @@ -54,6 +55,7 @@ add_library(nav2_costmap_2d_core SHARED set(dependencies geometry_msgs + irobot_events_executor laser_geometry map_msgs message_filters diff --git a/nav2_costmap_2d/include/nav2_costmap_2d/costmap_2d_ros.hpp b/nav2_costmap_2d/include/nav2_costmap_2d/costmap_2d_ros.hpp index a5dfc6182ac..0d99c52bf07 100644 --- a/nav2_costmap_2d/include/nav2_costmap_2d/costmap_2d_ros.hpp +++ b/nav2_costmap_2d/include/nav2_costmap_2d/costmap_2d_ros.hpp @@ -58,6 +58,8 @@ #include "tf2/time.h" #include "tf2/transform_datatypes.h" +#include "rclcpp/executors/events_executor/events_executor.hpp" + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpedantic" #include "tf2/utils.h" @@ -313,7 +315,7 @@ class Costmap2DROS : public nav2_util::LifecycleNode // Dedicated callback group and executor for tf timer_interface and message fillter rclcpp::CallbackGroup::SharedPtr callback_group_; - rclcpp::executors::SingleThreadedExecutor::SharedPtr executor_; + rclcpp::executors::EventsExecutor::SharedPtr executor_; std::unique_ptr executor_thread_; // Transform listener diff --git a/nav2_costmap_2d/package.xml b/nav2_costmap_2d/package.xml index 8e889dd61e8..4cf4e107685 100644 --- a/nav2_costmap_2d/package.xml +++ b/nav2_costmap_2d/package.xml @@ -38,6 +38,7 @@ tf2_sensor_msgs visualization_msgs angles + irobot_events_executor ament_lint_common ament_lint_auto diff --git a/nav2_costmap_2d/src/costmap_2d_ros.cpp b/nav2_costmap_2d/src/costmap_2d_ros.cpp index 12d6b2ee687..2c2331e0b07 100644 --- a/nav2_costmap_2d/src/costmap_2d_ros.cpp +++ b/nav2_costmap_2d/src/costmap_2d_ros.cpp @@ -202,7 +202,7 @@ Costmap2DROS::on_configure(const rclcpp_lifecycle::State & /*state*/) // Add cleaning service clear_costmap_service_ = std::make_unique(shared_from_this(), *this); - executor_ = std::make_shared(); + executor_ = std::make_shared(); executor_->add_callback_group(callback_group_, get_node_base_interface()); executor_thread_ = std::make_unique(executor_); return nav2_util::CallbackReturn::SUCCESS; diff --git a/nav2_lifecycle_manager/CMakeLists.txt b/nav2_lifecycle_manager/CMakeLists.txt index 5f4b3f3c232..352522fced1 100644 --- a/nav2_lifecycle_manager/CMakeLists.txt +++ b/nav2_lifecycle_manager/CMakeLists.txt @@ -4,6 +4,7 @@ project(nav2_lifecycle_manager) find_package(ament_cmake REQUIRED) find_package(geometry_msgs REQUIRED) find_package(lifecycle_msgs REQUIRED) +find_package(irobot_events_executor REQUIRED) find_package(nav2_common REQUIRED) find_package(nav2_msgs REQUIRED) find_package(nav2_util REQUIRED) @@ -36,6 +37,7 @@ set(dependencies nav2_msgs nav2_util rclcpp + irobot_events_executor rclcpp_action rclcpp_lifecycle rclcpp_components diff --git a/nav2_lifecycle_manager/package.xml b/nav2_lifecycle_manager/package.xml index fabcc9d56bb..f476470f7fa 100644 --- a/nav2_lifecycle_manager/package.xml +++ b/nav2_lifecycle_manager/package.xml @@ -21,6 +21,7 @@ bondcpp nav2_common diagnostic_updater + irobot_events_executor geometry_msgs lifecycle_msgs diff --git a/nav2_lifecycle_manager/src/lifecycle_manager.cpp b/nav2_lifecycle_manager/src/lifecycle_manager.cpp index f18436f21f1..f61ec079569 100644 --- a/nav2_lifecycle_manager/src/lifecycle_manager.cpp +++ b/nav2_lifecycle_manager/src/lifecycle_manager.cpp @@ -20,6 +20,7 @@ #include #include +#include "rclcpp/executors/events_executor/events_executor.hpp" #include "rclcpp/rclcpp.hpp" using namespace std::chrono_literals; @@ -99,7 +100,7 @@ LifecycleManager::LifecycleManager(const rclcpp::NodeOptions & options) }, callback_group_); } - auto executor = std::make_shared(); + auto executor = std::make_shared(); executor->add_callback_group(callback_group_, get_node_base_interface()); service_thread_ = std::make_unique(executor); }); diff --git a/nav2_lifecycle_manager/src/main.cpp b/nav2_lifecycle_manager/src/main.cpp index 94268ae2f3c..2162a5705d1 100644 --- a/nav2_lifecycle_manager/src/main.cpp +++ b/nav2_lifecycle_manager/src/main.cpp @@ -15,13 +15,18 @@ #include #include "nav2_lifecycle_manager/lifecycle_manager.hpp" +#include "rclcpp/executors/events_executor/events_executor.hpp" #include "rclcpp/rclcpp.hpp" int main(int argc, char ** argv) { rclcpp::init(argc, argv); auto node = std::make_shared(); - rclcpp::spin(node); + + auto executor = std::make_shared(); + + executor->add_node(node->get_node_base_interface()); + executor->spin(); rclcpp::shutdown(); return 0; diff --git a/nav2_planner/CMakeLists.txt b/nav2_planner/CMakeLists.txt index 197150837c9..fb44dcbb236 100644 --- a/nav2_planner/CMakeLists.txt +++ b/nav2_planner/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.5) project(nav2_planner) find_package(ament_cmake REQUIRED) +find_package(irobot_events_executor REQUIRED) find_package(nav2_common REQUIRED) find_package(rclcpp REQUIRED) find_package(rclcpp_action REQUIRED) @@ -30,6 +31,7 @@ set(library_name ${executable_name}_core) set(dependencies rclcpp + irobot_events_executor rclcpp_action rclcpp_lifecycle rclcpp_components diff --git a/nav2_planner/package.xml b/nav2_planner/package.xml index 8a8b4e875f3..51215e18630 100644 --- a/nav2_planner/package.xml +++ b/nav2_planner/package.xml @@ -10,6 +10,7 @@ ament_cmake rclcpp + irobot_events_executor rclcpp_action rclcpp_lifecycle visualization_msgs diff --git a/nav2_planner/src/main.cpp b/nav2_planner/src/main.cpp index 987db78ccf5..d498594e322 100644 --- a/nav2_planner/src/main.cpp +++ b/nav2_planner/src/main.cpp @@ -16,13 +16,20 @@ #include #include "nav2_planner/planner_server.hpp" + +#include "rclcpp/executors/events_executor/events_executor.hpp" #include "rclcpp/rclcpp.hpp" int main(int argc, char ** argv) { rclcpp::init(argc, argv); auto node = std::make_shared(); - rclcpp::spin(node->get_node_base_interface()); + + auto executor = std::make_shared(); + + executor->add_node(node->get_node_base_interface()); + executor->spin(); + rclcpp::shutdown(); return 0; diff --git a/nav2_util/CMakeLists.txt b/nav2_util/CMakeLists.txt index 86fa5fdaee1..02f9bd7c04f 100644 --- a/nav2_util/CMakeLists.txt +++ b/nav2_util/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.5) project(nav2_util) find_package(ament_cmake REQUIRED) +find_package(irobot_events_executor REQUIRED) find_package(nav2_common REQUIRED) find_package(nav2_msgs REQUIRED) find_package(tf2_ros REQUIRED) @@ -21,6 +22,7 @@ find_package(action_msgs REQUIRED) set(dependencies nav2_msgs tf2_ros + irobot_events_executor tf2 tf2_geometry_msgs geometry_msgs diff --git a/nav2_util/include/nav2_util/node_thread.hpp b/nav2_util/include/nav2_util/node_thread.hpp index 78d84fb8dbf..5c285c3e252 100644 --- a/nav2_util/include/nav2_util/node_thread.hpp +++ b/nav2_util/include/nav2_util/node_thread.hpp @@ -18,6 +18,7 @@ #include #include "rclcpp/rclcpp.hpp" +#include "rclcpp/executors/events_executor/events_executor.hpp" namespace nav2_util { @@ -38,7 +39,7 @@ class NodeThread * @brief A background thread to process executor's callbacks constructor * @param executor Interface to executor to spin in thread */ - explicit NodeThread(rclcpp::executors::SingleThreadedExecutor::SharedPtr executor); + explicit NodeThread(rclcpp::executors::EventsExecutor::SharedPtr executor); /** * @brief A background thread to process node callbacks constructor diff --git a/nav2_util/include/nav2_util/service_client.hpp b/nav2_util/include/nav2_util/service_client.hpp index 9be5912e8c9..b895274c21d 100644 --- a/nav2_util/include/nav2_util/service_client.hpp +++ b/nav2_util/include/nav2_util/service_client.hpp @@ -17,6 +17,8 @@ #include + +#include "rclcpp/executors/events_executor/events_executor.hpp" #include "rclcpp/rclcpp.hpp" namespace nav2_util @@ -145,7 +147,7 @@ class ServiceClient std::string service_name_; rclcpp::Node::SharedPtr node_; rclcpp::CallbackGroup::SharedPtr callback_group_; - rclcpp::executors::SingleThreadedExecutor callback_group_executor_; + rclcpp::executors::EventsExecutor callback_group_executor_; typename rclcpp::Client::SharedPtr client_; }; diff --git a/nav2_util/include/nav2_util/simple_action_server.hpp b/nav2_util/include/nav2_util/simple_action_server.hpp index f05a4602acf..4429caad4fa 100644 --- a/nav2_util/include/nav2_util/simple_action_server.hpp +++ b/nav2_util/include/nav2_util/simple_action_server.hpp @@ -22,6 +22,8 @@ #include #include + +#include "rclcpp/executors/events_executor/events_executor.hpp" #include "rclcpp/rclcpp.hpp" #include "rclcpp_action/rclcpp_action.hpp" #include "nav2_util/node_thread.hpp" @@ -122,7 +124,7 @@ class SimpleActionServer options, callback_group_); if (spin_thread_) { - executor_ = std::make_shared(); + executor_ = std::make_shared(); executor_->add_callback_group(callback_group_, node_base_interface_); executor_thread_ = std::make_unique(executor_); } @@ -521,7 +523,7 @@ class SimpleActionServer typename rclcpp_action::Server::SharedPtr action_server_; bool spin_thread_; rclcpp::CallbackGroup::SharedPtr callback_group_{nullptr}; - rclcpp::executors::SingleThreadedExecutor::SharedPtr executor_; + rclcpp::executors::EventsExecutor::SharedPtr executor_; std::unique_ptr executor_thread_; /** diff --git a/nav2_util/package.xml b/nav2_util/package.xml index 0aba4a4dfe1..ace60c21507 100644 --- a/nav2_util/package.xml +++ b/nav2_util/package.xml @@ -28,6 +28,7 @@ launch launch_testing_ament_cmake action_msgs + irobot_events_executor libboost-program-options diff --git a/nav2_util/src/CMakeLists.txt b/nav2_util/src/CMakeLists.txt index a639a0e59e9..8b9bafbf4ff 100644 --- a/nav2_util/src/CMakeLists.txt +++ b/nav2_util/src/CMakeLists.txt @@ -1,3 +1,6 @@ + +find_package(irobot_events_executor REQUIRED) + add_library(${library_name} SHARED costmap.cpp node_utils.cpp @@ -12,6 +15,7 @@ add_library(${library_name} SHARED ament_target_dependencies(${library_name} rclcpp + irobot_events_executor nav2_msgs tf2 tf2_ros diff --git a/nav2_util/src/node_thread.cpp b/nav2_util/src/node_thread.cpp index c19fbd98477..bcadf389d14 100644 --- a/nav2_util/src/node_thread.cpp +++ b/nav2_util/src/node_thread.cpp @@ -22,7 +22,7 @@ namespace nav2_util NodeThread::NodeThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base) : node_(node_base) { - executor_ = std::make_shared(); + executor_ = std::make_shared(); thread_ = std::make_unique( [&]() { @@ -32,7 +32,7 @@ NodeThread::NodeThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr nod }); } -NodeThread::NodeThread(rclcpp::executors::SingleThreadedExecutor::SharedPtr executor) +NodeThread::NodeThread(rclcpp::executors::EventsExecutor::SharedPtr executor) : executor_(executor) { thread_ = std::make_unique([&]() {executor_->spin();});