From dab507d08edeee5b5d3f9c1353fdf9646bf54e67 Mon Sep 17 00:00:00 2001 From: zhenpeng ge Date: Thu, 19 Aug 2021 12:47:30 +0800 Subject: [PATCH] use dedicated callback group and executor to isolate timer Signed-off-by: zhenpeng ge fix some issues Signed-off-by: zhenpeng ge update Signed-off-by: zhenpeng ge --- tf2_ros/include/tf2_ros/create_timer_ros.h | 5 ++++- tf2_ros/src/create_timer_ros.cpp | 9 ++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/tf2_ros/include/tf2_ros/create_timer_ros.h b/tf2_ros/include/tf2_ros/create_timer_ros.h index 0590ce30c..549d98484 100644 --- a/tf2_ros/include/tf2_ros/create_timer_ros.h +++ b/tf2_ros/include/tf2_ros/create_timer_ros.h @@ -53,7 +53,8 @@ class CreateTimerROS : public CreateTimerInterface TF2_ROS_PUBLIC CreateTimerROS( rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base, - rclcpp::node_interfaces::NodeTimersInterface::SharedPtr node_timers); + rclcpp::node_interfaces::NodeTimersInterface::SharedPtr node_timers, + rclcpp::CallbackGroup::SharedPtr callback_group = nullptr); virtual ~CreateTimerROS() = default; @@ -123,6 +124,8 @@ class CreateTimerROS : public CreateTimerInterface TimerHandle next_timer_handle_index_; std::unordered_map timers_map_; std::mutex timers_map_mutex_; + + rclcpp::CallbackGroup::SharedPtr callback_group_; }; // class CreateTimerROS } // namespace tf2_ros diff --git a/tf2_ros/src/create_timer_ros.cpp b/tf2_ros/src/create_timer_ros.cpp index 652d82308..d90ce2053 100644 --- a/tf2_ros/src/create_timer_ros.cpp +++ b/tf2_ros/src/create_timer_ros.cpp @@ -43,8 +43,10 @@ namespace tf2_ros CreateTimerROS::CreateTimerROS( rclcpp::node_interfaces::NodeBaseInterface::SharedPtr node_base, - rclcpp::node_interfaces::NodeTimersInterface::SharedPtr node_timers) -: node_base_(node_base), node_timers_(node_timers), next_timer_handle_index_(0) + rclcpp::node_interfaces::NodeTimersInterface::SharedPtr node_timers, + rclcpp::CallbackGroup::SharedPtr callback_group) +: node_base_(node_base), node_timers_(node_timers), next_timer_handle_index_(0), + callback_group_(callback_group) { } @@ -61,7 +63,8 @@ CreateTimerROS::createTimer( node_timers_, clock, period, - std::bind(&CreateTimerROS::timerCallback, this, timer_handle_index, callback)); + std::bind(&CreateTimerROS::timerCallback, this, timer_handle_index, callback), + callback_group_); timers_map_[timer_handle_index] = timer; return timer_handle_index; }