1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.irurueta.navigation.inertial.calibration.intervals.thresholdfactor;
17
18 import com.irurueta.navigation.inertial.calibration.BodyKinematicsSequence;
19 import com.irurueta.navigation.inertial.calibration.StandardDeviationTimedBodyKinematics;
20
21
22
23
24
25 public class DefaultGyroscopeQualityScoreMapper implements
26 QualityScoreMapper<BodyKinematicsSequence<StandardDeviationTimedBodyKinematics>> {
27
28
29
30
31
32
33
34 @Override
35 public double map(final BodyKinematicsSequence<StandardDeviationTimedBodyKinematics> value) {
36 final var items = value.getSortedItems();
37 if (items != null) {
38 final var count = value.getItemsCount();
39
40 var avg = 0.0;
41 for (var item : items) {
42 avg += (item.getSpecificForceStandardDeviation() + item.getAngularRateStandardDeviation()) / count;
43 }
44
45 return 1.0 / (1.0 + avg);
46 } else {
47 return 0.0;
48 }
49 }
50 }