ethz-adrl / ifopt

An Eigen-based, light-weight C++ Interface to Nonlinear Programming Solvers (Ipopt, Snopt)
http://wiki.ros.org/ifopt
BSD 3-Clause "New" or "Revised" License
785 stars 159 forks source link

Convex MPC with ifopt #48

Closed mahumada408 closed 4 years ago

mahumada408 commented 4 years ago

Hi,

I wanted to know if you have any thoughts on using ifopt to solve convex MPC problems. For example, would you be able to use this architecture to solve the MPC problem in the MIT Cheetah (and mini Cheetah), and use Gazebo as the simulation platform? I'd love to give this a shot!

Cheetah Paper https://doi.org/10.1109/IROS.2018.8594448

Thank!

awinkler commented 4 years ago

Hi @mahumada408 , yeah, this is mostly a wrapper for IPOPT/SNOPT, which solve nonlinear constrained optimization problems, so convex MPC problems are included. For MPC problems, where a warm start with the previous solution is possible, we found it often requires less iterations to use SNOPT (an SQP method), vs IPOPT (interior point). This is because interior point methods will will move away from all the constraints after initialization, in a way disregarding the valuable information of the initialization. Anyway, whatever you choose, once your problem and constraints get large enough, imo it's easier to manage with the ifopt wrapper.