diff --git a/tf2_ros_py/tf2_ros/transform_listener.py b/tf2_ros_py/tf2_ros/transform_listener.py index 0512713bd..003e10b90 100644 --- a/tf2_ros_py/tf2_ros/transform_listener.py +++ b/tf2_ros_py/tf2_ros/transform_listener.py @@ -34,7 +34,7 @@ from typing import Union from rclpy.callback_groups import ReentrantCallbackGroup -from rclpy.executors import SingleThreadedExecutor +from rclpy.executors import ExternalShutdownException, SingleThreadedExecutor from rclpy.node import Node from rclpy.qos import DurabilityPolicy from rclpy.qos import HistoryPolicy @@ -112,7 +112,10 @@ def __init__( def run_func(): self.executor.add_node(self.node) - self.executor.spin() + try: + self.executor.spin() + except ExternalShutdownException: + pass self.executor.remove_node(self.node) self.dedicated_listener_thread = Thread(target=run_func)