Kalman filter for Eurobot

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?

UserRevisionLine numberNew 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 */