From 1f723095201bff25056cd3f5c37b53e183cea79d Mon Sep 17 00:00:00 2001 From: jgoppert Date: Sat, 7 Nov 2015 12:17:45 -0500 Subject: [PATCH] Added some docs. --- README.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/README.md b/README.md index c840ebf349..718d5dbf5b 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,65 @@ A simple and efficient template based matrix library. ## Limitations * No dynamically sized matrices. + +## Example + +```c++ + // define an euler angle (Body 3(yaw)-2(pitch)-1(roll) rotation) + float roll = 0.1f; + float pitch = 0.2f; + float yaw = 0.3f; + Eulerf euler(roll, pitch, yaw); + + // convert to quaternion from euler + Quatf q_nb(euler); + + // convert to DCM from quaternion + Dcmf dcm(q_nb); + + // do some kalman filtering + const size_t n_x = 5; + const size_t n_y = 3; + + // define matrix sizes + SquareMatrix P; + Vector x; + Vector y; + Matrix C; + SquareMatrix R; + SquareMatrix S; + Matrix K; + + // define measurement matrix + C = zero(); // or C.setZero() + C(0,0) = 1; + C(1,1) = 2; + C(2,2) = 3; + + // set x to zero + x = zero(); // or x.setZero() + + // set P to identity * 0.01 + P = eye()*0.01; + + // set R to identity * 0.1 + R = eye()*0.1; + + // measurement + y(0) = 1; + y(1) = 2; + y(2) = 3; + + // innovation + r = y - C*x; + + // innovations variance + S = C*P*C.T() + R; + + // Kalman gain matrix + K = P*C.T()*S.I(); + // S.I() is the inverse, defined for SquareMatrix + + // correction + x += K*r; +```