A sparse MPC solver for walking motion generation (old version).
|
00001 00008 #ifndef MATRIX_ECL_AS_H 00009 #define MATRIX_ECL_AS_H 00010 00011 00012 /**************************************** 00013 * INCLUDES 00014 ****************************************/ 00015 00016 #include "smpc_common.h" 00017 #include "problem_param.h" 00018 00019 00022 00023 /**************************************** 00024 * DEFINES 00025 ****************************************/ 00026 00028 #define MATRIX_SIZE_3x3 9 00029 00030 /**************************************** 00031 * TYPEDEFS 00032 ****************************************/ 00033 00034 using namespace std; 00035 00036 00041 class matrix_ecL_as 00042 { 00043 public: 00044 /*********** Constructors / Destructors ************/ 00045 matrix_ecL_as(const int); 00046 ~matrix_ecL_as(); 00047 00048 void form (const problem_parameters&); 00049 00050 void solve_backward (const int, double *); 00051 void solve_forward (const int, double *); 00052 00053 double *ecL; 00054 double **ecL_diag; 00055 double **ecL_ndiag; 00056 00057 private: 00058 void chol_dec (double *); 00059 00060 void form_iQBiPB (const double *, const double *, const double, double*); 00061 void form_iQAT (const double, const double, const double *); 00062 void form_AiQATiQBiPB (const problem_parameters&, const state_parameters&, double *); 00063 00064 void form_L_non_diag(const double *, double *); 00065 void form_L_diag(const double *, double *); 00066 00067 00068 // intermediate results used in computation of L 00069 double *iQAT; 00070 }; 00072 00073 #endif /*MATRIX_ECL_AS_H*/