Skip to content

Commit b4f9aad

Browse files
committed
docs: align markdown tables
Apply markdown-table-formatter's layout to the tables this tier adds or edits, as suggested by MegaLinter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q53m7MZDmHwocmKbhhd2o5
1 parent 38fe5bd commit b4f9aad

8 files changed

Lines changed: 92 additions & 92 deletions

File tree

‎README.md‎

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ Refer to the documentation to quickly integrate and utilize the library's signal
1414

1515
## Documentation
1616

17-
| Category | Description |
18-
|--------------------------------------------------------------------|----------------------------------------------------------------------|
19-
| [Analysis](doc/analysis/README.md) | FFT, Real-Input FFT (RFFT), Power Spectral Density, DCT, Discrete Wavelet Transform (Haar/Daubechies), Window Functions, Signal Detectors, Convolution & Correlation, Goertzel Algorithm, Decibels, Hilbert Transform / Analytic Signal, Mel Filterbank / MFCC |
20-
| [Control Analysis](doc/control_analysis/README.md) | Frequency Response, Root Locus, Controllability/Observability Matrices & Gramians, Continuous-to-Discrete, Transfer Function ↔ State Space |
21-
| [Controllers](doc/controllers/README.md) | Bang-Bang/Hysteresis, Deadbeat Control, PID, LQR, LQI (Integral/Servo State Feedback), MPC, Saturation, Rate Limiter, Slew-Limited Saturation, Feedforward/2-DOF, Gain-Scheduled Controller, Lead-Lag Compensator, Luenberger Observer, Friction Compensation (Coulomb + Viscous + Stribeck) |
22-
| [Estimators](doc/estimators/README.md) | Linear Regression, Polynomial Fitting, Total Least Squares, Yule-Walker (offline), Recursive Least Squares, Recursive Instrumental Variables, LMS / NLMS Adaptive Filter (online), Consistency Metrics / NEES / NIS, Incremental QR Least Squares (rank-revealing) |
23-
| [Filters](doc/filters/README.md) | Kalman, Extended Kalman, Unscented Kalman, Square-Root Kalman, Alpha-Beta/Alpha-Beta-Gamma, FIR, IIR, Exponential Moving Average, Moving Average, Complementary, Median Filter, CIC (Cascaded Integrator-Comb), Notch/Comb Filter, Savitzky-Golay Filter, Biquad/Second-Order-Section Cascade, IIR Filter Design (Butterworth/Chebyshev-I + Bilinear Transform), Madgwick/Mahony AHRS |
24-
| [Optimization](doc/optimization/README.md) | Gradient Descent, SGD / Adam Step Optimisers |
25-
| [Regularization](doc/regularization/README.md) | L1 (Lasso), L2 (Ridge) |
26-
| [Math](doc/math/README.md) | CORDIC, Quaternion, MatrixNorms, Step Response Metrics, MatrixExponential, Angle Utilities, Tridiagonal (Thomas) Solver, Cubic Spline Interpolation, SE(3) Transform (Twists, Wrenches, Exp/Log) |
27-
| [Motion Profiles](doc/motion_profiles/README.md) | Polynomial (Cubic/Quintic) Point-to-Point Profile, Trapezoidal (LSPB) Profile, S-Curve (Jerk-Limited) Profile |
17+
| Category | Description |
18+
|--------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
19+
| [Analysis](doc/analysis/README.md) | FFT, Real-Input FFT (RFFT), Power Spectral Density, DCT, Discrete Wavelet Transform (Haar/Daubechies), Window Functions, Signal Detectors, Convolution & Correlation, Goertzel Algorithm, Decibels, Hilbert Transform / Analytic Signal, Mel Filterbank / MFCC |
20+
| [Control Analysis](doc/control_analysis/README.md) | Frequency Response, Root Locus, Controllability/Observability Matrices & Gramians, Continuous-to-Discrete, Transfer Function ↔ State Space |
21+
| [Controllers](doc/controllers/README.md) | Bang-Bang/Hysteresis, Deadbeat Control, PID, LQR, LQI (Integral/Servo State Feedback), MPC, Saturation, Rate Limiter, Slew-Limited Saturation, Feedforward/2-DOF, Gain-Scheduled Controller, Lead-Lag Compensator, Luenberger Observer, Friction Compensation (Coulomb + Viscous + Stribeck) |
22+
| [Estimators](doc/estimators/README.md) | Linear Regression, Polynomial Fitting, Total Least Squares, Yule-Walker (offline), Recursive Least Squares, Recursive Instrumental Variables, LMS / NLMS Adaptive Filter (online), Consistency Metrics / NEES / NIS, Incremental QR Least Squares (rank-revealing) |
23+
| [Filters](doc/filters/README.md) | Kalman, Extended Kalman, Unscented Kalman, Square-Root Kalman, Alpha-Beta/Alpha-Beta-Gamma, FIR, IIR, Exponential Moving Average, Moving Average, Complementary, Median Filter, CIC (Cascaded Integrator-Comb), Notch/Comb Filter, Savitzky-Golay Filter, Biquad/Second-Order-Section Cascade, IIR Filter Design (Butterworth/Chebyshev-I + Bilinear Transform), Madgwick/Mahony AHRS |
24+
| [Optimization](doc/optimization/README.md) | Gradient Descent, SGD / Adam Step Optimisers |
25+
| [Regularization](doc/regularization/README.md) | L1 (Lasso), L2 (Ridge) |
26+
| [Math](doc/math/README.md) | CORDIC, Quaternion, MatrixNorms, Step Response Metrics, MatrixExponential, Angle Utilities, Tridiagonal (Thomas) Solver, Cubic Spline Interpolation, SE(3) Transform (Twists, Wrenches, Exp/Log) |
27+
| [Motion Profiles](doc/motion_profiles/README.md) | Polynomial (Cubic/Quintic) Point-to-Point Profile, Trapezoidal (LSPB) Profile, S-Curve (Jerk-Limited) Profile |
2828
| [Solvers](doc/solvers/README.md) | Gaussian Elimination, Levinson-Durbin, Durand-Kerner, Cholesky, DARE, Runge-Kutta ODE Integrators (RK4 + Dormand-Prince), Spectral Radius & Discrete Stability Margin, QR Decomposition (Householder / Givens), LU Decomposition with Partial Pivoting, Singular Value Decomposition (Golub-Kahan), Symplectic Integrators (Semi-Implicit Euler, Velocity Verlet), Damped Pseudo-Inverse + Null-Space Projector |
29-
| [Nonlinear Control](doc/nonlinear_control/README.md) | Feedback Linearization, Backstepping Control, Model Reference Adaptive Control (MRAC) |
30-
| [Robust Control](doc/robust_control/README.md) | Active Disturbance Rejection Control (ADRC + ESO), Sliding Mode Control (SMC), Disturbance Observer (DOB), H∞ State-Feedback Control |
31-
| [Performance Optimization](doc/performance-optimization/README.md) | Compiler optimizations |
29+
| [Nonlinear Control](doc/nonlinear_control/README.md) | Feedback Linearization, Backstepping Control, Model Reference Adaptive Control (MRAC) |
30+
| [Robust Control](doc/robust_control/README.md) | Active Disturbance Rejection Control (ADRC + ESO), Sliding Mode Control (SMC), Disturbance Observer (DOB), H∞ State-Feedback Control |
31+
| [Performance Optimization](doc/performance-optimization/README.md) | Compiler optimizations |
3232

