Code Generation and Conic Constraints for Model-Predictive Control on Microcontrollers with Conic-TinyMPC

📄 arXiv: 2403.18149v3 📥 PDF

作者: Ishaan Mahajan, Khai Nguyen, Sam Schoedel, Elakhya Nedumaran, Moises Mata, Brian Plancher, Zachary Manchester

分类: cs.RO, eess.SY, math.OC

发布日期: 2024-03-26 (更新: 2026-05-08)

备注: Accepted to ICRA 2026. 4 Figures. 2 Tables. First three authors contributed equally


💡 一句话要点

提出基于Conic-TinyMPC的模型预测控制以解决微控制器上的计算限制问题

🎯 匹配领域: 支柱一:机器人控制 (Robot Control)

关键词: 模型预测控制 锥约束 微控制器 交替方向乘子法 嵌入式系统 代码生成 优化算法

📋 核心要点

  1. 现有的模型预测控制方法在资源有限的微控制器上部署时,面临计算能力不足的问题,尤其是使用锥约束时。
  2. 本文提出了一种基于ADMM的快速求解器,支持二阶锥约束,并实现了从多种编程语言生成C++代码,以提高计算效率。
  3. 实验结果显示,该求解器在微控制器上相较于现有嵌入式求解器在QP和SOCP问题上实现了10.6倍到142.7倍的速度提升。

📝 摘要(中文)

模型预测控制(MPC)是一种先进的控制方法,适用于受限的机器人系统,但在资源有限的硬件上部署仍然面临挑战。尤其是表达能力更强的锥约束,虽然提供了更大的建模能力,但计算需求显著高于线性替代方案。为了解决这一挑战,本文扩展了基于交替方向乘子法(ADMM)的快速、结构利用的缓存求解器,支持二阶锥约束,并实现了从Python、MATLAB和Julia生成C++代码。微控制器基准测试表明,我们的求解器在QP和SOCP问题上提供了高达两个数量级的加速,范围从10.6倍到142.7倍,并使我们能够在内存中适应数量级更大的问题。我们通过仿真和硬件实验验证了求解器的部署性能,包括在27克的Crazyflie四旋翼上进行锥约束的轨迹跟踪。我们的开源代码可在https://tinympc.org获取。

🔬 方法详解

问题定义:本文旨在解决在资源有限的微控制器上部署模型预测控制(MPC)时,计算能力不足的问题。现有方法在处理锥约束时,计算需求显著高于线性约束,导致难以在嵌入式系统中有效实现。

核心思路:论文提出了一种基于交替方向乘子法(ADMM)的求解器,能够快速处理二阶锥约束,并通过缓存机制提高计算效率。此外,支持从Python、MATLAB和Julia生成C++代码,简化了开发流程。

技术框架:整体架构包括求解器的核心算法模块、缓存机制、以及代码生成模块。求解器首先通过ADMM进行优化计算,随后利用缓存存储中间结果,最后将算法实现转换为C++代码以便在微控制器上运行。

关键创新:本文的主要创新在于将ADMM方法扩展到支持二阶锥约束,并通过高效的缓存机制显著提高了求解速度。这一方法与传统线性约束求解器相比,能够处理更复杂的约束条件。

关键设计:在求解器设计中,关键参数包括ADMM的步长选择和缓存策略的实现。此外,损失函数设计考虑了锥约束的特性,以确保求解的准确性和稳定性。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,提出的求解器在微控制器上相较于现有的嵌入式求解器,在QP和SOCP问题上实现了10.6倍到142.7倍的速度提升,显著提高了处理能力,并能够适应更大规模的问题。

🎯 应用场景

该研究的潜在应用领域包括无人机控制、机器人导航和自动化系统等,尤其是在资源受限的嵌入式环境中。通过提高模型预测控制的计算效率,能够实现更复杂的控制任务,推动智能系统的实际应用和发展。

📄 摘要(原文)

Model-predictive control (MPC) is a state-of-the-art control method for constrained robotic systems, yet deployment on resource-limited hardware remains difficult. This challenge is magnified by expressive conic constraints, which offer greater modeling power but require significantly more computation than linear alternatives. To address this challenge, we extend recent work developing fast, structure-exploiting, cached solvers for embedded applications based on the Alternating Direction Method of Multipliers (ADMM) to provide support for second-order cones, as well as C++ code generation from Python, MATLAB, and Julia. Microcontroller benchmarks show that our solver provides up to a two-order-of-magnitude speedup, ranging from 10.6x to 142.7x, over state-of-the-art embedded solvers on QP and SOCP problems, and enables us to fit order-of-magnitude larger problems in memory. We validate our solver's deployed performance through simulation and hardware experiments, including trajectory tracking with conic constraints on a 27g Crazyflie quadrotor. Our open-source code is available at https://tinympc.org.