You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**MiniSolver** is a professional-grade, header-only C++17 library for solving Nonlinear Model Predictive Control (NMPC) problems.
11
11
12
-
Engineered specifically for **embedded robotics** and **autonomousdriving**, it combines the flexibility of Python-based symbolic modeling with the raw performance of highly optimized, template-generated C++ code. The default real-time configuration is designed for **Zero Dynamic Memory Allocation (Zero-Malloc)** during the solve phase; profiling and iteration logging are opt-in diagnostics and should stay disabled in hard real-time loops.
12
+
Designed for real-time robotics and autonomous-driving research, it combines the flexibility of Python-based symbolic modeling with the raw performance of highly optimized, template-generated C++ code. The default real-time configuration is designed for **Zero Dynamic Memory Allocation (Zero-Malloc)** during the solve phase; profiling and iteration logging are opt-in diagnostics and should stay disabled in hard real-time loops.
13
13
14
14
---
15
15
@@ -21,7 +21,7 @@ Engineered specifically for **embedded robotics** and **autonomous driving**, it
21
21
***Analytical Derivatives**: Uses SymPy to generate flattened, algebraically simplified C++ code for Jacobians and Hessians at compile-time, including true Gauss-Newton Hessians for explicit least-squares residuals.
22
22
***🔥 Fused Riccati Kernels**: Unlike solvers that use generic matrix libraries, MiniSolver uses Python (SymPy) to symbolically fuse the Riccati backward pass (`Q + A'PA`) into a single, flattened C++ function. This eliminates all loop overhead and explicitly bypasses multiplication by zero, achieving **perfect sparsity exploitation** for small-to-medium systems ($N_x < 20$).
23
23
24
-
### 🛡️ Embedded Safety & Robustness
24
+
### 🛡️ Real-Time Robustness
25
25
***Zero-Malloc Solve Path**: The default solver configuration performs no `new`/`malloc` calls during `solve()`. Keep profiling and iteration logging disabled for hard real-time use.
26
26
***Robust Interior Point Method (IPM)**:
27
27
***Mehrotra Predictor-Corrector**: Drastically reduces iteration counts by utilizing higher-order corrections.
@@ -37,7 +37,11 @@ Engineered specifically for **embedded robotics** and **autonomous driving**, it
37
37
38
38
## 📊 Performance Benchmarks
39
39
40
-
Benchmarks performed on an Intel Core i7 (Single Thread) for a **Kinematic Bicycle Model with Obstacle Avoidance** ($N_x=6, N_u=2, N=50$).
40
+
Historical local benchmark snapshot on an Intel Core i7 (single thread) for a
41
+
**Kinematic Bicycle Model with Obstacle Avoidance** ($N_x=6, N_u=2, N=50$).
42
+
For release claims or solver-to-solver comparisons, use the dated reports in
43
+
the benchmark repository with the exact MiniSolver commit, command line,
44
+
backend, and hardware recorded.
41
45
42
46
| Strategy | Integrator | Line Search | Avg Time | Iterations | Status |
43
47
| :--- | :--- | :--- | :--- | :--- | :--- |
@@ -129,12 +133,19 @@ MiniSolver includes a one-click build script that handles dependency checking, c
129
133
./build.sh
130
134
```
131
135
132
-
## 📦 Embedded Deployment
133
-
134
-
1. Generate your model headers on a PC: `python3 generate_model.py`
135
-
2. Copy the `minisolver/` include folder and your generated headers to your MCU project.
136
-
3. Define `USE_CUSTOM_MATRIX` to remove `Eigen3` dependency.
137
-
4. Compile with `-O3`. **No external libraries required.**
136
+
## 📦 Embedded-Oriented Deployment Notes
137
+
138
+
1. Generate your model headers on a development machine:
139
+
`python3 generate_model.py`.
140
+
2. Copy the `minisolver/` include folder and your generated headers into the
141
+
target project.
142
+
3. Define `USE_CUSTOM_MATRIX` to remove the Eigen dependency when the
143
+
built-in fixed-size matrix backend is appropriate.
144
+
4. Keep profiling, iteration logging, snapshots, and code generation out of
145
+
hard real-time loops.
146
+
5. Validate the target toolchain and runtime profile. MiniSolver is
147
+
embedded-oriented, but it is not yet documented as a freestanding C++ or
0 commit comments