feat(webui): settings & configuration panel (Issue #160) #166

Merged
sl-jetson merged 1 commits from sl-webui/issue-160-settings into main 2026-03-02 10:27:25 -05:00
Collaborator

Summary

  • useSettings.js: PID parameter catalogue (all gain weights: empty/light/heavy, clamps, overrides), step-response simulation (inverted-pendulum), ROS2 param apply via rcl_interfaces/srv/SetParameters, sensor param management, firmware info from /diagnostics, diagnostics bundle export, JSON backup/restore, localStorage persist
  • SettingsPanel.jsx: 6-view panel — PID tuner, Sensors, Network, Firmware, Diagnostics, Backup. StepResponseCanvas with stable/oscillating/unstable colour-coding. GainSlider with range+number input. Weight-class tabs. Parameter validation badges with warn/error levels.
  • App.jsx: CONFIG tab group (purple), settings tab render, FLEET_TABS set to gate ConnectionBar and footer for fleet/missions tabs

Test plan

  • Open Settings → PID tab; adjust Kp slider, verify step-response canvas updates
  • Switch weight class tabs (empty/light/heavy/override/clamps/misc)
  • Trigger validation warnings (set Kp > 35, Ki > 3)
  • Apply PID gains when connected to rosbridge (check /diagnostics ACK)
  • Sensors tab: adjust RTSP fps/bitrate, UWB range; apply
  • Network tab: confirm rosbridge URL + DDS domain editor
  • Firmware tab: verify fields populate from /diagnostics KeyValues
  • Diagnostics tab: download bundle JSON
  • Backup tab: export settings JSON, paste back to import
  • Verify CONFIG tab visible in nav bar
  • Verify ConnectionBar hidden for fleet/missions tabs

Closes #160

🤖 Generated with Claude Code

## Summary - **useSettings.js**: PID parameter catalogue (all gain weights: empty/light/heavy, clamps, overrides), step-response simulation (inverted-pendulum), ROS2 param apply via `rcl_interfaces/srv/SetParameters`, sensor param management, firmware info from `/diagnostics`, diagnostics bundle export, JSON backup/restore, localStorage persist - **SettingsPanel.jsx**: 6-view panel — PID tuner, Sensors, Network, Firmware, Diagnostics, Backup. `StepResponseCanvas` with stable/oscillating/unstable colour-coding. `GainSlider` with range+number input. Weight-class tabs. Parameter validation badges with warn/error levels. - **App.jsx**: CONFIG tab group (purple), settings tab render, `FLEET_TABS` set to gate ConnectionBar and footer for fleet/missions tabs ## Test plan - [ ] Open Settings → PID tab; adjust Kp slider, verify step-response canvas updates - [ ] Switch weight class tabs (empty/light/heavy/override/clamps/misc) - [ ] Trigger validation warnings (set Kp > 35, Ki > 3) - [ ] Apply PID gains when connected to rosbridge (check /diagnostics ACK) - [ ] Sensors tab: adjust RTSP fps/bitrate, UWB range; apply - [ ] Network tab: confirm rosbridge URL + DDS domain editor - [ ] Firmware tab: verify fields populate from `/diagnostics` KeyValues - [ ] Diagnostics tab: download bundle JSON - [ ] Backup tab: export settings JSON, paste back to import - [ ] Verify CONFIG tab visible in nav bar - [ ] Verify ConnectionBar hidden for fleet/missions tabs Closes #160 🤖 Generated with [Claude Code](https://claude.com/claude-code)
sl-webui added 1 commit 2026-03-02 10:24:46 -05:00
- useSettings.js: PID parameter catalogue, step-response simulation,
  ROS2 parameter apply via rcl_interfaces/srv/SetParameters, sensor
  param management, firmware info extraction from /diagnostics,
  diagnostics bundle export, JSON backup/restore, localStorage persist
- SettingsPanel.jsx: 6-view panel (PID, Sensors, Network, Firmware,
  Diagnostics, Backup); StepResponseCanvas with stable/oscillating/
  unstable colour-coding; GainSlider with range+number input; weight-
  class tabs (empty/light/heavy); parameter validation badges
- App.jsx: CONFIG tab group (purple), settings tab render, FLEET_TABS
  set to gate ConnectionBar and footer for fleet/missions/settings

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sl-webui force-pushed sl-webui/issue-160-settings from 8d35adfb9b to da3ee19688 2026-03-02 10:26:59 -05:00 Compare
sl-jetson merged commit e43c82d132 into main 2026-03-02 10:27:25 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#166
No description provided.