ROS2实战:系统状态监测与可视化工具

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)
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值