Skip to content

Add generic WayBionic RViz2 diagnostics foundation package#2

Open
khuzaymahbinharis-jpg wants to merge 19 commits into
mainfrom
feature/ground-station-ui-khuzaymah-v2
Open

Add generic WayBionic RViz2 diagnostics foundation package#2
khuzaymahbinharis-jpg wants to merge 19 commits into
mainfrom
feature/ground-station-ui-khuzaymah-v2

Conversation

@khuzaymahbinharis-jpg

@khuzaymahbinharis-jpg khuzaymahbinharis-jpg commented Jun 13, 2026

Copy link
Copy Markdown

Review Screenshots

These images are included only to help reviewers see the UI quickly. They are not part of the runtime package behavior.

Engineer view — mock normal Engineer view — mock fault
Engineer mock normal Engineer mock fault

Summary

This PR makes waybionic_rviz_plugins a focused WayBionic RViz2 diagnostics package. It keeps the engineer monitoring panel, mock/live diagnostics switching, and a temporary /diagnostics publisher for local validation.

Camera/doctor placeholder work was removed from this PR and will be handled separately later.

Primary Launch Commands

colcon build --packages-select waybionic_rviz_plugins --symlink-install
source install/setup.bash
ros2 launch waybionic_rviz_plugins engineer_view.launch.py

Mock diagnostics (default):

ros2 launch waybionic_rviz_plugins engineer_view.launch.py use_mock_diagnostics:=true

Live diagnostics:

ros2 launch waybionic_rviz_plugins engineer_view.launch.py use_mock_diagnostics:=false diagnostics_topic:=/diagnostics

Temporary backend/demo publisher:

ros2 launch waybionic_rviz_plugins temporary_diagnostics_publisher.launch.py
ros2 launch waybionic_rviz_plugins temporary_diagnostics_publisher.launch.py mode:=cycle

What Works

  • Engineer RViz view with the WayBionic Diagnostics panel.
  • Mock normal and fault validation states.
  • Alert banner/table rendering from normalized DiagnosticMessage rows.
  • Live diagnostics source path that subscribes to a diagnostic_msgs/msg/DiagnosticArray topic.
  • Temporary /diagnostics publisher with normal, fault, stale, and cycle modes.
  • Package metadata and lint/test wiring via colcon test.
  • Only DiagnosticsPanel is registered in plugin_description.xml.

Testing Performed

source /opt/ros/jazzy/setup.bash
colcon build --packages-select waybionic_rviz_plugins --symlink-install
source install/setup.bash
colcon test --packages-select waybionic_rviz_plugins
colcon test-result --verbose
ros2 launch waybionic_rviz_plugins engineer_view.launch.py --show-args
ros2 launch waybionic_rviz_plugins temporary_diagnostics_publisher.launch.py --show-args

Results: build passed; 11 tests, 0 failures; launch argument checks passed; temporary publisher smoke test passed. GUI RViz validation should be re-run locally before final merge if required.

Known Limitations

  • Meaningful live rows still depend on stable backend publishing once Korede is available.
  • Stale handling is currently a simple five-second freshness check.
  • The UI is monitoring-only and does not send motor commands.
  • Camera/doctor workflow is out of scope for this PR.

Test plan

  • Build waybionic_rviz_plugins on ROS 2 Jazzy
  • Run colcon test --packages-select waybionic_rviz_plugins
  • Launch engineer_view.launch.py and verify mock normal/fault states
  • Launch temporary publisher in cycle mode with use_mock_diagnostics:=false
  • Optional: launch engineer_ar4_demo.launch.py in an AR4-enabled workspace

khuzaymahbinharis-jpg and others added 18 commits June 6, 2026 13:45
Define DiagnosticMessage and shared status helpers so the UI can consume mock or future ROS 2 data through one interface.

Co-authored-by: Cursor <cursoragent@cursor.com>
Provide locally generated DiagnosticMessage data so the dashboard can run without ROS 2 or hardware.

