编写一个ROS2的节点,包含一个定时器,每3秒输出一个随机整数
时间: 2024-10-06 12:01:33 浏览: 46
在Robot Operating System (ROS) 2中,编写一个节点来定期输出随机整数通常涉及几个步骤。首先,你需要安装ros2并创建一个新的包。然后,你可以使用`rclpy`库来创建节点、定时器以及生成随机数。以下是一个简单的Python示例:
```python
# 导入必要的库
import rclpy
from rclpy.node import Node
from rclpy.time import Time
import random
class RandomTimerNode(Node):
def __init__(self):
super().__init__('random_timer_node') # 初始化节点名称
self.timer = self.create_timer(3.0, self.publish_random_number) # 创建每3秒触发一次的定时器
self.count = 0 # 定义用于计数的变量
def publish_random_number(self):
"""发布一个随机整数"""
random_int = random.randint(1, 100) # 生成1到100之间的随机整数
self.get_logger().info(f"Random number at time {self.get_clock().now().to_msg()}: {random_int}") # 输出消息和当前时间
def main(args=None):
rclpy.init(args=args)
node = RandomTimerNode() # 创建节点实例
try:
rclpy.spin(node) # 开始循环处理定时器事件
except KeyboardInterrupt:
pass
finally:
node.destroy_node() # 关闭节点资源
rclpy.shutdown()
if __name__ == '__main__':
main()
```
在这个例子中,我们创建了一个名为`RandomTimerNode`的节点,它有一个定时器每隔3秒就会触发`publish_random_number`方法。该方法会生成一个随机整数并在日志中打印出来。
阅读全文