View Javadoc
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 }