1 /*
2 * Copyright (C) 2020 Alberto Irurueta Carro (alberto@irurueta.com)
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package com.irurueta.navigation.inertial.calibration.accelerometer;
17
18 import com.irurueta.algebra.Matrix;
19 import com.irurueta.navigation.LockedException;
20 import com.irurueta.navigation.frames.ECEFPosition;
21 import com.irurueta.navigation.frames.ECEFVelocity;
22 import com.irurueta.navigation.frames.NEDPosition;
23 import com.irurueta.navigation.frames.NEDVelocity;
24 import com.irurueta.navigation.frames.converters.ECEFtoNEDPositionVelocityConverter;
25 import com.irurueta.navigation.frames.converters.NEDtoECEFPositionVelocityConverter;
26 import com.irurueta.navigation.inertial.ECEFGravity;
27 import com.irurueta.navigation.inertial.calibration.StandardDeviationBodyKinematics;
28 import com.irurueta.navigation.inertial.estimators.ECEFGravityEstimator;
29 import com.irurueta.units.Acceleration;
30
31 import java.util.Collection;
32
33 /**
34 * Estimates accelerometer biases, cross couplings and scaling factors.
35 * This calibrator uses Levenberg-Marquardt to find a minimum least squared error
36 * solution.
37 * <p>
38 * To use this calibrator at least 10 measurements taken at a single known position must
39 * be taken at 10 different unknown orientations and zero velocity when common z-axis
40 * is assumed, otherwise at least 13 measurements are required.
41 * <p>
42 * Measured specific force is assumed to follow the model shown below:
43 * <pre>
44 * fmeas = ba + (I + Ma) * ftrue + w
45 * </pre>
46 * Where:
47 * - fmeas is the measured specific force. This is a 3x1 vector.
48 * - ba is accelerometer bias. Ideally, on a perfect accelerometer, this should be a
49 * 3x1 zero vector.
50 * - I is the 3x3 identity matrix.
51 * - Ma is the 3x3 matrix containing cross-couplings and scaling factors. Ideally, on
52 * a perfect accelerometer, this should be a 3x3 zero matrix.
53 * - ftrue is ground-truth specific force.
54 * - w is measurement noise.
55 */
56 public class KnownPositionAccelerometerCalibrator extends
57 BaseGravityNormAccelerometerCalibrator<KnownPositionAccelerometerCalibrator,
58 KnownPositionAccelerometerCalibratorListener> {
59
60
61 /**
62 * Position where body kinematics measures have been taken.
63 */
64 private ECEFPosition position;
65
66 /**
67 * Constructor.
68 */
69 public KnownPositionAccelerometerCalibrator() {
70 super();
71 }
72
73 /**
74 * Constructor.
75 *
76 * @param listener listener to handle events raised by this calibrator.
77 */
78 public KnownPositionAccelerometerCalibrator(final KnownPositionAccelerometerCalibratorListener listener) {
79 super(listener);
80 }
81
82 /**
83 * Constructor.
84 *
85 * @param measurements collection of body kinematics measurements with standard
86 * deviations taken at the same position with zero velocity
87 * and unknown different orientations.
88 */
89 public KnownPositionAccelerometerCalibrator(final Collection<StandardDeviationBodyKinematics> measurements) {
90 super(measurements);
91 }
92
93 /**
94 * Constructor.
95 *
96 * @param measurements collection of body kinematics measurements with standard
97 * deviations taken at the same position with zero velocity
98 * and unknown different orientations.
99 * @param listener listener to handle events raised by this calibrator.
100 */
101 public KnownPositionAccelerometerCalibrator(
102 final Collection<StandardDeviationBodyKinematics> measurements,
103 final KnownPositionAccelerometerCalibratorListener listener) {
104 super(measurements, listener);
105 }
106
107 /**
108 * Constructor.
109 *
110 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
111 * accelerometer and gyroscope.
112 */
113 public KnownPositionAccelerometerCalibrator(final boolean commonAxisUsed) {
114 super(commonAxisUsed);
115 }
116
117 /**
118 * Constructor.
119 *
120 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
121 * accelerometer and gyroscope.
122 * @param listener listener to handle events raised by this calibrator.
123 */
124 public KnownPositionAccelerometerCalibrator(
125 final boolean commonAxisUsed, final KnownPositionAccelerometerCalibratorListener listener) {
126 super(commonAxisUsed, listener);
127 }
128
129 /**
130 * Constructor.
131 *
132 * @param measurements collection of body kinematics measurements with standard
133 * deviations taken at the same position with zero velocity
134 * and unknown different orientations.
135 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
136 * accelerometer and gyroscope.
137 */
138 public KnownPositionAccelerometerCalibrator(
139 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed) {
140 super(measurements, commonAxisUsed);
141 }
142
143 /**
144 * Constructor.
145 *
146 * @param measurements collection of body kinematics measurements with standard
147 * deviations taken at the same position with zero velocity
148 * and unknown different orientations.
149 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
150 * accelerometer and gyroscope.
151 * @param listener listener to handle events raised by this calibrator.
152 */
153 public KnownPositionAccelerometerCalibrator(
154 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
155 final KnownPositionAccelerometerCalibratorListener listener) {
156 super(measurements, commonAxisUsed, listener);
157 }
158
159 /**
160 * Constructor.
161 *
162 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
163 * to find a solution. This is expressed in meters per squared
164 * second (m/s^2).
165 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
166 * to find a solution. This is expressed in meters per squared
167 * second (m/s^2).
168 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
169 * to find a solution. This is expressed in meters per squared
170 * second (m/s^2).
171 */
172 public KnownPositionAccelerometerCalibrator(
173 final double initialBiasX, final double initialBiasY, final double initialBiasZ) {
174 super(initialBiasX, initialBiasY, initialBiasZ);
175 }
176
177 /**
178 * Constructor.
179 *
180 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
181 * to find a solution. This is expressed in meters per squared
182 * second (m/s^2).
183 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
184 * to find a solution. This is expressed in meters per squared
185 * second (m/s^2).
186 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
187 * to find a solution. This is expressed in meters per squared
188 * second (m/s^2).
189 * @param listener listener to handle events raised by this calibrator.
190 */
191 public KnownPositionAccelerometerCalibrator(
192 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
193 final KnownPositionAccelerometerCalibratorListener listener) {
194 super(initialBiasX, initialBiasY, initialBiasZ, listener);
195 }
196
197 /**
198 * Constructor.
199 *
200 * @param measurements collection of body kinematics measurements with standard
201 * deviations taken at the same position with zero velocity
202 * and unknown different orientations.
203 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
204 * to find a solution. This is expressed in meters per squared
205 * second (m/s^2).
206 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
207 * to find a solution. This is expressed in meters per squared
208 * second (m/s^2).
209 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
210 * to find a solution. This is expressed in meters per squared
211 * second (m/s^2).
212 */
213 public KnownPositionAccelerometerCalibrator(
214 final Collection<StandardDeviationBodyKinematics> measurements,
215 final double initialBiasX, final double initialBiasY, final double initialBiasZ) {
216 super(measurements, initialBiasX, initialBiasY, initialBiasZ);
217 }
218
219 /**
220 * Constructor.
221 *
222 * @param measurements collection of body kinematics measurements with standard
223 * deviations taken at the same position with zero velocity
224 * and unknown different orientations.
225 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
226 * to find a solution. This is expressed in meters per squared
227 * second (m/s^2).
228 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
229 * to find a solution. This is expressed in meters per squared
230 * second (m/s^2).
231 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
232 * to find a solution. This is expressed in meters per squared
233 * second (m/s^2).
234 * @param listener listener to handle events raised by this calibrator.
235 */
236 public KnownPositionAccelerometerCalibrator(
237 final Collection<StandardDeviationBodyKinematics> measurements,
238 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
239 final KnownPositionAccelerometerCalibratorListener listener) {
240 super(measurements, initialBiasX, initialBiasY, initialBiasZ, listener);
241 }
242
243 /**
244 * Constructor.
245 *
246 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
247 * accelerometer and gyroscope.
248 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
249 * to find a solution. This is expressed in meters per squared
250 * second (m/s^2).
251 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
252 * to find a solution. This is expressed in meters per squared
253 * second (m/s^2).
254 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
255 * to find a solution. This is expressed in meters per squared
256 * second (m/s^2).
257 */
258 public KnownPositionAccelerometerCalibrator(
259 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
260 final double initialBiasZ) {
261 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
262 }
263
264 /**
265 * Constructor.
266 *
267 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
268 * accelerometer and gyroscope.
269 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
270 * to find a solution. This is expressed in meters per squared
271 * second (m/s^2).
272 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
273 * to find a solution. This is expressed in meters per squared
274 * second (m/s^2).
275 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
276 * to find a solution. This is expressed in meters per squared
277 * second (m/s^2).
278 * @param listener listener to handle events raised by this calibrator.
279 */
280 public KnownPositionAccelerometerCalibrator(
281 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
282 final double initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
283 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
284 }
285
286 /**
287 * Constructor.
288 *
289 * @param measurements collection of body kinematics measurements with standard
290 * deviations taken at the same position with zero velocity
291 * and unknown different orientations.
292 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
293 * accelerometer and gyroscope.
294 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
295 * to find a solution. This is expressed in meters per squared
296 * second (m/s^2).
297 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
298 * to find a solution. This is expressed in meters per squared
299 * second (m/s^2).
300 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
301 * to find a solution. This is expressed in meters per squared
302 * second (m/s^2).
303 */
304 public KnownPositionAccelerometerCalibrator(
305 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
306 final double initialBiasX, final double initialBiasY, final double initialBiasZ) {
307 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
308 }
309
310 /**
311 * Constructor.
312 *
313 * @param measurements collection of body kinematics measurements with standard
314 * deviations taken at the same position with zero velocity
315 * and unknown different orientations.
316 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
317 * accelerometer and gyroscope.
318 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
319 * to find a solution. This is expressed in meters per squared
320 * second (m/s^2).
321 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
322 * to find a solution. This is expressed in meters per squared
323 * second (m/s^2).
324 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
325 * to find a solution. This is expressed in meters per squared
326 * second (m/s^2).
327 * @param listener listener to handle events raised by this calibrator.
328 */
329 public KnownPositionAccelerometerCalibrator(
330 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
331 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
332 final KnownPositionAccelerometerCalibratorListener listener) {
333 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
334 }
335
336 /**
337 * Constructor.
338 *
339 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
340 * to find a solution.
341 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
342 * to find a solution.
343 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
344 * to find a solution.
345 */
346 public KnownPositionAccelerometerCalibrator(
347 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ) {
348 super(initialBiasX, initialBiasY, initialBiasZ);
349 }
350
351 /**
352 * Constructor.
353 *
354 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
355 * to find a solution.
356 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
357 * to find a solution.
358 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
359 * to find a solution.
360 * @param listener listener to handle events raised by this calibrator.
361 */
362 public KnownPositionAccelerometerCalibrator(
363 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
364 final KnownPositionAccelerometerCalibratorListener listener) {
365 super(initialBiasX, initialBiasY, initialBiasZ, listener);
366 }
367
368 /**
369 * Constructor.
370 *
371 * @param measurements collection of body kinematics measurements with standard
372 * deviations taken at the same position with zero velocity
373 * and unknown different orientations.
374 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
375 * to find a solution.
376 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
377 * to find a solution.
378 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
379 * to find a solution.
380 */
381 public KnownPositionAccelerometerCalibrator(
382 final Collection<StandardDeviationBodyKinematics> measurements,
383 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ) {
384 super(measurements, initialBiasX, initialBiasY, initialBiasZ);
385 }
386
387 /**
388 * Constructor.
389 *
390 * @param measurements collection of body kinematics measurements with standard
391 * deviations taken at the same position with zero velocity
392 * and unknown different orientations.
393 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
394 * to find a solution.
395 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
396 * to find a solution.
397 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
398 * to find a solution.
399 * @param listener listener to handle events raised by this calibrator.
400 */
401 public KnownPositionAccelerometerCalibrator(
402 final Collection<StandardDeviationBodyKinematics> measurements,
403 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
404 final KnownPositionAccelerometerCalibratorListener listener) {
405 super(measurements, initialBiasX, initialBiasY, initialBiasZ, listener);
406 }
407
408 /**
409 * Constructor.
410 *
411 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
412 * accelerometer and gyroscope.
413 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
414 * to find a solution.
415 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
416 * to find a solution.
417 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
418 * to find a solution.
419 */
420 public KnownPositionAccelerometerCalibrator(
421 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
422 final Acceleration initialBiasZ) {
423 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
424 }
425
426 /**
427 * Constructor.
428 *
429 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
430 * accelerometer and gyroscope.
431 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
432 * to find a solution.
433 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
434 * to find a solution.
435 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
436 * to find a solution.
437 * @param listener listener to handle events raised by this calibrator.
438 */
439 public KnownPositionAccelerometerCalibrator(
440 final boolean commonAxisUsed, final Acceleration initialBiasX,
441 final Acceleration initialBiasY, final Acceleration initialBiasZ,
442 final KnownPositionAccelerometerCalibratorListener listener) {
443 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
444 }
445
446 /**
447 * Constructor.
448 *
449 * @param measurements collection of body kinematics measurements with standard
450 * deviations taken at the same position with zero velocity
451 * and unknown different orientations.
452 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
453 * accelerometer and gyroscope.
454 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
455 * to find a solution.
456 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
457 * to find a solution.
458 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
459 * to find a solution.
460 */
461 public KnownPositionAccelerometerCalibrator(
462 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
463 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ) {
464 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
465 }
466
467 /**
468 * Constructor.
469 *
470 * @param measurements collection of body kinematics measurements with standard
471 * deviations taken at the same position with zero velocity
472 * and unknown different orientations.
473 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
474 * accelerometer and gyroscope.
475 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
476 * to find a solution.
477 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
478 * to find a solution.
479 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
480 * to find a solution.
481 * @param listener listener to handle events raised by this calibrator.
482 */
483 public KnownPositionAccelerometerCalibrator(
484 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
485 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
486 final KnownPositionAccelerometerCalibratorListener listener) {
487 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
488 }
489
490 /**
491 * Constructor.
492 *
493 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
494 * to find a solution. This is expressed in meters per squared
495 * second (m/s^2).
496 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
497 * to find a solution. This is expressed in meters per squared
498 * second (m/s^2).
499 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
500 * to find a solution. This is expressed in meters per squared
501 * second (m/s^2).
502 * @param initialSx initial x scaling factor.
503 * @param initialSy initial y scaling factor.
504 * @param initialSz initial z scaling factor.
505 */
506 public KnownPositionAccelerometerCalibrator(
507 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
508 final double initialSx, final double initialSy, final double initialSz) {
509 super(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
510 }
511
512 /**
513 * Constructor.
514 *
515 * @param measurements collection of body kinematics measurements with standard
516 * deviations taken at the same position with zero velocity
517 * and unknown different orientations.
518 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
519 * to find a solution. This is expressed in meters per squared
520 * second (m/s^2).
521 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
522 * to find a solution. This is expressed in meters per squared
523 * second (m/s^2).
524 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
525 * to find a solution. This is expressed in meters per squared
526 * second (m/s^2).
527 * @param initialSx initial x scaling factor.
528 * @param initialSy initial y scaling factor.
529 * @param initialSz initial z scaling factor.
530 */
531 public KnownPositionAccelerometerCalibrator(
532 final Collection<StandardDeviationBodyKinematics> measurements,
533 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
534 final double initialSx, final double initialSy, final double initialSz) {
535 super(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
536 }
537
538 /**
539 * Constructor.
540 *
541 * @param measurements collection of body kinematics measurements with standard
542 * deviations taken at the same position with zero velocity
543 * and unknown different orientations.
544 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
545 * to find a solution. This is expressed in meters per squared
546 * second (m/s^2).
547 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
548 * to find a solution. This is expressed in meters per squared
549 * second (m/s^2).
550 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
551 * to find a solution. This is expressed in meters per squared
552 * second (m/s^2).
553 * @param initialSx initial x scaling factor.
554 * @param initialSy initial y scaling factor.
555 * @param initialSz initial z scaling factor.
556 * @param listener listener to handle events raised by this calibrator.
557 */
558 public KnownPositionAccelerometerCalibrator(
559 final Collection<StandardDeviationBodyKinematics> measurements,
560 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
561 final double initialSx, final double initialSy, final double initialSz,
562 final KnownPositionAccelerometerCalibratorListener listener) {
563 super(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
564 }
565
566 /**
567 * Constructor.
568 *
569 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
570 * accelerometer and gyroscope.
571 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
572 * to find a solution. This is expressed in meters per squared
573 * second (m/s^2).
574 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
575 * to find a solution. This is expressed in meters per squared
576 * second (m/s^2).
577 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
578 * to find a solution. This is expressed in meters per squared
579 * second (m/s^2).
580 * @param initialSx initial x scaling factor.
581 * @param initialSy initial y scaling factor.
582 * @param initialSz initial z scaling factor.
583 */
584 public KnownPositionAccelerometerCalibrator(
585 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
586 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
587 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
588 }
589
590 /**
591 * Constructor.
592 *
593 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
594 * accelerometer and gyroscope.
595 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
596 * to find a solution. This is expressed in meters per squared
597 * second (m/s^2).
598 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
599 * to find a solution. This is expressed in meters per squared
600 * second (m/s^2).
601 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
602 * to find a solution. This is expressed in meters per squared
603 * second (m/s^2).
604 * @param initialSx initial x scaling factor.
605 * @param initialSy initial y scaling factor.
606 * @param initialSz initial z scaling factor.
607 * @param listener listener to handle events raised by this calibrator.
608 */
609 public KnownPositionAccelerometerCalibrator(
610 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
611 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
612 final KnownPositionAccelerometerCalibratorListener listener) {
613 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
614 }
615
616 /**
617 * Constructor.
618 *
619 * @param measurements collection of body kinematics measurements with standard
620 * deviations taken at the same position with zero velocity
621 * and unknown different orientations.
622 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
623 * accelerometer and gyroscope.
624 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
625 * to find a solution. This is expressed in meters per squared
626 * second (m/s^2).
627 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
628 * to find a solution. This is expressed in meters per squared
629 * second (m/s^2).
630 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
631 * to find a solution. This is expressed in meters per squared
632 * second (m/s^2).
633 * @param initialSx initial x scaling factor.
634 * @param initialSy initial y scaling factor.
635 * @param initialSz initial z scaling factor.
636 */
637 public KnownPositionAccelerometerCalibrator(
638 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
639 final double initialBiasX, final double initialBiasY, final double initialBiasZ, final double initialSx,
640 final double initialSy, final double initialSz) {
641 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
642 }
643
644 /**
645 * Constructor.
646 *
647 * @param measurements collection of body kinematics measurements with standard
648 * deviations taken at the same position with zero velocity
649 * and unknown different orientations.
650 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
651 * accelerometer and gyroscope.
652 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
653 * to find a solution. This is expressed in meters per squared
654 * second (m/s^2).
655 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
656 * to find a solution. This is expressed in meters per squared
657 * second (m/s^2).
658 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
659 * to find a solution. This is expressed in meters per squared
660 * second (m/s^2).
661 * @param initialSx initial x scaling factor.
662 * @param initialSy initial y scaling factor.
663 * @param initialSz initial z scaling factor.
664 * @param listener listener to handle events raised by this calibrator.
665 */
666 public KnownPositionAccelerometerCalibrator(
667 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
668 final double initialBiasX, final double initialBiasY, final double initialBiasZ, final double initialSx,
669 final double initialSy, final double initialSz,
670 final KnownPositionAccelerometerCalibratorListener listener) {
671 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
672 initialSx, initialSy, initialSz, listener);
673 }
674
675 /**
676 * Constructor.
677 *
678 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
679 * to find a solution.
680 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
681 * to find a solution.
682 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
683 * to find a solution.
684 * @param initialSx initial x scaling factor.
685 * @param initialSy initial y scaling factor.
686 * @param initialSz initial z scaling factor.
687 */
688 public KnownPositionAccelerometerCalibrator(
689 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
690 final double initialSx, final double initialSy, final double initialSz) {
691 super(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
692 }
693
694 /**
695 * Constructor.
696 *
697 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
698 * to find a solution.
699 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
700 * to find a solution.
701 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
702 * to find a solution.
703 * @param initialSx initial x scaling factor.
704 * @param initialSy initial y scaling factor.
705 * @param initialSz initial z scaling factor.
706 * @param listener listener to handle events raised by this calibrator.
707 */
708 public KnownPositionAccelerometerCalibrator(
709 final Acceleration initialBiasX, final Acceleration initialBiasY,
710 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
711 final KnownPositionAccelerometerCalibratorListener listener) {
712 super(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
713 }
714
715 /**
716 * Constructor.
717 *
718 * @param measurements collection of body kinematics measurements with standard
719 * deviations taken at the same position with zero velocity
720 * and unknown different orientations.
721 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
722 * to find a solution.
723 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
724 * to find a solution.
725 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
726 * to find a solution.
727 * @param initialSx initial x scaling factor.
728 * @param initialSy initial y scaling factor.
729 * @param initialSz initial z scaling factor.
730 */
731 public KnownPositionAccelerometerCalibrator(
732 final Collection<StandardDeviationBodyKinematics> measurements,
733 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
734 final double initialSx, final double initialSy, final double initialSz) {
735 super(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
736 }
737
738 /**
739 * Constructor.
740 *
741 * @param measurements collection of body kinematics measurements with standard
742 * deviations taken at the same position with zero velocity
743 * and unknown different orientations.
744 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
745 * to find a solution.
746 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
747 * to find a solution.
748 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
749 * to find a solution.
750 * @param initialSx initial x scaling factor.
751 * @param initialSy initial y scaling factor.
752 * @param initialSz initial z scaling factor.
753 * @param listener listener to handle events raised by this calibrator.
754 */
755 public KnownPositionAccelerometerCalibrator(
756 final Collection<StandardDeviationBodyKinematics> measurements, final Acceleration initialBiasX,
757 final Acceleration initialBiasY, final Acceleration initialBiasZ, final double initialSx,
758 final double initialSy, final double initialSz,
759 final KnownPositionAccelerometerCalibratorListener listener) {
760 super(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
761 }
762
763 /**
764 * Constructor.
765 *
766 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
767 * accelerometer and gyroscope.
768 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
769 * to find a solution.
770 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
771 * to find a solution.
772 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
773 * to find a solution.
774 * @param initialSx initial x scaling factor.
775 * @param initialSy initial y scaling factor.
776 * @param initialSz initial z scaling factor.
777 */
778 public KnownPositionAccelerometerCalibrator(
779 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
780 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
781 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
782 }
783
784 /**
785 * Constructor.
786 *
787 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
788 * accelerometer and gyroscope.
789 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
790 * to find a solution.
791 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
792 * to find a solution.
793 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
794 * to find a solution.
795 * @param initialSx initial x scaling factor.
796 * @param initialSy initial y scaling factor.
797 * @param initialSz initial z scaling factor.
798 * @param listener listener to handle events raised by this calibrator.
799 */
800 public KnownPositionAccelerometerCalibrator(
801 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
802 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
803 final KnownPositionAccelerometerCalibratorListener listener) {
804 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
805 }
806
807 /**
808 * Constructor.
809 *
810 * @param measurements collection of body kinematics measurements with standard
811 * deviations taken at the same position with zero velocity
812 * and unknown different orientations.
813 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
814 * accelerometer and gyroscope.
815 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
816 * to find a solution.
817 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
818 * to find a solution.
819 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
820 * to find a solution.
821 * @param initialSx initial x scaling factor.
822 * @param initialSy initial y scaling factor.
823 * @param initialSz initial z scaling factor.
824 */
825 public KnownPositionAccelerometerCalibrator(
826 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
827 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
828 final double initialSx, final double initialSy, final double initialSz) {
829 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
830 }
831
832 /**
833 * Constructor.
834 *
835 * @param measurements collection of body kinematics measurements with standard
836 * deviations taken at the same position with zero velocity
837 * and unknown different orientations.
838 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
839 * accelerometer and gyroscope.
840 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
841 * to find a solution.
842 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
843 * to find a solution.
844 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
845 * to find a solution.
846 * @param initialSx initial x scaling factor.
847 * @param initialSy initial y scaling factor.
848 * @param initialSz initial z scaling factor.
849 * @param listener listener to handle events raised by this calibrator.
850 */
851 public KnownPositionAccelerometerCalibrator(
852 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
853 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
854 final double initialSx, final double initialSy, final double initialSz,
855 final KnownPositionAccelerometerCalibratorListener listener) {
856 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
857 initialSx, initialSy, initialSz, listener);
858 }
859
860 /**
861 * Constructor.
862 *
863 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
864 * to find a solution. This is expressed in meters per squared
865 * second (m/s^2).
866 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
867 * to find a solution. This is expressed in meters per squared
868 * second (m/s^2).
869 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
870 * to find a solution. This is expressed in meters per squared
871 * second (m/s^2).
872 * @param initialSx initial x scaling factor.
873 * @param initialSy initial y scaling factor.
874 * @param initialSz initial z scaling factor.
875 * @param initialMxy initial x-y cross coupling error.
876 * @param initialMxz initial x-z cross coupling error.
877 * @param initialMyx initial y-x cross coupling error.
878 * @param initialMyz initial y-z cross coupling error.
879 * @param initialMzx initial z-x cross coupling error.
880 * @param initialMzy initial z-y cross coupling error.
881 */
882 public KnownPositionAccelerometerCalibrator(
883 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
884 final double initialSx, final double initialSy, final double initialSz,
885 final double initialMxy, final double initialMxz, final double initialMyx,
886 final double initialMyz, final double initialMzx, final double initialMzy) {
887 super(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
888 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
889 }
890
891 /**
892 * Constructor.
893 *
894 * @param measurements collection of body kinematics measurements with standard
895 * deviations taken at the same position with zero velocity
896 * and unknown different orientations.
897 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
898 * to find a solution. This is expressed in meters per squared
899 * second (m/s^2).
900 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
901 * to find a solution. This is expressed in meters per squared
902 * second (m/s^2).
903 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
904 * to find a solution. This is expressed in meters per squared
905 * second (m/s^2).
906 * @param initialSx initial x scaling factor.
907 * @param initialSy initial y scaling factor.
908 * @param initialSz initial z scaling factor.
909 * @param initialMxy initial x-y cross coupling error.
910 * @param initialMxz initial x-z cross coupling error.
911 * @param initialMyx initial y-x cross coupling error.
912 * @param initialMyz initial y-z cross coupling error.
913 * @param initialMzx initial z-x cross coupling error.
914 * @param initialMzy initial z-y cross coupling error.
915 */
916 public KnownPositionAccelerometerCalibrator(
917 final Collection<StandardDeviationBodyKinematics> measurements,
918 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
919 final double initialSx, final double initialSy, final double initialSz,
920 final double initialMxy, final double initialMxz, final double initialMyx,
921 final double initialMyz, final double initialMzx, final double initialMzy) {
922 super(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
923 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
924 }
925
926 /**
927 * Constructor.
928 *
929 * @param measurements collection of body kinematics measurements with standard
930 * deviations taken at the same position with zero velocity
931 * and unknown different orientations.
932 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
933 * to find a solution. This is expressed in meters per squared
934 * second (m/s^2).
935 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
936 * to find a solution. This is expressed in meters per squared
937 * second (m/s^2).
938 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
939 * to find a solution. This is expressed in meters per squared
940 * second (m/s^2).
941 * @param initialSx initial x scaling factor.
942 * @param initialSy initial y scaling factor.
943 * @param initialSz initial z scaling factor.
944 * @param initialMxy initial x-y cross coupling error.
945 * @param initialMxz initial x-z cross coupling error.
946 * @param initialMyx initial y-x cross coupling error.
947 * @param initialMyz initial y-z cross coupling error.
948 * @param initialMzx initial z-x cross coupling error.
949 * @param initialMzy initial z-y cross coupling error.
950 * @param listener listener to handle events raised by this calibrator.
951 */
952 public KnownPositionAccelerometerCalibrator(
953 final Collection<StandardDeviationBodyKinematics> measurements,
954 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
955 final double initialSx, final double initialSy, final double initialSz,
956 final double initialMxy, final double initialMxz, final double initialMyx,
957 final double initialMyz, final double initialMzx, final double initialMzy,
958 final KnownPositionAccelerometerCalibratorListener listener) {
959 super(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
960 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
961 }
962
963 /**
964 * Constructor.
965 *
966 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
967 * accelerometer and gyroscope.
968 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
969 * to find a solution. This is expressed in meters per squared
970 * second (m/s^2).
971 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
972 * to find a solution. This is expressed in meters per squared
973 * second (m/s^2).
974 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
975 * to find a solution. This is expressed in meters per squared
976 * second (m/s^2).
977 * @param initialSx initial x scaling factor.
978 * @param initialSy initial y scaling factor.
979 * @param initialSz initial z scaling factor.
980 * @param initialMxy initial x-y cross coupling error.
981 * @param initialMxz initial x-z cross coupling error.
982 * @param initialMyx initial y-x cross coupling error.
983 * @param initialMyz initial y-z cross coupling error.
984 * @param initialMzx initial z-x cross coupling error.
985 * @param initialMzy initial z-y cross coupling error.
986 */
987 public KnownPositionAccelerometerCalibrator(
988 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
989 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
990 final double initialMxy, final double initialMxz, final double initialMyx,
991 final double initialMyz, final double initialMzx, final double initialMzy) {
992 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
993 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
994 }
995
996 /**
997 * Constructor.
998 *
999 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1000 * accelerometer and gyroscope.
1001 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1002 * to find a solution. This is expressed in meters per squared
1003 * second (m/s^2).
1004 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1005 * to find a solution. This is expressed in meters per squared
1006 * second (m/s^2).
1007 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1008 * to find a solution. This is expressed in meters per squared
1009 * second (m/s^2).
1010 * @param initialSx initial x scaling factor.
1011 * @param initialSy initial y scaling factor.
1012 * @param initialSz initial z scaling factor.
1013 * @param initialMxy initial x-y cross coupling error.
1014 * @param initialMxz initial x-z cross coupling error.
1015 * @param initialMyx initial y-x cross coupling error.
1016 * @param initialMyz initial y-z cross coupling error.
1017 * @param initialMzx initial z-x cross coupling error.
1018 * @param initialMzy initial z-y cross coupling error.
1019 * @param listener listener to handle events raised by this calibrator.
1020 */
1021 public KnownPositionAccelerometerCalibrator(
1022 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
1023 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
1024 final double initialMxy, final double initialMxz, final double initialMyx,
1025 final double initialMyz, final double initialMzx, final double initialMzy,
1026 final KnownPositionAccelerometerCalibratorListener listener) {
1027 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1028 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
1029 }
1030
1031 /**
1032 * Constructor.
1033 *
1034 * @param measurements collection of body kinematics measurements with standard
1035 * deviations taken at the same position with zero velocity
1036 * and unknown different orientations.
1037 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1038 * accelerometer and gyroscope.
1039 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1040 * to find a solution. This is expressed in meters per squared
1041 * second (m/s^2).
1042 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1043 * to find a solution. This is expressed in meters per squared
1044 * second (m/s^2).
1045 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1046 * to find a solution. This is expressed in meters per squared
1047 * second (m/s^2).
1048 * @param initialSx initial x scaling factor.
1049 * @param initialSy initial y scaling factor.
1050 * @param initialSz initial z scaling factor.
1051 * @param initialMxy initial x-y cross coupling error.
1052 * @param initialMxz initial x-z cross coupling error.
1053 * @param initialMyx initial y-x cross coupling error.
1054 * @param initialMyz initial y-z cross coupling error.
1055 * @param initialMzx initial z-x cross coupling error.
1056 * @param initialMzy initial z-y cross coupling error.
1057 */
1058 public KnownPositionAccelerometerCalibrator(
1059 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
1060 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
1061 final double initialSx, final double initialSy, final double initialSz,
1062 final double initialMxy, final double initialMxz, final double initialMyx,
1063 final double initialMyz, final double initialMzx, final double initialMzy) {
1064 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1065 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
1066 }
1067
1068 /**
1069 * Constructor.
1070 *
1071 * @param measurements collection of body kinematics measurements with standard
1072 * deviations taken at the same position with zero velocity
1073 * and unknown different orientations.
1074 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1075 * accelerometer and gyroscope.
1076 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1077 * to find a solution. This is expressed in meters per squared
1078 * second (m/s^2).
1079 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1080 * to find a solution. This is expressed in meters per squared
1081 * second (m/s^2).
1082 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1083 * to find a solution. This is expressed in meters per squared
1084 * second (m/s^2).
1085 * @param initialSx initial x scaling factor.
1086 * @param initialSy initial y scaling factor.
1087 * @param initialSz initial z scaling factor.
1088 * @param initialMxy initial x-y cross coupling error.
1089 * @param initialMxz initial x-z cross coupling error.
1090 * @param initialMyx initial y-x cross coupling error.
1091 * @param initialMyz initial y-z cross coupling error.
1092 * @param initialMzx initial z-x cross coupling error.
1093 * @param initialMzy initial z-y cross coupling error.
1094 * @param listener listener to handle events raised by this calibrator.
1095 */
1096 public KnownPositionAccelerometerCalibrator(
1097 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
1098 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
1099 final double initialSx, final double initialSy, final double initialSz,
1100 final double initialMxy, final double initialMxz, final double initialMyx,
1101 final double initialMyz, final double initialMzx, final double initialMzy,
1102 final KnownPositionAccelerometerCalibratorListener listener) {
1103 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1104 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
1105 }
1106
1107 /**
1108 * Constructor.
1109 *
1110 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1111 * to find a solution.
1112 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1113 * to find a solution.
1114 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1115 * to find a solution.
1116 * @param initialSx initial x scaling factor.
1117 * @param initialSy initial y scaling factor.
1118 * @param initialSz initial z scaling factor.
1119 * @param initialMxy initial x-y cross coupling error.
1120 * @param initialMxz initial x-z cross coupling error.
1121 * @param initialMyx initial y-x cross coupling error.
1122 * @param initialMyz initial y-z cross coupling error.
1123 * @param initialMzx initial z-x cross coupling error.
1124 * @param initialMzy initial z-y cross coupling error.
1125 */
1126 public KnownPositionAccelerometerCalibrator(
1127 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
1128 final double initialSx, final double initialSy, final double initialSz,
1129 final double initialMxy, final double initialMxz, final double initialMyx,
1130 final double initialMyz, final double initialMzx, final double initialMzy) {
1131 super(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1132 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
1133 }
1134
1135 /**
1136 * Constructor.
1137 *
1138 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1139 * to find a solution.
1140 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1141 * to find a solution.
1142 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1143 * to find a solution.
1144 * @param initialSx initial x scaling factor.
1145 * @param initialSy initial y scaling factor.
1146 * @param initialSz initial z scaling factor.
1147 * @param initialMxy initial x-y cross coupling error.
1148 * @param initialMxz initial x-z cross coupling error.
1149 * @param initialMyx initial y-x cross coupling error.
1150 * @param initialMyz initial y-z cross coupling error.
1151 * @param initialMzx initial z-x cross coupling error.
1152 * @param initialMzy initial z-y cross coupling error.
1153 * @param listener listener to handle events raised by this calibrator.
1154 */
1155 public KnownPositionAccelerometerCalibrator(
1156 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
1157 final double initialSx, final double initialSy, final double initialSz,
1158 final double initialMxy, final double initialMxz, final double initialMyx, final double initialMyz,
1159 final double initialMzx, final double initialMzy,
1160 final KnownPositionAccelerometerCalibratorListener listener) {
1161 super(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1162 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
1163 }
1164
1165 /**
1166 * Constructor.
1167 *
1168 * @param measurements collection of body kinematics measurements with standard
1169 * deviations taken at the same position with zero velocity
1170 * and unknown different orientations.
1171 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1172 * to find a solution.
1173 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1174 * to find a solution.
1175 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1176 * to find a solution.
1177 * @param initialSx initial x scaling factor.
1178 * @param initialSy initial y scaling factor.
1179 * @param initialSz initial z scaling factor.
1180 * @param initialMxy initial x-y cross coupling error.
1181 * @param initialMxz initial x-z cross coupling error.
1182 * @param initialMyx initial y-x cross coupling error.
1183 * @param initialMyz initial y-z cross coupling error.
1184 * @param initialMzx initial z-x cross coupling error.
1185 * @param initialMzy initial z-y cross coupling error.
1186 */
1187 public KnownPositionAccelerometerCalibrator(
1188 final Collection<StandardDeviationBodyKinematics> measurements,
1189 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
1190 final double initialSx, final double initialSy, final double initialSz,
1191 final double initialMxy, final double initialMxz, final double initialMyx,
1192 final double initialMyz, final double initialMzx, final double initialMzy) {
1193 super(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1194 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
1195 }
1196
1197 /**
1198 * Constructor.
1199 *
1200 * @param measurements collection of body kinematics measurements with standard
1201 * deviations taken at the same position with zero velocity
1202 * and unknown different orientations.
1203 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1204 * to find a solution.
1205 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1206 * to find a solution.
1207 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1208 * to find a solution.
1209 * @param initialSx initial x scaling factor.
1210 * @param initialSy initial y scaling factor.
1211 * @param initialSz initial z scaling factor.
1212 * @param initialMxy initial x-y cross coupling error.
1213 * @param initialMxz initial x-z cross coupling error.
1214 * @param initialMyx initial y-x cross coupling error.
1215 * @param initialMyz initial y-z cross coupling error.
1216 * @param initialMzx initial z-x cross coupling error.
1217 * @param initialMzy initial z-y cross coupling error.
1218 * @param listener listener to handle events raised by this calibrator.
1219 */
1220 public KnownPositionAccelerometerCalibrator(
1221 final Collection<StandardDeviationBodyKinematics> measurements,
1222 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
1223 final double initialSx, final double initialSy, final double initialSz,
1224 final double initialMxy, final double initialMxz, final double initialMyx,
1225 final double initialMyz, final double initialMzx, final double initialMzy,
1226 final KnownPositionAccelerometerCalibratorListener listener) {
1227 super(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1228 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
1229 }
1230
1231 /**
1232 * Constructor.
1233 *
1234 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1235 * accelerometer and gyroscope.
1236 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1237 * to find a solution.
1238 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1239 * to find a solution.
1240 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1241 * to find a solution.
1242 * @param initialSx initial x scaling factor.
1243 * @param initialSy initial y scaling factor.
1244 * @param initialSz initial z scaling factor.
1245 * @param initialMxy initial x-y cross coupling error.
1246 * @param initialMxz initial x-z cross coupling error.
1247 * @param initialMyx initial y-x cross coupling error.
1248 * @param initialMyz initial y-z cross coupling error.
1249 * @param initialMzx initial z-x cross coupling error.
1250 * @param initialMzy initial z-y cross coupling error.
1251 */
1252 public KnownPositionAccelerometerCalibrator(
1253 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
1254 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
1255 final double initialMxy, final double initialMxz, final double initialMyx,
1256 final double initialMyz, final double initialMzx, final double initialMzy) {
1257 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1258 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
1259 }
1260
1261 /**
1262 * Constructor.
1263 *
1264 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1265 * accelerometer and gyroscope.
1266 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1267 * to find a solution.
1268 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1269 * to find a solution.
1270 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1271 * to find a solution.
1272 * @param initialSx initial x scaling factor.
1273 * @param initialSy initial y scaling factor.
1274 * @param initialSz initial z scaling factor.
1275 * @param initialMxy initial x-y cross coupling error.
1276 * @param initialMxz initial x-z cross coupling error.
1277 * @param initialMyx initial y-x cross coupling error.
1278 * @param initialMyz initial y-z cross coupling error.
1279 * @param initialMzx initial z-x cross coupling error.
1280 * @param initialMzy initial z-y cross coupling error.
1281 * @param listener listener to handle events raised by this calibrator.
1282 */
1283 public KnownPositionAccelerometerCalibrator(
1284 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
1285 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
1286 final double initialMxy, final double initialMxz, final double initialMyx,
1287 final double initialMyz, final double initialMzx, final double initialMzy,
1288 final KnownPositionAccelerometerCalibratorListener listener) {
1289 super(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1290 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
1291 }
1292
1293 /**
1294 * Constructor.
1295 *
1296 * @param measurements collection of body kinematics measurements with standard
1297 * deviations taken at the same position with zero velocity
1298 * and unknown different orientations.
1299 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1300 * accelerometer and gyroscope.
1301 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1302 * to find a solution.
1303 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1304 * to find a solution.
1305 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1306 * to find a solution.
1307 * @param initialSx initial x scaling factor.
1308 * @param initialSy initial y scaling factor.
1309 * @param initialSz initial z scaling factor.
1310 * @param initialMxy initial x-y cross coupling error.
1311 * @param initialMxz initial x-z cross coupling error.
1312 * @param initialMyx initial y-x cross coupling error.
1313 * @param initialMyz initial y-z cross coupling error.
1314 * @param initialMzx initial z-x cross coupling error.
1315 * @param initialMzy initial z-y cross coupling error.
1316 */
1317 public KnownPositionAccelerometerCalibrator(
1318 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
1319 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
1320 final double initialSx, final double initialSy, final double initialSz,
1321 final double initialMxy, final double initialMxz, final double initialMyx,
1322 final double initialMyz, final double initialMzx, final double initialMzy) {
1323 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1324 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
1325 }
1326
1327 /**
1328 * Constructor.
1329 *
1330 * @param measurements collection of body kinematics measurements with standard
1331 * deviations taken at the same position with zero velocity
1332 * and unknown different orientations.
1333 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1334 * accelerometer and gyroscope.
1335 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1336 * to find a solution.
1337 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1338 * to find a solution.
1339 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1340 * to find a solution.
1341 * @param initialSx initial x scaling factor.
1342 * @param initialSy initial y scaling factor.
1343 * @param initialSz initial z scaling factor.
1344 * @param initialMxy initial x-y cross coupling error.
1345 * @param initialMxz initial x-z cross coupling error.
1346 * @param initialMyx initial y-x cross coupling error.
1347 * @param initialMyz initial y-z cross coupling error.
1348 * @param initialMzx initial z-x cross coupling error.
1349 * @param initialMzy initial z-y cross coupling error.
1350 * @param listener listener to handle events raised by this calibrator.
1351 */
1352 public KnownPositionAccelerometerCalibrator(
1353 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
1354 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
1355 final double initialSx, final double initialSy, final double initialSz,
1356 final double initialMxy, final double initialMxz, final double initialMyx,
1357 final double initialMyz, final double initialMzx, final double initialMzy,
1358 final KnownPositionAccelerometerCalibratorListener listener) {
1359 super(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
1360 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
1361 }
1362
1363 /**
1364 * Constructor.
1365 *
1366 * @param initialBias initial accelerometer bias to be used to find a solution.
1367 * This must have length 3 and is expressed in meters per
1368 * squared second (m/s^2).
1369 * @throws IllegalArgumentException if provided bias array does not have length 3.
1370 */
1371 public KnownPositionAccelerometerCalibrator(final double[] initialBias) {
1372 super(initialBias);
1373 }
1374
1375 /**
1376 * Constructor.
1377 *
1378 * @param initialBias initial accelerometer bias to be used to find a solution.
1379 * This must have length 3 and is expressed in meters per
1380 * squared second (m/s^2).
1381 * @param listener listener to handle events raised by this calibrator.
1382 * @throws IllegalArgumentException if provided bias array does not have length 3.
1383 */
1384 public KnownPositionAccelerometerCalibrator(
1385 final double[] initialBias, final KnownPositionAccelerometerCalibratorListener listener) {
1386 super(initialBias, listener);
1387 }
1388
1389 /**
1390 * Constructor.
1391 *
1392 * @param measurements collection of body kinematics measurements with standard
1393 * deviations taken at the same position with zero velocity
1394 * and unknown different orientations.
1395 * @param initialBias initial accelerometer bias to be used to find a solution.
1396 * This must have length 3 and is expressed in meters per
1397 * squared second (m/s^2).
1398 * @throws IllegalArgumentException if provided bias array does not have length 3.
1399 */
1400 public KnownPositionAccelerometerCalibrator(
1401 final Collection<StandardDeviationBodyKinematics> measurements, final double[] initialBias) {
1402 super(measurements, initialBias);
1403 }
1404
1405 /**
1406 * Constructor.
1407 *
1408 * @param measurements collection of body kinematics measurements with standard
1409 * deviations taken at the same position with zero velocity
1410 * and unknown different orientations.
1411 * @param initialBias initial accelerometer bias to be used to find a solution.
1412 * This must have length 3 and is expressed in meters per
1413 * squared second (m/s^2).
1414 * @param listener listener to handle events raised by this calibrator.
1415 * @throws IllegalArgumentException if provided bias array does not have length 3.
1416 */
1417 public KnownPositionAccelerometerCalibrator(
1418 final Collection<StandardDeviationBodyKinematics> measurements, final double[] initialBias,
1419 final KnownPositionAccelerometerCalibratorListener listener) {
1420 super(measurements, initialBias, listener);
1421 }
1422
1423 /**
1424 * Constructor.
1425 *
1426 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1427 * accelerometer and gyroscope.
1428 * @param initialBias initial accelerometer bias to be used to find a solution.
1429 * This must have length 3 and is expressed in meters per
1430 * squared second (m/s^2).
1431 * @throws IllegalArgumentException if provided bias array does not have length 3.
1432 */
1433 public KnownPositionAccelerometerCalibrator(final boolean commonAxisUsed, final double[] initialBias) {
1434 super(commonAxisUsed, initialBias);
1435 }
1436
1437 /**
1438 * Constructor.
1439 *
1440 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1441 * accelerometer and gyroscope.
1442 * @param initialBias initial accelerometer bias to be used to find a solution.
1443 * This must have length 3 and is expressed in meters per
1444 * squared second (m/s^2).
1445 * @param listener listener to handle events raised by this calibrator.
1446 * @throws IllegalArgumentException if provided bias array does not have length 3.
1447 */
1448 public KnownPositionAccelerometerCalibrator(
1449 final boolean commonAxisUsed, final double[] initialBias,
1450 final KnownPositionAccelerometerCalibratorListener listener) {
1451 super(commonAxisUsed, initialBias, listener);
1452 }
1453
1454 /**
1455 * Constructor.
1456 *
1457 * @param measurements collection of body kinematics measurements with standard
1458 * deviations taken at the same position with zero velocity
1459 * and unknown different orientations.
1460 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1461 * accelerometer and gyroscope.
1462 * @param initialBias initial accelerometer bias to be used to find a solution.
1463 * This must have length 3 and is expressed in meters per
1464 * squared second (m/s^2).
1465 * @throws IllegalArgumentException if provided bias array does not have length 3.
1466 */
1467 public KnownPositionAccelerometerCalibrator(
1468 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
1469 final double[] initialBias) {
1470 super(measurements, commonAxisUsed, initialBias);
1471 }
1472
1473 /**
1474 * Constructor.
1475 *
1476 * @param measurements collection of body kinematics measurements with standard
1477 * deviations taken at the same position with zero velocity
1478 * and unknown different orientations.
1479 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1480 * accelerometer and gyroscope.
1481 * @param initialBias initial accelerometer bias to be used to find a solution.
1482 * This must have length 3 and is expressed in meters per
1483 * squared second (m/s^2).
1484 * @param listener listener to handle events raised by this calibrator.
1485 * @throws IllegalArgumentException if provided bias array does not have length 3.
1486 */
1487 public KnownPositionAccelerometerCalibrator(
1488 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
1489 final double[] initialBias, final KnownPositionAccelerometerCalibratorListener listener) {
1490 super(measurements, commonAxisUsed, initialBias, listener);
1491 }
1492
1493 /**
1494 * Constructor.
1495 *
1496 * @param initialBias initial bias to find a solution.
1497 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
1498 */
1499 public KnownPositionAccelerometerCalibrator(final Matrix initialBias) {
1500 super(initialBias);
1501 }
1502
1503 /**
1504 * Constructor.
1505 *
1506 * @param initialBias initial bias to find a solution.
1507 * @param listener listener to handle events raised by this calibrator.
1508 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
1509 */
1510 public KnownPositionAccelerometerCalibrator(
1511 final Matrix initialBias, final KnownPositionAccelerometerCalibratorListener listener) {
1512 super(initialBias, listener);
1513 }
1514
1515 /**
1516 * Constructor.
1517 *
1518 * @param measurements collection of body kinematics measurements with standard
1519 * deviations taken at the same position with zero velocity
1520 * and unknown different orientations.
1521 * @param initialBias initial bias to find a solution.
1522 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
1523 */
1524 public KnownPositionAccelerometerCalibrator(
1525 final Collection<StandardDeviationBodyKinematics> measurements, final Matrix initialBias) {
1526 super(measurements, initialBias);
1527 }
1528
1529 /**
1530 * Constructor.
1531 *
1532 * @param measurements collection of body kinematics measurements with standard
1533 * deviations taken at the same position with zero velocity
1534 * and unknown different orientations.
1535 * @param initialBias initial bias to find a solution.
1536 * @param listener listener to handle events raised by this calibrator.
1537 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
1538 */
1539 public KnownPositionAccelerometerCalibrator(
1540 final Collection<StandardDeviationBodyKinematics> measurements, final Matrix initialBias,
1541 final KnownPositionAccelerometerCalibratorListener listener) {
1542 super(measurements, initialBias, listener);
1543 }
1544
1545 /**
1546 * Constructor.
1547 *
1548 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1549 * accelerometer and gyroscope.
1550 * @param initialBias initial bias to find a solution.
1551 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
1552 */
1553 public KnownPositionAccelerometerCalibrator(final boolean commonAxisUsed, final Matrix initialBias) {
1554 super(commonAxisUsed, initialBias);
1555 }
1556
1557 /**
1558 * Constructor.
1559 *
1560 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1561 * accelerometer and gyroscope.
1562 * @param initialBias initial bias to find a solution.
1563 * @param listener listener to handle events raised by this calibrator.
1564 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
1565 */
1566 public KnownPositionAccelerometerCalibrator(
1567 final boolean commonAxisUsed, final Matrix initialBias,
1568 final KnownPositionAccelerometerCalibratorListener listener) {
1569 super(commonAxisUsed, initialBias, listener);
1570 }
1571
1572 /**
1573 * Constructor.
1574 *
1575 * @param measurements collection of body kinematics measurements with standard
1576 * deviations taken at the same position with zero velocity
1577 * and unknown different orientations.
1578 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1579 * accelerometer and gyroscope.
1580 * @param initialBias initial bias to find a solution.
1581 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
1582 */
1583 public KnownPositionAccelerometerCalibrator(
1584 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
1585 final Matrix initialBias) {
1586 super(measurements, commonAxisUsed, initialBias);
1587 }
1588
1589 /**
1590 * Constructor.
1591 *
1592 * @param measurements collection of body kinematics measurements with standard
1593 * deviations taken at the same position with zero velocity
1594 * and unknown different orientations.
1595 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1596 * accelerometer and gyroscope.
1597 * @param initialBias initial bias to find a solution.
1598 * @param listener listener to handle events raised by this calibrator.
1599 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
1600 */
1601 public KnownPositionAccelerometerCalibrator(
1602 final Collection<StandardDeviationBodyKinematics> measurements, final boolean commonAxisUsed,
1603 final Matrix initialBias, final KnownPositionAccelerometerCalibratorListener listener) {
1604 super(measurements, commonAxisUsed, initialBias, listener);
1605 }
1606
1607 /**
1608 * Constructor.
1609 *
1610 * @param initialBias initial bias to find a solution.
1611 * @param initialMa initial scale factors and cross coupling errors matrix.
1612 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
1613 * scaling and coupling error matrix is not 3x3.
1614 */
1615 public KnownPositionAccelerometerCalibrator(final Matrix initialBias, final Matrix initialMa) {
1616 super(initialBias, initialMa);
1617 }
1618
1619 /**
1620 * Constructor.
1621 *
1622 * @param initialBias initial bias to find a solution.
1623 * @param initialMa initial scale factors and cross coupling errors matrix.
1624 * @param listener listener to handle events raised by this calibrator.
1625 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
1626 * scaling and coupling error matrix is not 3x3.
1627 */
1628 public KnownPositionAccelerometerCalibrator(
1629 final Matrix initialBias, final Matrix initialMa,
1630 final KnownPositionAccelerometerCalibratorListener listener) {
1631 super(initialBias, initialMa, listener);
1632 }
1633
1634 /**
1635 * Constructor.
1636 *
1637 * @param measurements collection of body kinematics measurements with standard
1638 * deviations taken at the same position with zero velocity
1639 * and unknown different orientations.
1640 * @param initialBias initial bias to find a solution.
1641 * @param initialMa initial scale factors and cross coupling errors matrix.
1642 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
1643 * scaling and coupling error matrix is not 3x3.
1644 */
1645 public KnownPositionAccelerometerCalibrator(
1646 final Collection<StandardDeviationBodyKinematics> measurements,
1647 final Matrix initialBias, final Matrix initialMa) {
1648 super(measurements, initialBias, initialMa);
1649 }
1650
1651 /**
1652 * Constructor.
1653 *
1654 * @param measurements collection of body kinematics measurements with standard
1655 * deviations taken at the same position with zero velocity
1656 * and unknown different orientations.
1657 * @param initialBias initial bias to find a solution.
1658 * @param initialMa initial scale factors and cross coupling errors matrix.
1659 * @param listener listener to handle events raised by this calibrator.
1660 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
1661 * scaling and coupling error matrix is not 3x3.
1662 */
1663 public KnownPositionAccelerometerCalibrator(
1664 final Collection<StandardDeviationBodyKinematics> measurements,
1665 final Matrix initialBias, final Matrix initialMa,
1666 final KnownPositionAccelerometerCalibratorListener listener) {
1667 super(measurements, initialBias, initialMa, listener);
1668 }
1669
1670 /**
1671 * Constructor.
1672 *
1673 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1674 * accelerometer and gyroscope.
1675 * @param initialBias initial bias to find a solution.
1676 * @param initialMa initial scale factors and cross coupling errors matrix.
1677 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
1678 * scaling and coupling error matrix is not 3x3.
1679 */
1680 public KnownPositionAccelerometerCalibrator(
1681 final boolean commonAxisUsed, final Matrix initialBias, final Matrix initialMa) {
1682 super(commonAxisUsed, initialBias, initialMa);
1683 }
1684
1685 /**
1686 * Constructor.
1687 *
1688 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1689 * accelerometer and gyroscope.
1690 * @param initialBias initial bias to find a solution.
1691 * @param initialMa initial scale factors and cross coupling errors matrix.
1692 * @param listener listener to handle events raised by this calibrator.
1693 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
1694 * scaling and coupling error matrix is not 3x3.
1695 */
1696 public KnownPositionAccelerometerCalibrator(
1697 final boolean commonAxisUsed, final Matrix initialBias, final Matrix initialMa,
1698 final KnownPositionAccelerometerCalibratorListener listener) {
1699 super(commonAxisUsed, initialBias, initialMa, listener);
1700 }
1701
1702 /**
1703 * Constructor.
1704 *
1705 * @param measurements collection of body kinematics measurements with standard
1706 * deviations taken at the same position with zero velocity
1707 * and unknown different orientations.
1708 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1709 * accelerometer and gyroscope.
1710 * @param initialBias initial bias to find a solution.
1711 * @param initialMa initial scale factors and cross coupling errors matrix.
1712 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
1713 * scaling and coupling error matrix is not 3x3.
1714 */
1715 public KnownPositionAccelerometerCalibrator(
1716 final Collection<StandardDeviationBodyKinematics> measurements,
1717 final boolean commonAxisUsed, final Matrix initialBias, final Matrix initialMa) {
1718 super(measurements, commonAxisUsed, initialBias, initialMa);
1719 }
1720
1721 /**
1722 * Constructor.
1723 *
1724 * @param measurements collection of body kinematics measurements with standard
1725 * deviations taken at the same position with zero velocity
1726 * and unknown different orientations.
1727 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1728 * accelerometer and gyroscope.
1729 * @param initialBias initial bias to find a solution.
1730 * @param initialMa initial scale factors and cross coupling errors matrix.
1731 * @param listener listener to handle events raised by this calibrator.
1732 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
1733 * scaling and coupling error matrix is not 3x3.
1734 */
1735 public KnownPositionAccelerometerCalibrator(
1736 final Collection<StandardDeviationBodyKinematics> measurements,
1737 final boolean commonAxisUsed, final Matrix initialBias, final Matrix initialMa,
1738 final KnownPositionAccelerometerCalibratorListener listener) {
1739 super(measurements, commonAxisUsed, initialBias, initialMa, listener);
1740 }
1741
1742 /**
1743 * Constructor.
1744 *
1745 * @param position position where body kinematics measures have been taken.
1746 */
1747 public KnownPositionAccelerometerCalibrator(final ECEFPosition position) {
1748 try {
1749 setPosition(position);
1750 } catch (final LockedException ignore) {
1751 // never happens
1752 }
1753 }
1754
1755 /**
1756 * Constructor.
1757 *
1758 * @param position position where body kinematics measures have been taken.
1759 * @param listener listener to handle events raised by this calibrator.
1760 */
1761 public KnownPositionAccelerometerCalibrator(
1762 final ECEFPosition position, final KnownPositionAccelerometerCalibratorListener listener) {
1763 this(position);
1764 try {
1765 setListener(listener);
1766 } catch (final LockedException ignore) {
1767 // never happens
1768 }
1769 }
1770
1771 /**
1772 * Constructor.
1773 *
1774 * @param position position where body kinematics measures have been taken.
1775 * @param measurements collection of body kinematics measurements with standard
1776 * deviations taken at the same position with zero velocity
1777 * and unknown different orientations.
1778 */
1779 public KnownPositionAccelerometerCalibrator(
1780 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements) {
1781 this(position);
1782 try {
1783 setMeasurements(measurements);
1784 } catch (final LockedException ignore) {
1785 // never happens
1786 }
1787 }
1788
1789 /**
1790 * Constructor.
1791 *
1792 * @param position position where body kinematics measures have been taken.
1793 * @param measurements collection of body kinematics measurements with standard
1794 * deviations taken at the same position with zero velocity
1795 * and unknown different orientations.
1796 * @param listener listener to handle events raised by this calibrator.
1797 */
1798 public KnownPositionAccelerometerCalibrator(
1799 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
1800 final KnownPositionAccelerometerCalibratorListener listener) {
1801 this(measurements, listener);
1802 try {
1803 setPosition(position);
1804 } catch (final LockedException ignore) {
1805 // never happens
1806 }
1807 }
1808
1809 /**
1810 * Constructor.
1811 *
1812 * @param position position where body kinematics measures have been taken.
1813 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1814 * accelerometer and gyroscope.
1815 */
1816 public KnownPositionAccelerometerCalibrator(final ECEFPosition position, final boolean commonAxisUsed) {
1817 this(commonAxisUsed);
1818 try {
1819 setPosition(position);
1820 } catch (final LockedException ignore) {
1821 // never happens
1822 }
1823 }
1824
1825 /**
1826 * Constructor.
1827 *
1828 * @param position position where body kinematics measures have been taken.
1829 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1830 * accelerometer and gyroscope.
1831 * @param listener listener to handle events raised by this calibrator.
1832 */
1833 public KnownPositionAccelerometerCalibrator(
1834 final ECEFPosition position, final boolean commonAxisUsed,
1835 final KnownPositionAccelerometerCalibratorListener listener) {
1836 this(commonAxisUsed, listener);
1837 try {
1838 setPosition(position);
1839 } catch (final LockedException ignore) {
1840 // never happens
1841 }
1842 }
1843
1844 /**
1845 * Constructor.
1846 *
1847 * @param position position where body kinematics measures have been taken.
1848 * @param measurements collection of body kinematics measurements with standard
1849 * deviations taken at the same position with zero velocity
1850 * and unknown different orientations.
1851 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1852 * accelerometer and gyroscope.
1853 */
1854 public KnownPositionAccelerometerCalibrator(
1855 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
1856 final boolean commonAxisUsed) {
1857 this(measurements, commonAxisUsed);
1858 try {
1859 setPosition(position);
1860 } catch (final LockedException ignore) {
1861 // never happens
1862 }
1863 }
1864
1865 /**
1866 * Constructor.
1867 *
1868 * @param position position where body kinematics measures have been taken.
1869 * @param measurements collection of body kinematics measurements with standard
1870 * deviations taken at the same position with zero velocity
1871 * and unknown different orientations.
1872 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
1873 * accelerometer and gyroscope.
1874 * @param listener listener to handle events raised by this calibrator.
1875 */
1876 public KnownPositionAccelerometerCalibrator(
1877 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
1878 final boolean commonAxisUsed, final KnownPositionAccelerometerCalibratorListener listener) {
1879 this(measurements, commonAxisUsed, listener);
1880 try {
1881 setPosition(position);
1882 } catch (final LockedException ignore) {
1883 // never happens
1884 }
1885 }
1886
1887 /**
1888 * Constructor.
1889 *
1890 * @param position position where body kinematics measures have been taken.
1891 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1892 * to find a solution. This is expressed in meters per squared
1893 * second (m/s^2).
1894 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1895 * to find a solution. This is expressed in meters per squared
1896 * second (m/s^2).
1897 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1898 * to find a solution. This is expressed in meters per squared
1899 * second (m/s^2).
1900 */
1901 public KnownPositionAccelerometerCalibrator(
1902 final ECEFPosition position, final double initialBiasX, final double initialBiasY,
1903 final double initialBiasZ) {
1904 this(initialBiasX, initialBiasY, initialBiasZ);
1905 try {
1906 setPosition(position);
1907 } catch (final LockedException ignore) {
1908 // never happens
1909 }
1910 }
1911
1912 /**
1913 * Constructor.
1914 *
1915 * @param position position where body kinematics measures have been taken.
1916 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1917 * to find a solution. This is expressed in meters per squared
1918 * second (m/s^2).
1919 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1920 * to find a solution. This is expressed in meters per squared
1921 * second (m/s^2).
1922 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1923 * to find a solution. This is expressed in meters per squared
1924 * second (m/s^2).
1925 * @param listener listener to handle events raised by this calibrator.
1926 */
1927 public KnownPositionAccelerometerCalibrator(
1928 final ECEFPosition position, final double initialBiasX, final double initialBiasY,
1929 final double initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
1930 this(initialBiasX, initialBiasY, initialBiasZ, listener);
1931 try {
1932 setPosition(position);
1933 } catch (final LockedException ignore) {
1934 // never happens
1935 }
1936 }
1937
1938 /**
1939 * Constructor.
1940 *
1941 * @param position position where body kinematics measures have been taken.
1942 * @param measurements collection of body kinematics measurements with standard
1943 * deviations taken at the same position with zero velocity
1944 * and unknown different orientations.
1945 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1946 * to find a solution. This is expressed in meters per squared
1947 * second (m/s^2).
1948 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1949 * to find a solution. This is expressed in meters per squared
1950 * second (m/s^2).
1951 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1952 * to find a solution. This is expressed in meters per squared
1953 * second (m/s^2).
1954 */
1955 public KnownPositionAccelerometerCalibrator(
1956 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
1957 final double initialBiasX, final double initialBiasY, final double initialBiasZ) {
1958 this(measurements, initialBiasX, initialBiasY, initialBiasZ);
1959 try {
1960 setPosition(position);
1961 } catch (final LockedException ignore) {
1962 // never happens
1963 }
1964 }
1965
1966 /**
1967 * Constructor.
1968 *
1969 * @param position position where body kinematics measures have been taken.
1970 * @param measurements collection of body kinematics measurements with standard
1971 * deviations taken at the same position with zero velocity
1972 * and unknown different orientations.
1973 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
1974 * to find a solution. This is expressed in meters per squared
1975 * second (m/s^2).
1976 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
1977 * to find a solution. This is expressed in meters per squared
1978 * second (m/s^2).
1979 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
1980 * to find a solution. This is expressed in meters per squared
1981 * second (m/s^2).
1982 * @param listener listener to handle events raised by this calibrator.
1983 */
1984 public KnownPositionAccelerometerCalibrator(
1985 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
1986 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
1987 final KnownPositionAccelerometerCalibratorListener listener) {
1988 this(measurements, initialBiasX, initialBiasY, initialBiasZ, listener);
1989 try {
1990 setPosition(position);
1991 } catch (final LockedException ignore) {
1992 // never happens
1993 }
1994 }
1995
1996 /**
1997 * Constructor.
1998 *
1999 * @param position position where body kinematics measures have been taken.
2000 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2001 * accelerometer and gyroscope.
2002 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2003 * to find a solution. This is expressed in meters per squared
2004 * second (m/s^2).
2005 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2006 * to find a solution. This is expressed in meters per squared
2007 * second (m/s^2).
2008 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2009 * to find a solution. This is expressed in meters per squared
2010 * second (m/s^2).
2011 */
2012 public KnownPositionAccelerometerCalibrator(
2013 final ECEFPosition position, final boolean commonAxisUsed,
2014 final double initialBiasX, final double initialBiasY, final double initialBiasZ) {
2015 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
2016 try {
2017 setPosition(position);
2018 } catch (final LockedException ignore) {
2019 // never happens
2020 }
2021 }
2022
2023 /**
2024 * Constructor.
2025 *
2026 * @param position position where body kinematics measures have been taken.
2027 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2028 * accelerometer and gyroscope.
2029 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2030 * to find a solution. This is expressed in meters per squared
2031 * second (m/s^2).
2032 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2033 * to find a solution. This is expressed in meters per squared
2034 * second (m/s^2).
2035 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2036 * to find a solution. This is expressed in meters per squared
2037 * second (m/s^2).
2038 * @param listener listener to handle events raised by this calibrator.
2039 */
2040 public KnownPositionAccelerometerCalibrator(
2041 final ECEFPosition position, final boolean commonAxisUsed,
2042 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
2043 final KnownPositionAccelerometerCalibratorListener listener) {
2044 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
2045 try {
2046 setPosition(position);
2047 } catch (final LockedException ignore) {
2048 // never happens
2049 }
2050 }
2051
2052 /**
2053 * Constructor.
2054 *
2055 * @param position position where body kinematics measures have been taken.
2056 * @param measurements collection of body kinematics measurements with standard
2057 * deviations taken at the same position with zero velocity
2058 * and unknown different orientations.
2059 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2060 * accelerometer and gyroscope.
2061 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2062 * to find a solution. This is expressed in meters per squared
2063 * second (m/s^2).
2064 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2065 * to find a solution. This is expressed in meters per squared
2066 * second (m/s^2).
2067 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2068 * to find a solution. This is expressed in meters per squared
2069 * second (m/s^2).
2070 */
2071 public KnownPositionAccelerometerCalibrator(
2072 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2073 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
2074 final double initialBiasZ) {
2075 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
2076 try {
2077 setPosition(position);
2078 } catch (final LockedException ignore) {
2079 // never happens
2080 }
2081 }
2082
2083 /**
2084 * Constructor.
2085 *
2086 * @param position position where body kinematics measures have been taken.
2087 * @param measurements collection of body kinematics measurements with standard
2088 * deviations taken at the same position with zero velocity
2089 * and unknown different orientations.
2090 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2091 * accelerometer and gyroscope.
2092 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2093 * to find a solution. This is expressed in meters per squared
2094 * second (m/s^2).
2095 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2096 * to find a solution. This is expressed in meters per squared
2097 * second (m/s^2).
2098 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2099 * to find a solution. This is expressed in meters per squared
2100 * second (m/s^2).
2101 * @param listener listener to handle events raised by this calibrator.
2102 */
2103 public KnownPositionAccelerometerCalibrator(
2104 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2105 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
2106 final double initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
2107 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
2108 try {
2109 setPosition(position);
2110 } catch (final LockedException ignore) {
2111 // never happens
2112 }
2113 }
2114
2115 /**
2116 * Constructor.
2117 *
2118 * @param position position where body kinematics measures have been taken.
2119 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2120 * to find a solution.
2121 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2122 * to find a solution.
2123 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2124 * to find a solution.
2125 */
2126 public KnownPositionAccelerometerCalibrator(
2127 final ECEFPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
2128 final Acceleration initialBiasZ) {
2129 this(initialBiasX, initialBiasY, initialBiasZ);
2130 try {
2131 setPosition(position);
2132 } catch (final LockedException ignore) {
2133 // never happens
2134 }
2135 }
2136
2137 /**
2138 * Constructor.
2139 *
2140 * @param position position where body kinematics measures have been taken.
2141 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2142 * to find a solution.
2143 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2144 * to find a solution.
2145 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2146 * to find a solution.
2147 * @param listener listener to handle events raised by this calibrator.
2148 */
2149 public KnownPositionAccelerometerCalibrator(
2150 final ECEFPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
2151 final Acceleration initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
2152 this(initialBiasX, initialBiasY, initialBiasZ, listener);
2153 try {
2154 setPosition(position);
2155 } catch (final LockedException ignore) {
2156 // never happens
2157 }
2158 }
2159
2160 /**
2161 * Constructor.
2162 *
2163 * @param position position where body kinematics measures have been taken.
2164 * @param measurements collection of body kinematics measurements with standard
2165 * deviations taken at the same position with zero velocity
2166 * and unknown different orientations.
2167 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2168 * to find a solution.
2169 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2170 * to find a solution.
2171 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2172 * to find a solution.
2173 */
2174 public KnownPositionAccelerometerCalibrator(
2175 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2176 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ) {
2177 this(measurements, initialBiasX, initialBiasY, initialBiasZ);
2178 try {
2179 setPosition(position);
2180 } catch (final LockedException ignore) {
2181 // never happens
2182 }
2183 }
2184
2185 /**
2186 * Constructor.
2187 *
2188 * @param position position where body kinematics measures have been taken.
2189 * @param measurements collection of body kinematics measurements with standard
2190 * deviations taken at the same position with zero velocity
2191 * and unknown different orientations.
2192 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2193 * to find a solution.
2194 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2195 * to find a solution.
2196 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2197 * to find a solution.
2198 * @param listener listener to handle events raised by this calibrator.
2199 */
2200 public KnownPositionAccelerometerCalibrator(
2201 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2202 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
2203 final KnownPositionAccelerometerCalibratorListener listener) {
2204 this(measurements, initialBiasX, initialBiasY, initialBiasZ, listener);
2205 try {
2206 setPosition(position);
2207 } catch (final LockedException ignore) {
2208 // never happens
2209 }
2210 }
2211
2212 /**
2213 * Constructor.
2214 *
2215 * @param position position where body kinematics measures have been taken.
2216 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2217 * accelerometer and gyroscope.
2218 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2219 * to find a solution.
2220 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2221 * to find a solution.
2222 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2223 * to find a solution.
2224 */
2225 public KnownPositionAccelerometerCalibrator(
2226 final ECEFPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
2227 final Acceleration initialBiasY, final Acceleration initialBiasZ) {
2228 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
2229 try {
2230 setPosition(position);
2231 } catch (final LockedException ignore) {
2232 // never happens
2233 }
2234 }
2235
2236 /**
2237 * Constructor.
2238 *
2239 * @param position position where body kinematics measures have been taken.
2240 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2241 * accelerometer and gyroscope.
2242 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2243 * to find a solution.
2244 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2245 * to find a solution.
2246 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2247 * to find a solution.
2248 * @param listener listener to handle events raised by this calibrator.
2249 */
2250 public KnownPositionAccelerometerCalibrator(
2251 final ECEFPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
2252 final Acceleration initialBiasY, final Acceleration initialBiasZ,
2253 final KnownPositionAccelerometerCalibratorListener listener) {
2254 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
2255 try {
2256 setPosition(position);
2257 } catch (final LockedException ignore) {
2258 // never happens
2259 }
2260 }
2261
2262 /**
2263 * Constructor.
2264 *
2265 * @param position position where body kinematics measures have been taken.
2266 * @param measurements collection of body kinematics measurements with standard
2267 * deviations taken at the same position with zero velocity
2268 * and unknown different orientations.
2269 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2270 * accelerometer and gyroscope.
2271 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2272 * to find a solution.
2273 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2274 * to find a solution.
2275 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2276 * to find a solution.
2277 */
2278 public KnownPositionAccelerometerCalibrator(
2279 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2280 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
2281 final Acceleration initialBiasZ) {
2282 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
2283 try {
2284 setPosition(position);
2285 } catch (final LockedException ignore) {
2286 // never happens
2287 }
2288 }
2289
2290 /**
2291 * Constructor.
2292 *
2293 * @param position position where body kinematics measures have been taken.
2294 * @param measurements collection of body kinematics measurements with standard
2295 * deviations taken at the same position with zero velocity
2296 * and unknown different orientations.
2297 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2298 * accelerometer and gyroscope.
2299 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2300 * to find a solution.
2301 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2302 * to find a solution.
2303 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2304 * to find a solution.
2305 * @param listener listener to handle events raised by this calibrator.
2306 */
2307 public KnownPositionAccelerometerCalibrator(
2308 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2309 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
2310 final Acceleration initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
2311 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
2312 try {
2313 setPosition(position);
2314 } catch (final LockedException ignore) {
2315 // never happens
2316 }
2317 }
2318
2319 /**
2320 * Constructor.
2321 *
2322 * @param position position where body kinematics measures have been taken.
2323 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2324 * to find a solution. This is expressed in meters per squared
2325 * second (m/s^2).
2326 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2327 * to find a solution. This is expressed in meters per squared
2328 * second (m/s^2).
2329 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2330 * to find a solution. This is expressed in meters per squared
2331 * second (m/s^2).
2332 * @param initialSx initial x scaling factor.
2333 * @param initialSy initial y scaling factor.
2334 * @param initialSz initial z scaling factor.
2335 */
2336 public KnownPositionAccelerometerCalibrator(
2337 final ECEFPosition position, final double initialBiasX, final double initialBiasY,
2338 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
2339 this(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
2340 try {
2341 setPosition(position);
2342 } catch (final LockedException ignore) {
2343 // never happens
2344 }
2345 }
2346
2347 /**
2348 * Constructor.
2349 *
2350 * @param position position where body kinematics measures have been taken.
2351 * @param measurements collection of body kinematics measurements with standard
2352 * deviations taken at the same position with zero velocity
2353 * and unknown different orientations.
2354 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2355 * to find a solution. This is expressed in meters per squared
2356 * second (m/s^2).
2357 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2358 * to find a solution. This is expressed in meters per squared
2359 * second (m/s^2).
2360 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2361 * to find a solution. This is expressed in meters per squared
2362 * second (m/s^2).
2363 * @param initialSx initial x scaling factor.
2364 * @param initialSy initial y scaling factor.
2365 * @param initialSz initial z scaling factor.
2366 */
2367 public KnownPositionAccelerometerCalibrator(
2368 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2369 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
2370 final double initialSx, final double initialSy, final double initialSz) {
2371 this(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
2372 try {
2373 setPosition(position);
2374 } catch (final LockedException ignore) {
2375 // never happens
2376 }
2377 }
2378
2379 /**
2380 * Constructor.
2381 *
2382 * @param position position where body kinematics measures have been taken.
2383 * @param measurements collection of body kinematics measurements with standard
2384 * deviations taken at the same position with zero velocity
2385 * and unknown different orientations.
2386 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2387 * to find a solution. This is expressed in meters per squared
2388 * second (m/s^2).
2389 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2390 * to find a solution. This is expressed in meters per squared
2391 * second (m/s^2).
2392 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2393 * to find a solution. This is expressed in meters per squared
2394 * second (m/s^2).
2395 * @param initialSx initial x scaling factor.
2396 * @param initialSy initial y scaling factor.
2397 * @param initialSz initial z scaling factor.
2398 * @param listener listener to handle events raised by this calibrator.
2399 */
2400 public KnownPositionAccelerometerCalibrator(
2401 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2402 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
2403 final double initialSx, final double initialSy, final double initialSz,
2404 final KnownPositionAccelerometerCalibratorListener listener) {
2405 this(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
2406 try {
2407 setPosition(position);
2408 } catch (final LockedException ignore) {
2409 // never happens
2410 }
2411 }
2412
2413 /**
2414 * Constructor.
2415 *
2416 * @param position position where body kinematics measures have been taken.
2417 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2418 * accelerometer and gyroscope.
2419 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2420 * to find a solution. This is expressed in meters per squared
2421 * second (m/s^2).
2422 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2423 * to find a solution. This is expressed in meters per squared
2424 * second (m/s^2).
2425 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2426 * to find a solution. This is expressed in meters per squared
2427 * second (m/s^2).
2428 * @param initialSx initial x scaling factor.
2429 * @param initialSy initial y scaling factor.
2430 * @param initialSz initial z scaling factor.
2431 */
2432 public KnownPositionAccelerometerCalibrator(
2433 final ECEFPosition position, final boolean commonAxisUsed, final double initialBiasX,
2434 final double initialBiasY, final double initialBiasZ, final double initialSx, final double initialSy,
2435 final double initialSz) {
2436 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
2437 try {
2438 setPosition(position);
2439 } catch (final LockedException ignore) {
2440 // never happens
2441 }
2442 }
2443
2444 /**
2445 * Constructor.
2446 *
2447 * @param position position where body kinematics measures have been taken.
2448 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2449 * accelerometer and gyroscope.
2450 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2451 * to find a solution. This is expressed in meters per squared
2452 * second (m/s^2).
2453 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2454 * to find a solution. This is expressed in meters per squared
2455 * second (m/s^2).
2456 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2457 * to find a solution. This is expressed in meters per squared
2458 * second (m/s^2).
2459 * @param initialSx initial x scaling factor.
2460 * @param initialSy initial y scaling factor.
2461 * @param initialSz initial z scaling factor.
2462 * @param listener listener to handle events raised by this calibrator.
2463 */
2464 public KnownPositionAccelerometerCalibrator(
2465 final ECEFPosition position, final boolean commonAxisUsed, final double initialBiasX,
2466 final double initialBiasY, final double initialBiasZ, final double initialSx, final double initialSy,
2467 final double initialSz, final KnownPositionAccelerometerCalibratorListener listener) {
2468 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
2469 try {
2470 setPosition(position);
2471 } catch (final LockedException ignore) {
2472 // never happens
2473 }
2474 }
2475
2476 /**
2477 * Constructor.
2478 *
2479 * @param position position where body kinematics measures have been taken.
2480 * @param measurements collection of body kinematics measurements with standard
2481 * deviations taken at the same position with zero velocity
2482 * and unknown different orientations.
2483 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2484 * accelerometer and gyroscope.
2485 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2486 * to find a solution. This is expressed in meters per squared
2487 * second (m/s^2).
2488 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2489 * to find a solution. This is expressed in meters per squared
2490 * second (m/s^2).
2491 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2492 * to find a solution. This is expressed in meters per squared
2493 * second (m/s^2).
2494 * @param initialSx initial x scaling factor.
2495 * @param initialSy initial y scaling factor.
2496 * @param initialSz initial z scaling factor.
2497 */
2498 public KnownPositionAccelerometerCalibrator(
2499 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2500 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
2501 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
2502 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
2503 try {
2504 setPosition(position);
2505 } catch (final LockedException ignore) {
2506 // never happens
2507 }
2508 }
2509
2510 /**
2511 * Constructor.
2512 *
2513 * @param position position where body kinematics measures have been taken.
2514 * @param measurements collection of body kinematics measurements with standard
2515 * deviations taken at the same position with zero velocity
2516 * and unknown different orientations.
2517 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2518 * accelerometer and gyroscope.
2519 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2520 * to find a solution. This is expressed in meters per squared
2521 * second (m/s^2).
2522 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2523 * to find a solution. This is expressed in meters per squared
2524 * second (m/s^2).
2525 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2526 * to find a solution. This is expressed in meters per squared
2527 * second (m/s^2).
2528 * @param initialSx initial x scaling factor.
2529 * @param initialSy initial y scaling factor.
2530 * @param initialSz initial z scaling factor.
2531 * @param listener listener to handle events raised by this calibrator.
2532 */
2533 public KnownPositionAccelerometerCalibrator(
2534 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2535 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
2536 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
2537 final KnownPositionAccelerometerCalibratorListener listener) {
2538 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
2539 listener);
2540 try {
2541 setPosition(position);
2542 } catch (final LockedException ignore) {
2543 // never happens
2544 }
2545 }
2546
2547 /**
2548 * Constructor.
2549 *
2550 * @param position position where body kinematics measures have been taken.
2551 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2552 * to find a solution.
2553 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2554 * to find a solution.
2555 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2556 * to find a solution.
2557 * @param initialSx initial x scaling factor.
2558 * @param initialSy initial y scaling factor.
2559 * @param initialSz initial z scaling factor.
2560 */
2561 public KnownPositionAccelerometerCalibrator(
2562 final ECEFPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
2563 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
2564 this(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
2565 try {
2566 setPosition(position);
2567 } catch (final LockedException ignore) {
2568 // never happens
2569 }
2570 }
2571
2572 /**
2573 * Constructor.
2574 *
2575 * @param position position where body kinematics measures have been taken.
2576 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2577 * to find a solution.
2578 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2579 * to find a solution.
2580 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2581 * to find a solution.
2582 * @param initialSx initial x scaling factor.
2583 * @param initialSy initial y scaling factor.
2584 * @param initialSz initial z scaling factor.
2585 * @param listener listener to handle events raised by this calibrator.
2586 */
2587 public KnownPositionAccelerometerCalibrator(
2588 final ECEFPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
2589 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
2590 final KnownPositionAccelerometerCalibratorListener listener) {
2591 this(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
2592 try {
2593 setPosition(position);
2594 } catch (final LockedException ignore) {
2595 // never happens
2596 }
2597 }
2598
2599 /**
2600 * Constructor.
2601 *
2602 * @param position position where body kinematics measures have been taken.
2603 * @param measurements collection of body kinematics measurements with standard
2604 * deviations taken at the same position with zero velocity
2605 * and unknown different orientations.
2606 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2607 * to find a solution.
2608 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2609 * to find a solution.
2610 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2611 * to find a solution.
2612 * @param initialSx initial x scaling factor.
2613 * @param initialSy initial y scaling factor.
2614 * @param initialSz initial z scaling factor.
2615 */
2616 public KnownPositionAccelerometerCalibrator(
2617 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2618 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
2619 final double initialSx, final double initialSy, final double initialSz) {
2620 this(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
2621 try {
2622 setPosition(position);
2623 } catch (final LockedException ignore) {
2624 // never happens
2625 }
2626 }
2627
2628 /**
2629 * Constructor.
2630 *
2631 * @param position position where body kinematics measures have been taken.
2632 * @param measurements collection of body kinematics measurements with standard
2633 * deviations taken at the same position with zero velocity
2634 * and unknown different orientations.
2635 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2636 * to find a solution.
2637 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2638 * to find a solution.
2639 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2640 * to find a solution.
2641 * @param initialSx initial x scaling factor.
2642 * @param initialSy initial y scaling factor.
2643 * @param initialSz initial z scaling factor.
2644 * @param listener listener to handle events raised by this calibrator.
2645 */
2646 public KnownPositionAccelerometerCalibrator(
2647 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2648 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
2649 final double initialSx, final double initialSy, final double initialSz,
2650 final KnownPositionAccelerometerCalibratorListener listener) {
2651 this(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
2652 try {
2653 setPosition(position);
2654 } catch (final LockedException ignore) {
2655 // never happens
2656 }
2657 }
2658
2659 /**
2660 * Constructor.
2661 *
2662 * @param position position where body kinematics measures have been taken.
2663 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2664 * accelerometer and gyroscope.
2665 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2666 * to find a solution.
2667 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2668 * to find a solution.
2669 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2670 * to find a solution.
2671 * @param initialSx initial x scaling factor.
2672 * @param initialSy initial y scaling factor.
2673 * @param initialSz initial z scaling factor.
2674 */
2675 public KnownPositionAccelerometerCalibrator(
2676 final ECEFPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
2677 final Acceleration initialBiasY, final Acceleration initialBiasZ, final double initialSx,
2678 final double initialSy, final double initialSz) {
2679 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
2680 try {
2681 setPosition(position);
2682 } catch (final LockedException ignore) {
2683 // never happens
2684 }
2685 }
2686
2687 /**
2688 * Constructor.
2689 *
2690 * @param position position where body kinematics measures have been taken.
2691 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2692 * accelerometer and gyroscope.
2693 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2694 * to find a solution.
2695 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2696 * to find a solution.
2697 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2698 * to find a solution.
2699 * @param initialSx initial x scaling factor.
2700 * @param initialSy initial y scaling factor.
2701 * @param initialSz initial z scaling factor.
2702 * @param listener listener to handle events raised by this calibrator.
2703 */
2704 public KnownPositionAccelerometerCalibrator(
2705 final ECEFPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
2706 final Acceleration initialBiasY, final Acceleration initialBiasZ,
2707 final double initialSx, final double initialSy, final double initialSz,
2708 final KnownPositionAccelerometerCalibratorListener listener) {
2709 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz, listener);
2710 try {
2711 setPosition(position);
2712 } catch (final LockedException ignore) {
2713 // never happens
2714 }
2715 }
2716
2717 /**
2718 * Constructor.
2719 *
2720 * @param position position where body kinematics measures have been taken.
2721 * @param measurements collection of body kinematics measurements with standard
2722 * deviations taken at the same position with zero velocity
2723 * and unknown different orientations.
2724 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2725 * accelerometer and gyroscope.
2726 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2727 * to find a solution.
2728 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2729 * to find a solution.
2730 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2731 * to find a solution.
2732 * @param initialSx initial x scaling factor.
2733 * @param initialSy initial y scaling factor.
2734 * @param initialSz initial z scaling factor.
2735 */
2736 public KnownPositionAccelerometerCalibrator(
2737 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2738 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
2739 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
2740 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
2741 try {
2742 setPosition(position);
2743 } catch (final LockedException ignore) {
2744 // never happens
2745 }
2746 }
2747
2748 /**
2749 * Constructor.
2750 *
2751 * @param position position where body kinematics measures have been taken.
2752 * @param measurements collection of body kinematics measurements with standard
2753 * deviations taken at the same position with zero velocity
2754 * and unknown different orientations.
2755 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2756 * accelerometer and gyroscope.
2757 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2758 * to find a solution.
2759 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2760 * to find a solution.
2761 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2762 * to find a solution.
2763 * @param initialSx initial x scaling factor.
2764 * @param initialSy initial y scaling factor.
2765 * @param initialSz initial z scaling factor.
2766 * @param listener listener to handle events raised by this calibrator.
2767 */
2768 public KnownPositionAccelerometerCalibrator(
2769 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2770 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
2771 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
2772 final KnownPositionAccelerometerCalibratorListener listener) {
2773 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
2774 listener);
2775 try {
2776 setPosition(position);
2777 } catch (final LockedException ignore) {
2778 // never happens
2779 }
2780 }
2781
2782 /**
2783 * Constructor.
2784 *
2785 * @param position position where body kinematics measures have been taken.
2786 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2787 * to find a solution. This is expressed in meters per squared
2788 * second (m/s^2).
2789 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2790 * to find a solution. This is expressed in meters per squared
2791 * second (m/s^2).
2792 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2793 * to find a solution. This is expressed in meters per squared
2794 * second (m/s^2).
2795 * @param initialSx initial x scaling factor.
2796 * @param initialSy initial y scaling factor.
2797 * @param initialSz initial z scaling factor.
2798 * @param initialMxy initial x-y cross coupling error.
2799 * @param initialMxz initial x-z cross coupling error.
2800 * @param initialMyx initial y-x cross coupling error.
2801 * @param initialMyz initial y-z cross coupling error.
2802 * @param initialMzx initial z-x cross coupling error.
2803 * @param initialMzy initial z-y cross coupling error.
2804 */
2805 public KnownPositionAccelerometerCalibrator(
2806 final ECEFPosition position, final double initialBiasX, final double initialBiasY,
2807 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
2808 final double initialMxy, final double initialMxz, final double initialMyx,
2809 final double initialMyz, final double initialMzx, final double initialMzy) {
2810 this(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
2811 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
2812 try {
2813 setPosition(position);
2814 } catch (final LockedException ignore) {
2815 // never happens
2816 }
2817 }
2818
2819 /**
2820 * Constructor.
2821 *
2822 * @param position position where body kinematics measures have been taken.
2823 * @param measurements collection of body kinematics measurements with standard
2824 * deviations taken at the same position with zero velocity
2825 * and unknown different orientations.
2826 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2827 * to find a solution. This is expressed in meters per squared
2828 * second (m/s^2).
2829 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2830 * to find a solution. This is expressed in meters per squared
2831 * second (m/s^2).
2832 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2833 * to find a solution. This is expressed in meters per squared
2834 * second (m/s^2).
2835 * @param initialSx initial x scaling factor.
2836 * @param initialSy initial y scaling factor.
2837 * @param initialSz initial z scaling factor.
2838 * @param initialMxy initial x-y cross coupling error.
2839 * @param initialMxz initial x-z cross coupling error.
2840 * @param initialMyx initial y-x cross coupling error.
2841 * @param initialMyz initial y-z cross coupling error.
2842 * @param initialMzx initial z-x cross coupling error.
2843 * @param initialMzy initial z-y cross coupling error.
2844 */
2845 public KnownPositionAccelerometerCalibrator(
2846 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2847 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
2848 final double initialSx, final double initialSy, final double initialSz,
2849 final double initialMxy, final double initialMxz, final double initialMyx,
2850 final double initialMyz, final double initialMzx, final double initialMzy) {
2851 this(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
2852 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
2853 try {
2854 setPosition(position);
2855 } catch (final LockedException ignore) {
2856 // never happens
2857 }
2858 }
2859
2860 /**
2861 * Constructor.
2862 *
2863 * @param position position where body kinematics measures have been taken.
2864 * @param measurements collection of body kinematics measurements with standard
2865 * deviations taken at the same position with zero velocity
2866 * and unknown different orientations.
2867 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2868 * to find a solution. This is expressed in meters per squared
2869 * second (m/s^2).
2870 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2871 * to find a solution. This is expressed in meters per squared
2872 * second (m/s^2).
2873 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2874 * to find a solution. This is expressed in meters per squared
2875 * second (m/s^2).
2876 * @param initialSx initial x scaling factor.
2877 * @param initialSy initial y scaling factor.
2878 * @param initialSz initial z scaling factor.
2879 * @param initialMxy initial x-y cross coupling error.
2880 * @param initialMxz initial x-z cross coupling error.
2881 * @param initialMyx initial y-x cross coupling error.
2882 * @param initialMyz initial y-z cross coupling error.
2883 * @param initialMzx initial z-x cross coupling error.
2884 * @param initialMzy initial z-y cross coupling error.
2885 * @param listener listener to handle events raised by this calibrator.
2886 */
2887 public KnownPositionAccelerometerCalibrator(
2888 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
2889 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
2890 final double initialSx, final double initialSy, final double initialSz,
2891 final double initialMxy, final double initialMxz, final double initialMyx,
2892 final double initialMyz, final double initialMzx, final double initialMzy,
2893 final KnownPositionAccelerometerCalibratorListener listener) {
2894 this(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
2895 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
2896 try {
2897 setPosition(position);
2898 } catch (final LockedException ignore) {
2899 // never happens
2900 }
2901 }
2902
2903 /**
2904 * Constructor.
2905 *
2906 * @param position position where body kinematics measures have been taken.
2907 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2908 * accelerometer and gyroscope.
2909 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2910 * to find a solution. This is expressed in meters per squared
2911 * second (m/s^2).
2912 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2913 * to find a solution. This is expressed in meters per squared
2914 * second (m/s^2).
2915 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2916 * to find a solution. This is expressed in meters per squared
2917 * second (m/s^2).
2918 * @param initialSx initial x scaling factor.
2919 * @param initialSy initial y scaling factor.
2920 * @param initialSz initial z scaling factor.
2921 * @param initialMxy initial x-y cross coupling error.
2922 * @param initialMxz initial x-z cross coupling error.
2923 * @param initialMyx initial y-x cross coupling error.
2924 * @param initialMyz initial y-z cross coupling error.
2925 * @param initialMzx initial z-x cross coupling error.
2926 * @param initialMzy initial z-y cross coupling error.
2927 */
2928 public KnownPositionAccelerometerCalibrator(
2929 final ECEFPosition position, final boolean commonAxisUsed,
2930 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
2931 final double initialSx, final double initialSy, final double initialSz,
2932 final double initialMxy, final double initialMxz, final double initialMyx,
2933 final double initialMyz, final double initialMzx, final double initialMzy) {
2934 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
2935 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
2936 try {
2937 setPosition(position);
2938 } catch (final LockedException ignore) {
2939 // never happens
2940 }
2941 }
2942
2943 /**
2944 * Constructor.
2945 *
2946 * @param position position where body kinematics measures have been taken.
2947 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2948 * accelerometer and gyroscope.
2949 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2950 * to find a solution. This is expressed in meters per squared
2951 * second (m/s^2).
2952 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2953 * to find a solution. This is expressed in meters per squared
2954 * second (m/s^2).
2955 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
2956 * to find a solution. This is expressed in meters per squared
2957 * second (m/s^2).
2958 * @param initialSx initial x scaling factor.
2959 * @param initialSy initial y scaling factor.
2960 * @param initialSz initial z scaling factor.
2961 * @param initialMxy initial x-y cross coupling error.
2962 * @param initialMxz initial x-z cross coupling error.
2963 * @param initialMyx initial y-x cross coupling error.
2964 * @param initialMyz initial y-z cross coupling error.
2965 * @param initialMzx initial z-x cross coupling error.
2966 * @param initialMzy initial z-y cross coupling error.
2967 * @param listener listener to handle events raised by this calibrator.
2968 */
2969 public KnownPositionAccelerometerCalibrator(
2970 final ECEFPosition position, final boolean commonAxisUsed,
2971 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
2972 final double initialSx, final double initialSy, final double initialSz,
2973 final double initialMxy, final double initialMxz, final double initialMyx,
2974 final double initialMyz, final double initialMzx, final double initialMzy,
2975 final KnownPositionAccelerometerCalibratorListener listener) {
2976 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
2977 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
2978 try {
2979 setPosition(position);
2980 } catch (final LockedException ignore) {
2981 // never happens
2982 }
2983 }
2984
2985 /**
2986 * Constructor.
2987 *
2988 * @param position position where body kinematics measures have been taken.
2989 * @param measurements collection of body kinematics measurements with standard
2990 * deviations taken at the same position with zero velocity
2991 * and unknown different orientations.
2992 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
2993 * accelerometer and gyroscope.
2994 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
2995 * to find a solution. This is expressed in meters per squared
2996 * second (m/s^2).
2997 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
2998 * to find a solution. This is expressed in meters per squared
2999 * second (m/s^2).
3000 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3001 * to find a solution. This is expressed in meters per squared
3002 * second (m/s^2).
3003 * @param initialSx initial x scaling factor.
3004 * @param initialSy initial y scaling factor.
3005 * @param initialSz initial z scaling factor.
3006 * @param initialMxy initial x-y cross coupling error.
3007 * @param initialMxz initial x-z cross coupling error.
3008 * @param initialMyx initial y-x cross coupling error.
3009 * @param initialMyz initial y-z cross coupling error.
3010 * @param initialMzx initial z-x cross coupling error.
3011 * @param initialMzy initial z-y cross coupling error.
3012 */
3013 public KnownPositionAccelerometerCalibrator(
3014 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3015 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
3016 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
3017 final double initialMxy, final double initialMxz, final double initialMyx,
3018 final double initialMyz, final double initialMzx, final double initialMzy) {
3019 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3020 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
3021 try {
3022 setPosition(position);
3023 } catch (final LockedException ignore) {
3024 // never happens
3025 }
3026 }
3027
3028 /**
3029 * Constructor.
3030 *
3031 * @param position position where body kinematics measures have been taken.
3032 * @param measurements collection of body kinematics measurements with standard
3033 * deviations taken at the same position with zero velocity
3034 * and unknown different orientations.
3035 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3036 * accelerometer and gyroscope.
3037 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3038 * to find a solution. This is expressed in meters per squared
3039 * second (m/s^2).
3040 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3041 * to find a solution. This is expressed in meters per squared
3042 * second (m/s^2).
3043 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3044 * to find a solution. This is expressed in meters per squared
3045 * second (m/s^2).
3046 * @param initialSx initial x scaling factor.
3047 * @param initialSy initial y scaling factor.
3048 * @param initialSz initial z scaling factor.
3049 * @param initialMxy initial x-y cross coupling error.
3050 * @param initialMxz initial x-z cross coupling error.
3051 * @param initialMyx initial y-x cross coupling error.
3052 * @param initialMyz initial y-z cross coupling error.
3053 * @param initialMzx initial z-x cross coupling error.
3054 * @param initialMzy initial z-y cross coupling error.
3055 * @param listener listener to handle events raised by this calibrator.
3056 */
3057 public KnownPositionAccelerometerCalibrator(
3058 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3059 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
3060 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
3061 final double initialMxy, final double initialMxz, final double initialMyx,
3062 final double initialMyz, final double initialMzx, final double initialMzy,
3063 final KnownPositionAccelerometerCalibratorListener listener) {
3064 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3065 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
3066 try {
3067 setPosition(position);
3068 } catch (final LockedException ignore) {
3069 // never happens
3070 }
3071 }
3072
3073 /**
3074 * Constructor.
3075 *
3076 * @param position position where body kinematics measures have been taken.
3077 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3078 * to find a solution.
3079 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3080 * to find a solution.
3081 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3082 * to find a solution.
3083 * @param initialSx initial x scaling factor.
3084 * @param initialSy initial y scaling factor.
3085 * @param initialSz initial z scaling factor.
3086 * @param initialMxy initial x-y cross coupling error.
3087 * @param initialMxz initial x-z cross coupling error.
3088 * @param initialMyx initial y-x cross coupling error.
3089 * @param initialMyz initial y-z cross coupling error.
3090 * @param initialMzx initial z-x cross coupling error.
3091 * @param initialMzy initial z-y cross coupling error.
3092 */
3093 public KnownPositionAccelerometerCalibrator(
3094 final ECEFPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
3095 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
3096 final double initialMxy, final double initialMxz, final double initialMyx,
3097 final double initialMyz, final double initialMzx, final double initialMzy) {
3098 this(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3099 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
3100 try {
3101 setPosition(position);
3102 } catch (final LockedException ignore) {
3103 // never happens
3104 }
3105 }
3106
3107 /**
3108 * Constructor.
3109 *
3110 * @param position position where body kinematics measures have been taken.
3111 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3112 * to find a solution.
3113 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3114 * to find a solution.
3115 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3116 * to find a solution.
3117 * @param initialSx initial x scaling factor.
3118 * @param initialSy initial y scaling factor.
3119 * @param initialSz initial z scaling factor.
3120 * @param initialMxy initial x-y cross coupling error.
3121 * @param initialMxz initial x-z cross coupling error.
3122 * @param initialMyx initial y-x cross coupling error.
3123 * @param initialMyz initial y-z cross coupling error.
3124 * @param initialMzx initial z-x cross coupling error.
3125 * @param initialMzy initial z-y cross coupling error.
3126 * @param listener listener to handle events raised by this calibrator.
3127 */
3128 public KnownPositionAccelerometerCalibrator(
3129 final ECEFPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
3130 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
3131 final double initialMxy, final double initialMxz, final double initialMyx,
3132 final double initialMyz, final double initialMzx, final double initialMzy,
3133 final KnownPositionAccelerometerCalibratorListener listener) {
3134 this(initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3135 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
3136 try {
3137 setPosition(position);
3138 } catch (final LockedException ignore) {
3139 // never happens
3140 }
3141 }
3142
3143 /**
3144 * Constructor.
3145 *
3146 * @param position position where body kinematics measures have been taken.
3147 * @param measurements collection of body kinematics measurements with standard
3148 * deviations taken at the same position with zero velocity
3149 * and unknown different orientations.
3150 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3151 * to find a solution.
3152 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3153 * to find a solution.
3154 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3155 * to find a solution.
3156 * @param initialSx initial x scaling factor.
3157 * @param initialSy initial y scaling factor.
3158 * @param initialSz initial z scaling factor.
3159 * @param initialMxy initial x-y cross coupling error.
3160 * @param initialMxz initial x-z cross coupling error.
3161 * @param initialMyx initial y-x cross coupling error.
3162 * @param initialMyz initial y-z cross coupling error.
3163 * @param initialMzx initial z-x cross coupling error.
3164 * @param initialMzy initial z-y cross coupling error.
3165 */
3166 public KnownPositionAccelerometerCalibrator(
3167 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3168 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
3169 final double initialSx, final double initialSy, final double initialSz,
3170 final double initialMxy, final double initialMxz, final double initialMyx,
3171 final double initialMyz, final double initialMzx, final double initialMzy) {
3172 this(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3173 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
3174 try {
3175 setPosition(position);
3176 } catch (final LockedException ignore) {
3177 // never happens
3178 }
3179 }
3180
3181 /**
3182 * Constructor.
3183 *
3184 * @param position position where body kinematics measures have been taken.
3185 * @param measurements collection of body kinematics measurements with standard
3186 * deviations taken at the same position with zero velocity
3187 * and unknown different orientations.
3188 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3189 * to find a solution.
3190 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3191 * to find a solution.
3192 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3193 * to find a solution.
3194 * @param initialSx initial x scaling factor.
3195 * @param initialSy initial y scaling factor.
3196 * @param initialSz initial z scaling factor.
3197 * @param initialMxy initial x-y cross coupling error.
3198 * @param initialMxz initial x-z cross coupling error.
3199 * @param initialMyx initial y-x cross coupling error.
3200 * @param initialMyz initial y-z cross coupling error.
3201 * @param initialMzx initial z-x cross coupling error.
3202 * @param initialMzy initial z-y cross coupling error.
3203 * @param listener listener to handle events raised by this calibrator.
3204 */
3205 public KnownPositionAccelerometerCalibrator(
3206 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3207 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
3208 final double initialSx, final double initialSy, final double initialSz,
3209 final double initialMxy, final double initialMxz, final double initialMyx,
3210 final double initialMyz, final double initialMzx, final double initialMzy,
3211 final KnownPositionAccelerometerCalibratorListener listener) {
3212 this(measurements, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3213 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
3214 try {
3215 setPosition(position);
3216 } catch (final LockedException ignore) {
3217 // never happens
3218 }
3219 }
3220
3221 /**
3222 * Constructor.
3223 *
3224 * @param position position where body kinematics measures have been taken.
3225 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3226 * accelerometer and gyroscope.
3227 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3228 * to find a solution.
3229 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3230 * to find a solution.
3231 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3232 * to find a solution.
3233 * @param initialSx initial x scaling factor.
3234 * @param initialSy initial y scaling factor.
3235 * @param initialSz initial z scaling factor.
3236 * @param initialMxy initial x-y cross coupling error.
3237 * @param initialMxz initial x-z cross coupling error.
3238 * @param initialMyx initial y-x cross coupling error.
3239 * @param initialMyz initial y-z cross coupling error.
3240 * @param initialMzx initial z-x cross coupling error.
3241 * @param initialMzy initial z-y cross coupling error.
3242 */
3243 public KnownPositionAccelerometerCalibrator(
3244 final ECEFPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
3245 final Acceleration initialBiasY, final Acceleration initialBiasZ,
3246 final double initialSx, final double initialSy, final double initialSz,
3247 final double initialMxy, final double initialMxz, final double initialMyx,
3248 final double initialMyz, final double initialMzx, final double initialMzy) {
3249 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3250 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
3251 try {
3252 setPosition(position);
3253 } catch (final LockedException ignore) {
3254 // never happens
3255 }
3256 }
3257
3258 /**
3259 * Constructor.
3260 *
3261 * @param position position where body kinematics measures have been taken.
3262 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3263 * accelerometer and gyroscope.
3264 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3265 * to find a solution.
3266 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3267 * to find a solution.
3268 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3269 * to find a solution.
3270 * @param initialSx initial x scaling factor.
3271 * @param initialSy initial y scaling factor.
3272 * @param initialSz initial z scaling factor.
3273 * @param initialMxy initial x-y cross coupling error.
3274 * @param initialMxz initial x-z cross coupling error.
3275 * @param initialMyx initial y-x cross coupling error.
3276 * @param initialMyz initial y-z cross coupling error.
3277 * @param initialMzx initial z-x cross coupling error.
3278 * @param initialMzy initial z-y cross coupling error.
3279 * @param listener listener to handle events raised by this calibrator.
3280 */
3281 public KnownPositionAccelerometerCalibrator(
3282 final ECEFPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
3283 final Acceleration initialBiasY, final Acceleration initialBiasZ,
3284 final double initialSx, final double initialSy, final double initialSz,
3285 final double initialMxy, final double initialMxz, final double initialMyx,
3286 final double initialMyz, final double initialMzx, final double initialMzy,
3287 final KnownPositionAccelerometerCalibratorListener listener) {
3288 this(commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3289 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
3290 try {
3291 setPosition(position);
3292 } catch (final LockedException ignore) {
3293 // never happens
3294 }
3295 }
3296
3297 /**
3298 * Constructor.
3299 *
3300 * @param position position where body kinematics measures have been taken.
3301 * @param measurements collection of body kinematics measurements with standard
3302 * deviations taken at the same position with zero velocity
3303 * and unknown different orientations.
3304 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3305 * accelerometer and gyroscope.
3306 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3307 * to find a solution.
3308 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3309 * to find a solution.
3310 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3311 * to find a solution.
3312 * @param initialSx initial x scaling factor.
3313 * @param initialSy initial y scaling factor.
3314 * @param initialSz initial z scaling factor.
3315 * @param initialMxy initial x-y cross coupling error.
3316 * @param initialMxz initial x-z cross coupling error.
3317 * @param initialMyx initial y-x cross coupling error.
3318 * @param initialMyz initial y-z cross coupling error.
3319 * @param initialMzx initial z-x cross coupling error.
3320 * @param initialMzy initial z-y cross coupling error.
3321 */
3322 public KnownPositionAccelerometerCalibrator(
3323 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3324 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
3325 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
3326 final double initialMxy, final double initialMxz, final double initialMyx,
3327 final double initialMyz, final double initialMzx, final double initialMzy) {
3328 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3329 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
3330 try {
3331 setPosition(position);
3332 } catch (final LockedException ignore) {
3333 // never happens
3334 }
3335 }
3336
3337 /**
3338 * Constructor.
3339 *
3340 * @param position position where body kinematics measures have been taken.
3341 * @param measurements collection of body kinematics measurements with standard
3342 * deviations taken at the same position with zero velocity
3343 * and unknown different orientations.
3344 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3345 * accelerometer and gyroscope.
3346 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
3347 * to find a solution.
3348 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
3349 * to find a solution.
3350 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
3351 * to find a solution.
3352 * @param initialSx initial x scaling factor.
3353 * @param initialSy initial y scaling factor.
3354 * @param initialSz initial z scaling factor.
3355 * @param initialMxy initial x-y cross coupling error.
3356 * @param initialMxz initial x-z cross coupling error.
3357 * @param initialMyx initial y-x cross coupling error.
3358 * @param initialMyz initial y-z cross coupling error.
3359 * @param initialMzx initial z-x cross coupling error.
3360 * @param initialMzy initial z-y cross coupling error.
3361 * @param listener listener to handle events raised by this calibrator.
3362 */
3363 public KnownPositionAccelerometerCalibrator(
3364 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3365 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
3366 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
3367 final double initialMxy, final double initialMxz, final double initialMyx,
3368 final double initialMyz, final double initialMzx, final double initialMzy,
3369 final KnownPositionAccelerometerCalibratorListener listener) {
3370 this(measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
3371 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
3372 try {
3373 setPosition(position);
3374 } catch (final LockedException ignore) {
3375 // never happens
3376 }
3377 }
3378
3379 /**
3380 * Constructor.
3381 *
3382 * @param position position where body kinematics measures have been taken.
3383 * @param initialBias initial accelerometer bias to be used to find a solution.
3384 * This must have length 3 and is expressed in meters per
3385 * squared second (m/s^2).
3386 * @throws IllegalArgumentException if provided bias array does not have length 3.
3387 */
3388 public KnownPositionAccelerometerCalibrator(final ECEFPosition position, final double[] initialBias) {
3389 this(initialBias);
3390 try {
3391 setPosition(position);
3392 } catch (final LockedException ignore) {
3393 // never happens
3394 }
3395 }
3396
3397 /**
3398 * Constructor.
3399 *
3400 * @param position position where body kinematics measures have been taken.
3401 * @param initialBias initial accelerometer bias to be used to find a solution.
3402 * This must have length 3 and is expressed in meters per
3403 * squared second (m/s^2).
3404 * @param listener listener to handle events raised by this calibrator.
3405 * @throws IllegalArgumentException if provided bias array does not have length 3.
3406 */
3407 public KnownPositionAccelerometerCalibrator(
3408 final ECEFPosition position, final double[] initialBias,
3409 final KnownPositionAccelerometerCalibratorListener listener) {
3410 this(initialBias, listener);
3411 try {
3412 setPosition(position);
3413 } catch (final LockedException ignore) {
3414 // never happens
3415 }
3416 }
3417
3418 /**
3419 * Constructor.
3420 *
3421 * @param position position where body kinematics measures have been taken.
3422 * @param measurements collection of body kinematics measurements with standard
3423 * deviations taken at the same position with zero velocity
3424 * and unknown different orientations.
3425 * @param initialBias initial accelerometer bias to be used to find a solution.
3426 * This must have length 3 and is expressed in meters per
3427 * squared second (m/s^2).
3428 * @throws IllegalArgumentException if provided bias array does not have length 3.
3429 */
3430 public KnownPositionAccelerometerCalibrator(
3431 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3432 final double[] initialBias) {
3433 this(measurements, initialBias);
3434 try {
3435 setPosition(position);
3436 } catch (final LockedException ignore) {
3437 // never happens
3438 }
3439 }
3440
3441 /**
3442 * Constructor.
3443 *
3444 * @param position position where body kinematics measures have been taken.
3445 * @param measurements collection of body kinematics measurements with standard
3446 * deviations taken at the same position with zero velocity
3447 * and unknown different orientations.
3448 * @param initialBias initial accelerometer bias to be used to find a solution.
3449 * This must have length 3 and is expressed in meters per
3450 * squared second (m/s^2).
3451 * @param listener listener to handle events raised by this calibrator.
3452 * @throws IllegalArgumentException if provided bias array does not have length 3.
3453 */
3454 public KnownPositionAccelerometerCalibrator(
3455 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3456 final double[] initialBias, final KnownPositionAccelerometerCalibratorListener listener) {
3457 this(measurements, initialBias, listener);
3458 try {
3459 setPosition(position);
3460 } catch (final LockedException ignore) {
3461 // never happens
3462 }
3463 }
3464
3465 /**
3466 * Constructor.
3467 *
3468 * @param position position where body kinematics measures have been taken.
3469 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3470 * accelerometer and gyroscope.
3471 * @param initialBias initial accelerometer bias to be used to find a solution.
3472 * This must have length 3 and is expressed in meters per
3473 * squared second (m/s^2).
3474 * @throws IllegalArgumentException if provided bias array does not have length 3.
3475 */
3476 public KnownPositionAccelerometerCalibrator(
3477 final ECEFPosition position, final boolean commonAxisUsed, final double[] initialBias) {
3478 this(commonAxisUsed, initialBias);
3479 try {
3480 setPosition(position);
3481 } catch (final LockedException ignore) {
3482 // never happens
3483 }
3484 }
3485
3486 /**
3487 * Constructor.
3488 *
3489 * @param position position where body kinematics measures have been taken.
3490 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3491 * accelerometer and gyroscope.
3492 * @param initialBias initial accelerometer bias to be used to find a solution.
3493 * This must have length 3 and is expressed in meters per
3494 * squared second (m/s^2).
3495 * @param listener listener to handle events raised by this calibrator.
3496 * @throws IllegalArgumentException if provided bias array does not have length 3.
3497 */
3498 public KnownPositionAccelerometerCalibrator(
3499 final ECEFPosition position, final boolean commonAxisUsed, final double[] initialBias,
3500 final KnownPositionAccelerometerCalibratorListener listener) {
3501 this(commonAxisUsed, initialBias, listener);
3502 try {
3503 setPosition(position);
3504 } catch (final LockedException ignore) {
3505 // never happens
3506 }
3507 }
3508
3509 /**
3510 * Constructor.
3511 *
3512 * @param position position where body kinematics measures have been taken.
3513 * @param measurements collection of body kinematics measurements with standard
3514 * deviations taken at the same position with zero velocity
3515 * and unknown different orientations.
3516 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3517 * accelerometer and gyroscope.
3518 * @param initialBias initial accelerometer bias to be used to find a solution.
3519 * This must have length 3 and is expressed in meters per
3520 * squared second (m/s^2).
3521 * @throws IllegalArgumentException if provided bias array does not have length 3.
3522 */
3523 public KnownPositionAccelerometerCalibrator(
3524 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3525 final boolean commonAxisUsed, final double[] initialBias) {
3526 this(measurements, commonAxisUsed, initialBias);
3527 try {
3528 setPosition(position);
3529 } catch (final LockedException ignore) {
3530 // never happens
3531 }
3532 }
3533
3534 /**
3535 * Constructor.
3536 *
3537 * @param position position where body kinematics measures have been taken.
3538 * @param measurements collection of body kinematics measurements with standard
3539 * deviations taken at the same position with zero velocity
3540 * and unknown different orientations.
3541 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3542 * accelerometer and gyroscope.
3543 * @param initialBias initial accelerometer bias to be used to find a solution.
3544 * This must have length 3 and is expressed in meters per
3545 * squared second (m/s^2).
3546 * @param listener listener to handle events raised by this calibrator.
3547 * @throws IllegalArgumentException if provided bias array does not have length 3.
3548 */
3549 public KnownPositionAccelerometerCalibrator(
3550 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3551 final boolean commonAxisUsed, final double[] initialBias,
3552 final KnownPositionAccelerometerCalibratorListener listener) {
3553 this(measurements, commonAxisUsed, initialBias, listener);
3554 try {
3555 setPosition(position);
3556 } catch (final LockedException ignore) {
3557 // never happens
3558 }
3559 }
3560
3561 /**
3562 * Constructor.
3563 *
3564 * @param position position where body kinematics measures have been taken.
3565 * @param initialBias initial bias to find a solution.
3566 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
3567 */
3568 public KnownPositionAccelerometerCalibrator(final ECEFPosition position, final Matrix initialBias) {
3569 this(initialBias);
3570 try {
3571 setPosition(position);
3572 } catch (final LockedException ignore) {
3573 // never happens
3574 }
3575 }
3576
3577 /**
3578 * Constructor.
3579 *
3580 * @param position position where body kinematics measures have been taken.
3581 * @param initialBias initial bias to find a solution.
3582 * @param listener listener to handle events raised by this calibrator.
3583 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
3584 */
3585 public KnownPositionAccelerometerCalibrator(
3586 final ECEFPosition position, final Matrix initialBias,
3587 final KnownPositionAccelerometerCalibratorListener listener) {
3588 this(initialBias, listener);
3589 try {
3590 setPosition(position);
3591 } catch (final LockedException ignore) {
3592 // never happens
3593 }
3594 }
3595
3596 /**
3597 * Constructor.
3598 *
3599 * @param position position where body kinematics measures have been taken.
3600 * @param measurements collection of body kinematics measurements with standard
3601 * deviations taken at the same position with zero velocity
3602 * and unknown different orientations.
3603 * @param initialBias initial bias to find a solution.
3604 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
3605 */
3606 public KnownPositionAccelerometerCalibrator(
3607 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3608 final Matrix initialBias) {
3609 this(measurements, initialBias);
3610 try {
3611 setPosition(position);
3612 } catch (final LockedException ignore) {
3613 // never happens
3614 }
3615 }
3616
3617 /**
3618 * Constructor.
3619 *
3620 * @param position position where body kinematics measures have been taken.
3621 * @param measurements collection of body kinematics measurements with standard
3622 * deviations taken at the same position with zero velocity
3623 * and unknown different orientations.
3624 * @param initialBias initial bias to find a solution.
3625 * @param listener listener to handle events raised by this calibrator.
3626 */
3627 public KnownPositionAccelerometerCalibrator(
3628 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3629 final Matrix initialBias, final KnownPositionAccelerometerCalibratorListener listener) {
3630 this(measurements, initialBias, listener);
3631 try {
3632 setPosition(position);
3633 } catch (final LockedException ignore) {
3634 // never happens
3635 }
3636 }
3637
3638 /**
3639 * Constructor.
3640 *
3641 * @param position position where body kinematics measures have been taken.
3642 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3643 * accelerometer and gyroscope.
3644 * @param initialBias initial bias to find a solution.
3645 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
3646 */
3647 public KnownPositionAccelerometerCalibrator(
3648 final ECEFPosition position, final boolean commonAxisUsed, final Matrix initialBias) {
3649 this(commonAxisUsed, initialBias);
3650 try {
3651 setPosition(position);
3652 } catch (final LockedException ignore) {
3653 // never happens
3654 }
3655 }
3656
3657 /**
3658 * Constructor.
3659 *
3660 * @param position position where body kinematics measures have been taken.
3661 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3662 * accelerometer and gyroscope.
3663 * @param initialBias initial bias to find a solution.
3664 * @param listener listener to handle events raised by this calibrator.
3665 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
3666 */
3667 public KnownPositionAccelerometerCalibrator(
3668 final ECEFPosition position, final boolean commonAxisUsed, final Matrix initialBias,
3669 final KnownPositionAccelerometerCalibratorListener listener) {
3670 this(commonAxisUsed, initialBias, listener);
3671 try {
3672 setPosition(position);
3673 } catch (final LockedException ignore) {
3674 // never happens
3675 }
3676 }
3677
3678 /**
3679 * Constructor.
3680 *
3681 * @param position position where body kinematics measures have been taken.
3682 * @param measurements collection of body kinematics measurements with standard
3683 * deviations taken at the same position with zero velocity
3684 * and unknown different orientations.
3685 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3686 * accelerometer and gyroscope.
3687 * @param initialBias initial bias to find a solution.
3688 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
3689 */
3690 public KnownPositionAccelerometerCalibrator(
3691 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3692 final boolean commonAxisUsed, final Matrix initialBias) {
3693 this(measurements, commonAxisUsed, initialBias);
3694 try {
3695 setPosition(position);
3696 } catch (final LockedException ignore) {
3697 // never happens
3698 }
3699 }
3700
3701 /**
3702 * Constructor.
3703 *
3704 * @param position position where body kinematics measures have been taken.
3705 * @param measurements collection of body kinematics measurements with standard
3706 * deviations taken at the same position with zero velocity
3707 * and unknown different orientations.
3708 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3709 * accelerometer and gyroscope.
3710 * @param initialBias initial bias to find a solution.
3711 * @param listener listener to handle events raised by this calibrator.
3712 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
3713 */
3714 public KnownPositionAccelerometerCalibrator(
3715 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3716 final boolean commonAxisUsed, final Matrix initialBias,
3717 final KnownPositionAccelerometerCalibratorListener listener) {
3718 this(measurements, commonAxisUsed, initialBias, listener);
3719 try {
3720 setPosition(position);
3721 } catch (final LockedException ignore) {
3722 // never happens
3723 }
3724 }
3725
3726 /**
3727 * Constructor.
3728 *
3729 * @param position position where body kinematics measures have been taken.
3730 * @param initialBias initial bias to find a solution.
3731 * @param initialMa initial scale factors and cross coupling errors matrix.
3732 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
3733 * scaling and coupling error matrix is not 3x3.
3734 */
3735 public KnownPositionAccelerometerCalibrator(
3736 final ECEFPosition position, final Matrix initialBias, final Matrix initialMa) {
3737 this(initialBias, initialMa);
3738 try {
3739 setPosition(position);
3740 } catch (final LockedException ignore) {
3741 // never happens
3742 }
3743 }
3744
3745 /**
3746 * Constructor.
3747 *
3748 * @param position position where body kinematics measures have been taken.
3749 * @param initialBias initial bias to find a solution.
3750 * @param initialMa initial scale factors and cross coupling errors matrix.
3751 * @param listener listener to handle events raised by this calibrator.
3752 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
3753 * scaling and coupling error matrix is not 3x3.
3754 */
3755 public KnownPositionAccelerometerCalibrator(
3756 final ECEFPosition position, final Matrix initialBias, final Matrix initialMa,
3757 final KnownPositionAccelerometerCalibratorListener listener) {
3758 this(initialBias, initialMa, listener);
3759 try {
3760 setPosition(position);
3761 } catch (final LockedException ignore) {
3762 // never happens
3763 }
3764 }
3765
3766 /**
3767 * Constructor.
3768 *
3769 * @param position position where body kinematics measures have been taken.
3770 * @param measurements collection of body kinematics measurements with standard
3771 * deviations taken at the same position with zero velocity
3772 * and unknown different orientations.
3773 * @param initialBias initial bias to find a solution.
3774 * @param initialMa initial scale factors and cross coupling errors matrix.
3775 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
3776 * scaling and coupling error matrix is not 3x3.
3777 */
3778 public KnownPositionAccelerometerCalibrator(
3779 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3780 final Matrix initialBias, final Matrix initialMa) {
3781 this(measurements, initialBias, initialMa);
3782 try {
3783 setPosition(position);
3784 } catch (final LockedException ignore) {
3785 // never happens
3786 }
3787 }
3788
3789 /**
3790 * Constructor.
3791 *
3792 * @param position position where body kinematics measures have been taken.
3793 * @param measurements collection of body kinematics measurements with standard
3794 * deviations taken at the same position with zero velocity
3795 * and unknown different orientations.
3796 * @param initialBias initial bias to find a solution.
3797 * @param initialMa initial scale factors and cross coupling errors matrix.
3798 * @param listener listener to handle events raised by this calibrator.
3799 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
3800 * scaling and coupling error matrix is not 3x3.
3801 */
3802 public KnownPositionAccelerometerCalibrator(
3803 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3804 final Matrix initialBias, final Matrix initialMa,
3805 final KnownPositionAccelerometerCalibratorListener listener) {
3806 this(measurements, initialBias, initialMa, listener);
3807 try {
3808 setPosition(position);
3809 } catch (final LockedException ignore) {
3810 // never happens
3811 }
3812 }
3813
3814 /**
3815 * Constructor.
3816 *
3817 * @param position position where body kinematics measures have been taken.
3818 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3819 * accelerometer and gyroscope.
3820 * @param initialBias initial bias to find a solution.
3821 * @param initialMa initial scale factors and cross coupling errors matrix.
3822 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
3823 * scaling and coupling error matrix is not 3x3.
3824 */
3825 public KnownPositionAccelerometerCalibrator(
3826 final ECEFPosition position, final boolean commonAxisUsed, final Matrix initialBias,
3827 final Matrix initialMa) {
3828 this(commonAxisUsed, initialBias, initialMa);
3829 try {
3830 setPosition(position);
3831 } catch (final LockedException ignore) {
3832 // never happens
3833 }
3834 }
3835
3836 /**
3837 * Constructor.
3838 *
3839 * @param position position where body kinematics measures have been taken.
3840 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3841 * accelerometer and gyroscope.
3842 * @param initialBias initial bias to find a solution.
3843 * @param initialMa initial scale factors and cross coupling errors matrix.
3844 * @param listener listener to handle events raised by this calibrator.
3845 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
3846 * scaling and coupling error matrix is not 3x3.
3847 */
3848 public KnownPositionAccelerometerCalibrator(
3849 final ECEFPosition position, final boolean commonAxisUsed, final Matrix initialBias,
3850 final Matrix initialMa, final KnownPositionAccelerometerCalibratorListener listener) {
3851 this(commonAxisUsed, initialBias, initialMa, listener);
3852 try {
3853 setPosition(position);
3854 } catch (final LockedException ignore) {
3855 // never happens
3856 }
3857 }
3858
3859 /**
3860 * Constructor.
3861 *
3862 * @param position position where body kinematics measures have been taken.
3863 * @param measurements collection of body kinematics measurements with standard
3864 * deviations taken at the same position with zero velocity
3865 * and unknown different orientations.
3866 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3867 * accelerometer and gyroscope.
3868 * @param initialBias initial bias to find a solution.
3869 * @param initialMa initial scale factors and cross coupling errors matrix.
3870 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
3871 * scaling and coupling error matrix is not 3x3.
3872 */
3873 public KnownPositionAccelerometerCalibrator(
3874 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3875 final boolean commonAxisUsed, final Matrix initialBias, final Matrix initialMa) {
3876 this(measurements, commonAxisUsed, initialBias, initialMa);
3877 try {
3878 setPosition(position);
3879 } catch (final LockedException ignore) {
3880 // never happens
3881 }
3882 }
3883
3884 /**
3885 * Constructor.
3886 *
3887 * @param position position where body kinematics measures have been taken.
3888 * @param measurements collection of body kinematics measurements with standard
3889 * deviations taken at the same position with zero velocity
3890 * and unknown different orientations.
3891 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3892 * accelerometer and gyroscope.
3893 * @param initialBias initial bias to find a solution.
3894 * @param initialMa initial scale factors and cross coupling errors matrix.
3895 * @param listener listener to handle events raised by this calibrator.
3896 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
3897 * scaling and coupling error matrix is not 3x3.
3898 */
3899 public KnownPositionAccelerometerCalibrator(
3900 final ECEFPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3901 final boolean commonAxisUsed, final Matrix initialBias, final Matrix initialMa,
3902 final KnownPositionAccelerometerCalibratorListener listener) {
3903 this(measurements, commonAxisUsed, initialBias, initialMa, listener);
3904 try {
3905 setPosition(position);
3906 } catch (final LockedException ignore) {
3907 // never happens
3908 }
3909 }
3910
3911 /**
3912 * Constructor.
3913 *
3914 * @param position position where body kinematics measures have been taken.
3915 */
3916 public KnownPositionAccelerometerCalibrator(final NEDPosition position) {
3917 this(convertPosition(position));
3918 }
3919
3920 /**
3921 * Constructor.
3922 *
3923 * @param position position where body kinematics measures have been taken.
3924 * @param listener listener to handle events raised by this calibrator.
3925 */
3926 public KnownPositionAccelerometerCalibrator(
3927 final NEDPosition position, final KnownPositionAccelerometerCalibratorListener listener) {
3928 this(convertPosition(position), listener);
3929 }
3930
3931 /**
3932 * Constructor.
3933 *
3934 * @param position position where body kinematics measures have been taken.
3935 * @param measurements collection of body kinematics measurements with standard
3936 * deviations taken at the same position with zero velocity
3937 * and unknown different orientations.
3938 */
3939 public KnownPositionAccelerometerCalibrator(
3940 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements) {
3941 this(convertPosition(position), measurements);
3942 }
3943
3944 /**
3945 * Constructor.
3946 *
3947 * @param position position where body kinematics measures have been taken.
3948 * @param measurements collection of body kinematics measurements with standard
3949 * deviations taken at the same position with zero velocity
3950 * and unknown different orientations.
3951 * @param listener listener to handle events raised by this calibrator.
3952 */
3953 public KnownPositionAccelerometerCalibrator(
3954 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3955 final KnownPositionAccelerometerCalibratorListener listener) {
3956 this(convertPosition(position), measurements, listener);
3957 }
3958
3959 /**
3960 * Constructor.
3961 *
3962 * @param position position where body kinematics measures have been taken.
3963 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3964 * accelerometer and gyroscope.
3965 */
3966 public KnownPositionAccelerometerCalibrator(final NEDPosition position, final boolean commonAxisUsed) {
3967 this(convertPosition(position), commonAxisUsed);
3968 }
3969
3970 /**
3971 * Constructor.
3972 *
3973 * @param position position where body kinematics measures have been taken.
3974 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3975 * accelerometer and gyroscope.
3976 * @param listener listener to handle events raised by this calibrator.
3977 */
3978 public KnownPositionAccelerometerCalibrator(
3979 final NEDPosition position, final boolean commonAxisUsed,
3980 final KnownPositionAccelerometerCalibratorListener listener) {
3981 this(convertPosition(position), commonAxisUsed, listener);
3982 }
3983
3984 /**
3985 * Constructor.
3986 *
3987 * @param position position where body kinematics measures have been taken.
3988 * @param measurements collection of body kinematics measurements with standard
3989 * deviations taken at the same position with zero velocity
3990 * and unknown different orientations.
3991 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
3992 * accelerometer and gyroscope.
3993 */
3994 public KnownPositionAccelerometerCalibrator(
3995 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
3996 final boolean commonAxisUsed) {
3997 this(convertPosition(position), measurements, commonAxisUsed);
3998 }
3999
4000 /**
4001 * Constructor.
4002 *
4003 * @param position position where body kinematics measures have been taken.
4004 * @param measurements collection of body kinematics measurements with standard
4005 * deviations taken at the same position with zero velocity
4006 * and unknown different orientations.
4007 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4008 * accelerometer and gyroscope.
4009 * @param listener listener to handle events raised by this calibrator.
4010 */
4011 public KnownPositionAccelerometerCalibrator(
4012 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4013 final boolean commonAxisUsed, final KnownPositionAccelerometerCalibratorListener listener) {
4014 this(convertPosition(position), measurements, commonAxisUsed, listener);
4015 }
4016
4017 /**
4018 * Constructor.
4019 *
4020 * @param position position where body kinematics measures have been taken.
4021 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4022 * to find a solution. This is expressed in meters per squared
4023 * second (m/s^2).
4024 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4025 * to find a solution. This is expressed in meters per squared
4026 * second (m/s^2).
4027 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4028 * to find a solution. This is expressed in meters per squared
4029 * second (m/s^2).
4030 */
4031 public KnownPositionAccelerometerCalibrator(
4032 final NEDPosition position, final double initialBiasX, final double initialBiasY,
4033 final double initialBiasZ) {
4034 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ);
4035 }
4036
4037 /**
4038 * Constructor.
4039 *
4040 * @param position position where body kinematics measures have been taken.
4041 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4042 * to find a solution. This is expressed in meters per squared
4043 * second (m/s^2).
4044 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4045 * to find a solution. This is expressed in meters per squared
4046 * second (m/s^2).
4047 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4048 * to find a solution. This is expressed in meters per squared
4049 * second (m/s^2).
4050 * @param listener listener to handle events raised by this calibrator.
4051 */
4052 public KnownPositionAccelerometerCalibrator(
4053 final NEDPosition position, final double initialBiasX, final double initialBiasY,
4054 final double initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
4055 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ, listener);
4056 }
4057
4058 /**
4059 * Constructor.
4060 *
4061 * @param position position where body kinematics measures have been taken.
4062 * @param measurements collection of body kinematics measurements with standard
4063 * deviations taken at the same position with zero velocity
4064 * and unknown different orientations.
4065 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4066 * to find a solution. This is expressed in meters per squared
4067 * second (m/s^2).
4068 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4069 * to find a solution. This is expressed in meters per squared
4070 * second (m/s^2).
4071 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4072 * to find a solution. This is expressed in meters per squared
4073 * second (m/s^2).
4074 */
4075 public KnownPositionAccelerometerCalibrator(
4076 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4077 final double initialBiasX, final double initialBiasY, final double initialBiasZ) {
4078 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ);
4079 }
4080
4081 /**
4082 * Constructor.
4083 *
4084 * @param position position where body kinematics measures have been taken.
4085 * @param measurements collection of body kinematics measurements with standard
4086 * deviations taken at the same position with zero velocity
4087 * and unknown different orientations.
4088 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4089 * to find a solution. This is expressed in meters per squared
4090 * second (m/s^2).
4091 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4092 * to find a solution. This is expressed in meters per squared
4093 * second (m/s^2).
4094 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4095 * to find a solution. This is expressed in meters per squared
4096 * second (m/s^2).
4097 * @param listener listener to handle events raised by this calibrator.
4098 */
4099 public KnownPositionAccelerometerCalibrator(
4100 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4101 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
4102 final KnownPositionAccelerometerCalibratorListener listener) {
4103 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ, listener);
4104 }
4105
4106 /**
4107 * Constructor.
4108 *
4109 * @param position position where body kinematics measures have been taken.
4110 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4111 * accelerometer and gyroscope.
4112 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4113 * to find a solution. This is expressed in meters per squared
4114 * second (m/s^2).
4115 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4116 * to find a solution. This is expressed in meters per squared
4117 * second (m/s^2).
4118 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4119 * to find a solution. This is expressed in meters per squared
4120 * second (m/s^2).
4121 */
4122 public KnownPositionAccelerometerCalibrator(
4123 final NEDPosition position, final boolean commonAxisUsed,
4124 final double initialBiasX, final double initialBiasY, final double initialBiasZ) {
4125 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
4126 }
4127
4128 /**
4129 * Constructor.
4130 *
4131 * @param position position where body kinematics measures have been taken.
4132 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4133 * accelerometer and gyroscope.
4134 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4135 * to find a solution. This is expressed in meters per squared
4136 * second (m/s^2).
4137 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4138 * to find a solution. This is expressed in meters per squared
4139 * second (m/s^2).
4140 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4141 * to find a solution. This is expressed in meters per squared
4142 * second (m/s^2).
4143 * @param listener listener to handle events raised by this calibrator.
4144 */
4145 public KnownPositionAccelerometerCalibrator(
4146 final NEDPosition position, final boolean commonAxisUsed,
4147 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
4148 final KnownPositionAccelerometerCalibratorListener listener) {
4149 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
4150 }
4151
4152 /**
4153 * Constructor.
4154 *
4155 * @param position position where body kinematics measures have been taken.
4156 * @param measurements collection of body kinematics measurements with standard
4157 * deviations taken at the same position with zero velocity
4158 * and unknown different orientations.
4159 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4160 * accelerometer and gyroscope.
4161 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4162 * to find a solution. This is expressed in meters per squared
4163 * second (m/s^2).
4164 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4165 * to find a solution. This is expressed in meters per squared
4166 * second (m/s^2).
4167 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4168 * to find a solution. This is expressed in meters per squared
4169 * second (m/s^2).
4170 */
4171 public KnownPositionAccelerometerCalibrator(
4172 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4173 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
4174 final double initialBiasZ) {
4175 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
4176 }
4177
4178 /**
4179 * Constructor.
4180 *
4181 * @param position position where body kinematics measures have been taken.
4182 * @param measurements collection of body kinematics measurements with standard
4183 * deviations taken at the same position with zero velocity
4184 * and unknown different orientations.
4185 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4186 * accelerometer and gyroscope.
4187 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4188 * to find a solution. This is expressed in meters per squared
4189 * second (m/s^2).
4190 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4191 * to find a solution. This is expressed in meters per squared
4192 * second (m/s^2).
4193 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4194 * to find a solution. This is expressed in meters per squared
4195 * second (m/s^2).
4196 * @param listener listener to handle events raised by this calibrator.
4197 */
4198 public KnownPositionAccelerometerCalibrator(
4199 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4200 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
4201 final double initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
4202 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4203 listener);
4204 }
4205
4206 /**
4207 * Constructor.
4208 *
4209 * @param position position where body kinematics measures have been taken.
4210 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4211 * to find a solution.
4212 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4213 * to find a solution.
4214 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4215 * to find a solution.
4216 */
4217 public KnownPositionAccelerometerCalibrator(
4218 final NEDPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
4219 final Acceleration initialBiasZ) {
4220 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ);
4221 }
4222
4223 /**
4224 * Constructor.
4225 *
4226 * @param position position where body kinematics measures have been taken.
4227 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4228 * to find a solution.
4229 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4230 * to find a solution.
4231 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4232 * to find a solution.
4233 * @param listener listener to handle events raised by this calibrator.
4234 */
4235 public KnownPositionAccelerometerCalibrator(
4236 final NEDPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
4237 final Acceleration initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
4238 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ, listener);
4239 }
4240
4241 /**
4242 * Constructor.
4243 *
4244 * @param position position where body kinematics measures have been taken.
4245 * @param measurements collection of body kinematics measurements with standard
4246 * deviations taken at the same position with zero velocity
4247 * and unknown different orientations.
4248 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4249 * to find a solution.
4250 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4251 * to find a solution.
4252 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4253 * to find a solution.
4254 */
4255 public KnownPositionAccelerometerCalibrator(
4256 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4257 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ) {
4258 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ);
4259 }
4260
4261 /**
4262 * Constructor.
4263 *
4264 * @param position position where body kinematics measures have been taken.
4265 * @param measurements collection of body kinematics measurements with standard
4266 * deviations taken at the same position with zero velocity
4267 * and unknown different orientations.
4268 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4269 * to find a solution.
4270 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4271 * to find a solution.
4272 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4273 * to find a solution.
4274 * @param listener listener to handle events raised by this calibrator.
4275 */
4276 public KnownPositionAccelerometerCalibrator(
4277 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4278 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
4279 final KnownPositionAccelerometerCalibratorListener listener) {
4280 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ, listener);
4281 }
4282
4283 /**
4284 * Constructor.
4285 *
4286 * @param position position where body kinematics measures have been taken.
4287 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4288 * accelerometer and gyroscope.
4289 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4290 * to find a solution.
4291 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4292 * to find a solution.
4293 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4294 * to find a solution.
4295 */
4296 public KnownPositionAccelerometerCalibrator(
4297 final NEDPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
4298 final Acceleration initialBiasY, final Acceleration initialBiasZ) {
4299 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
4300 }
4301
4302 /**
4303 * Constructor.
4304 *
4305 * @param position position where body kinematics measures have been taken.
4306 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4307 * accelerometer and gyroscope.
4308 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4309 * to find a solution.
4310 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4311 * to find a solution.
4312 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4313 * to find a solution.
4314 * @param listener listener to handle events raised by this calibrator.
4315 */
4316 public KnownPositionAccelerometerCalibrator(
4317 final NEDPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
4318 final Acceleration initialBiasY, final Acceleration initialBiasZ,
4319 final KnownPositionAccelerometerCalibratorListener listener) {
4320 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ, listener);
4321 }
4322
4323 /**
4324 * Constructor.
4325 *
4326 * @param position position where body kinematics measures have been taken.
4327 * @param measurements collection of body kinematics measurements with standard
4328 * deviations taken at the same position with zero velocity
4329 * and unknown different orientations.
4330 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4331 * accelerometer and gyroscope.
4332 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4333 * to find a solution.
4334 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4335 * to find a solution.
4336 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4337 * to find a solution.
4338 */
4339 public KnownPositionAccelerometerCalibrator(
4340 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4341 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
4342 final Acceleration initialBiasZ) {
4343 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ);
4344 }
4345
4346 /**
4347 * Constructor.
4348 *
4349 * @param position position where body kinematics measures have been taken.
4350 * @param measurements collection of body kinematics measurements with standard
4351 * deviations taken at the same position with zero velocity
4352 * and unknown different orientations.
4353 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4354 * accelerometer and gyroscope.
4355 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4356 * to find a solution.
4357 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4358 * to find a solution.
4359 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4360 * to find a solution.
4361 * @param listener listener to handle events raised by this calibrator.
4362 */
4363 public KnownPositionAccelerometerCalibrator(
4364 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4365 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
4366 final Acceleration initialBiasZ, final KnownPositionAccelerometerCalibratorListener listener) {
4367 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4368 listener);
4369 }
4370
4371 /**
4372 * Constructor.
4373 *
4374 * @param position position where body kinematics measures have been taken.
4375 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4376 * to find a solution. This is expressed in meters per squared
4377 * second (m/s^2).
4378 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4379 * to find a solution. This is expressed in meters per squared
4380 * second (m/s^2).
4381 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4382 * to find a solution. This is expressed in meters per squared
4383 * second (m/s^2).
4384 * @param initialSx initial x scaling factor.
4385 * @param initialSy initial y scaling factor.
4386 * @param initialSz initial z scaling factor.
4387 */
4388 public KnownPositionAccelerometerCalibrator(
4389 final NEDPosition position, final double initialBiasX, final double initialBiasY,
4390 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
4391 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
4392 }
4393
4394 /**
4395 * Constructor.
4396 *
4397 * @param position position where body kinematics measures have been taken.
4398 * @param measurements collection of body kinematics measurements with standard
4399 * deviations taken at the same position with zero velocity
4400 * and unknown different orientations.
4401 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4402 * to find a solution. This is expressed in meters per squared
4403 * second (m/s^2).
4404 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4405 * to find a solution. This is expressed in meters per squared
4406 * second (m/s^2).
4407 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4408 * to find a solution. This is expressed in meters per squared
4409 * second (m/s^2).
4410 * @param initialSx initial x scaling factor.
4411 * @param initialSy initial y scaling factor.
4412 * @param initialSz initial z scaling factor.
4413 */
4414 public KnownPositionAccelerometerCalibrator(
4415 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4416 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
4417 final double initialSx, final double initialSy, final double initialSz) {
4418 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ,
4419 initialSx, initialSy, initialSz);
4420 }
4421
4422 /**
4423 * Constructor.
4424 *
4425 * @param position position where body kinematics measures have been taken.
4426 * @param measurements collection of body kinematics measurements with standard
4427 * deviations taken at the same position with zero velocity
4428 * and unknown different orientations.
4429 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4430 * to find a solution. This is expressed in meters per squared
4431 * second (m/s^2).
4432 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4433 * to find a solution. This is expressed in meters per squared
4434 * second (m/s^2).
4435 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4436 * to find a solution. This is expressed in meters per squared
4437 * second (m/s^2).
4438 * @param initialSx initial x scaling factor.
4439 * @param initialSy initial y scaling factor.
4440 * @param initialSz initial z scaling factor.
4441 * @param listener listener to handle events raised by this calibrator.
4442 */
4443 public KnownPositionAccelerometerCalibrator(
4444 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4445 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
4446 final double initialSx, final double initialSy, final double initialSz,
4447 final KnownPositionAccelerometerCalibratorListener listener) {
4448 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ,
4449 initialSx, initialSy, initialSz, listener);
4450 }
4451
4452 /**
4453 * Constructor.
4454 *
4455 * @param position position where body kinematics measures have been taken.
4456 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4457 * accelerometer and gyroscope.
4458 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4459 * to find a solution. This is expressed in meters per squared
4460 * second (m/s^2).
4461 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4462 * to find a solution. This is expressed in meters per squared
4463 * second (m/s^2).
4464 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4465 * to find a solution. This is expressed in meters per squared
4466 * second (m/s^2).
4467 * @param initialSx initial x scaling factor.
4468 * @param initialSy initial y scaling factor.
4469 * @param initialSz initial z scaling factor.
4470 */
4471 public KnownPositionAccelerometerCalibrator(
4472 final NEDPosition position, final boolean commonAxisUsed, final double initialBiasX,
4473 final double initialBiasY, final double initialBiasZ, final double initialSx, final double initialSy,
4474 final double initialSz) {
4475 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4476 initialSx, initialSy, initialSz);
4477 }
4478
4479 /**
4480 * Constructor.
4481 *
4482 * @param position position where body kinematics measures have been taken.
4483 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4484 * accelerometer and gyroscope.
4485 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4486 * to find a solution. This is expressed in meters per squared
4487 * second (m/s^2).
4488 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4489 * to find a solution. This is expressed in meters per squared
4490 * second (m/s^2).
4491 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4492 * to find a solution. This is expressed in meters per squared
4493 * second (m/s^2).
4494 * @param initialSx initial x scaling factor.
4495 * @param initialSy initial y scaling factor.
4496 * @param initialSz initial z scaling factor.
4497 * @param listener listener to handle events raised by this calibrator.
4498 */
4499 public KnownPositionAccelerometerCalibrator(
4500 final NEDPosition position, final boolean commonAxisUsed, final double initialBiasX,
4501 final double initialBiasY, final double initialBiasZ, final double initialSx, final double initialSy,
4502 final double initialSz, final KnownPositionAccelerometerCalibratorListener listener) {
4503 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4504 initialSx, initialSy, initialSz, listener);
4505 }
4506
4507 /**
4508 * Constructor.
4509 *
4510 * @param position position where body kinematics measures have been taken.
4511 * @param measurements collection of body kinematics measurements with standard
4512 * deviations taken at the same position with zero velocity
4513 * and unknown different orientations.
4514 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4515 * accelerometer and gyroscope.
4516 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4517 * to find a solution. This is expressed in meters per squared
4518 * second (m/s^2).
4519 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4520 * to find a solution. This is expressed in meters per squared
4521 * second (m/s^2).
4522 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4523 * to find a solution. This is expressed in meters per squared
4524 * second (m/s^2).
4525 * @param initialSx initial x scaling factor.
4526 * @param initialSy initial y scaling factor.
4527 * @param initialSz initial z scaling factor.
4528 */
4529 public KnownPositionAccelerometerCalibrator(
4530 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4531 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
4532 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
4533 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4534 initialSx, initialSy, initialSz);
4535 }
4536
4537 /**
4538 * Constructor.
4539 *
4540 * @param position position where body kinematics measures have been taken.
4541 * @param measurements collection of body kinematics measurements with standard
4542 * deviations taken at the same position with zero velocity
4543 * and unknown different orientations.
4544 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4545 * accelerometer and gyroscope.
4546 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4547 * to find a solution. This is expressed in meters per squared
4548 * second (m/s^2).
4549 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4550 * to find a solution. This is expressed in meters per squared
4551 * second (m/s^2).
4552 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4553 * to find a solution. This is expressed in meters per squared
4554 * second (m/s^2).
4555 * @param initialSx initial x scaling factor.
4556 * @param initialSy initial y scaling factor.
4557 * @param initialSz initial z scaling factor.
4558 * @param listener listener to handle events raised by this calibrator.
4559 */
4560 public KnownPositionAccelerometerCalibrator(
4561 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4562 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
4563 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
4564 final KnownPositionAccelerometerCalibratorListener listener) {
4565 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4566 initialSx, initialSy, initialSz, listener);
4567 }
4568
4569 /**
4570 * Constructor.
4571 *
4572 * @param position position where body kinematics measures have been taken.
4573 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4574 * to find a solution.
4575 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4576 * to find a solution.
4577 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4578 * to find a solution.
4579 * @param initialSx initial x scaling factor.
4580 * @param initialSy initial y scaling factor.
4581 * @param initialSz initial z scaling factor.
4582 */
4583 public KnownPositionAccelerometerCalibrator(
4584 final NEDPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
4585 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
4586 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz);
4587 }
4588
4589 /**
4590 * Constructor.
4591 *
4592 * @param position position where body kinematics measures have been taken.
4593 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4594 * to find a solution.
4595 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4596 * to find a solution.
4597 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4598 * to find a solution.
4599 * @param initialSx initial x scaling factor.
4600 * @param initialSy initial y scaling factor.
4601 * @param initialSz initial z scaling factor.
4602 * @param listener listener to handle events raised by this calibrator.
4603 */
4604 public KnownPositionAccelerometerCalibrator(
4605 final NEDPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
4606 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
4607 final KnownPositionAccelerometerCalibratorListener listener) {
4608 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ,
4609 initialSx, initialSy, initialSz, listener);
4610 }
4611
4612 /**
4613 * Constructor.
4614 *
4615 * @param position position where body kinematics measures have been taken.
4616 * @param measurements collection of body kinematics measurements with standard
4617 * deviations taken at the same position with zero velocity
4618 * and unknown different orientations.
4619 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4620 * to find a solution.
4621 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4622 * to find a solution.
4623 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4624 * to find a solution.
4625 * @param initialSx initial x scaling factor.
4626 * @param initialSy initial y scaling factor.
4627 * @param initialSz initial z scaling factor.
4628 */
4629 public KnownPositionAccelerometerCalibrator(
4630 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4631 final Acceleration initialBiasX, final Acceleration initialBiasY,
4632 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
4633 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ,
4634 initialSx, initialSy, initialSz);
4635 }
4636
4637 /**
4638 * Constructor.
4639 *
4640 * @param position position where body kinematics measures have been taken.
4641 * @param measurements collection of body kinematics measurements with standard
4642 * deviations taken at the same position with zero velocity
4643 * and unknown different orientations.
4644 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4645 * to find a solution.
4646 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4647 * to find a solution.
4648 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4649 * to find a solution.
4650 * @param initialSx initial x scaling factor.
4651 * @param initialSy initial y scaling factor.
4652 * @param initialSz initial z scaling factor.
4653 * @param listener listener to handle events raised by this calibrator.
4654 */
4655 public KnownPositionAccelerometerCalibrator(
4656 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4657 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
4658 final double initialSx, final double initialSy, final double initialSz,
4659 final KnownPositionAccelerometerCalibratorListener listener) {
4660 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ,
4661 initialSx, initialSy, initialSz, listener);
4662 }
4663
4664 /**
4665 * Constructor.
4666 *
4667 * @param position position where body kinematics measures have been taken.
4668 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4669 * accelerometer and gyroscope.
4670 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4671 * to find a solution.
4672 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4673 * to find a solution.
4674 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4675 * to find a solution.
4676 * @param initialSx initial x scaling factor.
4677 * @param initialSy initial y scaling factor.
4678 * @param initialSz initial z scaling factor.
4679 */
4680 public KnownPositionAccelerometerCalibrator(
4681 final NEDPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
4682 final Acceleration initialBiasY, final Acceleration initialBiasZ,
4683 final double initialSx, final double initialSy, final double initialSz) {
4684 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4685 initialSx, initialSy, initialSz);
4686 }
4687
4688 /**
4689 * Constructor.
4690 *
4691 * @param position position where body kinematics measures have been taken.
4692 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4693 * accelerometer and gyroscope.
4694 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4695 * to find a solution.
4696 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4697 * to find a solution.
4698 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4699 * to find a solution.
4700 * @param initialSx initial x scaling factor.
4701 * @param initialSy initial y scaling factor.
4702 * @param initialSz initial z scaling factor.
4703 * @param listener listener to handle events raised by this calibrator.
4704 */
4705 public KnownPositionAccelerometerCalibrator(
4706 final NEDPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
4707 final Acceleration initialBiasY, final Acceleration initialBiasZ,
4708 final double initialSx, final double initialSy, final double initialSz,
4709 final KnownPositionAccelerometerCalibratorListener listener) {
4710 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4711 initialSx, initialSy, initialSz, listener);
4712 }
4713
4714 /**
4715 * Constructor.
4716 *
4717 * @param position position where body kinematics measures have been taken.
4718 * @param measurements collection of body kinematics measurements with standard
4719 * deviations taken at the same position with zero velocity
4720 * and unknown different orientations.
4721 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4722 * accelerometer and gyroscope.
4723 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4724 * to find a solution.
4725 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4726 * to find a solution.
4727 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4728 * to find a solution.
4729 * @param initialSx initial x scaling factor.
4730 * @param initialSy initial y scaling factor.
4731 * @param initialSz initial z scaling factor.
4732 */
4733 public KnownPositionAccelerometerCalibrator(
4734 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4735 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
4736 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz) {
4737 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4738 initialSx, initialSy, initialSz);
4739 }
4740
4741 /**
4742 * Constructor.
4743 *
4744 * @param position position where body kinematics measures have been taken.
4745 * @param measurements collection of body kinematics measurements with standard
4746 * deviations taken at the same position with zero velocity
4747 * and unknown different orientations.
4748 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4749 * accelerometer and gyroscope.
4750 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4751 * to find a solution.
4752 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4753 * to find a solution.
4754 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4755 * to find a solution.
4756 * @param initialSx initial x scaling factor.
4757 * @param initialSy initial y scaling factor.
4758 * @param initialSz initial z scaling factor.
4759 * @param listener listener to handle events raised by this calibrator.
4760 */
4761 public KnownPositionAccelerometerCalibrator(
4762 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4763 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
4764 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
4765 final KnownPositionAccelerometerCalibratorListener listener) {
4766 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4767 initialSx, initialSy, initialSz, listener);
4768 }
4769
4770 /**
4771 * Constructor.
4772 *
4773 * @param position position where body kinematics measures have been taken.
4774 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4775 * to find a solution. This is expressed in meters per squared
4776 * second (m/s^2).
4777 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4778 * to find a solution. This is expressed in meters per squared
4779 * second (m/s^2).
4780 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4781 * to find a solution. This is expressed in meters per squared
4782 * second (m/s^2).
4783 * @param initialSx initial x scaling factor.
4784 * @param initialSy initial y scaling factor.
4785 * @param initialSz initial z scaling factor.
4786 * @param initialMxy initial x-y cross coupling error.
4787 * @param initialMxz initial x-z cross coupling error.
4788 * @param initialMyx initial y-x cross coupling error.
4789 * @param initialMyz initial y-z cross coupling error.
4790 * @param initialMzx initial z-x cross coupling error.
4791 * @param initialMzy initial z-y cross coupling error.
4792 */
4793 public KnownPositionAccelerometerCalibrator(
4794 final NEDPosition position, final double initialBiasX, final double initialBiasY,
4795 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
4796 final double initialMxy, final double initialMxz, final double initialMyx,
4797 final double initialMyz, final double initialMzx, final double initialMzy) {
4798 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ,
4799 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
4800 initialMyz, initialMzx, initialMzy);
4801 }
4802
4803 /**
4804 * Constructor.
4805 *
4806 * @param position position where body kinematics measures have been taken.
4807 * @param measurements collection of body kinematics measurements with standard
4808 * deviations taken at the same position with zero velocity
4809 * and unknown different orientations.
4810 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4811 * to find a solution. This is expressed in meters per squared
4812 * second (m/s^2).
4813 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4814 * to find a solution. This is expressed in meters per squared
4815 * second (m/s^2).
4816 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4817 * to find a solution. This is expressed in meters per squared
4818 * second (m/s^2).
4819 * @param initialSx initial x scaling factor.
4820 * @param initialSy initial y scaling factor.
4821 * @param initialSz initial z scaling factor.
4822 * @param initialMxy initial x-y cross coupling error.
4823 * @param initialMxz initial x-z cross coupling error.
4824 * @param initialMyx initial y-x cross coupling error.
4825 * @param initialMyz initial y-z cross coupling error.
4826 * @param initialMzx initial z-x cross coupling error.
4827 * @param initialMzy initial z-y cross coupling error.
4828 */
4829 public KnownPositionAccelerometerCalibrator(
4830 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4831 final double initialBiasX, final double initialBiasY,
4832 final double initialBiasZ, final double initialSx, final double initialSy,
4833 final double initialSz, final double initialMxy, final double initialMxz,
4834 final double initialMyx, final double initialMyz, final double initialMzx,
4835 final double initialMzy) {
4836 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ,
4837 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
4838 initialMyz, initialMzx, initialMzy);
4839 }
4840
4841 /**
4842 * Constructor.
4843 *
4844 * @param position position where body kinematics measures have been taken.
4845 * @param measurements collection of body kinematics measurements with standard
4846 * deviations taken at the same position with zero velocity
4847 * and unknown different orientations.
4848 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4849 * to find a solution. This is expressed in meters per squared
4850 * second (m/s^2).
4851 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4852 * to find a solution. This is expressed in meters per squared
4853 * second (m/s^2).
4854 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4855 * to find a solution. This is expressed in meters per squared
4856 * second (m/s^2).
4857 * @param initialSx initial x scaling factor.
4858 * @param initialSy initial y scaling factor.
4859 * @param initialSz initial z scaling factor.
4860 * @param initialMxy initial x-y cross coupling error.
4861 * @param initialMxz initial x-z cross coupling error.
4862 * @param initialMyx initial y-x cross coupling error.
4863 * @param initialMyz initial y-z cross coupling error.
4864 * @param initialMzx initial z-x cross coupling error.
4865 * @param initialMzy initial z-y cross coupling error.
4866 * @param listener listener to handle events raised by this calibrator.
4867 */
4868 public KnownPositionAccelerometerCalibrator(
4869 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4870 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
4871 final double initialSx, final double initialSy, final double initialSz,
4872 final double initialMxy, final double initialMxz, final double initialMyx,
4873 final double initialMyz, final double initialMzx, final double initialMzy,
4874 final KnownPositionAccelerometerCalibratorListener listener) {
4875 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ,
4876 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
4877 initialMyz, initialMzx, initialMzy, listener);
4878 }
4879
4880 /**
4881 * Constructor.
4882 *
4883 * @param position position where body kinematics measures have been taken.
4884 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4885 * accelerometer and gyroscope.
4886 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4887 * to find a solution. This is expressed in meters per squared
4888 * second (m/s^2).
4889 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4890 * to find a solution. This is expressed in meters per squared
4891 * second (m/s^2).
4892 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4893 * to find a solution. This is expressed in meters per squared
4894 * second (m/s^2).
4895 * @param initialSx initial x scaling factor.
4896 * @param initialSy initial y scaling factor.
4897 * @param initialSz initial z scaling factor.
4898 * @param initialMxy initial x-y cross coupling error.
4899 * @param initialMxz initial x-z cross coupling error.
4900 * @param initialMyx initial y-x cross coupling error.
4901 * @param initialMyz initial y-z cross coupling error.
4902 * @param initialMzx initial z-x cross coupling error.
4903 * @param initialMzy initial z-y cross coupling error.
4904 */
4905 public KnownPositionAccelerometerCalibrator(
4906 final NEDPosition position, final boolean commonAxisUsed,
4907 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
4908 final double initialSx, final double initialSy, final double initialSz,
4909 final double initialMxy, final double initialMxz, final double initialMyx,
4910 final double initialMyz, final double initialMzx, final double initialMzy) {
4911 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4912 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
4913 initialMyz, initialMzx, initialMzy);
4914 }
4915
4916 /**
4917 * Constructor.
4918 *
4919 * @param position position where body kinematics measures have been taken.
4920 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4921 * accelerometer and gyroscope.
4922 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4923 * to find a solution. This is expressed in meters per squared
4924 * second (m/s^2).
4925 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4926 * to find a solution. This is expressed in meters per squared
4927 * second (m/s^2).
4928 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4929 * to find a solution. This is expressed in meters per squared
4930 * second (m/s^2).
4931 * @param initialSx initial x scaling factor.
4932 * @param initialSy initial y scaling factor.
4933 * @param initialSz initial z scaling factor.
4934 * @param initialMxy initial x-y cross coupling error.
4935 * @param initialMxz initial x-z cross coupling error.
4936 * @param initialMyx initial y-x cross coupling error.
4937 * @param initialMyz initial y-z cross coupling error.
4938 * @param initialMzx initial z-x cross coupling error.
4939 * @param initialMzy initial z-y cross coupling error.
4940 * @param listener listener to handle events raised by this calibrator.
4941 */
4942 public KnownPositionAccelerometerCalibrator(
4943 final NEDPosition position, final boolean commonAxisUsed,
4944 final double initialBiasX, final double initialBiasY, final double initialBiasZ,
4945 final double initialSx, final double initialSy, final double initialSz,
4946 final double initialMxy, final double initialMxz, final double initialMyx,
4947 final double initialMyz, final double initialMzx, final double initialMzy,
4948 final KnownPositionAccelerometerCalibratorListener listener) {
4949 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4950 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
4951 initialMyz, initialMzx, initialMzy, listener);
4952 }
4953
4954 /**
4955 * Constructor.
4956 *
4957 * @param position position where body kinematics measures have been taken.
4958 * @param measurements collection of body kinematics measurements with standard
4959 * deviations taken at the same position with zero velocity
4960 * and unknown different orientations.
4961 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
4962 * accelerometer and gyroscope.
4963 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
4964 * to find a solution. This is expressed in meters per squared
4965 * second (m/s^2).
4966 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
4967 * to find a solution. This is expressed in meters per squared
4968 * second (m/s^2).
4969 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
4970 * to find a solution. This is expressed in meters per squared
4971 * second (m/s^2).
4972 * @param initialSx initial x scaling factor.
4973 * @param initialSy initial y scaling factor.
4974 * @param initialSz initial z scaling factor.
4975 * @param initialMxy initial x-y cross coupling error.
4976 * @param initialMxz initial x-z cross coupling error.
4977 * @param initialMyx initial y-x cross coupling error.
4978 * @param initialMyz initial y-z cross coupling error.
4979 * @param initialMzx initial z-x cross coupling error.
4980 * @param initialMzy initial z-y cross coupling error.
4981 */
4982 public KnownPositionAccelerometerCalibrator(
4983 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
4984 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
4985 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
4986 final double initialMxy, final double initialMxz, final double initialMyx,
4987 final double initialMyz, final double initialMzx, final double initialMzy) {
4988 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
4989 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
4990 initialMyz, initialMzx, initialMzy);
4991 }
4992
4993 /**
4994 * Constructor.
4995 *
4996 * @param position position where body kinematics measures have been taken.
4997 * @param measurements collection of body kinematics measurements with standard
4998 * deviations taken at the same position with zero velocity
4999 * and unknown different orientations.
5000 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5001 * accelerometer and gyroscope.
5002 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5003 * to find a solution. This is expressed in meters per squared
5004 * second (m/s^2).
5005 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5006 * to find a solution. This is expressed in meters per squared
5007 * second (m/s^2).
5008 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5009 * to find a solution. This is expressed in meters per squared
5010 * second (m/s^2).
5011 * @param initialSx initial x scaling factor.
5012 * @param initialSy initial y scaling factor.
5013 * @param initialSz initial z scaling factor.
5014 * @param initialMxy initial x-y cross coupling error.
5015 * @param initialMxz initial x-z cross coupling error.
5016 * @param initialMyx initial y-x cross coupling error.
5017 * @param initialMyz initial y-z cross coupling error.
5018 * @param initialMzx initial z-x cross coupling error.
5019 * @param initialMzy initial z-y cross coupling error.
5020 * @param listener listener to handle events raised by this calibrator.
5021 */
5022 public KnownPositionAccelerometerCalibrator(
5023 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5024 final boolean commonAxisUsed, final double initialBiasX, final double initialBiasY,
5025 final double initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
5026 final double initialMxy, final double initialMxz, final double initialMyx,
5027 final double initialMyz, final double initialMzx, final double initialMzy,
5028 final KnownPositionAccelerometerCalibratorListener listener) {
5029 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
5030 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
5031 initialMyz, initialMzx, initialMzy, listener);
5032 }
5033
5034 /**
5035 * Constructor.
5036 *
5037 * @param position position where body kinematics measures have been taken.
5038 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5039 * to find a solution.
5040 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5041 * to find a solution.
5042 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5043 * to find a solution.
5044 * @param initialSx initial x scaling factor.
5045 * @param initialSy initial y scaling factor.
5046 * @param initialSz initial z scaling factor.
5047 * @param initialMxy initial x-y cross coupling error.
5048 * @param initialMxz initial x-z cross coupling error.
5049 * @param initialMyx initial y-x cross coupling error.
5050 * @param initialMyz initial y-z cross coupling error.
5051 * @param initialMzx initial z-x cross coupling error.
5052 * @param initialMzy initial z-y cross coupling error.
5053 */
5054 public KnownPositionAccelerometerCalibrator(
5055 final NEDPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
5056 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
5057 final double initialMxy, final double initialMxz, final double initialMyx, final double initialMyz,
5058 final double initialMzx, final double initialMzy) {
5059 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
5060 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy);
5061 }
5062
5063 /**
5064 * Constructor.
5065 *
5066 * @param position position where body kinematics measures have been taken.
5067 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5068 * to find a solution.
5069 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5070 * to find a solution.
5071 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5072 * to find a solution.
5073 * @param initialSx initial x scaling factor.
5074 * @param initialSy initial y scaling factor.
5075 * @param initialSz initial z scaling factor.
5076 * @param initialMxy initial x-y cross coupling error.
5077 * @param initialMxz initial x-z cross coupling error.
5078 * @param initialMyx initial y-x cross coupling error.
5079 * @param initialMyz initial y-z cross coupling error.
5080 * @param initialMzx initial z-x cross coupling error.
5081 * @param initialMzy initial z-y cross coupling error.
5082 * @param listener listener to handle events raised by this calibrator.
5083 */
5084 public KnownPositionAccelerometerCalibrator(
5085 final NEDPosition position, final Acceleration initialBiasX, final Acceleration initialBiasY,
5086 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
5087 final double initialMxy, final double initialMxz, final double initialMyx, final double initialMyz,
5088 final double initialMzx, final double initialMzy,
5089 final KnownPositionAccelerometerCalibratorListener listener) {
5090 this(convertPosition(position), initialBiasX, initialBiasY, initialBiasZ, initialSx, initialSy, initialSz,
5091 initialMxy, initialMxz, initialMyx, initialMyz, initialMzx, initialMzy, listener);
5092 }
5093
5094 /**
5095 * Constructor.
5096 *
5097 * @param position position where body kinematics measures have been taken.
5098 * @param measurements collection of body kinematics measurements with standard
5099 * deviations taken at the same position with zero velocity
5100 * and unknown different orientations.
5101 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5102 * to find a solution.
5103 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5104 * to find a solution.
5105 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5106 * to find a solution.
5107 * @param initialSx initial x scaling factor.
5108 * @param initialSy initial y scaling factor.
5109 * @param initialSz initial z scaling factor.
5110 * @param initialMxy initial x-y cross coupling error.
5111 * @param initialMxz initial x-z cross coupling error.
5112 * @param initialMyx initial y-x cross coupling error.
5113 * @param initialMyz initial y-z cross coupling error.
5114 * @param initialMzx initial z-x cross coupling error.
5115 * @param initialMzy initial z-y cross coupling error.
5116 */
5117 public KnownPositionAccelerometerCalibrator(
5118 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5119 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
5120 final double initialSx, final double initialSy, final double initialSz,
5121 final double initialMxy, final double initialMxz, final double initialMyx,
5122 final double initialMyz, final double initialMzx, final double initialMzy) {
5123 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ,
5124 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
5125 initialMyz, initialMzx, initialMzy);
5126 }
5127
5128 /**
5129 * Constructor.
5130 *
5131 * @param position position where body kinematics measures have been taken.
5132 * @param measurements collection of body kinematics measurements with standard
5133 * deviations taken at the same position with zero velocity
5134 * and unknown different orientations.
5135 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5136 * to find a solution.
5137 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5138 * to find a solution.
5139 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5140 * to find a solution.
5141 * @param initialSx initial x scaling factor.
5142 * @param initialSy initial y scaling factor.
5143 * @param initialSz initial z scaling factor.
5144 * @param initialMxy initial x-y cross coupling error.
5145 * @param initialMxz initial x-z cross coupling error.
5146 * @param initialMyx initial y-x cross coupling error.
5147 * @param initialMyz initial y-z cross coupling error.
5148 * @param initialMzx initial z-x cross coupling error.
5149 * @param initialMzy initial z-y cross coupling error.
5150 * @param listener listener to handle events raised by this calibrator.
5151 */
5152 public KnownPositionAccelerometerCalibrator(
5153 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5154 final Acceleration initialBiasX, final Acceleration initialBiasY, final Acceleration initialBiasZ,
5155 final double initialSx, final double initialSy, final double initialSz,
5156 final double initialMxy, final double initialMxz, final double initialMyx,
5157 final double initialMyz, final double initialMzx, final double initialMzy,
5158 final KnownPositionAccelerometerCalibratorListener listener) {
5159 this(convertPosition(position), measurements, initialBiasX, initialBiasY, initialBiasZ,
5160 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
5161 initialMyz, initialMzx, initialMzy, listener);
5162 }
5163
5164 /**
5165 * Constructor.
5166 *
5167 * @param position position where body kinematics measures have been taken.
5168 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5169 * accelerometer and gyroscope.
5170 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5171 * to find a solution.
5172 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5173 * to find a solution.
5174 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5175 * to find a solution.
5176 * @param initialSx initial x scaling factor.
5177 * @param initialSy initial y scaling factor.
5178 * @param initialSz initial z scaling factor.
5179 * @param initialMxy initial x-y cross coupling error.
5180 * @param initialMxz initial x-z cross coupling error.
5181 * @param initialMyx initial y-x cross coupling error.
5182 * @param initialMyz initial y-z cross coupling error.
5183 * @param initialMzx initial z-x cross coupling error.
5184 * @param initialMzy initial z-y cross coupling error.
5185 */
5186 public KnownPositionAccelerometerCalibrator(
5187 final NEDPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
5188 final Acceleration initialBiasY, final Acceleration initialBiasZ,
5189 final double initialSx, final double initialSy, final double initialSz,
5190 final double initialMxy, final double initialMxz, final double initialMyx,
5191 final double initialMyz, final double initialMzx, final double initialMzy) {
5192 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
5193 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
5194 initialMyz, initialMzx, initialMzy);
5195 }
5196
5197 /**
5198 * Constructor.
5199 *
5200 * @param position position where body kinematics measures have been taken.
5201 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5202 * accelerometer and gyroscope.
5203 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5204 * to find a solution.
5205 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5206 * to find a solution.
5207 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5208 * to find a solution.
5209 * @param initialSx initial x scaling factor.
5210 * @param initialSy initial y scaling factor.
5211 * @param initialSz initial z scaling factor.
5212 * @param initialMxy initial x-y cross coupling error.
5213 * @param initialMxz initial x-z cross coupling error.
5214 * @param initialMyx initial y-x cross coupling error.
5215 * @param initialMyz initial y-z cross coupling error.
5216 * @param initialMzx initial z-x cross coupling error.
5217 * @param initialMzy initial z-y cross coupling error.
5218 * @param listener listener to handle events raised by this calibrator.
5219 */
5220 public KnownPositionAccelerometerCalibrator(
5221 final NEDPosition position, final boolean commonAxisUsed, final Acceleration initialBiasX,
5222 final Acceleration initialBiasY, final Acceleration initialBiasZ,
5223 final double initialSx, final double initialSy, final double initialSz,
5224 final double initialMxy, final double initialMxz, final double initialMyx,
5225 final double initialMyz, final double initialMzx, final double initialMzy,
5226 final KnownPositionAccelerometerCalibratorListener listener) {
5227 this(convertPosition(position), commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
5228 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
5229 initialMyz, initialMzx, initialMzy, listener);
5230 }
5231
5232 /**
5233 * Constructor.
5234 *
5235 * @param position position where body kinematics measures have been taken.
5236 * @param measurements collection of body kinematics measurements with standard
5237 * deviations taken at the same position with zero velocity
5238 * and unknown different orientations.
5239 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5240 * accelerometer and gyroscope.
5241 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5242 * to find a solution.
5243 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5244 * to find a solution.
5245 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5246 * to find a solution.
5247 * @param initialSx initial x scaling factor.
5248 * @param initialSy initial y scaling factor.
5249 * @param initialSz initial z scaling factor.
5250 * @param initialMxy initial x-y cross coupling error.
5251 * @param initialMxz initial x-z cross coupling error.
5252 * @param initialMyx initial y-x cross coupling error.
5253 * @param initialMyz initial y-z cross coupling error.
5254 * @param initialMzx initial z-x cross coupling error.
5255 * @param initialMzy initial z-y cross coupling error.
5256 */
5257 public KnownPositionAccelerometerCalibrator(
5258 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5259 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
5260 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
5261 final double initialMxy, final double initialMxz, final double initialMyx,
5262 final double initialMyz, final double initialMzx, final double initialMzy) {
5263 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
5264 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
5265 initialMyz, initialMzx, initialMzy);
5266 }
5267
5268 /**
5269 * Constructor.
5270 *
5271 * @param position position where body kinematics measures have been taken.
5272 * @param measurements collection of body kinematics measurements with standard
5273 * deviations taken at the same position with zero velocity
5274 * and unknown different orientations.
5275 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5276 * accelerometer and gyroscope.
5277 * @param initialBiasX initial x-coordinate of accelerometer bias to be used
5278 * to find a solution.
5279 * @param initialBiasY initial y-coordinate of accelerometer bias to be used
5280 * to find a solution.
5281 * @param initialBiasZ initial z-coordinate of accelerometer bias to be used
5282 * to find a solution.
5283 * @param initialSx initial x scaling factor.
5284 * @param initialSy initial y scaling factor.
5285 * @param initialSz initial z scaling factor.
5286 * @param initialMxy initial x-y cross coupling error.
5287 * @param initialMxz initial x-z cross coupling error.
5288 * @param initialMyx initial y-x cross coupling error.
5289 * @param initialMyz initial y-z cross coupling error.
5290 * @param initialMzx initial z-x cross coupling error.
5291 * @param initialMzy initial z-y cross coupling error.
5292 * @param listener listener to handle events raised by this calibrator.
5293 */
5294 public KnownPositionAccelerometerCalibrator(
5295 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5296 final boolean commonAxisUsed, final Acceleration initialBiasX, final Acceleration initialBiasY,
5297 final Acceleration initialBiasZ, final double initialSx, final double initialSy, final double initialSz,
5298 final double initialMxy, final double initialMxz, final double initialMyx,
5299 final double initialMyz, final double initialMzx, final double initialMzy,
5300 final KnownPositionAccelerometerCalibratorListener listener) {
5301 this(convertPosition(position), measurements, commonAxisUsed, initialBiasX, initialBiasY, initialBiasZ,
5302 initialSx, initialSy, initialSz, initialMxy, initialMxz, initialMyx,
5303 initialMyz, initialMzx, initialMzy, listener);
5304 }
5305
5306 /**
5307 * Constructor.
5308 *
5309 * @param position position where body kinematics measures have been taken.
5310 * @param initialBias initial accelerometer bias to be used to find a solution.
5311 * This must have length 3 and is expressed in meters per
5312 * squared second (m/s^2).
5313 * @throws IllegalArgumentException if provided bias array does not have length 3.
5314 */
5315 public KnownPositionAccelerometerCalibrator(final NEDPosition position, final double[] initialBias) {
5316 this(convertPosition(position), initialBias);
5317 }
5318
5319 /**
5320 * Constructor.
5321 *
5322 * @param position position where body kinematics measures have been taken.
5323 * @param initialBias initial accelerometer bias to be used to find a solution.
5324 * This must have length 3 and is expressed in meters per
5325 * squared second (m/s^2).
5326 * @param listener listener to handle events raised by this calibrator.
5327 * @throws IllegalArgumentException if provided bias array does not have length 3.
5328 */
5329 public KnownPositionAccelerometerCalibrator(
5330 final NEDPosition position, final double[] initialBias,
5331 final KnownPositionAccelerometerCalibratorListener listener) {
5332 this(convertPosition(position), initialBias, listener);
5333 }
5334
5335 /**
5336 * Constructor.
5337 *
5338 * @param position position where body kinematics measures have been taken.
5339 * @param measurements collection of body kinematics measurements with standard
5340 * deviations taken at the same position with zero velocity
5341 * and unknown different orientations.
5342 * @param initialBias initial accelerometer bias to be used to find a solution.
5343 * This must have length 3 and is expressed in meters per
5344 * squared second (m/s^2).
5345 * @throws IllegalArgumentException if provided bias array does not have length 3.
5346 */
5347 public KnownPositionAccelerometerCalibrator(
5348 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5349 final double[] initialBias) {
5350 this(convertPosition(position), measurements, initialBias);
5351 }
5352
5353 /**
5354 * Constructor.
5355 *
5356 * @param position position where body kinematics measures have been taken.
5357 * @param measurements collection of body kinematics measurements with standard
5358 * deviations taken at the same position with zero velocity
5359 * and unknown different orientations.
5360 * @param initialBias initial accelerometer bias to be used to find a solution.
5361 * This must have length 3 and is expressed in meters per
5362 * squared second (m/s^2).
5363 * @param listener listener to handle events raised by this calibrator.
5364 * @throws IllegalArgumentException if provided bias array does not have length 3.
5365 */
5366 public KnownPositionAccelerometerCalibrator(
5367 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5368 final double[] initialBias, final KnownPositionAccelerometerCalibratorListener listener) {
5369 this(convertPosition(position), measurements, initialBias, listener);
5370 }
5371
5372 /**
5373 * Constructor.
5374 *
5375 * @param position position where body kinematics measures have been taken.
5376 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5377 * accelerometer and gyroscope.
5378 * @param initialBias initial accelerometer bias to be used to find a solution.
5379 * This must have length 3 and is expressed in meters per
5380 * squared second (m/s^2).
5381 * @throws IllegalArgumentException if provided bias array does not have length 3.
5382 */
5383 public KnownPositionAccelerometerCalibrator(
5384 final NEDPosition position, final boolean commonAxisUsed, final double[] initialBias) {
5385 this(convertPosition(position), commonAxisUsed, initialBias);
5386 }
5387
5388 /**
5389 * Constructor.
5390 *
5391 * @param position position where body kinematics measures have been taken.
5392 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5393 * accelerometer and gyroscope.
5394 * @param initialBias initial accelerometer bias to be used to find a solution.
5395 * This must have length 3 and is expressed in meters per
5396 * squared second (m/s^2).
5397 * @param listener listener to handle events raised by this calibrator.
5398 * @throws IllegalArgumentException if provided bias array does not have length 3.
5399 */
5400 public KnownPositionAccelerometerCalibrator(
5401 final NEDPosition position, final boolean commonAxisUsed, final double[] initialBias,
5402 final KnownPositionAccelerometerCalibratorListener listener) {
5403 this(convertPosition(position), commonAxisUsed, initialBias, listener);
5404 }
5405
5406 /**
5407 * Constructor.
5408 *
5409 * @param position position where body kinematics measures have been taken.
5410 * @param measurements collection of body kinematics measurements with standard
5411 * deviations taken at the same position with zero velocity
5412 * and unknown different orientations.
5413 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5414 * accelerometer and gyroscope.
5415 * @param initialBias initial accelerometer bias to be used to find a solution.
5416 * This must have length 3 and is expressed in meters per
5417 * squared second (m/s^2).
5418 * @throws IllegalArgumentException if provided bias array does not have length 3.
5419 */
5420 public KnownPositionAccelerometerCalibrator(
5421 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5422 final boolean commonAxisUsed, final double[] initialBias) {
5423 this(convertPosition(position), measurements, commonAxisUsed, initialBias);
5424 }
5425
5426 /**
5427 * Constructor.
5428 *
5429 * @param position position where body kinematics measures have been taken.
5430 * @param measurements collection of body kinematics measurements with standard
5431 * deviations taken at the same position with zero velocity
5432 * and unknown different orientations.
5433 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5434 * accelerometer and gyroscope.
5435 * @param initialBias initial accelerometer bias to be used to find a solution.
5436 * This must have length 3 and is expressed in meters per
5437 * squared second (m/s^2).
5438 * @param listener listener to handle events raised by this calibrator.
5439 * @throws IllegalArgumentException if provided bias array does not have length 3.
5440 */
5441 public KnownPositionAccelerometerCalibrator(
5442 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5443 final boolean commonAxisUsed, final double[] initialBias,
5444 final KnownPositionAccelerometerCalibratorListener listener) {
5445 this(convertPosition(position), measurements, commonAxisUsed, initialBias, listener);
5446 }
5447
5448 /**
5449 * Constructor.
5450 *
5451 * @param position position where body kinematics measures have been taken.
5452 * @param initialBias initial bias to find a solution.
5453 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
5454 */
5455 public KnownPositionAccelerometerCalibrator(final NEDPosition position, final Matrix initialBias) {
5456 this(convertPosition(position), initialBias);
5457 }
5458
5459 /**
5460 * Constructor.
5461 *
5462 * @param position position where body kinematics measures have been taken.
5463 * @param initialBias initial bias to find a solution.
5464 * @param listener listener to handle events raised by this calibrator.
5465 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
5466 */
5467 public KnownPositionAccelerometerCalibrator(
5468 final NEDPosition position, final Matrix initialBias,
5469 final KnownPositionAccelerometerCalibratorListener listener) {
5470 this(convertPosition(position), initialBias, listener);
5471 }
5472
5473 /**
5474 * Constructor.
5475 *
5476 * @param position position where body kinematics measures have been taken.
5477 * @param measurements collection of body kinematics measurements with standard
5478 * deviations taken at the same position with zero velocity
5479 * and unknown different orientations.
5480 * @param initialBias initial bias to find a solution.
5481 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
5482 */
5483 public KnownPositionAccelerometerCalibrator(
5484 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5485 final Matrix initialBias) {
5486 this(convertPosition(position), measurements, initialBias);
5487 }
5488
5489 /**
5490 * Constructor.
5491 *
5492 * @param position position where body kinematics measures have been taken.
5493 * @param measurements collection of body kinematics measurements with standard
5494 * deviations taken at the same position with zero velocity
5495 * and unknown different orientations.
5496 * @param initialBias initial bias to find a solution.
5497 * @param listener listener to handle events raised by this calibrator.
5498 */
5499 public KnownPositionAccelerometerCalibrator(
5500 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5501 final Matrix initialBias, final KnownPositionAccelerometerCalibratorListener listener) {
5502 this(convertPosition(position), measurements, initialBias, listener);
5503 }
5504
5505 /**
5506 * Constructor.
5507 *
5508 * @param position position where body kinematics measures have been taken.
5509 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5510 * accelerometer and gyroscope.
5511 * @param initialBias initial bias to find a solution.
5512 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
5513 */
5514 public KnownPositionAccelerometerCalibrator(
5515 final NEDPosition position, final boolean commonAxisUsed, final Matrix initialBias) {
5516 this(convertPosition(position), commonAxisUsed, initialBias);
5517 }
5518
5519 /**
5520 * Constructor.
5521 *
5522 * @param position position where body kinematics measures have been taken.
5523 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5524 * accelerometer and gyroscope.
5525 * @param initialBias initial bias to find a solution.
5526 * @param listener listener to handle events raised by this calibrator.
5527 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
5528 */
5529 public KnownPositionAccelerometerCalibrator(
5530 final NEDPosition position, final boolean commonAxisUsed, final Matrix initialBias,
5531 final KnownPositionAccelerometerCalibratorListener listener) {
5532 this(convertPosition(position), commonAxisUsed, initialBias, listener);
5533 }
5534
5535 /**
5536 * Constructor.
5537 *
5538 * @param position position where body kinematics measures have been taken.
5539 * @param measurements collection of body kinematics measurements with standard
5540 * deviations taken at the same position with zero velocity
5541 * and unknown different orientations.
5542 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5543 * accelerometer and gyroscope.
5544 * @param initialBias initial bias to find a solution.
5545 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
5546 */
5547 public KnownPositionAccelerometerCalibrator(
5548 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5549 final boolean commonAxisUsed, final Matrix initialBias) {
5550 this(convertPosition(position), measurements, commonAxisUsed, initialBias);
5551 }
5552
5553 /**
5554 * Constructor.
5555 *
5556 * @param position position where body kinematics measures have been taken.
5557 * @param measurements collection of body kinematics measurements with standard
5558 * deviations taken at the same position with zero velocity
5559 * and unknown different orientations.
5560 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5561 * accelerometer and gyroscope.
5562 * @param initialBias initial bias to find a solution.
5563 * @param listener listener to handle events raised by this calibrator.
5564 * @throws IllegalArgumentException if provided bias matrix is not 3x1.
5565 */
5566 public KnownPositionAccelerometerCalibrator(
5567 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5568 final boolean commonAxisUsed, final Matrix initialBias,
5569 final KnownPositionAccelerometerCalibratorListener listener) {
5570 this(convertPosition(position), measurements, commonAxisUsed, initialBias, listener);
5571 }
5572
5573 /**
5574 * Constructor.
5575 *
5576 * @param position position where body kinematics measures have been taken.
5577 * @param initialBias initial bias to find a solution.
5578 * @param initialMa initial scale factors and cross coupling errors matrix.
5579 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
5580 * scaling and coupling error matrix is not 3x3.
5581 */
5582 public KnownPositionAccelerometerCalibrator(
5583 final NEDPosition position, final Matrix initialBias, final Matrix initialMa) {
5584 this(convertPosition(position), initialBias, initialMa);
5585 }
5586
5587 /**
5588 * Constructor.
5589 *
5590 * @param position position where body kinematics measures have been taken.
5591 * @param initialBias initial bias to find a solution.
5592 * @param initialMa initial scale factors and cross coupling errors matrix.
5593 * @param listener listener to handle events raised by this calibrator.
5594 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
5595 * scaling and coupling error matrix is not 3x3.
5596 */
5597 public KnownPositionAccelerometerCalibrator(
5598 final NEDPosition position, final Matrix initialBias, final Matrix initialMa,
5599 final KnownPositionAccelerometerCalibratorListener listener) {
5600 this(convertPosition(position), initialBias, initialMa, listener);
5601 }
5602
5603 /**
5604 * Constructor.
5605 *
5606 * @param position position where body kinematics measures have been taken.
5607 * @param measurements collection of body kinematics measurements with standard
5608 * deviations taken at the same position with zero velocity
5609 * and unknown different orientations.
5610 * @param initialBias initial bias to find a solution.
5611 * @param initialMa initial scale factors and cross coupling errors matrix.
5612 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
5613 * scaling and coupling error matrix is not 3x3.
5614 */
5615 public KnownPositionAccelerometerCalibrator(
5616 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5617 final Matrix initialBias, final Matrix initialMa) {
5618 this(convertPosition(position), measurements, initialBias, initialMa);
5619 }
5620
5621 /**
5622 * Constructor.
5623 *
5624 * @param position position where body kinematics measures have been taken.
5625 * @param measurements collection of body kinematics measurements with standard
5626 * deviations taken at the same position with zero velocity
5627 * and unknown different orientations.
5628 * @param initialBias initial bias to find a solution.
5629 * @param initialMa initial scale factors and cross coupling errors matrix.
5630 * @param listener listener to handle events raised by this calibrator.
5631 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
5632 * scaling and coupling error matrix is not 3x3.
5633 */
5634 public KnownPositionAccelerometerCalibrator(
5635 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5636 final Matrix initialBias, final Matrix initialMa,
5637 final KnownPositionAccelerometerCalibratorListener listener) {
5638 this(convertPosition(position), measurements, initialBias, initialMa, listener);
5639 }
5640
5641 /**
5642 * Constructor.
5643 *
5644 * @param position position where body kinematics measures have been taken.
5645 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5646 * accelerometer and gyroscope.
5647 * @param initialBias initial bias to find a solution.
5648 * @param initialMa initial scale factors and cross coupling errors matrix.
5649 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
5650 * scaling and coupling error matrix is not 3x3.
5651 */
5652 public KnownPositionAccelerometerCalibrator(
5653 final NEDPosition position, final boolean commonAxisUsed, final Matrix initialBias,
5654 final Matrix initialMa) {
5655 this(convertPosition(position), commonAxisUsed, initialBias, initialMa);
5656 }
5657
5658 /**
5659 * Constructor.
5660 *
5661 * @param position position where body kinematics measures have been taken.
5662 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5663 * accelerometer and gyroscope.
5664 * @param initialBias initial bias to find a solution.
5665 * @param initialMa initial scale factors and cross coupling errors matrix.
5666 * @param listener listener to handle events raised by this calibrator.
5667 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
5668 * scaling and coupling error matrix is not 3x3.
5669 */
5670 public KnownPositionAccelerometerCalibrator(
5671 final NEDPosition position, final boolean commonAxisUsed, final Matrix initialBias,
5672 final Matrix initialMa, final KnownPositionAccelerometerCalibratorListener listener) {
5673 this(convertPosition(position), commonAxisUsed, initialBias, initialMa, listener);
5674 }
5675
5676 /**
5677 * Constructor.
5678 *
5679 * @param position position where body kinematics measures have been taken.
5680 * @param measurements collection of body kinematics measurements with standard
5681 * deviations taken at the same position with zero velocity
5682 * and unknown different orientations.
5683 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5684 * accelerometer and gyroscope.
5685 * @param initialBias initial bias to find a solution.
5686 * @param initialMa initial scale factors and cross coupling errors matrix.
5687 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
5688 * scaling and coupling error matrix is not 3x3.
5689 */
5690 public KnownPositionAccelerometerCalibrator(
5691 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5692 final boolean commonAxisUsed, final Matrix initialBias, final Matrix initialMa) {
5693 this(convertPosition(position), measurements, commonAxisUsed, initialBias, initialMa);
5694 }
5695
5696 /**
5697 * Constructor.
5698 *
5699 * @param position position where body kinematics measures have been taken.
5700 * @param measurements collection of body kinematics measurements with standard
5701 * deviations taken at the same position with zero velocity
5702 * and unknown different orientations.
5703 * @param commonAxisUsed indicates whether z-axis is assumed to be common for
5704 * accelerometer and gyroscope.
5705 * @param initialBias initial bias to find a solution.
5706 * @param initialMa initial scale factors and cross coupling errors matrix.
5707 * @param listener listener to handle events raised by this calibrator.
5708 * @throws IllegalArgumentException if either provided bias matrix is not 3x1 or
5709 * scaling and coupling error matrix is not 3x3.
5710 */
5711 public KnownPositionAccelerometerCalibrator(
5712 final NEDPosition position, final Collection<StandardDeviationBodyKinematics> measurements,
5713 final boolean commonAxisUsed, final Matrix initialBias, final Matrix initialMa,
5714 final KnownPositionAccelerometerCalibratorListener listener) {
5715 this(convertPosition(position), measurements, commonAxisUsed, initialBias, initialMa, listener);
5716 }
5717
5718 /**
5719 * Gets position where body kinematics measures have been taken expressed in
5720 * ECEF coordinates.
5721 *
5722 * @return position where body kinematics measures have been taken.
5723 */
5724 public ECEFPosition getEcefPosition() {
5725 return position;
5726 }
5727
5728 /**
5729 * Sets position where body kinematics measures have been taken expressed in
5730 * ECEF coordinates.
5731 *
5732 * @param position position where body kinematics measures have been taken.
5733 * @throws LockedException if calibrator is currently running.
5734 */
5735 public void setPosition(final ECEFPosition position) throws LockedException {
5736 if (isRunning()) {
5737 throw new LockedException();
5738 }
5739
5740 this.position = position;
5741 if (position != null) {
5742 final var gravity = ECEFGravityEstimator.estimateGravityAndReturnNew(
5743 this.position.getX(), this.position.getY(), this.position.getZ());
5744 groundTruthGravityNorm = gravity.getNorm();
5745 } else {
5746 groundTruthGravityNorm = null;
5747 }
5748 }
5749
5750 /**
5751 * Gets position where body kinematics measures have been taken expressed in
5752 * NED coordinates.
5753 *
5754 * @return position where body kinematics measures have been taken or null if
5755 * not available.
5756 */
5757 public NEDPosition getNedPosition() {
5758 final var result = new NEDPosition();
5759 return getNedPosition(result) ? result : null;
5760 }
5761
5762 /**
5763 * Gets position where body kinematics measures have been taken expressed in
5764 * NED coordinates.
5765 *
5766 * @param result instance where result will be stored.
5767 * @return true if NED position could be computed, false otherwise.
5768 */
5769 public boolean getNedPosition(final NEDPosition result) {
5770
5771 if (position != null) {
5772 final var velocity = new NEDVelocity();
5773 ECEFtoNEDPositionVelocityConverter.convertECEFtoNED(
5774 position.getX(), position.getY(), position.getZ(),
5775 0.0, 0.0, 0.0, result, velocity);
5776 return true;
5777 } else {
5778 return false;
5779 }
5780 }
5781
5782 /**
5783 * Sets position where body kinematics measures have been taken expressed in
5784 * NED coordinates.
5785 *
5786 * @param position position where body kinematics measures have been taken.
5787 * @throws LockedException if calibrator is currently running.
5788 */
5789 public void setPosition(final NEDPosition position) throws LockedException {
5790 setPosition(position != null ? convertPosition(position) : null);
5791 }
5792
5793 /**
5794 * Indicates whether calibrator is ready to start.
5795 *
5796 * @return true if calibrator is ready, false otherwise.
5797 */
5798 @Override
5799 public boolean isReady() {
5800 return super.isReady() && position != null;
5801 }
5802
5803 /**
5804 * Converts provided NED position expressed in terms of latitude, longitude and height respect
5805 * mean Earth surface, to position expressed in ECEF coordinates.
5806 *
5807 * @param position NED position to be converted.
5808 * @return converted position expressed in ECEF coordinates.
5809 */
5810 private static ECEFPosition convertPosition(final NEDPosition position) {
5811 final var velocity = new ECEFVelocity();
5812 final var result = new ECEFPosition();
5813 NEDtoECEFPositionVelocityConverter.convertNEDtoECEF(
5814 position.getLatitude(), position.getLongitude(), position.getHeight(),
5815 0.0, 0.0, 0.0, result, velocity);
5816 return result;
5817 }
5818 }