ROS2中python定时器的使用示例

创建定时器

self.timer = self.create_timer(1.0, self.callback)

函数定义

def create_timer(
        self,
        timer_period_sec: float,
        callback: Callable,
        callback_group: CallbackGroup = None,
        clock: Clock = None,
    ) -> Timer:

timer_period_sec: 定时执行时间间隔(s)
callback: 回调函数
callback_group: 定时器的回调组,默认值None
clock: 计时器时钟源,默认值None

回调函数

def callback(self):
        print("Callback function called")

取消定时器

self.timer.cancel()

完整代码

import rclpy
from rclpy.node import Node
 
class MyNode(Node):
    def __init__(self):
        super().__init__('my_node')
        
        # 创建定时器
        self.timer = self.create_timer(1.0, self.callback)
    
    def callback(self):
        print("Callback function called")
    
    def cancel_timer(self):
        if self.timer is not None and self.get_logger() is not None:
            self.get_logger().info("Cancelling timer...")
            
            # 取消定时器
            self.timer.cancel()
            self.timer = None
 
def main():
    rclpy.init()
    node = MyNode()
    try:
        rclpy.spin(node)
    except KeyboardInterrupt:
        pass
    finally:
        node.destroy_node()
        rclpy.shutdown()
 
if __name__ == '__main__':
    main()

你可能感兴趣的:(ROS2开发实例,python,ROS2)