Skip to content

Commit c181cd1

Browse files
docs(roadmap): add items 66–73 for robotics-toolbox-cpp's new families (#354)
robotics-toolbox-cpp's roadmap is growing beyond manipulators (wheeled, aerial, legged, marine, localization, calibration). The generic pieces those families need are added here as master-list entries, without specs yet: - 66 SE(2) transform and 67 Kabsch/Umeyama alignment (Tier 2) - 68 Lie-group Jacobians and ⊕/⊖, 69 control allocation and 70 particle filter (Tier 3) - 71 error-state EKF on Lie groups and 72 minimum-derivative piecewise polynomials (Tier 4) - 73 online jerk-limited trajectory generation from an arbitrary state (new Tier 5) Claude-Session: https://claude.ai/code/session_01Mmp77ieEy16GxJL8KsLsVx Co-authored-by: Claude <noreply@anthropic.com>
1 parent adfc10d commit c181cd1

1 file changed

Lines changed: 104 additions & 19 deletions

File tree

‎ROADMAP.md‎

Lines changed: 104 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4756
Items 48–52 are the **evaluation & metrics primitives** — reusable quantities the per-family
4857
unit-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

Comments
 (0)