|
akreon-control
Optimal and robust control and state estimation in C++26.
|
Akreon Control owns control and estimation models, formulations, and execution. This guide describes their source organization and data flow. For supported scope and future work, see the support roadmap.
Paths below are relative to include/akreon/control/.
| Path | Responsibility |
|---|---|
control_traits.hpp | Time domains, model concepts, state/input/output types, and port roles |
model/state_space.hpp | Continuous/discrete state-space representations |
model/discretization.hpp | Zero-order-hold continuous-to-discrete conversion |
model/plant_model.hpp | State-space models with typed input and output port layouts |
feedback/ | State-feedback synthesis, H2/H-infinity and polytopic formulations, and gain recovery |
estimation/ | Luenberger, H2/H-infinity, and polytopic observer formulations |
control.hpp | Public umbrella header |
bindings/ (repository root) | Optional C ABI and Python adapters |
Public control APIs use control. Numerical types come from linalg, while optimization expressions, canonicalization, and solver results come from Convex.
StateSpace. Dimensions and scalar types are part of the matrix types.PlantModel when synthesis requires role-tagged input/output ports, such as control, measurement, disturbance, or performance channels.Polytopic formulations describe synthesis across a collection of plant models. They share the modeling and solver layers rather than implementing a separate optimization stack. Supported families and their assumptions are documented in the individual feedback and estimation headers.
Akreon Linalg owns matrices, spaces, factorizations, and generic numerical kernels. Akreon Convex owns DCP composition, cones, canonicalization, and solver iteration. Control owns plant semantics, optimal and robust control formulations, estimation, and gain recovery. Future predictive-control, horizon-estimation, and barrier formulations belong here; their implementation status lives in the roadmap. There is no dependency on akreon-dynamics. Simulation results can be used to construct model matrices without introducing a library dependency in either direction.
Use Doxygen's namespace, class, and file indexes for model contracts, formulation assumptions, and gain-recovery algorithms documented in the headers.
Optional bindings adapt runtime arrays to the compile-time C++ APIs. The binding contract is maintained in bindings/README.md; build and notebook usage is in the repository README. The numerical algorithms stay in the C++ libraries.