Customized Interior-Point Methods Solver for Embedded Real-Time Convex Optimization
Jae-Il Jang, Chang-Hun Lee
TL;DR
The paper tackles embedded real-time convex optimization by delivering a customized predictor-corrector primal-dual interior-point solver that directly handles quadratic costs within a homogeneous embedding framework for infeasibility detection. It combines HMCP with Nesterov-Todd scaling and a Mehortra-style search direction to efficiently solve the KKT system, while leveraging offline sparsity analysis and a MATLAB-generated C implementation with static memory allocation. The authors demonstrate through benchmark suites and embedded hardware experiments that their approach outperforms existing IPM and ADMM-based solvers in both speed and reliability, particularly for small-to-medium scale SOCPs common in G&C applications. The contributions include a code-generation tool that automates solver customization for problem families, enabling memory-efficient, dependency-free embedded deployment and reducing user workload for problem updates, with practical performance gains in Mars-landing trajectory optimization and quadcopter MPC. The work significantly advances onboard optimization by delivering a scalable, robust, and hardware-friendly solver tailored to embedded G&C tasks.
Abstract
This paper presents a customized convex optimization solver tailored for embedded real-time optimization, which frequently arise in modern guidance and control (G&C) applications. The solver employs a practically efficient predictor-corrector type primal-dual interior-point method (PDIPM) combined with a homogeneous embedding framework for infeasibility detection. Unlike conventional homogeneous self-dual embedding formulations, the adopted approach can directly handle quadratic cost functions without requiring problem reformulation. To support a systematic workflow, we also develop a code generation tool that analyzes the sparsity pattern of the provided problem family and generates customized solver code using a predefined code template. The generated solver code is written in C with no external dependencies other than the standard library math.h, and it supports complete static allocation of all data. Additionally, it provides parsing information to facilitate the use of the solver API by end users. Benchmark results and numerical experiments on an embedded platform demonstrate that the developed solver outperforms existing solvers in both efficiency and reliability.
