当定频神器爱上多线程|ROS2定频话题发布Demo

210 阅读1分钟

我们想让话题按照某个固定的速率进行发布,可以采用ROS2中的定时神器Rate,不清楚Rate的小伙伴可以看看小鱼的这篇文章:ROS中的定频神器你会用吗

为了能够一直循环使用rate,我们单独开一个线程用于发布joint_states话题数据,在ROS2程序中单独开线程进行话题发布的例程如下:

import threading
from rclpy.node import Node

class RotateWheelNode(Node):    
    def __init__(self):        
        # 创建一个Rate和线程        
        self.pub_rate = self.create_rate(5) #5Hz       
        # 创建线程        
        self.thread_ = threading.Thread(target=self._thread_pub) self.thread_.start()

    def _thread_pub(self):        
        while rclpy.ok():            
            #做一些操作,使用rate保证循环频率
            self.pub_rate.sleep()