00001 #ifndef _CONSTRAINTS_STRUCTS_H_ 00002 #define _CONSTRAINTS_STRUCTS_H_ 00003 00004 #include <Eigen/Core> 00005 00006 struct ShapeConstraintsStruct { 00007 struct boundingStruct { 00008 Eigen::MatrixXd C; 00009 Eigen::VectorXd d; 00010 Eigen::MatrixXd Cbar; 00011 Eigen::VectorXd dbar; 00012 Eigen::VectorXd fhistory; 00013 }; 00014 struct constancyStruct { 00015 // Upper bound of the discontinuities in a and b. S = (Sx, Sy) 00016 Eigen::Vector2d S; 00017 Eigen::MatrixXd C1; 00018 Eigen::MatrixXd C2; 00019 Eigen::VectorXd d; 00020 Eigen::VectorXd dBar; 00021 Eigen::MatrixXd Cbar1; 00022 Eigen::MatrixXd Cbar2; 00023 Eigen::VectorXd fHistory; 00024 }; 00025 struct sequentialityStruct { 00026 Eigen::MatrixXd C; 00027 Eigen::VectorXd d; 00028 Eigen::MatrixXd Cbar; 00029 Eigen::VectorXd dBar; 00030 Eigen::VectorXd fHistory; 00031 }; 00032 00033 Eigen::MatrixXd Cbar; 00034 Eigen::VectorXd dbar; 00035 Eigen::VectorXd fHistory; 00036 boundingStruct bounding; 00037 constancyStruct constancy; 00038 sequentialityStruct sequentiality; 00039 }; 00040 00041 struct AdmissibilityConstraintsStruct { 00042 struct SSandDSAlternation { 00043 Eigen::MatrixXd C1; 00044 Eigen::MatrixXd C2; 00045 Eigen::VectorXd d; 00046 Eigen::MatrixXd C1bar; 00047 Eigen::MatrixXd C2bar; 00048 Eigen::VectorXd dBar; 00049 Eigen::VectorXd fHistory; 00050 }; 00051 struct SingleSupport { 00052 Eigen::MatrixXd C; 00053 Eigen::VectorXd d; 00054 Eigen::MatrixXd Cbar; 00055 Eigen::VectorXd dBar; 00056 Eigen::VectorXd S; 00057 Eigen::VectorXd fHistory; 00058 }; 00059 struct ContactConfigurationHistory { 00060 Eigen::MatrixXd C1; 00061 Eigen::MatrixXd C2; 00062 Eigen::VectorXd d; 00063 Eigen::MatrixXd C1bar; 00064 Eigen::MatrixXd C2bar; 00065 Eigen::VectorXd dBar; 00066 Eigen::VectorXd fHistory; 00067 }; 00068 struct ContactConfigurationEnforcement { 00069 Eigen::MatrixXd C; 00070 Eigen::VectorXd d; 00071 Eigen::MatrixXd Cbar; 00072 Eigen::VectorXd dBar; 00073 Eigen::VectorXd fHistory; 00074 }; 00075 Eigen::MatrixXd Cbar; 00076 Eigen::VectorXd dbar; 00077 Eigen::VectorXd fHistory; 00078 SSandDSAlternation ssAndDoubleSupportAlternation; 00079 SingleSupport singleSupport; 00080 ContactConfigurationHistory contactConfigurationHistory; 00081 ContactConfigurationEnforcement contactConfigurationEnforcement; 00082 }; 00083 00084 enum CONSTRAINTS_TYPE { 00085 SHAPE_CONSTRAINTS = 0, 00086 ADMISSIBILITY_CONSTRAINTS, 00087 WALKING_CONSTRAINTS 00088 }; 00089 00090 00091 #endif