RosScope is a Qt desktop app for ROS 2 runtime monitoring and control on Ubuntu. It provides a single interface for process visibility, ROS graph health, diagnostics, snapshots, and operational actions.
Built and maintained by Prabal Khare.
- Monitors Linux processes with ROS-aware filtering
- Maps ROS nodes to domains, PIDs, executables, and workspaces
- Inspects ROS graph state (topics, QoS, TF/Nav2, lifecycle)
- Surfaces runtime health issues (zombies, conflicts, missing links, QoS issues)
- Supports operational controls (terminate/kill/restart actions)
- Exports snapshots and diffs
- Records sessions for later analysis
- Supports remote fleet checks and actions over SSH
- Ubuntu 22.04+
- CMake 3.16+
- Qt6 (Core, Widgets, Network)
iproute2,usbutils- Optional but recommended:
- ROS 2 (Humble/Iron/Jazzy) with
ros2inPATH can-utilsopenssh-client(fleet features)
- ROS 2 (Humble/Iron/Jazzy) with
Install base dependencies:
sudo apt update
sudo apt install -y \
build-essential \
cmake \
qt6-base-dev \
qt6-base-dev-tools \
iproute2 \
usbutils \
can-utils \
openssh-clientcmake -S . -B build
cmake --build build -j$(nproc)Binary: build/RosScope
source /opt/ros/<distro>/setup.bash
# optional overlay:
# source /path/to/ws/install/setup.bash
./build/RosScopeUse resources/example_fleet_targets.json as the template for remote fleet monitoring/actions.
Expected format: JSON array of target objects.
[
{
"name": "robot_1",
"host": "192.168.1.10",
"user": "ubuntu",
"port": 22,
"domain_id": "0",
"ros_setup": "/opt/ros/humble/setup.bash"
}
]Field reference:
name(required): display name used in Fleet table and actionshost(required): IP/hostname of the target robotuser(optional): SSH username (user@host); leave empty to use current userport(optional): SSH port, default22domain_id(optional): ROS domain for that target, default"0"ros_setup(optional): remote ROS setup script path, default/opt/ros/humble/setup.bash
How to use it:
- Copy and edit the template:
cp resources/example_fleet_targets.json fleet_targets.json - Update hosts/users/domain IDs for your robots.
- In the app, click
Fleet -> Load Fleet Targetsand select your JSON file.
Auto-load option:
- If
fleet_targets.jsonexists in the project root, RosScope loads it automatically on startup.
SSH notes:
- Use key-based SSH auth (recommended) and ensure host keys are trusted.
- Quick check from your machine:
ssh -p 22 <user>@<host> 'echo ok'
- Engineer: full diagnostics and control surface
- Operator: simplified runtime/safety view
- Snapshots:
snapshots/ - Session exports:
sessions/ - Presets:
presets/ - Telemetry:
logs/ - Fleet queue/state:
state/
include/rrcc/ # public headers
src/services/ # runtime, diagnostics, control, monitoring services
src/ui/ # main Qt UI
docs/ # architecture and performance notes
- If the app shows limited ROS data, verify
ros2is inPATHand environment is sourced. - If fleet actions fail, verify SSH connectivity and credentials.
- For build issues, remove
build/and reconfigure:
rm -rf build
cmake -S . -B build
cmake --build build -j$(nproc)