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