Skip to main content
The qrb_ros_system_monitor sample application has various ROS nodes that publish system status information, such as CPU loading, memory usage, and disk space.

Pipeline for qrb_ros_system_monitor

The figure shows the pipeline, which collects system information with the sysfs node and some system standard command tools, and then publishes these data with ROS messages.

Figure: qrb_ros_system_monitor pipeline

ROS nodes used in the qrb_ros_system_monitor pipeline

ROS nodeDescription
CpuMonitorPublishes the CPU loading information.
MemoryMonitorPublishes the memory usage information.
DiskMonitorPublishes the disk space information.
SwapMonitorPublishes the swap space information.
TemperatureMonitorPublishes the CPU temperature.
BatteryMonitorPublishes the battery information.
SystemInfoServerPublishes static system information, such as CPU count.

ROS topics used in the qrb_ros_system_monitor pipeline

ROS topicMessage typePublished/Subscribed byDescription
/cpuqrb_ros_system_monitor::CpuMonitorPublished by CpuMonitorPublishes the CPU loading information.
/memoryqrb_ros_system_monitor::MemoryMonitorPublished by MemoryMonitorPublishes the memory usage information.
/diskqrb_ros_system_monitor::DiskMonitorPublished by DiskMonitorPublishes the disk space information.
/swapqrb_ros_system_monitor::SwapMonitorPublished by SwapMonitorPublishes the swap space information.
/temperatureqrb_ros_system_monitor::TemperatureMonitorPublished by TemperatureMonitorPublishes the CPU temperature.
/batteryqrb_ros_system_monitor::BatteryMonitorPublished by BatteryMonitorPublishes the battery information.

ROS services used in the qrb_ros_system_monitor pipeline

ROS topicMessage typeServed byDescription
/system_info_serverqrb_ros_system_monitor::SystemInfoServerSystemInfoServerPublishes static system information, such as CPU count.

Prerequisites

You have Set up the device according to Set up the environment for running sample applications.

Run out-of-the-box qrb_ros_system_monitor

  1. Start two terminals, and run the following commands in each terminal to set up QIR SDK and ROS2 environment on the device.
    ssh root@[ip-addr]
    (ssh) source /usr/share/qirp-setup.sh
    
  2. In terminal 1, run the system monitor ROS node.
    (ssh) ros2 run qrb_ros_system_monitor qrb_ros_system_monitor
    
  3. In terminal 2, check the system information with ROS topic.
    (ssh) ros2 topic echo /cpu
    

Build and run qrb_ros_system_monitor

  1. Build qrb_ros_system_monitor provided by the QIR SDK on the host computer.
    cd <qirp_decompressed_workspace>
    source setup.sh
    cd qirp-samples/platform/qrb_ros_system_monitor
    colcon build --merge-install --cmake-args ${CMAKE_ARGS}
    
  2. Push qrb_ros_system_monitor to the device.
    NoteEnsure that the QIR SDK is installed on the device.
    cd qirp-samples/platform/qrb_ros_system_monitor/install
    tar czvf qrb_ros_system_monitor.tar.gz lib share
    scp qrb_ros_system_monitor.tar.gz root@[ip-addr]:/opt/
    ssh root@[ip-addr]
    (ssh) tar --no-overwrite-dir --no-same-owner -zxf /opt/qrb_ros_system_monitor.tar.gz -C /usr/ros/jazzy/
    
  3. Start two terminals, and run the following commands in each terminal to set up QIR SDK and ROS2 environment on the device.
    ssh root@[ip-addr]
    (ssh) source /usr/share/qirp-setup.sh
    
  4. In terminal 1, run the system monitor ROS node.
    (ssh) ros2 run qrb_ros_system_monitor qrb_ros_system_monitor
    
  5. In terminal 2, get the system information.
    (ssh) ros2 topic echo /cpu
    (ssh) ros2 topic echo /memory
    

Limitation

The sysfs node and Linux standard command-line tools collect the system information values. Therefore, if the sysfs path changes or the output format of command-line tools changes, those ROS nodes may not work as expected.