Skip to content

Commit 3f9b2c4

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 f9f509c commit 3f9b2c4

6 files changed

Lines changed: 80 additions & 80 deletions

File tree

‎README.md‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ Refer to the documentation to quickly integrate and utilize the library's signal
2121
| [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) |
2222
| [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-
| [Motion Profiles](doc/motion_profiles/README.md) | Polynomial (Cubic/Quintic) Point-to-Point Profile, Trapezoidal (LSPB) Profile, S-Curve (Jerk-Limited) Profile |
28-
| [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) |
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 |
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+
| [Motion Profiles](doc/motion_profiles/README.md) | Polynomial (Cubic/Quintic) Point-to-Point Profile, Trapezoidal (LSPB) Profile, S-Curve (Jerk-Limited) Profile |
28+
| [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) |
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: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ Difficulty legend:
2424

2525
## Master list (by priority)
2626

27-
| # | Component | Target module | Difficulty |
28-
|----|------------------------------------------------------|-------------------------|------------|
29-
| 53 | SE(3) transform, twists, wrenches, adjoint, exp/log | `math` | ★★☆☆☆ |
30-
| 61 | Cubic spline interpolation (vector-valued) | `math` | ★★☆☆☆ |
31-
| 62 | Damped pseudo-inverse + null-space projector | `solvers` | ★★☆☆☆ |
32-
| 63 | Incremental QR least squares (rank-revealing) | `estimators/offline` | ★★★☆☆ |
33-
| 64 | Levenberg–Marquardt (retraction, pluggable damping) | `optimization` | ★★★☆☆ |
34-
| 65 | Dense convex QP (Goldfarb–Idnani dual active set) | `solvers` | ★★★★☆ |
27+
| # | Component | Target module | Difficulty |
28+
|----|-----------------------------------------------------|----------------------|------------|
29+
| 53 | SE(3) transform, twists, wrenches, adjoint, exp/log | `math` | ★★☆☆☆ |
30+
| 61 | Cubic spline interpolation (vector-valued) | `math` | ★★☆☆☆ |
31+
| 62 | Damped pseudo-inverse + null-space projector | `solvers` | ★★☆☆☆ |
32+
| 63 | Incremental QR least squares (rank-revealing) | `estimators/offline` | ★★★☆☆ |
33+
| 64 | Levenberg–Marquardt (retraction, pluggable damping) | `optimization` | ★★★☆☆ |
34+
| 65 | Dense convex QP (Goldfarb–Idnani dual active set) | `solvers` | ★★★★☆ |
3535

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

‎doc/motion_profiles/PolynomialProfile.md‎

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,24 +50,24 @@ With zero end velocities (and accelerations, for the quintic) the cubic peaks at
5050

5151
## Complexity Analysis
5252

53-
| Operation | Time | Space | Notes |
54-
|-----------|------|-------|-------|
55-
| Coefficient solve | $O(1)$ | $O(1)$ | Closed-form expressions, once at construction or reset |
56-
| Sample | $O(\text{degree})$ | $O(1)$ | Four Horner evaluations, at most 14 multiply-adds; no state change, so deterministic |
57-
| Stored state | n/a | $O(1)$ | Six coefficients, the duration and the degree; stack only, no heap |
53+
| Operation | Time | Space | Notes |
54+
|-------------------|--------------------|--------|--------------------------------------------------------------------------------------|
55+
| Coefficient solve | $O(1)$ | $O(1)$ | Closed-form expressions, once at construction or reset |
56+
| Sample | $O(\text{degree})$ | $O(1)$ | Four Horner evaluations, at most 14 multiply-adds; no state change, so deterministic |
57+
| Stored state | n/a | $O(1)$ | Six coefficients, the duration and the degree; stack only, no heap |
5858

5959
## Step-by-Step Walkthrough
6060

6161
Rest-to-rest cubic with $q_0 = 0$, $q_f = 1$, $T = 2$, $v_0 = v_f = 0$, so $\Delta q = 1$ and $a_0 = a_1 = 0$.
6262

63-
| Step | Computation | Result |
64-
|------|-------------|--------|
65-
| $a_2$ | $(3\cdot 1 - 0)/2^2$ | $0.75$ |
66-
| $a_3$ | $(-2\cdot 1 + 0)/2^3$ | $-0.25$ |
67-
| Position | $0.75\,t^2 - 0.25\,t^3 = 3(t/2)^2 - 2(t/2)^3$ | $q(1) = 0.5$, $q(2) = 1$ |
68-
| Velocity | $1.5\,t - 0.75\,t^2$ | $v(1) = 0.75 = 1.5\,\Delta q / T$ (the peak) |
69-
| Acceleration | $1.5 - 1.5\,t$ | $+1.5$ at $t=0$, $-1.5$ at $t=2$ |
70-
| Jerk | $6 a_3$ | $-1.5$, constant |
63+
| Step | Computation | Result |
64+
|--------------|-----------------------------------------------|----------------------------------------------|
65+
| $a_2$ | $(3\cdot 1 - 0)/2^2$ | $0.75$ |
66+
| $a_3$ | $(-2\cdot 1 + 0)/2^3$ | $-0.25$ |
67+
| Position | $0.75\,t^2 - 0.25\,t^3 = 3(t/2)^2 - 2(t/2)^3$ | $q(1) = 0.5$, $q(2) = 1$ |
68+
| Velocity | $1.5\,t - 0.75\,t^2$ | $v(1) = 0.75 = 1.5\,\Delta q / T$ (the peak) |
69+
| Acceleration | $1.5 - 1.5\,t$ | $+1.5$ at $t=0$, $-1.5$ at $t=2$ |
70+
| Jerk | $6 a_3$ | $-1.5$, constant |
7171

7272
The position is the smoothstep of $t/2$, symmetric about the midpoint, where the velocity peaks. The acceleration jumps from $0$ at rest to $1.5$ at the first instant and from $-1.5$ back to $0$ at the end.
7373

@@ -81,10 +81,10 @@ The position is the smoothstep of $t/2$, symmetric about the midpoint, where the
8181

8282
## Variants & Generalizations
8383

84-
| Variant | Key difference |
85-
|---------|----------------|
86-
| **Cubic (this)** | Position and velocity matched; constant jerk; acceleration discontinuous at the ends |
87-
| **Quintic (this)** | Adds acceleration matching; continuous acceleration at about $25\%$ higher peak velocity for rest-to-rest |
84+
| Variant | Key difference |
85+
|-----------------------------|---------------------------------------------------------------------------------------------------------------------------|
86+
| **Cubic (this)** | Position and velocity matched; constant jerk; acceleration discontinuous at the ends |
87+
| **Quintic (this)** | Adds acceleration matching; continuous acceleration at about $25\%$ higher peak velocity for rest-to-rest |
8888
| **Path-parameter time law** | A 0 to 1 instance maps time to a normalized path coordinate; with $v_0 = v_f = 1$, $T = 1$ the cubic collapses to $s = t$ |
8989

9090
## Applications
@@ -95,11 +95,11 @@ The position is the smoothstep of $t/2$, symmetric about the midpoint, where the
9595

9696
## Connections to Other Algorithms
9797

98-
| Algorithm | Relationship |
99-
|-----------|--------------|
98+
| Algorithm | Relationship |
99+
|------------------------------|-----------------------------------------------------------------------------------------------------------------------|
100100
| Trapezoidal velocity profile | Respects velocity and acceleration limits with a free duration; polynomials fix the duration and let the peaks follow |
101-
| S-curve profile | Bounds jerk explicitly under limits; the quintic only smooths the endpoints |
102-
| Cubic spline interpolation | Handles many via points with continuous acceleration; for two knots it reduces to this cubic |
101+
| S-curve profile | Bounds jerk explicitly under limits; the quintic only smooths the endpoints |
102+
| Cubic spline interpolation | Handles many via points with continuous acceleration; for two knots it reduces to this cubic |
103103

104104
## References & Further Reading
105105

‎doc/motion_profiles/README.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ Time laws for point-to-point motion of a single axis: position, velocity, accele
44

55
## Algorithms
66

7-
| Algorithm | Description |
8-
|-------------------------------------------------|---------------------------------------------------------------------------------------------|
9-
| [Polynomial Profile](PolynomialProfile.md) | Cubic (position + velocity) or quintic (+ acceleration) boundary-matched time law over a fixed duration |
10-
| [Trapezoidal Profile](TrapezoidalProfile.md) | Minimum-time trapezoid / triangle velocity profile (LSPB) and a fixed-duration plan for multi-axis synchronization |
11-
| [S-Curve Profile](SCurveProfile.md) | Seven-phase jerk-limited rest-to-rest profile with a closed-form three-step planner — continuous acceleration |
7+
| Algorithm | Description |
8+
|----------------------------------------------|--------------------------------------------------------------------------------------------------------------------|
9+
| [Polynomial Profile](PolynomialProfile.md) | Cubic (position + velocity) or quintic (+ acceleration) boundary-matched time law over a fixed duration |
10+
| [Trapezoidal Profile](TrapezoidalProfile.md) | Minimum-time trapezoid / triangle velocity profile (LSPB) and a fixed-duration plan for multi-axis synchronization |
11+
| [S-Curve Profile](SCurveProfile.md) | Seven-phase jerk-limited rest-to-rest profile with a closed-form three-step planner — continuous acceleration |

‎doc/motion_profiles/SCurveProfile.md‎

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ For a rest-to-rest move the phase durations have a closed form: planning is a ha
1212

1313
A rest-to-rest move of length $h > 0$ is built from seven constant-jerk phases:
1414

15-
| Phase | Jerk | Acceleration | Duration |
16-
|-------|------|--------------|----------|
17-
| 1 | $+j_{\max}$ | ramps $0 \to a_{lim}$ | $T_j$ |
18-
| 2 | $0$ | constant $a_{lim}$ | $T_a - 2T_j$ |
19-
| 3 | $-j_{\max}$ | ramps $a_{lim} \to 0$ | $T_j$ |
20-
| 4 | $0$ | zero, cruise at $v_{lim}$ | $T_v$ |
21-
| 5 | $-j_{\max}$ | ramps $0 \to -a_{lim}$ | $T_j$ |
22-
| 6 | $0$ | constant $-a_{lim}$ | $T_a - 2T_j$ |
23-
| 7 | $+j_{\max}$ | ramps $-a_{lim} \to 0$ | $T_j$ |
15+
| Phase | Jerk | Acceleration | Duration |
16+
|-------|-------------|---------------------------|--------------|
17+
| 1 | $+j_{\max}$ | ramps $0 \to a_{lim}$ | $T_j$ |
18+
| 2 | $0$ | constant $a_{lim}$ | $T_a - 2T_j$ |
19+
| 3 | $-j_{\max}$ | ramps $a_{lim} \to 0$ | $T_j$ |
20+
| 4 | $0$ | zero, cruise at $v_{lim}$ | $T_v$ |
21+
| 5 | $-j_{\max}$ | ramps $0 \to -a_{lim}$ | $T_j$ |
22+
| 6 | $0$ | constant $-a_{lim}$ | $T_a - 2T_j$ |
23+
| 7 | $+j_{\max}$ | ramps $-a_{lim} \to 0$ | $T_j$ |
2424

2525
Phases 1–3 form the acceleration stage of length $T_a$; phases 5–7 mirror it, so the profile is symmetric about its midpoint and the total time is $T = 2T_a + T_v$. Integrating the stage gives the peaks and the distance:
2626

@@ -66,10 +66,10 @@ Replanning with $(v_{\max}/\lambda,\; a_{\max}/\lambda^2,\; j_{\max}/\lambda^3)$
6666

6767
## Complexity Analysis
6868

69-
| Operation | Time | Space | Notes |
70-
|-----------|------|-------|-------|
71-
| Plan | $O(1)$ | $O(1)$ | At most one square root and one cube root, no iteration |
72-
| Sample | $O(1)$ | $O(1)$ | Locate one of seven phases, evaluate one cubic |
69+
| Operation | Time | Space | Notes |
70+
|-----------|--------|--------|---------------------------------------------------------|
71+
| Plan | $O(1)$ | $O(1)$ | At most one square root and one cube root, no iteration |
72+
| Sample | $O(1)$ | $O(1)$ | Locate one of seven phases, evaluate one cubic |
7373

7474
Stored state is a few fixed-size tables of phase boundaries on the stack; no heap is used. Cost is independent of $h$ and of the branch taken.
7575

@@ -82,12 +82,12 @@ Limits $(v_{\max}, a_{\max}, j_{\max}) = (1, 2, 10)$, $h = 0.3$.
8282

8383
Boundary states $(a, v, s)$ of the acceleration stage: at $t = 0.2$, $(2,\, 0.2,\, 0.0133)$; at $t = 0.3$, $(2,\, 0.4,\, 0.0433)$; at $t = 0.5$, $(0,\, 0.6,\, 0.15)$. The mirrored stage ends at $s = 0.3$, at rest. A sample at $t = 0.4$ lies in phase 3 with $\tau = 0.1$: $a = 1$, $v = 0.55$, $s = 0.0917$.
8484

85-
| $(v_{\max}, a_{\max}, j_{\max})$ | $h$ | Branch | $T_j$ | $T_a$ | $T_v$ | $T$ |
86-
|----------------------------------|-----|--------|-------|-------|-------|-----|
87-
| (1, 2, 10) | 5 | 1, plateau | 0.2 | 0.7 | 4.3 | 5.7 |
88-
| (1, 2, 1) | 5 | 1, triangle | 1 | 2 | 3 | 7 |
89-
| (1, 2, 10) | 0.3 | 2 | 0.2 | 0.5 | 0 | 1.0 |
90-
| (1, 2, 10) | 0.02 | 3 | 0.1 | 0.2 | 0 | 0.4 |
85+
| $(v_{\max}, a_{\max}, j_{\max})$ | $h$ | Branch | $T_j$ | $T_a$ | $T_v$ | $T$ |
86+
|----------------------------------|------|-------------|-------|-------|-------|-----|
87+
| (1, 2, 10) | 5 | 1, plateau | 0.2 | 0.7 | 4.3 | 5.7 |
88+
| (1, 2, 1) | 5 | 1, triangle | 1 | 2 | 3 | 7 |
89+
| (1, 2, 10) | 0.3 | 2 | 0.2 | 0.5 | 0 | 1.0 |
90+
| (1, 2, 10) | 0.02 | 3 | 0.1 | 0.2 | 0 | 0.4 |
9191

9292
For $(1, 2, 10)$ the thresholds are $h \ge 0.7$ for step 1 and $h \ge 2a_{\max}^3/j_{\max}^2 = 0.16$ for step 2. The last row has $a_{lim} = 1$ and $v_{lim} = 0.1$.
9393

@@ -110,9 +110,9 @@ For $(1, 2, 10)$ the thresholds are $h \ge 0.7$ for step 1 and $h \ge 2a_{\max}^
110110

111111
## Connections to Other Algorithms
112112

113-
| Algorithm | Relationship |
114-
|-----------|--------------|
115-
| Trapezoidal profile | Jerk-unbounded predecessor; shares the synchronization scheme |
113+
| Algorithm | Relationship |
114+
|----------------------------|-----------------------------------------------------------------|
115+
| Trapezoidal profile | Jerk-unbounded predecessor; shares the synchronization scheme |
116116
| Quintic polynomial profile | Fixed duration and smooth, but limits are not enforced directly |
117117

118118
## References & Further Reading

0 commit comments

Comments
 (0)