@@ -24,25 +24,34 @@ Difficulty legend:
2424
2525## Master list (by priority)
2626
27- | # | Component | Target module | Difficulty |
28- | ----| ------------------------------------------------------| -------------------------| ------------|
29- | 54 | Angle utilities (wrap, shortest difference, unwrap) | ` math ` | ★☆☆☆☆ |
30- | 55 | Polynomial (cubic/quintic) point-to-point profile | ` motion_profiles ` (new) | ★☆☆☆☆ |
31- | 56 | Trapezoidal (LSPB) profile + duration sync | ` motion_profiles ` (new) | ★☆☆☆☆ |
32- | 57 | Friction compensation (Coulomb + viscous + Stribeck) | ` controllers ` | ★☆☆☆☆ |
33- | 58 | Symplectic integrators (semi-implicit Euler, Verlet) | ` solvers ` | ★☆☆☆☆ |
34- | 59 | Tridiagonal (Thomas) solver | ` math ` | ★☆☆☆☆ |
35- | 53 | SE(3) transform, twists, wrenches, adjoint, exp/log | ` math ` | ★★☆☆☆ |
36- | 60 | S-curve (jerk-limited) profile | ` motion_profiles ` (new) | ★★☆☆☆ |
37- | 61 | Cubic spline interpolation (vector-valued) | ` math ` | ★★☆☆☆ |
38- | 62 | Damped pseudo-inverse + null-space projector | ` solvers ` | ★★☆☆☆ |
39- | 63 | Incremental QR least squares (rank-revealing) | ` estimators/offline ` | ★★★☆☆ |
40- | 64 | Levenberg–Marquardt (retraction, pluggable damping) | ` optimization ` | ★★★☆☆ |
41- | 65 | Dense convex QP (Goldfarb–Idnani dual active set) | ` solvers ` | ★★★★☆ |
42-
43- Items 53–65 are the generic building blocks of robotics-toolbox-cpp's roadmap (referenced there as
44- NT53–NT65); each also serves non-robotics consumers (motor control, navigation, calibration). All are
45- * (float-first)* .
27+ | # | Component | Target module | Difficulty |
28+ | ----| -------------------------------------------------------| -------------------------| ------------|
29+ | 54 | Angle utilities (wrap, shortest difference, unwrap) | ` math ` | ★☆☆☆☆ |
30+ | 55 | Polynomial (cubic/quintic) point-to-point profile | ` motion_profiles ` (new) | ★☆☆☆☆ |
31+ | 56 | Trapezoidal (LSPB) profile + duration sync | ` motion_profiles ` (new) | ★☆☆☆☆ |
32+ | 57 | Friction compensation (Coulomb + viscous + Stribeck) | ` controllers ` | ★☆☆☆☆ |
33+ | 58 | Symplectic integrators (semi-implicit Euler, Verlet) | ` solvers ` | ★☆☆☆☆ |
34+ | 59 | Tridiagonal (Thomas) solver | ` math ` | ★☆☆☆☆ |
35+ | 53 | SE(3) transform, twists, wrenches, adjoint, exp/log | ` math ` | ★★☆☆☆ |
36+ | 60 | S-curve (jerk-limited) profile | ` motion_profiles ` (new) | ★★☆☆☆ |
37+ | 61 | Cubic spline interpolation (vector-valued) | ` math ` | ★★☆☆☆ |
38+ | 62 | Damped pseudo-inverse + null-space projector | ` solvers ` | ★★☆☆☆ |
39+ | 66 | SE(2) transform, twists, exp/log, pose error | ` math ` | ★★☆☆☆ |
40+ | 67 | Kabsch / Umeyama point-set alignment | ` solvers ` | ★★☆☆☆ |
41+ | 63 | Incremental QR least squares (rank-revealing) | ` estimators/offline ` | ★★★☆☆ |
42+ | 64 | Levenberg–Marquardt (retraction, pluggable damping) | ` optimization ` | ★★★☆☆ |
43+ | 68 | Lie-group Jacobians and ⊕/⊖ for SO(3), SE(3), SE(2) | ` math ` | ★★★☆☆ |
44+ | 69 | Control allocation (redistributed pseudo-inverse, QP) | ` controllers ` | ★★★☆☆ |
45+ | 70 | Particle filter (bounded, systematic resampling) | ` filters/active ` | ★★★☆☆ |
46+ | 65 | Dense convex QP (Goldfarb–Idnani dual active set) | ` solvers ` | ★★★★☆ |
47+ | 71 | Error-state (multiplicative) EKF on Lie groups | ` filters/active ` | ★★★★☆ |
48+ | 72 | Minimum-derivative (min-snap) piecewise polynomials | ` motion_profiles ` (new) | ★★★★☆ |
49+ | 73 | Online jerk-limited trajectory from arbitrary state | ` motion_profiles ` (new) | ★★★★★ |
50+
51+ Items 53–73 are the generic building blocks of robotics-toolbox-cpp's roadmap (referenced there as
52+ NT53–NT73); each also serves non-robotics consumers (motor control, navigation, calibration). All are
53+ * (float-first)* . Items 66–73 serve its mobile, aerial, legged, marine and localization families and
54+ have no spec yet.
4655
4756Items 48–52 are the ** evaluation & metrics primitives** — reusable quantities the per-family
4857unit-test reference [ ` TESTING.md ` ] ( TESTING.md ) depends on but which
@@ -142,6 +151,23 @@ the library does not yet expose. Detailed below under
142151- ** Reuses:** ` SingularValueDecomposition ` (tall and wide).
143152- ** Spec:** [ roadmap/solvers/DampedPseudoInverse] ( roadmap/solvers/DampedPseudoInverse/implementation.md ) .
144153
154+ ### 66. SE(2) transform
155+ - ** What:** Planar rigid transform ` (R(θ), p) ` with composition, closed-form inverse, adjoint, exp/log of
156+ planar twists ` (vx, vy, ω) ` and a pose error, ordered linear part first like item 53.
157+ - ** Embedded value:** The pose type of every ground vehicle and planar mechanism — odometry, path
158+ tracking, scan matching — at a fraction of SE(3)'s cost.
159+ - ** Algorithm / paper:** J. Solà, J. Deray, D. Atchuthan, "A micro Lie theory for state estimation in
160+ robotics" (2018), Appendix C.
161+ - ** Reuses:** Item 54 (angle wrapping).
162+
163+ ### 67. Kabsch / Umeyama alignment
164+ - ** What:** Least-squares rotation, translation and optional scale between two corresponding point sets
165+ (orthogonal Procrustes), with the reflection fix, in 2-D and 3-D.
166+ - ** Embedded value:** The inner step of ICP scan matching, hand-eye and frame calibration, motion-capture
167+ and fiducial registration.
168+ - ** Algorithm / paper:** W. Kabsch, * Acta Cryst.* A32, 1976; S. Umeyama, * IEEE T-PAMI* , 13(4), 1991.
169+ - ** Reuses:** ` SingularValueDecomposition ` .
170+
145171---
146172
147173## Tier 3 — Moderate ★★★☆☆
@@ -164,6 +190,32 @@ the library does not yet expose. Detailed below under
164190- ** Reuses:** ` LuDecomposition ` .
165191- ** Spec:** [ roadmap/optimization/LevenbergMarquardt] ( roadmap/optimization/LevenbergMarquardt/implementation.md ) .
166192
193+ ### 68. Lie-group Jacobians and ⊕/⊖
194+ - ** What:** Left and right Jacobians (and inverses) of SO(3), SE(3) and SE(2), the ` ⊕ ` /` ⊖ ` operators
195+ on the tangent space, and adjoint-based covariance transport between frames.
196+ - ** Embedded value:** What every on-manifold estimator and optimizer needs to linearize correctly —
197+ error-state Kalman filters, IMU preintegration, pose-graph and calibration solvers.
198+ - ** Algorithm / paper:** J. Solà et al. (2018); T. Barfoot, * State Estimation for Robotics* (2017), Ch. 7.
199+ - ** Reuses:** Items 53 and 66.
200+
201+ ### 69. Control allocation
202+ - ** What:** Map a desired generalized force (thrust/torque, wrench) to ` m ` actuator commands with limits:
203+ weighted pseudo-inverse with iterative redistribution of saturated actuators, and an exact QP variant.
204+ - ** Embedded value:** Multirotor and hexacopter mixers, marine thruster allocation, over-actuated
205+ vehicles and redundant drives — graceful saturation instead of clipping each motor.
206+ - ** Algorithm / paper:** T. A. Johansen, T. I. Fossen, "Control allocation — A survey," * Automatica* ,
207+ 49(5), 2013; J. Bordignon, * Constrained control allocation* (PhD thesis, Virginia Tech, 1996).
208+ - ** Reuses:** Items 62 and 65.
209+
210+ ### 70. Particle filter
211+ - ** What:** Sequential importance resampling with a compile-time particle count, systematic resampling
212+ triggered by the effective sample size, and weighted-mean / MAP estimates.
213+ - ** Embedded value:** Multimodal, non-Gaussian estimation — Monte Carlo localization, terrain-aided
214+ navigation, fault detection — on fixed memory.
215+ - ** Algorithm / paper:** N. Gordon, D. Salmond, A. Smith, * IEE Proc. F* , 140(2), 1993; A. Doucet,
216+ A. Johansen, "A tutorial on particle filtering and smoothing" (2009).
217+ - ** Reuses:** A caller-injected deterministic PRNG; ` math::Statistics ` .
218+
167219---
168220
169221## Tier 4 — Advanced ★★★★☆
@@ -178,6 +230,39 @@ the library does not yet expose. Detailed below under
178230- ** Reuses:** ` CholeskyDecomposition ` , ` TriangularSolve ` , ` GivensRotation ` .
179231- ** Spec:** [ roadmap/solvers/ActiveSetQp] ( roadmap/solvers/ActiveSetQp/implementation.md ) .
180232
233+ ### 71. Error-state Kalman filter on Lie groups
234+ - ** What:** Multiplicative EKF whose nominal state lives on a group (quaternion/SO(3), SE(3)) and whose
235+ error state lives in the tangent space; predict, update, reset with the right Jacobians.
236+ - ** Embedded value:** The standard INS/AHRS and legged/aerial state estimator — no quaternion
237+ normalization hacks, covariance consistent with the manifold.
238+ - ** Algorithm / paper:** J. Solà, "Quaternion kinematics for the error-state Kalman filter," arXiv:1711.02508
239+ (2017); F. L. Markley, * J. Guidance, Control, and Dynamics* , 26(2), 2003.
240+ - ** Reuses:** Items 53 and 68, ` KalmanFilterBase ` .
241+
242+ ### 72. Minimum-derivative piecewise polynomials
243+ - ** What:** Piecewise polynomials through timed waypoints minimizing the integral of a chosen derivative
244+ squared (jerk, snap), per axis, with optional corridor constraints; closed-form KKT solve without
245+ inequalities, QP with them.
246+ - ** Embedded value:** Smooth references for multirotors (minimum snap), manipulators and CNC paths with
247+ continuity up to the third or fourth derivative.
248+ - ** Algorithm / paper:** D. Mellinger, V. Kumar, * ICRA* 2011; C. Richter, A. Bry, N. Roy, * ISRR* 2013.
249+ - ** Reuses:** Item 65, ` CholeskyDecomposition ` .
250+
251+ ---
252+
253+ ## Tier 5 — Hard / research-grade ★★★★★
254+
255+ ### 73. Online jerk-limited trajectory from arbitrary state
256+ - ** What:** Time-optimal single-axis trajectory from any current state (position, velocity, acceleration)
257+ to any target state under velocity, acceleration and jerk limits, plus multi-axis time
258+ synchronization — recomputable every control cycle.
259+ - ** Embedded value:** Reactive motion (target changes mid-move, emergency re-plans) for robot joints and
260+ servo axes without the rest-to-rest restriction of item 60.
261+ - ** Algorithm / paper:** T. Kröger, F. Wahl, * IEEE T-RO* , 26(1), 2010; L. Berscheid, T. Kröger,
262+ "Jerk-limited real-time trajectory generation with arbitrary target states," * RSS* 2021.
263+ - ** Reuses:** Items 55, 56 and 60 (types, synchronization scheme), ` DurandKerner ` for the polynomial
264+ roots of the timing profiles.
265+
181266---
182267
183268## Evaluation & metrics primitives
0 commit comments