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 }