View Javadoc
1   package com.irurueta.navigation.inertial.calibration.gyroscope;
2   
3   import com.irurueta.algebra.Matrix;
4   import com.irurueta.navigation.LockedException;
5   import com.irurueta.units.Acceleration;
6   
7   /**
8    * Defines a gyroscope calibrator that depends on previously known accelerometer
9    * parameters (bias, scaling and cross coupling errors).
10   */
11  public interface AccelerometerDependentGyroscopeCalibrator extends GyroscopeCalibrator {
12  
13      /**
14       * Gets known x-coordinate of accelerometer bias to be used to fix
15       * measured specific force and find cross biases introduced by the
16       * accelerometer.
17       * This is expressed in meters per squared second (m/s^2).
18       *
19       * @return known x-coordinate of accelerometer bias.
20       */
21      double getAccelerometerBiasX();
22  
23      /**
24       * Sets known x-coordinate of accelerometer bias to be used to fix
25       * measured specific force and find cross biases introduced by the
26       * accelerometer.
27       * This is expressed in meters per squared second (m/s^2).
28       *
29       * @param accelerometerBiasX known x-coordinate of accelerometer bias.
30       * @throws LockedException if calibrator is currently running.
31       */
32      void setAccelerometerBiasX(final double accelerometerBiasX) throws LockedException;
33  
34      /**
35       * Gets known y-coordinate of accelerometer bias to be used to fix
36       * measured specific force and find cross biases introduced by the
37       * accelerometer.
38       * This is expressed in meters per squared second (m/s^2).
39       *
40       * @return known y-coordinate of accelerometer bias.
41       */
42      double getAccelerometerBiasY();
43  
44      /**
45       * Sets known y-coordinate of accelerometer bias to be used to fix
46       * measured specific force and find cross biases introduced by the
47       * accelerometer.
48       * This is expressed in meters per squared second (m/s^2).
49       *
50       * @param accelerometerBiasY known y-coordinate of accelerometer bias.
51       * @throws LockedException if calibrator is currently running.
52       */
53      void setAccelerometerBiasY(final double accelerometerBiasY) throws LockedException;
54  
55      /**
56       * Gets known z-coordinate of accelerometer bias to be used to fix
57       * measured specific force and find cross biases introduced by the
58       * accelerometer.
59       * This is expressed in meters per squared second (m/s^2).
60       *
61       * @return known z-coordinate of accelerometer bias.
62       */
63      double getAccelerometerBiasZ();
64  
65      /**
66       * Sets known z-coordinate of accelerometer bias to be used to fix
67       * measured specific force and find cross biases introduced by the
68       * accelerometer.
69       * This is expressed in meters per squared second (m/s^2).
70       *
71       * @param accelerometerBiasZ known z-coordinate of accelerometer bias.
72       * @throws LockedException if calibrator is currently running.
73       */
74      void setAccelerometerBiasZ(final double accelerometerBiasZ) throws LockedException;
75  
76      /**
77       * Gets known x-coordinate of accelerometer bias to be used to fix
78       * measured specific force and find cross biases introduced by the
79       * accelerometer.
80       *
81       * @return known x-coordinate of accelerometer bias.
82       */
83      Acceleration getAccelerometerBiasXAsAcceleration();
84  
85      /**
86       * Gets known x-coordinate of accelerometer bias to be used to fix
87       * measured specific force and find cross biases introduced by the
88       * accelerometer.
89       *
90       * @param result instance where result data will be stored.
91       */
92      void getAccelerometerBiasXAsAcceleration(final Acceleration result);
93  
94      /**
95       * Sets known x-coordinate of accelerometer bias to be used to fix
96       * measured specific force and find cross biases introduced by the
97       * accelerometer.
98       *
99       * @param accelerometerBiasX x-coordinate of accelerometer bias.
100      * @throws LockedException if calibrator is currently running.
101      */
102     void setAccelerometerBiasX(final Acceleration accelerometerBiasX) throws LockedException;
103 
104     /**
105      * Gets known y-coordinate of accelerometer bias to be used to fix
106      * measured specific force and find cross biases introduced by the
107      * accelerometer.
108      *
109      * @return known y-coordinate of accelerometer bias.
110      */
111     Acceleration getAccelerometerBiasYAsAcceleration();
112 
113     /**
114      * Gets known y-coordinate of accelerometer bias to be used to fix
115      * measured specific force and find cross biases introduced by the
116      * accelerometer.
117      *
118      * @param result instance where result data will be stored.
119      */
120     void getAccelerometerBiasYAsAcceleration(final Acceleration result);
121 
122     /**
123      * Sets known y-coordinate of accelerometer bias to be used to fix
124      * measured specific force and find cross biases introduced by the
125      * accelerometer.
126      *
127      * @param accelerometerBiasY y-coordinate of accelerometer bias.
128      * @throws LockedException if calibrator is currently running.
129      */
130     void setAccelerometerBiasY(final Acceleration accelerometerBiasY) throws LockedException;
131 
132     /**
133      * Gets known z-coordinate of accelerometer bias to be used to fix
134      * measured specific force and find cross biases introduced by the
135      * accelerometer.
136      *
137      * @return known z-coordinate of accelerometer bias.
138      */
139     Acceleration getAccelerometerBiasZAsAcceleration();
140 
141     /**
142      * Gets known z-coordinate of accelerometer bias to be used to fix
143      * measured specific force and find cross biases introduced by the
144      * accelerometer.
145      *
146      * @param result instance where result data will be stored.
147      */
148     void getAccelerometerBiasZAsAcceleration(final Acceleration result);
149 
150     /**
151      * Sets known z-coordinate of accelerometer bias to be used to fix
152      * measured specific force and find cross biases introduced by the
153      * accelerometer.
154      *
155      * @param accelerometerBiasZ z-coordinate of accelerometer bias.
156      * @throws LockedException if calibrator is currently running.
157      */
158     void setAccelerometerBiasZ(final Acceleration accelerometerBiasZ) throws LockedException;
159 
160     /**
161      * Sets known accelerometer bias to be used to fix measured specific
162      * force and find cross biases introduced by the accelerometer.
163      * This is expressed in meters per squared second (m/s^2).
164      *
165      * @param accelerometerBiasX x-coordinate of accelerometer bias.
166      * @param accelerometerBiasY y-coordinate of accelerometer bias.
167      * @param accelerometerBiasZ z-coordinate of accelerometer bias.
168      * @throws LockedException if calibrator is currently running.
169      */
170     void setAccelerometerBias(
171             final double accelerometerBiasX, final double accelerometerBiasY, final double accelerometerBiasZ)
172             throws LockedException;
173 
174     /**
175      * Sets known accelerometer bias to be used to fix measured specific
176      * force and find cross biases introduced by the accelerometer.
177      *
178      * @param accelerometerBiasX x-coordinate of accelerometer bias.
179      * @param accelerometerBiasY y-coordinate of accelerometer bias.
180      * @param accelerometerBiasZ z-coordinate of accelerometer bias.
181      * @throws LockedException if calibrator is currently running.
182      */
183     void setAccelerometerBias(
184             final Acceleration accelerometerBiasX,
185             final Acceleration accelerometerBiasY,
186             final Acceleration accelerometerBiasZ) throws LockedException;
187 
188     /**
189      * Gets known accelerometer bias to be used to fix measured specific
190      * force and find cross biases introduced by the accelerometer.
191      * This is expressed in meters per squared second (m/s^2).
192      *
193      * @return known accelerometer bias.
194      */
195     double[] getAccelerometerBias();
196 
197     /**
198      * Gets known accelerometer bias to be used to fix measured specific
199      * force and find cross biases introduced by the accelerometer.
200      * This is expressed in meters per squared second (m/s^2).
201      *
202      * @param result instance where result data will be copied to.
203      * @throws IllegalArgumentException if provided array does not have
204      *                                  length 3.
205      */
206     void getAccelerometerBias(final double[] result);
207 
208     /**
209      * Sets known accelerometer bias to be used to fix measured specific
210      * force and find cross biases introduced by the accelerometer.
211      * This is expressed in meters per squared second (m/s^2).
212      *
213      * @param accelerometerBias known accelerometer bias.
214      * @throws LockedException          if calibrator is currently running.
215      * @throws IllegalArgumentException if provided array does not have
216      *                                  length 3.
217      */
218     void setAccelerometerBias(final double[] accelerometerBias) throws LockedException;
219 
220     /**
221      * Gets known accelerometer bias to be used to fix measured specific
222      * force and find cross biases introduced by the accelerometer.
223      * This is expressed in meters per squared second (m/s^2).
224      *
225      * @return known accelerometer bias.
226      */
227     Matrix getAccelerometerBiasAsMatrix();
228 
229     /**
230      * Gets known accelerometer bias to be used to fix measured specific
231      * force and find cross biases introduced by the accelerometer.
232      * This is expressed in meters per squared second (m/s^2).
233      *
234      * @param result instance where result data will be copied to.
235      * @throws IllegalArgumentException if provided matrix is not 3x1.
236      */
237     void getAccelerometerBiasAsMatrix(final Matrix result);
238 
239     /**
240      * Sets known accelerometer bias to be used to fix measured specific
241      * force and find cross biases introduced by the accelerometer.
242      * This is expressed in meters per squared second (m/s^2).
243      *
244      * @param accelerometerBias known accelerometer bias. Must be 3x1.
245      * @throws LockedException          if calibrator is currently running.
246      * @throws IllegalArgumentException if provided matrix is not 3x1.
247      */
248     void setAccelerometerBias(final Matrix accelerometerBias) throws LockedException;
249 
250     /**
251      * Gets known accelerometer x scaling factor to be used to fix measured
252      * specific force and find cross biases introduced by the accelerometer.
253      *
254      * @return known accelerometer x scaling factor.
255      */
256     double getAccelerometerSx();
257 
258     /**
259      * Sets known accelerometer x scaling factor to be used to fix measured
260      * specific force and find cross biases introduced by the accelerometer.
261      *
262      * @param accelerometerSx known accelerometer x scaling factor.
263      * @throws LockedException if calibrator is currently running.
264      */
265     void setAccelerometerSx(final double accelerometerSx) throws LockedException;
266 
267     /**
268      * Gets known accelerometer y scaling factor to be used to fix measured
269      * specific force and find cross biases introduced by the accelerometer.
270      *
271      * @return known accelerometer y scaling factor.
272      */
273     double getAccelerometerSy();
274 
275     /**
276      * Sets known accelerometer y scaling factor to be used to fix measured
277      * specific force and find cross biases introduced by the accelerometer.
278      *
279      * @param accelerometerSy known accelerometer y scaling factor.
280      * @throws LockedException if calibrator is currently running.
281      */
282     void setAccelerometerSy(final double accelerometerSy) throws LockedException;
283 
284     /**
285      * Gets known accelerometer z scaling factor to be used to fix measured
286      * specific force and find cross biases introduced by the accelerometer.
287      *
288      * @return known accelerometer z scaling factor.
289      */
290     double getAccelerometerSz();
291 
292     /**
293      * Sets known accelerometer z scaling factor to be used to fix measured
294      * specific force and find cross biases introduced by the accelerometer.
295      *
296      * @param accelerometerSz known accelerometer z scaling factor.
297      * @throws LockedException if calibrator is currently running.
298      */
299     void setAccelerometerSz(final double accelerometerSz) throws LockedException;
300 
301     /**
302      * Gets known accelerometer x-y cross coupling error to be used to fix
303      * measured specific force and find cross biases introduced by the
304      * accelerometer.
305      *
306      * @return known accelerometer x-y cross coupling error.
307      */
308     double getAccelerometerMxy();
309 
310     /**
311      * Sets known accelerometer x-y cross coupling error to be used to fix
312      * measured specific force and find cross biases introduced by the
313      * accelerometer.
314      *
315      * @param accelerometerMxy known accelerometer x-y cross coupling error.
316      * @throws LockedException if calibrator is currently running.
317      */
318     void setAccelerometerMxy(final double accelerometerMxy) throws LockedException;
319 
320     /**
321      * Gets known accelerometer x-z cross coupling error to be used to fix
322      * measured specific force and find cross biases introduced by the
323      * accelerometer.
324      *
325      * @return known accelerometer x-z cross coupling error.
326      */
327     double getAccelerometerMxz();
328 
329     /**
330      * Sets known accelerometer x-z cross coupling error to be used to fix
331      * measured specific force and find cross biases introduced by the
332      * accelerometer.
333      *
334      * @param accelerometerMxz known accelerometer x-z cross coupling error.
335      * @throws LockedException if calibrator is currently running.
336      */
337     void setAccelerometerMxz(final double accelerometerMxz) throws LockedException;
338 
339     /**
340      * Gets known accelerometer y-x cross coupling error to be used to fix
341      * measured specific force and find cross biases introduced by the
342      * accelerometer.
343      *
344      * @return known accelerometer y-x cross coupling error.
345      */
346     double getAccelerometerMyx();
347 
348     /**
349      * Sets known accelerometer y-x cross coupling error to be used to fix
350      * measured specific force and find cross biases introduced by the
351      * accelerometer.
352      *
353      * @param accelerometerMyx known accelerometer y-x cross coupling
354      *                         error.
355      * @throws LockedException if calibrator is currently running.
356      */
357     void setAccelerometerMyx(final double accelerometerMyx) throws LockedException;
358 
359     /**
360      * Gets known accelerometer y-z cross coupling error to be used to fix
361      * measured specific force and find cross biases introduced by the
362      * accelerometer.
363      *
364      * @return known accelerometer y-z cross coupling error.
365      */
366     double getAccelerometerMyz();
367 
368     /**
369      * Sets known accelerometer y-z cross coupling error to be used to fix
370      * measured specific force and find cross biases introduced by the
371      * accelerometer.
372      *
373      * @param accelerometerMyz known accelerometer y-z cross coupling
374      *                         error.
375      * @throws LockedException if calibrator is currently running.
376      */
377     void setAccelerometerMyz(final double accelerometerMyz) throws LockedException;
378 
379     /**
380      * Gets known accelerometer z-x cross coupling error to be used to fix
381      * measured specific force and find cross biases introduced by the
382      * accelerometer.
383      *
384      * @return known accelerometer z-x cross coupling error.
385      */
386     double getAccelerometerMzx();
387 
388     /**
389      * Sets known accelerometer z-x cross coupling error to be used to fix
390      * measured specific force and find cross biases introduced by the
391      * accelerometer.
392      *
393      * @param accelerometerMzx known accelerometer z-x cross coupling
394      *                         error.
395      * @throws LockedException if calibrator is currently running.
396      */
397     void setAccelerometerMzx(final double accelerometerMzx) throws LockedException;
398 
399     /**
400      * Gets known accelerometer z-y cross coupling error to be used to fix
401      * measured specific force and find cross biases introduced by the
402      * accelerometer.
403      *
404      * @return known accelerometer z-y cross coupling error.
405      */
406     double getAccelerometerMzy();
407 
408     /**
409      * Sets known accelerometer z-y cross coupling error to be used to fix
410      * measured specific force and find cross biases introduced by the
411      * accelerometer.
412      *
413      * @param accelerometerMzy known accelerometer z-y cross coupling
414      *                         error.
415      * @throws LockedException if calibrator is currently running.
416      */
417     void setAccelerometerMzy(final double accelerometerMzy) throws LockedException;
418 
419     /**
420      * Sets known accelerometer scaling factors to be used to fix measured
421      * specific force and find cross biases introduced by the
422      * accelerometer.
423      *
424      * @param accelerometerSx known accelerometer x scaling factor.
425      * @param accelerometerSy known accelerometer y scaling factor.
426      * @param accelerometerSz known accelerometer z scaling factor.
427      * @throws LockedException if calibrator is currently running.
428      */
429     void setAccelerometerScalingFactors(
430             final double accelerometerSx, final double accelerometerSy, final double accelerometerSz)
431             throws LockedException;
432 
433     /**
434      * Sets known accelerometer cross coupling errors to be used to fix
435      * measured specific force and find cross biases introduced by the
436      * accelerometer.
437      *
438      * @param accelerometerMxy known accelerometer x-y cross coupling
439      *                         error.
440      * @param accelerometerMxz known accelerometer x-z cross coupling
441      *                         error.
442      * @param accelerometerMyx known accelerometer y-x cross coupling
443      *                         error.
444      * @param accelerometerMyz known accelerometer y-z cross coupling
445      *                         error.
446      * @param accelerometerMzx known accelerometer z-x cross coupling
447      *                         error.
448      * @param accelerometerMzy known accelerometer z-y cross coupling
449      *                         error.
450      * @throws LockedException if calibrator is currently running.
451      */
452     void setAccelerometerCrossCouplingErrors(
453             final double accelerometerMxy, final double accelerometerMxz,
454             final double accelerometerMyx, final double accelerometerMyz,
455             final double accelerometerMzx, final double accelerometerMzy) throws LockedException;
456 
457     /**
458      * Sets known accelerometer scaling factors and cross coupling errors
459      * to be used to fix measured specific force and find cross biases
460      * introduced by the accelerometer.
461      *
462      * @param accelerometerSx  known accelerometer x scaling factor.
463      * @param accelerometerSy  known accelerometer y scaling factor.
464      * @param accelerometerSz  known accelerometer z scaling factor.
465      * @param accelerometerMxy known accelerometer x-y cross coupling
466      *                         error.
467      * @param accelerometerMxz known accelerometer x-z cross coupling
468      *                         error.
469      * @param accelerometerMyx known accelerometer y-x cross coupling
470      *                         error.
471      * @param accelerometerMyz known accelerometer y-z cross coupling
472      *                         error.
473      * @param accelerometerMzx known accelerometer z-x cross coupling
474      *                         error.
475      * @param accelerometerMzy known accelerometer z-y cross coupling
476      *                         error.
477      * @throws LockedException if calibrator is currently running.
478      */
479     void setAccelerometerScalingFactorsAndCrossCouplingErrors(
480             final double accelerometerSx, final double accelerometerSy,
481             final double accelerometerSz, final double accelerometerMxy,
482             final double accelerometerMxz, final double accelerometerMyx,
483             final double accelerometerMyz, final double accelerometerMzx,
484             final double accelerometerMzy) throws LockedException;
485 
486     /**
487      * Gets known accelerometer scale factors and cross coupling
488      * errors matrix.
489      *
490      * @return known accelerometer scale factors and cross coupling
491      * errors matrix.
492      */
493     Matrix getAccelerometerMa();
494 
495     /**
496      * Gets known accelerometer scale factors and cross coupling
497      * errors matrix.
498      *
499      * @param result instance where data will be stored.
500      * @throws IllegalArgumentException if provided matrix is not 3x3.
501      */
502     void getAccelerometerMa(final Matrix result);
503 
504     /**
505      * Sets known accelerometer scale factors and cross coupling
506      * errors matrix.
507      *
508      * @param accelerometerMa known accelerometer scale factors and
509      *                        cross coupling errors matrix. Must be 3x3.
510      * @throws LockedException          if calibrator is currently running.
511      * @throws IllegalArgumentException if provided matrix is not 3x3.
512      */
513     void setAccelerometerMa(final Matrix accelerometerMa) throws LockedException;
514 }