Skip to content

Add state-aware “Launch Sub” checklist + controller status #13

Description

@brockgilman

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:

    1. unkill (shows KILLED/UNKILLED, disables if already unkilled)
    2. start localization (shows RUNNING/STOPPED, disables if already running)
    3. 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
    4. 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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
In progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions