diff --git a/ign_ros2_control/src/ign_ros2_control_plugin.cpp b/ign_ros2_control/src/ign_ros2_control_plugin.cpp index f5f7eeed..ca58f9fe 100644 --- a/ign_ros2_control/src/ign_ros2_control_plugin.cpp +++ b/ign_ros2_control/src/ign_ros2_control_plugin.cpp @@ -73,9 +73,6 @@ class IgnitionROS2ControlPluginPrivate /// \brief Thread where the executor will spin std::thread thread_executor_spin_; - /// \brief Flag to stop the executor thread when this plugin is exiting - bool stop_{false}; - /// \brief Executor to spin the controller rclcpp::executors::MultiThreadedExecutor::SharedPtr executor_; @@ -238,7 +235,6 @@ IgnitionROS2ControlPlugin::IgnitionROS2ControlPlugin() IgnitionROS2ControlPlugin::~IgnitionROS2ControlPlugin() { // Stop controller manager thread - this->dataPtr->stop_ = true; this->dataPtr->executor_->remove_node(this->dataPtr->controller_manager_); this->dataPtr->executor_->cancel(); this->dataPtr->thread_executor_spin_.join(); @@ -354,12 +350,9 @@ void IgnitionROS2ControlPlugin::Configure( this->dataPtr->node_ = rclcpp::Node::make_shared(node_name, ns); this->dataPtr->executor_ = std::make_shared(); this->dataPtr->executor_->add_node(this->dataPtr->node_); - this->dataPtr->stop_ = false; auto spin = [this]() { - while (rclcpp::ok() && !this->dataPtr->stop_) { - this->dataPtr->executor_->spin_once(); - } + this->dataPtr->executor_->spin(); }; this->dataPtr->thread_executor_spin_ = std::thread(spin);