COSMOS core  1.0.2 (beta)
Comprehensive Open-architecture Solution for Mission Operations Systems
estimation_lib.h
Go to the documentation of this file.
1 /********************************************************************
2 * Copyright (C) 2015 by Interstel Technologies, Inc.
3 * and Hawaii Space Flight Laboratory.
4 *
5 * This file is part of the COSMOS/core that is the central
6 * module for COSMOS. For more information on COSMOS go to
7 * <http://cosmos-project.com>
8 *
9 * The COSMOS/core software is licenced under the
10 * GNU Lesser General Public License (LGPL) version 3 licence.
11 *
12 * You should have received a copy of the
13 * GNU Lesser General Public License
14 * If not, go to <http://www.gnu.org/licenses/>
15 *
16 * COSMOS/core is free software: you can redistribute it and/or
17 * modify it under the terms of the GNU Lesser General Public License
18 * as published by the Free Software Foundation, either version 3 of
19 * the License, or (at your option) any later version.
20 *
21 * COSMOS/core is distributed in the hope that it will be useful, but
22 * WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 * Lesser General Public License for more details.
25 *
26 * Refer to the "licences" folder for further information on the
27 * condititons and terms to use this software.
28 ********************************************************************/
29 
30 #include <vector>
31 #include <iostream>
32 //#include <Eigen/Dense>
33 
34 #define EKF_NUM_STATES 7
35 #define EKF_NUM_ACTUATORS 4
36 #define EKF_NUM_SENSORS 3
37 
38 //class kalman_struc
39 //{
40 //public:
41 // vector< double > time;
42 // vector< Matrix < double, EKF_NUM_STATES, EKF_NUM_STATES > > gain;
43 // vector< Matrix < double, EKF_NUM_STATES, 1 > > state;
44 // vector< Matrix < double, EKF_NUM_STATES, EKF_NUM_STATES > > error;
45 //};
46 
47 //void extended_kalman_filter
48 //(
49 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& A,
50 // Matrix<double, EKF_NUM_STATES, EKF_NUM_ACTUATORS >& B,
51 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& H,
52 // Matrix<double, EKF_NUM_STATES, 1 >& X,
53 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& P,
54 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& Q,
55 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& R,
56 // Matrix<double, EKF_NUM_STATES, 1 >& z,
57 // Matrix<double, EKF_NUM_ACTUATORS , 1 >& u,
58 // double dt
59 //);
60 
62 //void extended_kalman_filter
63 //(
64 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& A,
65 // Matrix<double, EKF_NUM_STATES, EKF_NUM_ACTUATORS >& B,
66 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& H,
67 // Matrix<double, EKF_NUM_STATES, 1 >& X,
68 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& P,
69 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& Q,
70 // Matrix<double, EKF_NUM_STATES, EKF_NUM_STATES>& R,
71 // Matrix<double, EKF_NUM_STATES, 1 >& z,
72 // Matrix<double, EKF_NUM_ACTUATORS , 1 >& u,
73 // double dt,
74 // kalman_struc& kalman
75 //);
76 
77 //Matrix4d skew4(Vector3d v);
78 //MatrixXd linear_dynamics(Vector3d omega, const Matrix<double,3,3>& I);