Repository navigation
Commit cff9616
feat(simulator): render every panel and chart through ui-cpp (#332)
* feat(simulator): render the FFT and PSD panels through ui-cpp
Both panels become Qt-free field descriptions: two combos and a sample
rate for FFT, five spectrum fields plus a noise group for PSD, with the
shared signal-component table in place of SignalConfigWidget.
PSD carried the conditional-enable bug the form model fixes structurally.
Its noise handler was connected after the initial selection was set, so
the amplitude control's enablement was never synchronised at startup; it
only looked right because the default noise type happened to be the one
that enables it. Conditions now apply at build time and on every change
through the same path, and a test pins the starting state.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQEnuDHtCQb5UyddnMup3Q
* feat(simulator): render the PID, MPC and LQR panels through ui-cpp
PID is the group-swapping case: the two plant parameterisations become
groups with a selection condition instead of two setVisible calls made
from a handler wired after the initial selection. Its root-locus drag
writes Kp back through the model and refreshes the one control, which is
what the view's re-entrancy flag exists for; the write is clamped to the
field's own range so the model cannot hold a value the spin box would
have rejected.
LQR's three composite monospace state lines become five read-out fields.
The content is the same and the angles are still converted to degrees for
display only, but each value now gets its own labelled row rather than
sharing a formatted line, since a read-out states one number.
Its five buttons take semantic roles (Start, Stop, Reset) rather than the
uniform default styling the panel gave them, and CartPoleWidget and
LqrEvaluationWidget stay as they are, handed to the shell as bare
QWidget* through the native-page escape hatch.
Also dropped PidMainWindow::pendingGain, which was assigned on every drag
and never read.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQEnuDHtCQb5UyddnMup3Q
* feat(simulator): render the RLS, Kalman and Bayesian MPC panels through ui-cpp
The last three panels, which completes the migration: every one of the
eleven applications now describes its parameters rather than building
them, and simulator/widgets/SignalConfigWidget is deleted with the last
consumer that referenced it.
RLS keeps its three coefficients as three separate fields rather than
gaining a fixed-arity array field for one call site, and its compute path
gains the guard it never had - it was the only application with no
try/catch around the simulation at all.
Bayesian MPC's word-wrapped status label inside the panel becomes the
shell's status line, which is where the other ten applications already
report. Its run button still disables itself for the duration, now
through the view rather than by holding the widget.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQEnuDHtCQb5UyddnMup3Q
* style(simulator): format the status-line chains in every main window
clang-format wants a different continuation indent for QString().arg()
chains than the eleven windows carried. Applied to all of them, including
the three migrated earlier, so the set reads the same and the tree is
format-clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQEnuDHtCQb5UyddnMup3Q
* feat(simulator): render the filter charts through ui-cpp
IIR, FIR and Kalman drop the vendored chart widgets for ChartCore hosted
in QtPaintedWidget, which is what the FFT application has done since the
stop-gate.
The impulse response of both filters plots a sample index, and the widget
it replaces hardcoded "Time (s)" as its X-axis title whatever it was fed.
LinearAxis takes that title as a parameter, so the two impulse charts now
say "Sample" and read back "n = " at the cursor.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQEnuDHtCQb5UyddnMup3Q
* feat(simulator): render the PSD, LQG, MPC and PID charts through ui-cpp
Four more applications move onto ChartCore. PID keeps PidRootLocusWidget
as a native page beside three portable ones, which is what SetPage taking
a bare QWidget* is for.
MPC's per-state series names were built with QString::arg purely to make
a QString the chart wanted; ui::charts::Series takes std::string, so they
are std::format now and the window keeps one fewer Qt type in its inner
loop.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQEnuDHtCQb5UyddnMup3Q
* feat(simulator): render the RLS, Bayesian MPC and LQR evaluation charts through ui-cpp
The last three, and the ones the hardcoded axis title mislabelled worst.
RLS plots a sample index on all three of its charts and Bayesian MPC
plots an EM iteration on one and a BO evaluation on another; all five
said "Time (s)". They now say "Sample", "Iteration" and "Evaluation",
and the cursor reads back "n = " or "i = " to match.
LqrEvaluationWidget composes two charts rather than being one, so it
becomes a QWidget holding two QtPaintedWidgets and stays a native page
handed to the shell.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQEnuDHtCQb5UyddnMup3Q
* refactor(simulator): delete the vendored chart widgets
Nothing references simulator/widgets any more, so the 1287 lines it held
go with the numerical.simulator.widgets target: TimeSeriesChartWidget,
FrequencyChartWidget and the ChartInteraction they shared, all of which
ui/charts now provides once for every consumer.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQEnuDHtCQb5UyddnMup3Q
* Apply batched suggestions from code review
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Update simulator/filters/KalmanFilter/view/KalmanMainWindow.cpp
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>1 parent 09d8986 commit cff9616
115 files changed
Lines changed: 2864 additions & 3585 deletions
File tree
- simulator
- analysis
- FastFourierTransform
- application
- test
- view
- PowerDensitySpectrum
- application
- test
- view
- controllers
- BayesianMpcCalibration
- application
- test
- view
- Lqg/view
- LqrCartPole
- application
- test
- view
- Mpc
- application
- test
- view
- PidController
- application
- test
- view
- estimators/RecursiveLeastSquares
- application
- test
- view
- filters
- FirFilter/view
- IirFilter/view
- KalmanFilter
- application
- test
- view
- widgets
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
| 2 | + | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
| 6 | + | |
15 | 7 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
12 | 14 | | |
13 | 15 | | |
14 | 16 | | |
15 | 17 | | |
16 | 18 | | |
| 19 | + | |
| 20 | + | |
17 | 21 | | |
18 | 22 | | |
19 | 23 | | |
| |||
23 | 27 | | |
24 | 28 | | |
25 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | | - | |
23 | 21 | | |
24 | 22 | | |
25 | 23 | | |
| |||
This file was deleted.
0 commit comments