Kalman filter for Eurobot
MatrixMath/MatrixMath.h@0:a0285293f6a6, 2012-03-20 (annotated)
- Committer:
- madcowswe
- Date:
- Tue Mar 20 12:43:16 2012 +0000
- Revision:
- 0:a0285293f6a6
Algo done, vars not done
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
madcowswe | 0:a0285293f6a6 | 1 | /** |
madcowswe | 0:a0285293f6a6 | 2 | * @file MatrixMath.h |
madcowswe | 0:a0285293f6a6 | 3 | * @author Ernesto Palacios |
madcowswe | 0:a0285293f6a6 | 4 | * |
madcowswe | 0:a0285293f6a6 | 5 | * Created on 15 de septiembre de 2011, 09:44 AM. |
madcowswe | 0:a0285293f6a6 | 6 | * |
madcowswe | 0:a0285293f6a6 | 7 | * Develop Under GPL v3.0 License |
madcowswe | 0:a0285293f6a6 | 8 | * http://www.gnu.org/licenses/gpl-3.0.html |
madcowswe | 0:a0285293f6a6 | 9 | * |
madcowswe | 0:a0285293f6a6 | 10 | */ |
madcowswe | 0:a0285293f6a6 | 11 | |
madcowswe | 0:a0285293f6a6 | 12 | #ifndef MATRIXMATH_H |
madcowswe | 0:a0285293f6a6 | 13 | #define MATRIXMATH_H |
madcowswe | 0:a0285293f6a6 | 14 | |
madcowswe | 0:a0285293f6a6 | 15 | #include "mbed.h" |
madcowswe | 0:a0285293f6a6 | 16 | #include "Matrix.h" |
madcowswe | 0:a0285293f6a6 | 17 | |
madcowswe | 0:a0285293f6a6 | 18 | |
madcowswe | 0:a0285293f6a6 | 19 | /** |
madcowswe | 0:a0285293f6a6 | 20 | * @brief This class provides STATIC methods to preform operations over |
madcowswe | 0:a0285293f6a6 | 21 | * Matrix Objects |
madcowswe | 0:a0285293f6a6 | 22 | * version 0.8. |
madcowswe | 0:a0285293f6a6 | 23 | * |
madcowswe | 0:a0285293f6a6 | 24 | * Methods will be added as neccesary. |
madcowswe | 0:a0285293f6a6 | 25 | * |
madcowswe | 0:a0285293f6a6 | 26 | */ |
madcowswe | 0:a0285293f6a6 | 27 | class MatrixMath{ |
madcowswe | 0:a0285293f6a6 | 28 | public: |
madcowswe | 0:a0285293f6a6 | 29 | |
madcowswe | 0:a0285293f6a6 | 30 | |
madcowswe | 0:a0285293f6a6 | 31 | /**@brief |
madcowswe | 0:a0285293f6a6 | 32 | * Transposes Matrix, return new Object. |
madcowswe | 0:a0285293f6a6 | 33 | * @param Mat matrix to calculate |
madcowswe | 0:a0285293f6a6 | 34 | * @return the determinant |
madcowswe | 0:a0285293f6a6 | 35 | */ |
madcowswe | 0:a0285293f6a6 | 36 | static Matrix Transpose( const Matrix& Mat ); |
madcowswe | 0:a0285293f6a6 | 37 | |
madcowswe | 0:a0285293f6a6 | 38 | |
madcowswe | 0:a0285293f6a6 | 39 | /**@brief |
madcowswe | 0:a0285293f6a6 | 40 | * Calculate the inverse of a nxn Matrix BUT check first if the determinant |
madcowswe | 0:a0285293f6a6 | 41 | * is != 0. Same matrix will be return if Det( Mat ) == 0. |
madcowswe | 0:a0285293f6a6 | 42 | * @param Mat matrix to calcute inverse. |
madcowswe | 0:a0285293f6a6 | 43 | * @return Matrix Inverse |
madcowswe | 0:a0285293f6a6 | 44 | */ |
madcowswe | 0:a0285293f6a6 | 45 | static Matrix Inv( const Matrix& Mat ); |
madcowswe | 0:a0285293f6a6 | 46 | |
madcowswe | 0:a0285293f6a6 | 47 | |
madcowswe | 0:a0285293f6a6 | 48 | static float dotProduct( const Matrix& leftM, const Matrix& rightM ); |
madcowswe | 0:a0285293f6a6 | 49 | |
madcowswe | 0:a0285293f6a6 | 50 | /**@brief Calculates the determinant of a Matrix. |
madcowswe | 0:a0285293f6a6 | 51 | * @param Mat matrix to calculate. |
madcowswe | 0:a0285293f6a6 | 52 | * @return the determinant. |
madcowswe | 0:a0285293f6a6 | 53 | */ |
madcowswe | 0:a0285293f6a6 | 54 | static float det( const Matrix& Mat ); |
madcowswe | 0:a0285293f6a6 | 55 | |
madcowswe | 0:a0285293f6a6 | 56 | |
madcowswe | 0:a0285293f6a6 | 57 | //** For Kinematics **// |
madcowswe | 0:a0285293f6a6 | 58 | |
madcowswe | 0:a0285293f6a6 | 59 | static Matrix RotX( const Matrix& matrix, float radians ); |
madcowswe | 0:a0285293f6a6 | 60 | |
madcowswe | 0:a0285293f6a6 | 61 | static Matrix RotY( const Matrix& matrix, float radians ); |
madcowswe | 0:a0285293f6a6 | 62 | |
madcowswe | 0:a0285293f6a6 | 63 | static Matrix RotZ( const Matrix& matrix, float radians ); |
madcowswe | 0:a0285293f6a6 | 64 | |
madcowswe | 0:a0285293f6a6 | 65 | static Matrix Transl( const Matrix& matrix, float x, float y, float z ); |
madcowswe | 0:a0285293f6a6 | 66 | |
madcowswe | 0:a0285293f6a6 | 67 | private: |
madcowswe | 0:a0285293f6a6 | 68 | |
madcowswe | 0:a0285293f6a6 | 69 | /**@brief |
madcowswe | 0:a0285293f6a6 | 70 | * Calculates the Determinant of a 3x3 Matrix |
madcowswe | 0:a0285293f6a6 | 71 | * @param Mat Already made sure is a 3 by 3 |
madcowswe | 0:a0285293f6a6 | 72 | * @return Float, determinant. |
madcowswe | 0:a0285293f6a6 | 73 | */ |
madcowswe | 0:a0285293f6a6 | 74 | float Det3x3( const Matrix& Mat ); |
madcowswe | 0:a0285293f6a6 | 75 | |
madcowswe | 0:a0285293f6a6 | 76 | }; |
madcowswe | 0:a0285293f6a6 | 77 | |
madcowswe | 0:a0285293f6a6 | 78 | #endif /* MATRIXMATH_H */ |