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();});