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