Skip to content

Commit a74c0d2

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 8d312d0 commit a74c0d2

9 files changed

Lines changed: 124 additions & 124 deletions

File tree

‎README.md‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,20 @@ 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 |
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 |
2323
| [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 |
27-
| [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) |
28-
| [Nonlinear Control](doc/nonlinear_control/README.md) | Feedback Linearization, Backstepping Control, Model Reference Adaptive Control (MRAC) |
29-
| [Robust Control](doc/robust_control/README.md) | Active Disturbance Rejection Control (ADRC + ESO), Sliding Mode Control (SMC), Disturbance Observer (DOB), H∞ State-Feedback Control |
30-
| [Performance Optimization](doc/performance-optimization/README.md) | Compiler optimizations |
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 |
27+
| [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) |
28+
| [Nonlinear Control](doc/nonlinear_control/README.md) | Feedback Linearization, Backstepping Control, Model Reference Adaptive Control (MRAC) |
29+
| [Robust Control](doc/robust_control/README.md) | Active Disturbance Rejection Control (ADRC + ESO), Sliding Mode Control (SMC), Disturbance Observer (DOB), H∞ State-Feedback Control |
30+
| [Performance Optimization](doc/performance-optimization/README.md) | Compiler optimizations |
3131

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

‎ROADMAP.md‎

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

2525
## Master list (by priority)
2626

27-
| # | Component | Target module | Difficulty |
28-
|----|------------------------------------------------------|-------------------------|------------|
29-
| 55 | Polynomial (cubic/quintic) point-to-point profile | `motion_profiles` (new) | ★☆☆☆☆ |
30-
| 56 | Trapezoidal (LSPB) profile + duration sync | `motion_profiles` (new) | ★☆☆☆☆ |
31-
| 53 | SE(3) transform, twists, wrenches, adjoint, exp/log | `math` | ★★☆☆☆ |
32-
| 60 | S-curve (jerk-limited) profile | `motion_profiles` (new) | ★★☆☆☆ |
33-
| 61 | Cubic spline interpolation (vector-valued) | `math` | ★★☆☆☆ |
34-
| 62 | Damped pseudo-inverse + null-space projector | `solvers` | ★★☆☆☆ |
35-
| 63 | Incremental QR least squares (rank-revealing) | `estimators/offline` | ★★★☆☆ |
36-
| 64 | Levenberg–Marquardt (retraction, pluggable damping) | `optimization` | ★★★☆☆ |
37-
| 65 | Dense convex QP (Goldfarb–Idnani dual active set) | `solvers` | ★★★★☆ |
27+
| # | Component | Target module | Difficulty |
28+
|----|-----------------------------------------------------|-------------------------|------------|
29+
| 55 | Polynomial (cubic/quintic) point-to-point profile | `motion_profiles` (new) | ★☆☆☆☆ |
30+
| 56 | Trapezoidal (LSPB) profile + duration sync | `motion_profiles` (new) | ★☆☆☆☆ |
31+
| 53 | SE(3) transform, twists, wrenches, adjoint, exp/log | `math` | ★★☆☆☆ |
32+
| 60 | S-curve (jerk-limited) profile | `motion_profiles` (new) | ★★☆☆☆ |
33+
| 61 | Cubic spline interpolation (vector-valued) | `math` | ★★☆☆☆ |
34+
| 62 | Damped pseudo-inverse + null-space projector | `solvers` | ★★☆☆☆ |
35+
| 63 | Incremental QR least squares (rank-revealing) | `estimators/offline` | ★★★☆☆ |
36+
| 64 | Levenberg–Marquardt (retraction, pluggable damping) | `optimization` | ★★★☆☆ |
37+
| 65 | Dense convex QP (Goldfarb–Idnani dual active set) | `solvers` | ★★★★☆ |
3838

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

‎doc/controllers/FrictionCompensation.md‎

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ For fixed $v_s$, $\delta$ and $\varepsilon$, $\tau$ is linear in the force coeff
4545

4646
## Complexity Analysis
4747

48-
| Case | Time | Space | Notes |
49-
|------|------|-------|-------|
48+
| Case | Time | Space | Notes |
49+
|------|--------|--------|--------------------------------------------------------------------------------------------------------------------------------------------|
5050
| All | $O(N)$ | $O(N)$ | $N$ axes; per axis one exponential, one power, one hyperbolic tangent, two divisions and a clamp; $N$ parameter sets stored, no allocation |
5151

5252
Cost is dominated by the three transcendental calls; there is no iteration and no dependence on history, so the latency is constant per sample.
@@ -55,11 +55,11 @@ Cost is dominated by the three transcendental calls; there is no iteration and n
5555

5656
Parameters: $F_c = 0.5$, $F_s = 0.8$, $F_v = 0.1$, $v_s = 0.05$, $\delta = 2$, $\varepsilon = 10^{-3}$, with a non-binding cap $\tau_{max} = 1$.
5757

58-
| $v$ | $(\lvert v\rvert/v_s)^2$ | Level $L$ | $\tanh(v/\varepsilon)$ | $F_v v$ | $\tau$ |
59-
|-----|---------------|-----------|------------------------|---------|--------|
60-
| 1 | 400 | $0.5 + 0.3\,e^{-400} \approx 0.5$ | 1 | 0.1 | 0.6 |
61-
| 0.01 | 0.04 | $0.5 + 0.3\,e^{-0.04} \approx 0.788$ | $\tanh 10 \approx 1$ | 0.001 | 0.789 |
62-
| 0.05 ($=v_s$) | 1 | $0.5 + 0.3/e \approx 0.610$ | $\tanh 50 \approx 1$ | 0.005 | 0.615 |
58+
| $v$ | $(\lvert v\rvert/v_s)^2$ | Level $L$ | $\tanh(v/\varepsilon)$ | $F_v v$ | $\tau$ |
59+
|---------------|--------------------------|--------------------------------------|------------------------|---------|--------|
60+
| 1 | 400 | $0.5 + 0.3\,e^{-400} \approx 0.5$ | 1 | 0.1 | 0.6 |
61+
| 0.01 | 0.04 | $0.5 + 0.3\,e^{-0.04} \approx 0.788$ | $\tanh 10 \approx 1$ | 0.001 | 0.789 |
62+
| 0.05 ($=v_s$) | 1 | $0.5 + 0.3/e \approx 0.610$ | $\tanh 50 \approx 1$ | 0.005 | 0.615 |
6363

6464
At high speed the Stribeck term has vanished and only Coulomb plus viscous drag remain. At $v = 0.01$ the axis is still deep in the Stribeck region, so the level is close to $F_s$. At $v = v_s$ the stiction excess has decayed to a fraction $1/e$ of its initial value. At $v = 0$ the output is exactly zero, and $v = -0.01$ gives $-0.789$ by symmetry.
6565

@@ -75,13 +75,13 @@ At high speed the Stribeck term has vanished and only Coulomb plus viscous drag
7575

7676
## Variants & Generalizations
7777

78-
| Variant | Key Difference |
79-
|---------|----------------|
80-
| **Coulomb + viscous only** | $F_s = F_c$ removes the Stribeck term; the level is constant |
81-
| **Asymmetric friction** | Separate parameters per direction of motion; handles direction-dependent drag |
82-
| **Karnopp model** | Replaces the smooth layer with a velocity dead-zone and a stick state |
83-
| **Dahl / LuGre** | Dynamic models with internal bristle state; capture presliding and hysteresis at the cost of state and a stiffer ODE |
84-
| **Inverse-dynamics term** | Same static model folded into a robot inverse-dynamics computation |
78+
| Variant | Key Difference |
79+
|----------------------------|----------------------------------------------------------------------------------------------------------------------|
80+
| **Coulomb + viscous only** | $F_s = F_c$ removes the Stribeck term; the level is constant |
81+
| **Asymmetric friction** | Separate parameters per direction of motion; handles direction-dependent drag |
82+
| **Karnopp model** | Replaces the smooth layer with a velocity dead-zone and a stick state |
83+
| **Dahl / LuGre** | Dynamic models with internal bristle state; capture presliding and hysteresis at the cost of state and a stiffer ODE |
84+
| **Inverse-dynamics term** | Same static model folded into a robot inverse-dynamics computation |
8585

8686
## Applications
8787

@@ -92,13 +92,13 @@ At high speed the Stribeck term has vanished and only Coulomb plus viscous drag
9292

9393
## Connections to Other Algorithms
9494

95-
| Algorithm | Relationship |
96-
|-----------|--------------|
97-
| [Feedforward / 2-DOF](Feedforward2Dof.md) | Same additive-feedforward structure; friction is a velocity-driven feedforward term |
98-
| [PID Controller](Pid.md) | The feedback loop this term is added to; compensation reduces integrator work and stick-slip hunting |
99-
| [Bang-Bang / Hysteresis](BangBangHysteresis.md) | The $\varepsilon \to 0$ limit is a relay on velocity, with the same chattering mechanism |
100-
| [Saturation / Rate Limiter](SaturationRateLimiter.md) | The output clamp is the same saturation, applied to the compensation term alone |
101-
| [QR Decomposition](../solvers/QrDecomposition.md) | Backbone of the least-squares fit of the linear friction coefficients |
95+
| Algorithm | Relationship |
96+
|-------------------------------------------------------|------------------------------------------------------------------------------------------------------|
97+
| [Feedforward / 2-DOF](Feedforward2Dof.md) | Same additive-feedforward structure; friction is a velocity-driven feedforward term |
98+
| [PID Controller](Pid.md) | The feedback loop this term is added to; compensation reduces integrator work and stick-slip hunting |
99+
| [Bang-Bang / Hysteresis](BangBangHysteresis.md) | The $\varepsilon \to 0$ limit is a relay on velocity, with the same chattering mechanism |
100+
| [Saturation / Rate Limiter](SaturationRateLimiter.md) | The output clamp is the same saturation, applied to the compensation term alone |
101+
| [QR Decomposition](../solvers/QrDecomposition.md) | Backbone of the least-squares fit of the linear friction coefficients |
102102

103103
## References & Further Reading
104104

0 commit comments

Comments
 (0)