centroidal_control_collection
|
State-space model. More...
#include <LinearMpcXY.h>
Public Member Functions | |
Model (double mass, const MotionParam &motion_param, int output_dim=0) | |
Constructor. More... | |
Public Member Functions inherited from CCC::StateSpaceModel< StateDim, InputDim, OutputDim > | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW | StateSpaceModel (int state_dim=StateDim, int input_dim=InputDim, int output_dim=OutputDim) |
Constructor. More... | |
virtual | ~StateSpaceModel ()=default |
Destructor. More... | |
int | stateDim () const |
Gets the state dimension. More... | |
int | inputDim () const |
Gets the input dimension. More... | |
int | outputDim () const |
Gets the output dimension. More... | |
StateDimVector | stateEq (const StateDimVector &x, const InputDimVector &u) const |
Calculate the continuous state equation. More... | |
StateDimVector | stateEqDisc (const StateDimVector &x, const InputDimVector &u) const |
Calculate the discrete state equation. More... | |
OutputDimVector | observEq (const StateDimVector &x) const |
Calculate the observation equation. More... | |
OutputDimVector | observEq (const StateDimVector &x, const InputDimVector &u) const |
Calculate the observation equation. More... | |
void | calcDiscMatrix (double dt) |
Calculate the discrete system matrices \(\boldsymbol{A}_d, \boldsymbol{B}_d, \boldsymbol{e}_d\). More... | |
Public Attributes | |
MotionParam | motion_param_ |
Motion parameter. More... | |
Public Attributes inherited from CCC::StateSpaceModel< StateDim, InputDim, OutputDim > | |
const int | state_dim_ = 0 |
State dimension. More... | |
const int | input_dim_ = 0 |
Input dimension. More... | |
const int | output_dim_ = 0 |
Output dimension. More... | |
Eigen::Matrix< double, StateDim, StateDim > | A_ |
Matrix \(\boldsymbol{A}\) of continuous state equation. More... | |
Eigen::Matrix< double, StateDim, InputDim > | B_ |
Matrix \(\boldsymbol{B}\) of continuous state equation. More... | |
Eigen::Matrix< double, OutputDim, StateDim > | C_ |
Matrix \(\boldsymbol{C}\) of observation equation. More... | |
Eigen::Matrix< double, OutputDim, InputDim > | D_ |
Matrix \(\boldsymbol{D}\) of observation equation. More... | |
StateDimVector | E_ |
Offset vector \(\boldsymbol{e}\) of continuous state equation. More... | |
OutputDimVector | F_ |
Offset vector \(\boldsymbol{f}\) of observation equation. More... | |
double | dt_ = 0 |
Discretization timestep [sec] (zero if discrete coefficients are not initialized) More... | |
Eigen::Matrix< double, StateDim, StateDim > | Ad_ |
Matrix \(\boldsymbol{A}_d\) of discrete state equation. More... | |
Eigen::Matrix< double, StateDim, InputDim > | Bd_ |
Matrix \(\boldsymbol{B}_d\) of discrete state equation. More... | |
StateDimVector | Ed_ |
Offset vector \(\boldsymbol{e}_d\) of discrete state equation. More... | |
Additional Inherited Members | |
Public Types inherited from CCC::StateSpaceModel< StateDim, InputDim, OutputDim > | |
using | StateDimVector = Eigen::Matrix< double, StateDim, 1 > |
Type of state vector. More... | |
using | InputDimVector = Eigen::Matrix< double, InputDim, 1 > |
Type of input vector. More... | |
using | OutputDimVector = Eigen::Matrix< double, OutputDim, 1 > |
Type of output vector. More... | |
State-space model.
Dynamics is expressed by the following equation.
\begin{align*} \boldsymbol{\dot{P}} &= \sum_i \lambda_i \boldsymbol{\rho}_i - m \boldsymbol{g} \\ \boldsymbol{\dot{L}} &= \sum_i (\boldsymbol{p}_i - \boldsymbol{c}) \times \lambda_i \boldsymbol{\rho}_i \end{align*}
\(\boldsymbol{c}\), \(\boldsymbol{P}\), and \(\boldsymbol{L}\) are CoM, linear momentum, and angular momentum, respectively. \(\boldsymbol{p}_i\), \(\lambda_i\), and \(\boldsymbol{\rho}_i\) are position, force scale, and ridge vector of i-th contact vertex ridge, respectively.
This can be represented as a linear time-variant system as follows.
\begin{align*} \boldsymbol{\dot{x}} &= \begin{bmatrix} 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & - \dfrac{f_z}{m} & 0 & 0 & 0 \\ \dfrac{f_z}{m} & 0 & 0 & 0 & 0 & 0 \end{bmatrix} \boldsymbol{x} + \begin{bmatrix} \cdots & 0 & \cdots \\ \cdots & \rho_{i,x} & \cdots \\ \cdots & 0 & \cdots \\ \cdots & \rho_{i,y} & \cdots \\ \cdots & - (p_{i,z} - c_z) \rho_{i,y} + p_{i,y} \rho_{i,z} & \cdots \\ \cdots & (p_{i,z} - c_z) \rho_{i,x} - p_{i,x} \rho_{i,z} & \cdots \end{bmatrix} \boldsymbol{u} \end{align*}
We assume that vertical moton (i.e., CoM height \(c_z\) and total vertical contact force \(f_z\)) is pre-defined.
State, control input, and output are expressed as follows.
\begin{align*} \boldsymbol{x} = \begin{bmatrix} m c_x \\ P_x \\ m c_y \\ P_y \\ L_x \\ L_y \end{bmatrix}, \boldsymbol{u} = \begin{bmatrix} \vdots \\ \lambda_i \\ \vdots \end{bmatrix} \end{align*}
Definition at line 186 of file LinearMpcXY.h.
CCC::LinearMpcXY::Model::Model | ( | double | mass, |
const MotionParam & | motion_param, | ||
int | output_dim = 0 |
||
) |
Constructor.
mass | robot mass [kg] |
motion_param | motion parameter |
output_dim | output dimension |
MotionParam CCC::LinearMpcXY::Model::motion_param_ |
Motion parameter.
Definition at line 198 of file LinearMpcXY.h.