python节点构造中调用rate.sleep会导致卡死,而C++中不会

📅 2026/7/1 2:50:30
python节点构造中调用rate.sleep会导致卡死,而C++中不会
# 3. 自定义节点类 class MyNode(Node): def __init__(self): super().__init__(time_node_py) self.demo_rate() def demo_rate(self): # 1.创建 Rate 对象 self.rate self.create_rate(1.0) # 2.调用 sleep 函数 --- 导致程序阻塞 # while rclpy.ok(): # self.get_logger().info() # self.rate.sleep() # 解决方案: 创建子线程实现运行频率控制 thread threading.Thread(targetself.do_some) thread.start() def do_some(self): while rclpy.ok(): self.get_logger().info() self.rate.sleep()原因C 的 rate.sleep() 是纯时间控制Python 的 self.rate.sleep()依赖节点状态由self.create_rate()创建,必须要在节点构造函数返回后rate.sleep()才会返回。这是两种语言绑定实现不同导致的