Co-authored-by: Cursor <cursoragent@cursor.com>
Centralize Qt stylesheet constants for the monitoring prototype panels, tables, and OK/WARN/FAULT/STALE states.

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the two-column layout, telemetry table, alerts panel, demo mode controls, and reserved camera/visualization placeholders.

Co-authored-by: Cursor <cursoragent@cursor.com>
Wire up the runnable PySide6 launcher and document install/run steps plus the backend diagnostics contract for future ROS 2 integration.

Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify that the prototype is built with Python 3, PySide6, and Qt Widgets, and note the planned ROS 2 backend integration path.

Co-authored-by: Cursor <cursoragent@cursor.com>
Create the isolated ament_cmake package and RViz plugin export metadata for the ground station UI work.

Co-authored-by: Cursor <cursoragent@cursor.com>
Define DiagnosticMessage and local Normal/Fault demo diagnostics so the RViz panel can run before live ROS topics are available.

Co-authored-by: Cursor <cursoragent@cursor.com>
Implement the docked Qt panel with system status, telemetry table, alerts, and Normal/Fault mock demo controls.

Co-authored-by: Cursor <cursoragent@cursor.com>
Provide camera-only and monitoring-first RViz configs plus passive engineer visualization launch without motor commands.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add workspace build/run instructions for ar4_ws and describe future diagnostics, camera, and robot visualization integration paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
Rename ground_station_monitoring_ui to ground_station_monitoring_ui_archived and note that waybionic_rviz_plugins is now the active ground station UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
Move passive AR4 visualization into an optional engineer_ar4_demo launch/config so the default engineer view stays generic.

Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce DiagnosticsSource with MockDiagnosticsSource and RosDiagnosticsSource, use_mock_diagnostics launch/config support, and live /diagnostics mapping into DiagnosticMessage.

Co-authored-by: Cursor <cursoragent@cursor.com>
Register the second RViz panel, dock it in doctor_camera_view.rviz, and show placeholder topics with a waiting-for-feed status.

Co-authored-by: Cursor <cursoragent@cursor.com>
Update package README and docs for the decoupled AR4 helper, SurgeonCameraPanel, and live /diagnostics integration path.

Co-authored-by: Cursor <cursoragent@cursor.com>
Store mock normal/fault and surgeon placeholder captures under docs/screenshots and reference them at the top of PR_NOTES.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@yassinsolim yassinsolim self-requested a review June 20, 2026 00:28

@yassinsolim yassinsolim left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs changes before merge.

The core RViz plugin package builds, and the RViz launch files resolve/start without plugin load errors in local smoke testing. The issue is scope and cleanup.

Change requests:

  • Remove the surgeon/doctor camera placeholder work. The surgeon feed should probably be a separate low-latency app or VR workflow, not an RViz placeholder panel.
  • Remove SurgeonCameraPanel, the plugin registration for it, the doctor/camera RViz config, and related docs/screenshots.
  • Replace the placeholder maintainer info in waybionic_rviz_plugins/package.xml.
  • Add real lint/test wiring. Right now colcon test --packages-select waybionic_rviz_plugins runs zero tests.

Mac note: RViz crashed on shutdown in RoboStack, but the plugin loaded and the views came up. I would not treat that shutdown crash as a PR blocker unless it also happens on Ubuntu/WSL2.

Remove SurgeonCameraPanel, doctor launch/config, and related docs or screenshots. Add colcon test and lint wiring, replace placeholder maintainer metadata, and add a temporary /diagnostics publisher for mock/live validation while backend publishing is unavailable.

Co-authored-by: Cursor <cursoragent@cursor.com>
@yassinsolim

Copy link
Copy Markdown
Member

Please fix these before we merge:

  • Make temporary_diagnostics_publisher.py executable so it works with --symlink-install.
  • Fix live diagnostics mode because use_mock_diagnostics:=false is currently overridden by the RViz config.
  • Remove the archived camera placeholder app.
  • Remove the optional AR4/Annin demo helper files so the repository stays clean after PR Setup clean Waybionic foundation and placeholder arm #1 is merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants