A sparse MPC solver for walking motion generation (old version).
|
00001 00008 #ifndef MATRIX_ECL_IP_H 00009 #define MATRIX_ECL_IP_H 00010 00011 00012 /**************************************** 00013 * INCLUDES 00014 ****************************************/ 00015 00016 #include "smpc_common.h" 00017 #include "problem_param.h" 00018 00021 00022 /**************************************** 00023 * DEFINES 00024 ****************************************/ 00025 00027 #define MATRIX_SIZE_6x6 36 00028 #define MATRIX_SIDE_6x6 6 00029 00030 00031 /**************************************** 00032 * TYPEDEFS 00033 ****************************************/ 00034 00035 using namespace std; 00036 00037 00042 class matrix_ecL_ip 00043 { 00044 public: 00045 /*********** Constructors / Destructors ************/ 00046 matrix_ecL_ip(const int); 00047 ~matrix_ecL_ip(); 00048 00049 void form (const problem_parameters&, const double *); 00050 00051 void solve_backward (const int, double *); 00052 void solve_forward (const int, double *); 00053 00054 double *ecL; 00055 00056 00057 00058 private: 00059 void chol_dec (double *); 00060 void form_M (const double, const double, const double*, const double*); 00061 void form_MBiPB (const double *, const double, double *); 00062 void form_MAT (const double, const double); 00063 void form_AMATMBiPB(const double, const double, double *); 00064 00065 void form_L_non_diag(const double *, double *); 00066 void form_L_diag(double *); 00067 void form_L_diag(const double *, double *); 00068 00069 00070 // intermediate results used in computation of L 00071 double *M; 00072 double *MAT; 00073 }; 00075 00076 #endif /*MATRIX_ECL_IP_H*/