Goal
implement a “Launch the Sub” checklist panel as the main operator flow, and use it to drive/validate the current incomplete widgets (thruster spin button, camera viewer, node viewer).
Main checklist flow
-
connection + high-level status panel (comms, kill state, fault summary)
-
numbered, state-aware buttons:
- unkill (shows KILLED/UNKILLED, disables if already unkilled)
- start localization (shows RUNNING/STOPPED, disables if already running)
- reset localization (confirm dialog; only enabled if localization running; requires re-stabilization)
- safety gate: reset-localization should only be callable once per localization start (repeated resets can cause issues)
- expected ops flow: localization generally needs exactly one reset before starting the controller (no more than once)
- after reset, require localization to be stable for N seconds before proceeding
- start controller (shows RUNNING/STOPPED; disables if already running)
-
add controller reporting: top bar “Controller: ON/OFF”
- prefer: heartbeat age / mode if available (armed / hold / mission, etc.)
- fallback: infer controller ON/OFF by whether it is publishing commands (and show last-command age if possible)
-
“Launch Sub” button stays disabled until all required steps are healthy; if blocked, show why (missing node/service, localization not stable, controller off, etc.)
- clarification: Launch Sub is the final action (mission/arm/operator transition) and does not auto-run steps 1–4; those are prerequisites the operator completes first
Side tasks / incomplete widgets to tie in
-
thruster spin test: safety-gated panel (confirm, duration limit, per-thruster selection, stop/kill visible, basic feedback)
-
camera viewer: topic selection + stream state + fps/latency overlay (multi-cam layout optional)
-
node viewer: list/graph of nodes + highlight required nodes for checklist + show missing dependencies that block Launch
- use this as the primary “why blocked” explainer when Launch Sub is disabled (missing deps/services, etc.)
Acceptance criteria
-
checklist buttons reflect live state (already running/active -> indicated and disabled)
-
controller ON/OFF is visible and updates automatically
- meets this via heartbeat/mode when available, otherwise via command-publishing inference
-
launch button properly gates and explains why it’s disabled
- includes reset-localization gating rules (only once; must be done once before controller if not yet performed)
-
camera/node/thruster widgets are no longer “placeholder only” and provide minimal usable functionality
Sources/References
Goal
implement a “Launch the Sub” checklist panel as the main operator flow, and use it to drive/validate the current incomplete widgets (thruster spin button, camera viewer, node viewer).
Main checklist flow
connection + high-level status panel (comms, kill state, fault summary)
numbered, state-aware buttons:
add controller reporting: top bar “Controller: ON/OFF”
“Launch Sub” button stays disabled until all required steps are healthy; if blocked, show why (missing node/service, localization not stable, controller off, etc.)
Side tasks / incomplete widgets to tie in
thruster spin test: safety-gated panel (confirm, duration limit, per-thruster selection, stop/kill visible, basic feedback)
camera viewer: topic selection + stream state + fps/latency overlay (multi-cam layout optional)
node viewer: list/graph of nodes + highlight required nodes for checklist + show missing dependencies that block Launch
Acceptance criteria
checklist buttons reflect live state (already running/active -> indicated and disabled)
controller ON/OFF is visible and updates automatically
launch button properly gates and explains why it’s disabled
camera/node/thruster widgets are no longer “placeholder only” and provide minimal usable functionality
Sources/References
subgui