不同的应用实例中,可能调用不同的求解器,底层都是求解二次规划问题的求解器,本文做一个整理。
不同的求解器对应不同的调用模块,所以,相应的代码块也会不一样。
比如,有些仓库用HPIPM求解器:https://github.com/alexliniger/MPCC/tree/master
有些仓库用osqp求解器(当然,这个库的mpc算法运行报错,没调通):
https://github.com/CHH3213/chhRobotics_CPP
qpOASES没找到例子,就不说了。
从使用条件来看,osqp不需要正定、半正定要求,使用更广泛,就是用的人多,因为容易用。
求解器的比较
特性 | HPIPM | OSQP | qpOASES |
---|---|---|---|
方法 | 内点法 | 直接法(ADMM) | 主动集法 |
适用问题 | 稀疏 QP、块结构 | 稀疏 QP | 小规模密集 QP |
实时性 | 高&# |