Brunovsky Riccati Recursion for Linear Model Predictive Control
Shaohui Yang, Toshiyuki Ohtsuka, Colin N. Jones
TL;DR
This paper introduces a Brunovsky Riccati Recursion to solve LQ OCPs for LTI systems more efficiently by transforming dynamics into Brunovsky form. The method uses Kalman decomposition to isolate the controllable part, deadbeat feedback to reach Brunovsky structure, and a coordinate transformation to perform Riccati recursion with highly sparse, block-diagonal dynamics. Parallel precomputation of the transformations and data-parallel cost and solution updates yield a reduced overall complexity, potentially approaching O(n_x^3) with sufficient parallelism. Numerical experiments validate significant speedups over classical Riccati recursion for large state dimensions and discuss implementation considerations and future improvements.
Abstract
In almost all algorithms for Model Predictive Control (MPC), the most time-consuming step is to solve some form of Linear Quadratic (LQ) Optimal Control Problem (OCP) repeatedly. The commonly recognized best option for this is a Riccati recursion based solver, which has a time complexity of $\mathcal{O}(N(n_x^3 + n_x^2 n_u + n_x n_u^2 + n_u^3))$. In this paper, we propose a novel \textit{Brunovsky Riccati Recursion} algorithm to solve LQ OCPs for Linear Time Invariant (LTI) systems. The algorithm transforms the system into Brunovsky form, formulates a new LQ cost (and constraints, if any) in Brunovsky coordinates, performs the Riccati recursion there, and converts the solution back. Due to the sparsity (block-diagonality and zero-one pattern per block) of Brunovsky form and the data parallelism introduced in the cost, constraints, and solution transformations, the time complexity of the new method is greatly reduced to $\mathcal{O}(n_x^3 + N(n_x^2 n_u + n_x n_u^2 + n_u^3))$ if $N$ threads/cores are available for parallel computing.