3333
Each category page lists its algorithms with a brief description and links to the detailed documentation.
3434

‎ROADMAP.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ Difficulty legend:
2424

2525
## Master list (by priority)
2626

27-
| # | Component | Target module | Difficulty |
28-
|----|------------------------------------------------------|-------------------------|------------|
29-
| 64 | Levenberg–Marquardt (retraction, pluggable damping) | `optimization` | ★★★☆☆ |
30-
| 65 | Dense convex QP (Goldfarb–Idnani dual active set) | `solvers` | ★★★★☆ |
27+
| # | Component | Target module | Difficulty |
28+
|----|-----------------------------------------------------|----------------|------------|
29+
| 64 | Levenberg–Marquardt (retraction, pluggable damping) | `optimization` | ★★★☆☆ |
30+
| 65 | Dense convex QP (Goldfarb–Idnani dual active set) | `solvers` | ★★★★☆ |
3131

3232
Items 53–65 are the generic building blocks of robotics-toolbox-cpp's roadmap (referenced there as
3333
NT53–NT65); each also serves non-robotics consumers (motor control, navigation, calibration). All are

‎doc/estimators/README.md‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ Statistical estimation algorithms for fitting models to observed data and making
44

55
## Offline Estimators (Batch)
66

7-
| Algorithm | Description |
8-
|--------------------------------------------------------|---------------------------------------------------------------------------|
9-
| [Linear Regression](LinearRegression.md) | Ordinary least-squares regression using the normal equation |
10-
| [Polynomial Fitting](PolynomialFitting.md) | Degree-d polynomial fit via Vandermonde normal equations |
11-
| [Total Least Squares](TotalLeastSquares.md) | Errors-in-variables fit (noisy regressors) via the SVD of `[A | b]` |
12-
| [Yule-Walker](YuleWalker.md) | Autoregressive model parameter estimation via the Yule-Walker equations |
13-
| [Expectation-Maximization](ExpectationMaximization.md) | EM algorithm for Kalman filter parameter identification (Shumway-Stoffer) |
7+
| Algorithm | Description |
8+
|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
9+
| [Linear Regression](LinearRegression.md) | Ordinary least-squares regression using the normal equation |
10+
| [Polynomial Fitting](PolynomialFitting.md) | Degree-d polynomial fit via Vandermonde normal equations |
11+
| [Total Least Squares](TotalLeastSquares.md) | Errors-in-variables fit (noisy regressors) via the SVD of `[A | b]` |
12+
| [Yule-Walker](YuleWalker.md) | Autoregressive model parameter estimation via the Yule-Walker equations |
13+
| [Expectation-Maximization](ExpectationMaximization.md) | EM algorithm for Kalman filter parameter identification (Shumway-Stoffer) |
1414
| [Incremental QR Least Squares](IncrementalQrLeastSquares.md) | Streaming Givens QR in fixed memory with a rank-revealing SVD solve (minimum-norm, identifiable combinations) |
1515

