]> git.mxchange.org Git - flightgear.git/blob - src/FDM/JSBSim/models/flight_control/FGGyro.h
Sync. with JSBSim (CVS) again
[flightgear.git] / src / FDM / JSBSim / models / flight_control / FGGyro.h
1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
3  Header:       FGGyro.h
4  Author:       Jon Berndt
5  Date started: 29 August 2009
6
7  ------------- Copyright (C) 2009 -------------
8
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
17  details.
18
19  You should have received a copy of the GNU Lesser General Public License along with
20  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21  Place - Suite 330, Boston, MA  02111-1307, USA.
22
23  Further information about the GNU Lesser General Public License can also be found on
24  the world wide web at http://www.gnu.org.
25
26 HISTORY
27 --------------------------------------------------------------------------------
28
29 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30 SENTRY
31 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
32
33 #ifndef FGGYRO_H
34 #define FGGYRO_H
35
36 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37 INCLUDES
38 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
39
40 #include "FGSensor.h"
41 #include <input_output/FGXMLElement.h>
42 #include "models/FGPropagate.h"
43 #include "models/FGMassBalance.h"
44 #include "models/FGInertial.h"
45 #include "math/FGColumnVector3.h"
46 #include "math/FGMatrix33.h"
47
48 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
49 DEFINITIONS
50 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
51
52 #define ID_GYRO "$Id$"
53
54 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
55 FORWARD DECLARATIONS
56 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
57
58 namespace JSBSim {
59
60 class FGFCS;
61
62 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
63 CLASS DOCUMENTATION
64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
65
66 /** Encapsulates a Gyro component for the flight control system.
67
68 Syntax:
69
70 @code
71 <gyro name="name">
72   <input> property </input>
73   <lag> number </lag>
74   <noise variation="PERCENT|ABSOLUTE"> number </noise>
75   <quantization name="name">
76     <bits> number </bits>
77     <min> number </min>
78     <max> number </max>
79   </quantization>
80   <drift_rate> number </drift_rate>
81   <bias> number </bias>
82 </gyro>
83 @endcode
84
85 Example:
86
87 @code
88 <gyro name="aero/gyro/qbar">
89   <input> aero/qbar </input>
90   <lag> 0.5 </lag>
91   <noise variation="PERCENT"> 2 </noise>
92   <quantization name="aero/gyro/quantized/qbar">
93     <bits> 12 </bits>
94     <min> 0 </min>
95     <max> 400 </max>
96   </quantization>
97   <bias> 0.5 </bias>
98 </gyro>
99 @endcode
100
101 The only required element in the gyro definition is the input element. In that
102 case, no degradation would be modeled, and the output would simply be the input.
103
104 For noise, if the type is PERCENT, then the value supplied is understood to be a
105 percentage variance. That is, if the number given is 0.05, the the variance is
106 understood to be +/-0.05 percent maximum variance. So, the actual value for the gyro
107 will be *anywhere* from 0.95 to 1.05 of the actual "perfect" value at any time -
108 even varying all the way from 0.95 to 1.05 in adjacent frames - whatever the delta
109 time.
110
111 @author Jon S. Berndt
112 @version $Revision$
113 */
114
115 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
116 CLASS DECLARATION
117 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
118
119 class FGGyro  : public FGSensor
120 {
121 public:
122   FGGyro(FGFCS* fcs, Element* element);
123   ~FGGyro();
124
125   bool Run (void);
126
127 private:
128   FGPropagate* Propagate;
129   FGColumnVector3 vOrient;
130   FGColumnVector3 vAccel;
131   FGMatrix33 mT;
132   void CalculateTransformMatrix(void);
133   int axis;
134   
135   void Debug(int from);
136 };
137 }
138 #endif