an MPC (Model Predictive Control) problem formulation, where the goal is to drive the center of mass (CoM) of a robot to a desired reference position while ensuring it stays within a support polygon and satisfies various constraints (such as position, velocity, and acceleration). Let's break down the terms and the optimization problem.
Objective Function:
The optimization problem minimizes an objective function that includes:
State tracking error:
- : This term minimizes the difference between the current state and the reference , weighted by the matrix .
- : Similar to the previous term but for the final state at , with a different weighting matrix .
Control effort:
- : This term minimizes the control effort (the control inputs at each time step ), weighted by the matrix .
Slack variables (epsilon terms):
- : This term adds penalties for slack variables , which are used to handle possible constraint violations. The matrix determines the weight of the penalty for violating constraints.
Constraints:
The problem is subject to several constraints:
State dynamics:
- (Equation 2b): This constraint represents the system dynamics, where is the state at time step , is the system matrix, is the input matrix, and is the control input at time step .
State constraints:
- (Equation 2c): These are constraints on the state (position, velocity, etc.). The matrix and vector define upper and lower bounds on the state variables at each time step.
Input constraints:
- (Equation 2d): These are constraints on the control inputs (e.g., motor torques or forces). The matrix and vector define the allowable limits for the control inputs.
Support polygon and slack variable constraints:
- (Equation 2e): These constraints ensure that the CoM stays within the support polygon. The matrix defines the boundary of the support polygon, and is a slack variable that allows some flexibility if necessary.
Non-negativity of slack variables:
- (Equation 2f): This constraint ensures that the slack variables are non-negative, meaning that any violation of constraints is penalized and cannot be negative.




