This is a personal sandbox. Looking for computational speed, just comparing a few solvers:
- CVX from Stanford
- QuadProg from Matlab
- HPIPM
- Pending qpOASES
Obviously the first two lack speed compared to HPIPM, they are dense solvers. I love C. They all have matlab interfaces tho.
Used this library for splines, I had to create a wrapper around the functions. SISL
I was lazy calculating Jacobians and Hessians, I let Matlab do all the heavy lifting when I should have used AD or something more sofisticated.
Added calculation of Jacobian using casADi.
This book contains everything
Main reference
Good material from italian professor
General overview of optimal control problems
A few solvers evaluated. Some simplifications in calculation of theta
Adaptative RTI-SQP
From lineal to nonlinear MPC
General overview of MPC, indirect/direct methods for transcription
Good explaining the QP. Comparing the QP to Newton-Raphson method
Solver: OpEn. Based on Rust
Vehicle formulation with trajectory error
Safe trajectories
Good second derivatives of e and d_phi. Decent stability analysis
A bit more detail on the models:
Model Predictive Stabilization Control of High-Speed Autonomous Ground Vehicles Considering the Effect of Road Topography
Vehicle Path Tracking LTV-MPC Controller Parameter Selection Considering CPU Computational Load
Actual weight values are given here
Model fidelity in MPCs
14 DOF vehicle
Comprehensive Phd thesis with 14-dof vehicle model. Some interesting thoughts about MPC in AV
Roborace
Mayne seems to be the reference
More from Mayne
Good definition of Lyapunov stability
Good explanation of terminal cost and constraints to ensure stability/feasibility (sadly it only works with continious systems rather than discrete ones)
More stabililty analysis from a vehicle dynamics point of view
Two proposal: 1) Non-linear MPC (solving non-linear optimization problem at each time step rather than horizon) and 2) LTV MPC
Explicit MPC
Switching error estimation
Interesting but probably not within the scope of this research, decentralised systems