1616
## Online Estimators (Streaming)

‎doc/math/CubicSpline.md‎

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ Each row couples a knot to its two neighbours only, so the system is tridiagonal
2626

2727
### End conditions
2828

29-
| Condition | First row | Last row |
30-
|-----------|-----------|----------|
29+
| Condition | First row | Last row |
30+
|-------------------------------------------------|--------------------------------------------|----------------------------------------------------------------|
3131
| **Clamped** (end slopes $\sigma_0$, $\sigma_1$) | $2h_0 M_0 + h_0 M_1 = 6\,(s_0 - \sigma_0)$ | $h_{K-2} M_{K-2} + 2h_{K-2} M_{K-1} = 6\,(\sigma_1 - s_{K-2})$ |
32-
| **Natural** | $M_0 = 0$ | $M_{K-1} = 0$ |
32+
| **Natural** | $M_0 = 0$ | $M_{K-1} = 0$ |
3333

3434
Clamping fixes the end slopes and leaves the end second derivatives free; natural ends do the reverse. Default slopes are zero.
3535

@@ -47,11 +47,11 @@ An abscissa exactly on an interior knot selects the interval starting there; the
4747

4848
## Complexity Analysis
4949

50-
| Operation | Time | Space | Notes |
51-
|-----------|------|-------|-------|
52-
| Factorization | $O(K)$ | three bands | Once per fit, shared by all channels |
53-
| Fit | $O(D\,K)$ | $K_{\max}(2 + 2D)$ scalars | $D$ channels, each one right-hand side build and one solve of $O(K)$; no iteration |
54-
| Evaluate | $O(\log K + D)$ | $O(1)$ | Binary search, then three Horner polynomials per channel |
50+
| Operation | Time | Space | Notes |
51+
|---------------|-----------------|----------------------------|------------------------------------------------------------------------------------|
52+
| Factorization | $O(K)$ | three bands | Once per fit, shared by all channels |
53+
| Fit | $O(D\,K)$ | $K_{\max}(2 + 2D)$ scalars | $D$ channels, each one right-hand side build and one solve of $O(K)$; no iteration |
54+
| Evaluate | $O(\log K + D)$ | $O(1)$ | Binary search, then three Horner polynomials per channel |
5555

