ROS2话题通信实践:系统状态监测与可视化工具
背景与需求分析
ROS2的话题通信机制是节点间异步数据交换的核心方式,适用于高频、单向数据流场景。系统状态监测工具需要实时收集硬件资源数据(如CPU、内存、磁盘等),并通过可视化界面展示。该场景完美契合话题通信的发布-订阅模型。
系统架构设计
- 数据采集节点:周期性发布系统状态消息
- 数据处理节点:订阅原始数据并计算统计指标
- 可视化节点:接收处理后的数据生成动态图表
- 消息类型:自定义
SystemStatus.msg包含时间戳、CPU负载、内存使用率等字段
自定义消息定义
在msg/SystemStatus.msg中定义数据结构:
float32 cpu_load_percent
float32 memory_usage_percent
float32 disk_usage_percent
builtin_interfaces/Time timestamp
数据采集节点实现
创建发布者节点system_monitor.py:
import rclpy
from rclpy.node import Node
from custom_interfaces.msg import SystemStatus
import psutil
import time
class SystemMonitor(Node):
def __init__(self):
super().__init__('system_monitor')
self.publisher = self.create_publisher(
SystemStatus,
'/system_status',
10)
self.timer = self.create_timer(1.0, self.publish_status)
def publish_status(self):
msg = SystemStatus()
msg.cpu_load_percent = psutil.cpu_percent()
msg.memory_usage_percent = psutil.virtual_memory().percent
msg.disk_usage_percent = psutil.disk_usage('/').percent
msg.timestamp = self.get_clock().now().to_msg()
self.publisher.publish(msg)
self.get_logger().info('Publishing system status')
def main(args=None):
rclpy.init(args=args)
1077

被折叠的 条评论
为什么被折叠?