5656
Storage holds the knots, their reciprocal spans, the values and the second derivatives: $K_{\max}(2 + 2D)$ scalars, where $K_{\max}$ is the compile-time capacity, plus the three bands of the solver. All of it is bounded and on the stack or inside the object; no heap.
5757

@@ -62,11 +62,11 @@ Knots $(0, 1, 2)$, values $(0, 1, 0)$, so $h_0 = h_1 = 1$ and $s_0 = 1$, $s_1 =
6262
**Clamped, zero end slopes.** The system is
6363
$$\begin{pmatrix} 2 & 1 & 0 \\ 1 & 4 & 1 \\ 0 & 1 & 2 \end{pmatrix} M = \begin{pmatrix} 6 \\ -12 \\ 6 \end{pmatrix}$$
6464

65-
| $k$ | Pivot $p_k$ | $c'_k$ | Forward $y_k$ | Back $M_k$ |
66-
|-----|-------------|--------|---------------|------------|
67-
| 0 | $2$ | $1/2$ | $3$ | $3 + 3 = 6$ |
68-
| 1 | $4 - 1/2 = 7/2$ | $2/7$ | $-30/7$ | $-30/7 - 12/7 = -6$ |
69-
| 2 | $2 - 2/7 = 12/7$ | unused | $6$ | $6$ |
65+
| $k$ | Pivot $p_k$ | $c'_k$ | Forward $y_k$ | Back $M_k$ |
66+
|-----|------------------|--------|---------------|---------------------|
67+
| 0 | $2$ | $1/2$ | $3$ | $3 + 3 = 6$ |
68+
| 1 | $4 - 1/2 = 7/2$ | $2/7$ | $-30/7$ | $-30/7 - 12/7 = -6$ |
69+
| 2 | $2 - 2/7 = 12/7$ | unused | $6$ | $6$ |
7070

7171
So $M = (6, -6, 6)$. Interval 0 has $\beta_0 = 1 - (12 - 6)/6 = 0$ and $d_0 = -2$, giving $y(\tau) = 3\tau^2 - 2\tau^3$. Hence $y(0.5) = 0.75 - 0.25 = 0.5$, $y'(0.5) = 3 - 1.5 = 1.5$ and $y''(0.5) = 0$. The curve leaves and enters every knot flat, like a smooth step.
7272

@@ -102,11 +102,11 @@ Random fits are checked for interpolation of every knot, for continuity of first
102102

103103
## Connections to Other Algorithms
104104

105-
| Algorithm | Relationship |
106-
|-----------|--------------|
107-
| [Tridiagonal Solver](TridiagonalSolver.md) | Solves the second-derivative system; its factorization is reused across channels |
105+
| Algorithm | Relationship |
106+
|---------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|
107+
| [Tridiagonal Solver](TridiagonalSolver.md) | Solves the second-derivative system; its factorization is reused across channels |
108108
| [Polynomial Profile](../motion_profiles/PolynomialProfile.md) | The two-knot clamped case is the same cubic Hermite polynomial; the spline generalizes it to many knots with $C^2$ joins |
109-
| Polynomial fitting | Least-squares fit instead of interpolation |
109+
| Polynomial fitting | Least-squares fit instead of interpolation |
110110

111111
## References & Further Reading
112112

0 commit comments

Comments
 (0)