@wemap/positioning 2.7.13 → 14.0.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +51 -0
  2. package/dist/index.d.ts +19 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +16582 -0
  5. package/dist/qr-scanner-worker.min-CdBZO1_x.js +2 -0
  6. package/dist/src/ILocationSource.d.ts +104 -0
  7. package/dist/src/ILocationSource.d.ts.map +1 -0
  8. package/dist/src/MapMatching.d.ts +83 -0
  9. package/dist/src/MapMatching.d.ts.map +1 -0
  10. package/dist/src/location-sources/GnssWifiLocationSource.d.ts +79 -0
  11. package/dist/src/location-sources/GnssWifiLocationSource.d.ts.map +1 -0
  12. package/dist/src/location-sources/LocationSource.d.ts +102 -0
  13. package/dist/src/location-sources/LocationSource.d.ts.map +1 -0
  14. package/dist/src/location-sources/VPSLocationSource.d.ts +107 -0
  15. package/dist/src/location-sources/VPSLocationSource.d.ts.map +1 -0
  16. package/dist/src/types.d.ts +65 -0
  17. package/dist/src/types.d.ts.map +1 -0
  18. package/dist/src/utils/permissions.d.ts +29 -0
  19. package/dist/src/utils/permissions.d.ts.map +1 -0
  20. package/dist/vitest.config.d.ts +3 -0
  21. package/dist/vitest.config.d.ts.map +1 -0
  22. package/package.json +23 -59
  23. package/babel.config.js +0 -11
  24. package/config.json +0 -4
  25. package/debug/absolute-attitude.html +0 -16
  26. package/debug/arcore-absolute.html +0 -16
  27. package/debug/arcore.html +0 -16
  28. package/debug/components/AbsoluteAttitudeComponent.jsx +0 -100
  29. package/debug/components/ArCoreAbsoluteComponent.jsx +0 -104
  30. package/debug/components/ArCoreComponent.jsx +0 -69
  31. package/debug/components/GnssWifiComponent.jsx +0 -56
  32. package/debug/components/GnssWifiPdrComponent.jsx +0 -76
  33. package/debug/components/ImuComponent.jsx +0 -95
  34. package/debug/components/InclinationComponent.jsx +0 -52
  35. package/debug/components/MapComponent.jsx +0 -228
  36. package/debug/components/NavigationConfig.js +0 -92
  37. package/debug/components/PdrComponent.jsx +0 -75
  38. package/debug/components/PoseComponent.jsx +0 -77
  39. package/debug/components/PositioningComponent.jsx +0 -29
  40. package/debug/components/PositioningInclinationComponent.jsx +0 -82
  41. package/debug/components/PositioningPoseComponent.jsx +0 -117
  42. package/debug/components/RelativeAttitudeComponent.jsx +0 -82
  43. package/debug/components/StartStopComponent.jsx +0 -50
  44. package/debug/components/Utils.js +0 -128
  45. package/debug/components/index.js +0 -34
  46. package/debug/gnss-wifi-pdr.html +0 -16
  47. package/debug/gnss-wifi.html +0 -16
  48. package/debug/imu.html +0 -16
  49. package/debug/inclination.html +0 -16
  50. package/debug/pdr.html +0 -16
  51. package/debug/pose.html +0 -16
  52. package/debug/positioning.html +0 -16
  53. package/debug/relative-attitude.html +0 -16
  54. package/dist/wemap-positioning.min.js +0 -1
  55. package/index.js +0 -8
  56. package/src/PositioningHandler.js +0 -237
  57. package/src/PositioningHandler.spec.js +0 -294
  58. package/src/PositioningOptions.js +0 -34
  59. package/src/errors/AskImuOnDesktopError.js +0 -9
  60. package/src/errors/ContainsIgnoredProviderError.js +0 -9
  61. package/src/errors/GeolocationApiMissingError.js +0 -9
  62. package/src/errors/GeolocationPermissionDeniedError.js +0 -9
  63. package/src/errors/GeolocationPositionUnavailableError.js +0 -9
  64. package/src/errors/IpResolveServerError.js +0 -9
  65. package/src/errors/MissingAccelerometerError.js +0 -11
  66. package/src/errors/MissingArCoreError.js +0 -9
  67. package/src/errors/MissingGyroscopeError.js +0 -11
  68. package/src/errors/MissingMagnetometerError.js +0 -9
  69. package/src/errors/MissingNativeInterfaceError.js +0 -9
  70. package/src/errors/MissingSensorError.js +0 -14
  71. package/src/errors/NoProviderFoundError.js +0 -9
  72. package/src/events/Availability.js +0 -30
  73. package/src/events/EventType.js +0 -22
  74. package/src/events/ProviderEvent.js +0 -35
  75. package/src/providers/Constants.js +0 -5
  76. package/src/providers/Provider.js +0 -247
  77. package/src/providers/ProvidersList.js +0 -44
  78. package/src/providers/ProvidersLogger.js +0 -75
  79. package/src/providers/attitude/AbsoluteAttitudeProvider.js +0 -199
  80. package/src/providers/attitude/EkfAttitude.js +0 -238
  81. package/src/providers/attitude/EkfAttitude.spec.js +0 -116
  82. package/src/providers/attitude/RelativeAttitudeProvider.js +0 -121
  83. package/src/providers/others/ImuProvider.js +0 -179
  84. package/src/providers/others/InclinationProvider.js +0 -99
  85. package/src/providers/others/MapMatchingProvider.js +0 -65
  86. package/src/providers/pose/ArCoreAbsoluteProvider.js +0 -235
  87. package/src/providers/pose/ArCoreProvider.js +0 -191
  88. package/src/providers/pose/GnssWifiPdrProvider.js +0 -219
  89. package/src/providers/pose/PoseProvider.js +0 -71
  90. package/src/providers/pose/pdr/PdrProvider.js +0 -364
  91. package/src/providers/pose/pdr/helpers/HeadingUnlocker.js +0 -41
  92. package/src/providers/pose/pdr/helpers/HeadingUnlocker.spec.js +0 -26
  93. package/src/providers/pose/pdr/helpers/Smoother.js +0 -92
  94. package/src/providers/pose/pdr/helpers/Smoother.spec.js +0 -426
  95. package/src/providers/pose/pdr/helpers/ThugDetector.js +0 -37
  96. package/src/providers/pose/pdr/steps/StepDetection.js +0 -7
  97. package/src/providers/pose/pdr/steps/StepDetectionLadetto.js +0 -67
  98. package/src/providers/pose/pdr/steps/StepDetectionMinMaxPeaks.js +0 -80
  99. package/src/providers/pose/pdr/steps/StepDetectionMinMaxPeaks2.js +0 -108
  100. package/src/providers/position/GnssWifiProvider.js +0 -130
  101. package/src/providers/position/IpProvider.js +0 -74
  102. package/webpack/webpack.common.js +0 -20
  103. package/webpack/webpack.dev.js +0 -24
  104. package/webpack/webpack.prod.js +0 -15
@@ -1,26 +0,0 @@
1
- import chai from 'chai';
2
- import chaiAlmost from 'chai-almost';
3
-
4
- import HeadingUnlocker from './HeadingUnlocker';
5
-
6
- const expect = chai.expect;
7
- chai.use(chaiAlmost());
8
-
9
- describe('HeadingUnlocker test short first edge', () => {
10
-
11
- it('Should return the good value', () => {
12
-
13
- const headingUnlocker = new HeadingUnlocker();
14
- headingUnlocker.setWaitingOrientation(102 * Math.PI / 180);
15
-
16
- headingUnlocker.feedHeading(0 * Math.PI / 180);
17
- expect(headingUnlocker.locked).to.be.true;
18
-
19
- headingUnlocker.feedHeading(130 * Math.PI / 180);
20
- expect(headingUnlocker.locked).to.be.true;
21
-
22
- headingUnlocker.feedHeading(100 * Math.PI / 180);
23
- expect(headingUnlocker.locked).to.be.false;
24
-
25
- });
26
- });
@@ -1,92 +0,0 @@
1
- /* eslint-disable max-statements */
2
- import { WGS84UserPosition } from '@wemap/geo';
3
-
4
- // Generated positions by second
5
- const GEN_FREQUENCY = 60;
6
-
7
- // Min and max time for flyby (in second)
8
- const MIN_FLYBY_TIME = 0.25;
9
- const MAX_FLYBY_TIME = 1;
10
-
11
- class Smoother {
12
-
13
- constructor() {
14
- this.positionsQueue = [];
15
- }
16
-
17
- /**
18
- * Calculate smoothed positions for the next milliseconds given a new position
19
- */
20
- generateNextPositions(newPosition, flyby = false) {
21
-
22
- if (!(newPosition instanceof WGS84UserPosition)) {
23
- throw new TypeError('newPosition is not instance of WGS84UserPosition');
24
- }
25
-
26
- if (newPosition.time === null) {
27
- throw new Error('newPosition does not have time property');
28
- }
29
-
30
- if (!this.previousPosition) {
31
- this.previousPosition = newPosition;
32
- this.positionsQueue.push(this.previousPosition);
33
- return;
34
- }
35
-
36
- const distance = this.previousPosition.distanceTo(newPosition);
37
- const azimuth = this.previousPosition.bearingTo(newPosition);
38
-
39
- let refTimestamp = newPosition.time;
40
-
41
- const queueLength = this.positionsQueue.length;
42
- if (queueLength) {
43
- refTimestamp = Math.max(refTimestamp, this.positionsQueue[queueLength - 1].time);
44
- }
45
-
46
- let diffTime = newPosition.time - this.previousPosition.time;
47
-
48
- if (flyby) {
49
- diffTime = MAX_FLYBY_TIME;
50
- }
51
-
52
- const nSamples = GEN_FREQUENCY * Math.min(Math.max(MIN_FLYBY_TIME, diffTime), MAX_FLYBY_TIME);
53
-
54
- let i = 1;
55
- while (i < nSamples + 1) {
56
- i = Math.min(i, nSamples);
57
- const smoothedPosition = this.previousPosition.destinationPoint(distance * i / nSamples, azimuth);
58
- smoothedPosition.time = refTimestamp + (i - 1) / GEN_FREQUENCY;
59
- smoothedPosition.bearing = newPosition.bearing;
60
- this.positionsQueue.push(smoothedPosition);
61
- i++;
62
- }
63
-
64
- this.positionsQueue[this.positionsQueue.length - 1].level = newPosition.level;
65
-
66
- this.previousPosition = newPosition;
67
- }
68
-
69
- /**
70
- * Pull positions until timestamp and return the last one.
71
- * @param {*} timestamp position returned is the last before this timestamp
72
- * @returns last known position before timestamp, undefined otherwise
73
- */
74
- pullPosition(timestamp) {
75
-
76
- if ((typeof timestamp === 'undefined' || !timestamp)
77
- && this.positionsQueue.length > 0) {
78
- const output = this.positionsQueue[this.positionsQueue.length - 1];
79
- this.positionsQueue = [];
80
- return output;
81
- }
82
-
83
- let position;
84
- while (this.positionsQueue.length && this.positionsQueue[0].time <= timestamp) {
85
- position = this.positionsQueue.shift();
86
- }
87
- return position;
88
- }
89
-
90
- }
91
-
92
- export default Smoother;
@@ -1,426 +0,0 @@
1
- import chai from 'chai';
2
- import chaiAlmost from 'chai-almost';
3
-
4
- import Smoother from './Smoother';
5
- import {
6
- Constants as GeoConstants, WGS84, WGS84UserPosition
7
- } from '@wemap/geo';
8
-
9
- const expect = chai.expect;
10
- chai.use(chaiAlmost(GeoConstants.EPS_MM));
11
-
12
- const positions = [[0, 0, 0, 0],
13
- [1.2, 4.4915764205976071E-6, 1.7966305682390469E-6, 0],
14
- [1.6, 6.2882069888366455E-6, 4.4915764205976266E-6, 0],
15
- [2.2, 8.084837557075667E-6, 8.0848375570757466E-6, 0],
16
- [2.3, 3.5932611364778505E-5, 3.5932611364785566E-5, 1],
17
- [2.7, 4.0424187785375816E-5, 3.5932611364786826E-5, 0],
18
- [8.5, 4.042418778537667E-5, 2.9644404375949124E-5, 0],
19
- [9, 3.7729241933018592E-5, 2.6051143239469885E-5, 0],
20
- [10, 3.4135980796541678E-5, 8.9831528411962763E-6, 0]];
21
-
22
- const expectations = [
23
- [0, 0, 0],
24
- [1.2, 7.4859607009960129e-8, 2.9943842803984042e-8],
25
- [1.2166666666666666, 1.4971921401992026e-7, 5.9887685607968084e-8],
26
- [1.2333333333333334, 2.2457882102988041e-7, 8.9831528411952133e-8],
27
- [1.25, 2.9943842803984051e-7, 1.1977537121593617e-7],
28
- [1.2666666666666666, 3.7429803504980064e-7, 1.497192140199202e-7],
29
- [1.2833333333333332, 4.4915764205976082e-7, 1.7966305682390427e-7],
30
- [1.3, 5.24017249069721e-7, 2.0960689962788833e-7],
31
- [1.3166666666666667, 5.98876856079681e-7, 2.3955074243187239e-7],
32
- [1.3333333333333333, 6.7373646308964121e-7, 2.694945852358564e-7],
33
- [1.3499999999999999, 7.4859607009960129e-7, 2.9943842803984046e-7],
34
- [1.3666666666666667, 8.2345567710956136e-7, 3.2938227084382447e-7],
35
- [1.3833333333333333, 8.9831528411952165e-7, 3.5932611364780859e-7],
36
- [1.4, 9.7317489112948162e-7, 3.892699564517927e-7],
37
- [1.4166666666666665, 1.0480344981394419e-6, 4.1921379925577671e-7],
38
- [1.4333333333333333, 1.122894105149402e-6, 4.4915764205976077e-7],
39
- [1.45, 1.1977537121593618e-6, 4.7910148486374467e-7],
40
- [1.4666666666666666, 1.2726133191693221e-6, 5.090453276677289e-7],
41
- [1.4833333333333334, 1.3474729261792824e-6, 5.389891704717128e-7],
42
- [1.5, 1.4223325331892425e-6, 5.6893301327569691e-7],
43
- [1.5166666666666666, 1.4971921401992026e-6, 5.98876856079681e-7],
44
- [1.5333333333333332, 1.5720517472091626e-6, 6.2882069888366514e-7],
45
- [1.5499999999999998, 1.6469113542191223e-6, 6.5876454168764894e-7],
46
- [1.5666666666666667, 1.721770961229083e-6, 6.8870838449163348e-7],
47
- [1.5833333333333333, 1.7966305682390433e-6, 7.1865222729561749e-7],
48
- [1.6, 1.8714901752490032e-6, 7.4859607009960139e-7],
49
- [1.6166666666666667, 1.9463497822589632e-6, 7.785399129035854e-7],
50
- [1.6333333333333333, 2.0212093892689239e-6, 8.0848375570756973e-7],
51
- [1.65, 2.0960689962788834e-6, 8.3842759851155352e-7],
52
- [1.6666666666666665, 2.1709286032888433e-6, 8.6837144131553774e-7],
53
- [1.6833333333333333, 2.245788210298804e-6, 8.9831528411952175e-7],
54
- [1.7, 2.3206478173087642e-6, 9.2825912692350608e-7],
55
- [1.7166666666666668, 2.3955074243187241e-6, 9.582029697274902e-7],
56
- [1.7333333333333334, 2.4703670313286844e-6, 9.88146812531474e-7],
57
- [1.75, 2.5452266383386438e-6, 1.018090655335458e-6],
58
- [1.7666666666666666, 2.6200862453486041e-6, 1.0480344981394423e-6],
59
- [1.7833333333333332, 2.6949458523585648e-6, 1.0779783409434264e-6],
60
- [1.7999999999999998, 2.7698054593685247e-6, 1.1079221837474106e-6],
61
- [1.8166666666666667, 2.8446650663784846e-6, 1.1378660265513947e-6],
62
- [1.8333333333333333, 2.9195246733884444e-6, 1.1678098693553788e-6],
63
- [1.85, 2.9943842803984051e-6, 1.1977537121593627e-6],
64
- [1.8666666666666667, 3.0692438874083654e-6, 1.227697554963347e-6],
65
- [1.8833333333333333, 3.1441034944183253e-6, 1.2576413977673311e-6],
66
- [1.9, 3.2189631014282852e-6, 1.287585240571315e-6],
67
- [1.9166666666666665, 3.2938227084382446e-6, 1.3175290833752989e-6],
68
- [1.9333333333333331, 3.3686823154482057e-6, 1.3474729261792835e-6],
69
- [1.95, 3.4435419224581673e-6, 1.3774167689832682e-6],
70
- [1.9666666666666668, 3.5184015294681255e-6, 1.4073606117872515e-6],
71
- [1.9833333333333334, 3.5932611364780866e-6, 1.4373044545912362e-6],
72
- [2, 3.668120743488046e-6, 1.46724829739522e-6],
73
- [2.0166666666666666, 3.7429803504980076e-6, 1.4971921401992045e-6],
74
- [2.0333333333333332, 3.8178399575079666e-6, 1.5271359830031886e-6],
75
- [2.05, 3.8926995645179265e-6, 1.5570798258071727e-6],
76
- [2.0666666666666664, 3.9675591715278863e-6, 1.587023668611157e-6],
77
- [2.083333333333333, 4.042418778537847e-6, 1.6169675114151414e-6],
78
- [2.1, 4.1172783855478069e-6, 1.6469113542191253e-6],
79
- [2.1166666666666667, 4.1921379925577676e-6, 1.6768551970231096e-6],
80
- [2.1333333333333333, 4.2669975995677266e-6, 1.7067990398270935e-6],
81
- [2.15, 4.3418572065776865e-6, 1.7367428826310776e-6],
82
- [2.1666666666666665, 4.4167168135876481e-6, 1.7666867254350624e-6],
83
- [2.1833333333333331, 4.4915764205976071e-6, 1.796630568239046e-6],
84
- [2.1833333333333331, 4.5664360276075669e-6, 1.9089199787539871e-6],
85
- [2.1999999999999997, 4.6412956346175277e-6, 2.0212093892689278e-6],
86
- [2.2166666666666663, 4.7161552416274867e-6, 2.1334987997838684e-6],
87
- [2.2333333333333329, 4.7910148486374474e-6, 2.2457882102988086e-6],
88
- [2.25, 4.8658744556474072e-6, 2.3580776208137493e-6],
89
- [2.2666666666666666, 4.9407340626573671e-6, 2.47036703132869e-6],
90
- [2.2833333333333332, 5.0155936696673278e-6, 2.58265644184363e-6],
91
- [2.3, 5.0904532766772877e-6, 2.6949458523585712e-6],
92
- [2.3166666666666664, 5.1653128836872475e-6, 2.8072352628735118e-6],
93
- [2.333333333333333, 5.2401724906972083e-6, 2.9195246733884521e-6],
94
- [2.3499999999999996, 5.3150320977071673e-6, 3.0318140839033935e-6],
95
- [2.3666666666666663, 5.3898917047171263e-6, 3.1441034944183342e-6],
96
- [2.3833333333333333, 5.464751311727087e-6, 3.2563929049332744e-6],
97
- [2.4, 5.5396109187370469e-6, 3.3686823154482155e-6],
98
- [2.4166666666666665, 5.6144705257470076e-6, 3.4809717259631557e-6],
99
- [2.4333333333333331, 5.6893301327569674e-6, 3.5932611364780972e-6],
100
- [2.4499999999999997, 5.7641897397669256e-6, 3.7055505469930382e-6],
101
- [2.4666666666666663, 5.8390493467768872e-6, 3.81783995750798e-6],
102
- [2.4833333333333329, 5.9139089537868462e-6, 3.93012936802292e-6],
103
- [2.5, 5.988768560796806e-6, 4.0424187785378606e-6],
104
- [2.5166666666666666, 6.0636281678067668e-6, 4.1547081890528017e-6],
105
- [2.5333333333333332, 6.1384877748167258e-6, 4.2669975995677427e-6],
106
- [2.55, 6.2133473818266856e-6, 4.3792870100826838e-6],
107
- [2.5666666666666664, 6.2882069888366455e-6, 4.4915764205976249e-6],
108
- [2.5666666666666664, 6.2882069888366455e-6, 4.4915764205976249e-6],
109
- [2.5666666666666664, 6.3381133935099521e-6, 4.5913892299442406e-6],
110
- [2.583333333333333, 6.3880197981832578e-6, 4.6912020392908546e-6],
111
- [2.5999999999999996, 6.4379262028565652e-6, 4.7910148486374694e-6],
112
- [2.6166666666666663, 6.4878326075298718e-6, 4.8908276579840834e-6],
113
- [2.6333333333333333, 6.5377390122031775e-6, 4.9906404673306966e-6],
114
- [2.65, 6.5876454168764841e-6, 5.0904532766773114e-6],
115
- [2.6666666666666665, 6.6375518215497907e-6, 5.1902660860239254e-6],
116
- [2.6833333333333331, 6.6874582262230964e-6, 5.2900788953705394e-6],
117
- [2.6999999999999997, 6.737364630896403e-6, 5.3898917047171542e-6],
118
- [2.7166666666666663, 6.7872710355697087e-6, 5.4897045140637691e-6],
119
- [2.7333333333333329, 6.8371774402430161e-6, 5.5895173234103822e-6],
120
- [2.7499999999999996, 6.8870838449163227e-6, 5.6893301327569962e-6],
121
- [2.7666666666666666, 6.9369902495896293e-6, 5.7891429421036111e-6],
122
- [2.7833333333333332, 6.986896654262935e-6, 5.8889557514502259e-6],
123
- [2.8, 7.0368030589362408e-6, 5.9887685607968391e-6],
124
- [2.8166666666666664, 7.0867094636095465e-6, 6.0885813701434539e-6],
125
- [2.833333333333333, 7.1366158682828531e-6, 6.1883941794900688e-6],
126
- [2.8499999999999996, 7.1865222729561579e-6, 6.2882069888366828e-6],
127
- [2.8666666666666663, 7.2364286776294654e-6, 6.3880197981832976e-6],
128
- [2.8833333333333329, 7.2863350823027719e-6, 6.4878326075299125e-6],
129
- [2.9, 7.3362414869760777e-6, 6.5876454168765273e-6],
130
- [2.9166666666666665, 7.3861478916493842e-6, 6.68745822622314e-6],
131
- [2.9333333333333331, 7.4360542963226908e-6, 6.7872710355697553e-6],
132
- [2.9499999999999997, 7.4859607009959965e-6, 6.8870838449163693e-6],
133
- [2.9666666666666663, 7.5358671056693006e-6, 6.986896654262985e-6],
134
- [2.9833333333333329, 7.5857735103426089e-6, 7.0867094636095981e-6],
135
- [3, 7.6356799150159163e-6, 7.1865222729562138e-6],
136
- [3.0166666666666666, 7.68558631968922e-6, 7.2863350823028278e-6],
137
- [3.0333333333333332, 7.7354927243625243e-6, 7.3861478916494435e-6],
138
- [3.05, 7.7853991290358326e-6, 7.4859607009960567e-6],
139
- [3.0666666666666664, 7.8353055337091375e-6, 7.5857735103426732e-6],
140
- [3.083333333333333, 7.8852119383824441e-6, 7.6855863196892872e-6],
141
- [3.0999999999999996, 7.935118343055749e-6, 7.7853991290359021e-6],
142
- [3.1166666666666663, 7.9850247477290555e-6, 7.8852119383825186e-6],
143
- [3.1333333333333329, 8.03493115240236e-6, 7.98502474772913e-6],
144
- [3.15, 8.084837557075667e-6, 8.0848375570757466e-6],
145
- [3.15, 8.084837557075667e-6, 8.0848375570757483e-6],
146
- [3.15, 8.5489671205374136e-6, 8.54896712053751e-6],
147
- [3.1666666666666665, 9.0130966839991635e-6, 9.0130966839992737e-6],
148
- [3.1833333333333331, 9.4772262474609084e-6, 9.4772262474610372e-6],
149
- [3.1999999999999997, 9.9413558109226567e-6, 9.9413558109228041e-6],
150
- [3.2166666666666668, 1.0405485374384402e-5, 1.0405485374384571e-5],
151
- [3.2333333333333334, 1.0869614937846148e-5, 1.0869614937846338e-5],
152
- [3.25, 1.1333744501307891e-5, 1.1333744501308108e-5],
153
- [3.2666666666666666, 1.1797874064769633e-5, 1.1797874064769879e-5],
154
- [3.2833333333333332, 1.2262003628231376e-5, 1.2262003628231654e-5],
155
- [3.3, 1.2726133191693118e-5, 1.2726133191693429e-5],
156
- [3.3166666666666664, 1.3190262755154859e-5, 1.3190262755155206e-5],
157
- [3.333333333333333, 1.3654392318616599e-5, 1.3654392318616982e-5],
158
- [3.35, 1.4118521882078337e-5, 1.4118521882078762e-5],
159
- [3.3666666666666667, 1.4582651445540075e-5, 1.4582651445540544e-5],
160
- [3.3833333333333333, 1.5046781009001812e-5, 1.5046781009002326e-5],
161
- [3.4, 1.551091057246355e-5, 1.5510910572464115e-5],
162
- [3.4166666666666665, 1.5975040135925286e-5, 1.59750401359259e-5],
163
- [3.4333333333333331, 1.6439169699387016e-5, 1.643916969938769e-5],
164
- [3.4499999999999997, 1.6903299262848755e-5, 1.6903299262849481e-5],
165
- [3.4666666666666668, 1.7367428826310485e-5, 1.7367428826311275e-5],
166
- [3.4833333333333334, 1.7831558389772215e-5, 1.7831558389773072e-5],
167
- [3.5, 1.8295687953233951e-5, 1.8295687953234876e-5],
168
- [3.5166666666666666, 1.8759817516695674e-5, 1.8759817516696674e-5],
169
- [3.5333333333333332, 1.9223947080157404e-5, 1.9223947080158478e-5],
170
- [3.55, 1.9688076643619127e-5, 1.9688076643620285e-5],
171
- [3.5666666666666664, 2.0152206207080849e-5, 2.0152206207082089e-5],
172
- [3.583333333333333, 2.0616335770542579e-5, 2.0616335770543907e-5],
173
- [3.6, 2.10804653340043e-5, 2.1080465334005715e-5],
174
- [3.6166666666666667, 2.1544594897466021e-5, 2.1544594897467539e-5],
175
- [3.6333333333333333, 2.2008724460927734e-5, 2.2008724460929357e-5],
176
- [3.65, 2.2472854024389457e-5, 2.2472854024391175e-5],
177
- [3.6666666666666665, 2.2936983587851173e-5, 2.2936983587853e-5],
178
- [3.6833333333333331, 2.3401113151312886e-5, 2.3401113151314837e-5],
179
- [3.7, 2.3865242714774602e-5, 2.3865242714776662e-5],
180
- [3.7166666666666668, 2.4329372278236315e-5, 2.4329372278238493e-5],
181
- [3.7333333333333334, 2.479350184169802e-5, 2.4793501841700335e-5],
182
- [3.75, 2.525763140515973e-5, 2.5257631405162173e-5],
183
- [3.7666666666666666, 2.5721760968621436e-5, 2.5721760968624017e-5],
184
- [3.7833333333333332, 2.6185890532083142e-5, 2.6185890532085869e-5],
185
- [3.8, 2.6650020095544848e-5, 2.6650020095547717e-5],
186
- [3.8166666666666664, 2.711414965900655e-5, 2.7114149659009569e-5],
187
- [3.833333333333333, 2.7578279222468256e-5, 2.7578279222471434e-5],
188
- [3.8499999999999996, 2.8042408785929948e-5, 2.8042408785933296e-5],
189
- [3.8666666666666667, 2.8506538349391641e-5, 2.8506538349395161e-5],
190
- [3.8833333333333333, 2.897066791285333e-5, 2.8970667912857026e-5],
191
- [3.9, 2.9434797476315025e-5, 2.9434797476318905e-5],
192
- [3.9166666666666665, 2.9898927039776714e-5, 2.989892703978078e-5],
193
- [3.9333333333333331, 3.0363056603238407e-5, 3.0363056603242666e-5],
194
- [3.95, 3.08271861667001e-5, 3.0827186166704551e-5],
195
- [3.9666666666666668, 3.1291315730161778e-5, 3.1291315730166433e-5],
196
- [3.9833333333333334, 3.1755445293623464e-5, 3.1755445293628329e-5],
197
- [4, 3.2219574857085142e-5, 3.2219574857090225e-5],
198
- [4.0166666666666666, 3.2683704420546821e-5, 3.2683704420552127e-5],
199
- [4.0333333333333332, 3.31478339840085e-5, 3.314783398401403e-5],
200
- [4.05, 3.3611963547470179e-5, 3.3611963547475946e-5],
201
- [4.0666666666666664, 3.4076093110931837e-5, 3.4076093110937855e-5],
202
- [4.083333333333333, 3.4540222674393509e-5, 3.4540222674399777e-5],
203
- [4.1, 3.5004352237855181e-5, 3.50043522378617e-5],
204
- [4.1166666666666663, 3.5468481801316847e-5, 3.5468481801323623e-5],
205
- [4.1333333333333329, 3.5932611364778505e-5, 3.5932611364785566e-5],
206
- [4.1333333333333329, 3.61197603823034e-5, 3.5932611364785614e-5],
207
- [4.1499999999999995, 3.630690939982829e-5, 3.5932611364785668e-5],
208
- [4.1666666666666661, 3.6494058417353176e-5, 3.5932611364785722e-5],
209
- [4.1833333333333327, 3.6681207434878055e-5, 3.5932611364785776e-5],
210
- [4.1999999999999993, 3.686835645240294e-5, 3.5932611364785824e-5],
211
- [4.2166666666666659, 3.705550546992784e-5, 3.5932611364785878e-5],
212
- [4.2333333333333325, 3.7242654487452725e-5, 3.5932611364785939e-5],
213
- [4.2499999999999991, 3.7429803504977618e-5, 3.5932611364785986e-5],
214
- [4.2666666666666666, 3.76169525225025e-5, 3.5932611364786034e-5],
215
- [4.2833333333333332, 3.7804101540027382e-5, 3.5932611364786088e-5],
216
- [4.3, 3.7991250557552275e-5, 3.5932611364786135e-5],
217
- [4.3166666666666664, 3.8178399575077161e-5, 3.5932611364786196e-5],
218
- [4.333333333333333, 3.8365548592602053e-5, 3.5932611364786251e-5],
219
- [4.35, 3.8552697610126945e-5, 3.59326113647863e-5],
220
- [4.3666666666666663, 3.8739846627651831e-5, 3.5932611364786352e-5],
221
- [4.3833333333333329, 3.8926995645176717e-5, 3.5932611364786406e-5],
222
- [4.3999999999999995, 3.9114144662701609e-5, 3.5932611364786461e-5],
223
- [4.4166666666666661, 3.9301293680226488e-5, 3.5932611364786508e-5],
224
- [4.4333333333333327, 3.9488442697751374e-5, 3.5932611364786555e-5],
225
- [4.4499999999999993, 3.9675591715276266e-5, 3.593261136478661e-5],
226
- [4.4666666666666659, 3.9862740732801152e-5, 3.5932611364786671e-5],
227
- [4.4833333333333325, 4.0049889750326044e-5, 3.5932611364786718e-5],
228
- [4.4999999999999991, 4.023703876785093e-5, 3.5932611364786772e-5],
229
- [4.5166666666666666, 4.0424187785375816e-5, 3.5932611364786826e-5],
230
- [4.5166666666666666, 4.0424187785375823e-5, 3.5932611364786826e-5],
231
- [8.5, 4.0424187785375829e-5, 3.5827807914972866e-5],
232
- [8.5166666666666675, 4.042418778537585e-5, 3.5723004465158905e-5],
233
- [8.5333333333333332, 4.0424187785375863e-5, 3.5618201015344937e-5],
234
- [8.55, 4.0424187785375884e-5, 3.5513397565530976e-5],
235
- [8.5666666666666664, 4.04241877853759e-5, 3.5408594115717022e-5],
236
- [8.5833333333333339, 4.0424187785375918e-5, 3.5303790665903061e-5],
237
- [8.6, 4.0424187785375931e-5, 3.5198987216089087e-5],
238
- [8.6166666666666671, 4.0424187785375951e-5, 3.5094183766275132e-5],
239
- [8.6333333333333329, 4.0424187785375972e-5, 3.4989380316461171e-5],
240
- [8.65, 4.0424187785375985e-5, 3.4884576866647211e-5],
241
- [8.6666666666666661, 4.0424187785376006e-5, 3.4779773416833243e-5],
242
- [8.6833333333333336, 4.0424187785376019e-5, 3.4674969967019282e-5],
243
- [8.7, 4.0424187785376039e-5, 3.4570166517205321e-5],
244
- [8.7166666666666668, 4.0424187785376053e-5, 3.446536306739136e-5],
245
- [8.7333333333333325, 4.0424187785376073e-5, 3.43605596175774e-5],
246
- [8.75, 4.042418778537608e-5, 3.4255756167763438e-5],
247
- [8.7666666666666675, 4.04241877853761e-5, 3.4150952717949477e-5],
248
- [8.7833333333333332, 4.0424187785376114e-5, 3.4046149268135516e-5],
249
- [8.8, 4.0424187785376134e-5, 3.3941345818321555e-5],
250
- [8.8166666666666664, 4.0424187785376148e-5, 3.3836542368507588e-5],
251
- [8.8333333333333339, 4.0424187785376161e-5, 3.3731738918693627e-5],
252
- [8.85, 4.0424187785376182e-5, 3.3626935468879666e-5],
253
- [8.8666666666666671, 4.0424187785376195e-5, 3.3522132019065705e-5],
254
- [8.8833333333333329, 4.04241877853762e-5, 3.3417328569251744e-5],
255
- [8.9, 4.0424187785376216e-5, 3.3312525119437783e-5],
256
- [8.9166666666666661, 4.0424187785376243e-5, 3.3207721669623822e-5],
257
- [8.9333333333333336, 4.0424187785376256e-5, 3.3102918219809861e-5],
258
- [8.95, 4.0424187785376263e-5, 3.2998114769995894e-5],
259
- [8.9666666666666668, 4.0424187785376277e-5, 3.2893311320181933e-5],
260
- [8.9833333333333325, 4.04241877853763e-5, 3.2788507870367972e-5],
261
- [9, 4.0424187785376311e-5, 3.2683704420554011e-5],
262
- [9.0166666666666675, 4.0424187785376324e-5, 3.257890097074005e-5],
263
- [9.0333333333333332, 4.0424187785376338e-5, 3.2474097520926089e-5],
264
- [9.05, 4.0424187785376351e-5, 3.2369294071112128e-5],
265
- [9.0666666666666664, 4.0424187785376365e-5, 3.2264490621298167e-5],
266
- [9.0833333333333339, 4.0424187785376372e-5, 3.2159687171484206e-5],
267
- [9.1, 4.0424187785376385e-5, 3.2054883721670239e-5],
268
- [9.1166666666666671, 4.0424187785376412e-5, 3.1950080271856284e-5],
269
- [9.1333333333333329, 4.0424187785376419e-5, 3.1845276822042324e-5],
270
- [9.15, 4.0424187785376426e-5, 3.1740473372228363e-5],
271
- [9.1666666666666661, 4.0424187785376453e-5, 3.1635669922414395e-5],
272
- [9.1833333333333336, 4.0424187785376453e-5, 3.1530866472600434e-5],
273
- [9.2, 4.0424187785376466e-5, 3.1426063022786473e-5],
274
- [9.2166666666666668, 4.0424187785376487e-5, 3.1321259572972512e-5],
275
- [9.2333333333333325, 4.0424187785376487e-5, 3.1216456123158544e-5],
276
- [9.25, 4.0424187785376507e-5, 3.1111652673344584e-5],
277
- [9.2666666666666675, 4.0424187785376521e-5, 3.1006849223530629e-5],
278
- [9.2833333333333332, 4.0424187785376527e-5, 3.0902045773716668e-5],
279
- [9.3, 4.0424187785376541e-5, 3.0797242323902708e-5],
280
- [9.3166666666666664, 4.0424187785376548e-5, 3.069243887408874e-5],
281
- [9.3333333333333339, 4.0424187785376561e-5, 3.0587635424274779e-5],
282
- [9.35, 4.0424187785376575e-5, 3.0482831974460815e-5],
283
- [9.3666666666666671, 4.0424187785376588e-5, 3.0378028524646857e-5],
284
- [9.3833333333333329, 4.0424187785376588e-5, 3.0273225074832893e-5],
285
- [9.4, 4.0424187785376609e-5, 3.0168421625018932e-5],
286
- [9.4166666666666661, 4.0424187785376615e-5, 3.0063618175204971e-5],
287
- [9.4333333333333336, 4.0424187785376636e-5, 2.995881472539101e-5],
288
- [9.45, 4.0424187785376636e-5, 2.9854011275577046e-5],
289
- [9.4666666666666668, 4.0424187785376649e-5, 2.9749207825763085e-5],
290
- [9.4833333333333325, 4.0424187785376656e-5, 2.9644404375949124e-5],
291
- [9.4833333333333325, 4.0334356256964728e-5, 2.9524629004733147e-5],
292
- [9.5, 4.0244524728552794e-5, 2.9404853633517166e-5],
293
- [9.5166666666666657, 4.0154693200140866e-5, 2.9285078262301189e-5],
294
- [9.5333333333333332, 4.0064861671728931e-5, 2.9165302891085209e-5],
295
- [9.5499999999999989, 3.9975030143317e-5, 2.9045527519869232e-5],
296
- [9.5666666666666664, 3.9885198614905069e-5, 2.8925752148653258e-5],
297
- [9.5833333333333321, 3.9795367086493128e-5, 2.8805976777437277e-5],
298
- [9.6, 3.97055355580812e-5, 2.8686201406221304e-5],
299
- [9.6166666666666654, 3.9615704029669265e-5, 2.8566426035005323e-5],
300
- [9.6333333333333329, 3.9525872501257331e-5, 2.8446650663789353e-5],
301
- [9.6499999999999986, 3.9436040972845383e-5, 2.8326875292573376e-5],
302
- [9.6666666666666661, 3.9346209444433455e-5, 2.82070999213574e-5],
303
- [9.6833333333333318, 3.9256377916021514e-5, 2.8087324550141421e-5],
304
- [9.7, 3.9166546387609586e-5, 2.7967549178925451e-5],
305
- [9.716666666666665, 3.9076714859197645e-5, 2.7847773807709474e-5],
306
- [9.7333333333333325, 3.898688333078571e-5, 2.7727998436493493e-5],
307
- [9.75, 3.8897051802373775e-5, 2.7608223065277523e-5],
308
- [9.7666666666666657, 3.8807220273961841e-5, 2.7488447694061549e-5],
309
- [9.7833333333333332, 3.8717388745549906e-5, 2.7368672322845576e-5],
310
- [9.7999999999999989, 3.8627557217137965e-5, 2.7248896951629605e-5],
311
- [9.8166666666666664, 3.853772568872603e-5, 2.7129121580413628e-5],
312
- [9.8333333333333321, 3.8447894160314096e-5, 2.7009346209197658e-5],
313
- [9.85, 3.8358062631902155e-5, 2.6889570837981687e-5],
314
- [9.8666666666666654, 3.826823110349022e-5, 2.676979546676571e-5],
315
- [9.8833333333333329, 3.8178399575078285e-5, 2.665002009554974e-5],
316
- [9.8999999999999986, 3.8088568046666337e-5, 2.6530244724333766e-5],
317
- [9.9166666666666661, 3.799873651825441e-5, 2.6410469353117793e-5],
318
- [9.9333333333333318, 3.7908904989842468e-5, 2.6290693981901822e-5],
319
- [9.95, 3.7819073461430534e-5, 2.6170918610685852e-5],
320
- [9.966666666666665, 3.7729241933018586e-5, 2.6051143239469878e-5],
321
- [10, 3.7669354247410677e-5, 2.5766676732831977e-5],
322
- [10.016666666666667, 3.7609466561802754e-5, 2.5482210226194076e-5],
323
- [10.033333333333333, 3.7549578876194832e-5, 2.5197743719556168e-5],
324
- [10.05, 3.74896911905869e-5, 2.4913277212918267e-5],
325
- [10.066666666666666, 3.7429803504978973e-5, 2.4628810706280365e-5],
326
- [10.083333333333334, 3.7369915819371044e-5, 2.4344344199642464e-5],
327
- [10.1, 3.7310028133763121e-5, 2.4059877693004556e-5],
328
- [10.116666666666667, 3.72501404481552e-5, 2.3775411186366655e-5],
329
- [10.133333333333333, 3.7190252762547263e-5, 2.3490944679728754e-5],
330
- [10.15, 3.7130365076939334e-5, 2.3206478173090856e-5],
331
- [10.166666666666666, 3.7070477391331404e-5, 2.2922011666452952e-5],
332
- [10.183333333333334, 3.7010589705723468e-5, 2.263754515981505e-5],
333
- [10.2, 3.6950702020115532e-5, 2.2353078653177153e-5],
334
- [10.216666666666667, 3.68908143345076e-5, 2.2068612146539251e-5],
335
- [10.233333333333333, 3.6830926648899667e-5, 2.1784145639901354e-5],
336
- [10.25, 3.6771038963291724e-5, 2.1499679133263456e-5],
337
- [10.266666666666667, 3.6711151277683795e-5, 2.1215212626625558e-5],
338
- [10.283333333333333, 3.6651263592075852e-5, 2.0930746119987657e-5],
339
- [10.3, 3.6591375906467916e-5, 2.0646279613349759e-5],
340
- [10.316666666666666, 3.653148822085998e-5, 2.0361813106711865e-5],
341
- [10.333333333333334, 3.6471600535252044e-5, 2.0077346600073967e-5],
342
- [10.35, 3.6411712849644094e-5, 1.9792880093436072e-5],
343
- [10.366666666666667, 3.6351825164036158e-5, 1.9508413586798171e-5],
344
- [10.383333333333333, 3.6291937478428209e-5, 1.9223947080160277e-5],
345
- [10.4, 3.6232049792820273e-5, 1.8939480573522386e-5],
346
- [10.416666666666666, 3.6172162107212323e-5, 1.8655014066884485e-5],
347
- [10.433333333333334, 3.6112274421604373e-5, 1.837054756024659e-5],
348
- [10.45, 3.6052386735996431e-5, 1.80860810536087e-5],
349
- [10.466666666666667, 3.5992499050388481e-5, 1.7801614546970805e-5],
350
- [10.483333333333333, 3.5932611364780531e-5, 1.7517148040332907e-5],
351
- [10.5, 3.5872723679172589e-5, 1.7232681533695016e-5],
352
- [10.516666666666667, 3.5812835993564632e-5, 1.6948215027057122e-5],
353
- [10.533333333333333, 3.5752948307956683e-5, 1.6663748520419231e-5],
354
- [10.55, 3.5693060622348733e-5, 1.637928201378134e-5],
355
- [10.566666666666666, 3.5633172936740783e-5, 1.6094815507143445e-5],
356
- [10.583333333333334, 3.5573285251132827e-5, 1.5810349000505551e-5],
357
- [10.6, 3.5513397565524871e-5, 1.5525882493867663e-5],
358
- [10.616666666666667, 3.5453509879916914e-5, 1.5241415987229779e-5],
359
- [10.633333333333333, 3.5393622194308958e-5, 1.4956949480591881e-5],
360
- [10.65, 3.5333734508701008e-5, 1.4672482973953998e-5],
361
- [10.666666666666666, 3.5273846823093045e-5, 1.43880164673161e-5],
362
- [10.683333333333334, 3.5213959137485082e-5, 1.4103549960678215e-5],
363
- [10.7, 3.5154071451877132e-5, 1.3819083454040329e-5],
364
- [10.716666666666667, 3.5094183766269169e-5, 1.3534616947402439e-5],
365
- [10.733333333333333, 3.5034296080661206e-5, 1.325015044076455e-5],
366
- [10.75, 3.4974408395053243e-5, 1.2965683934126661e-5],
367
- [10.766666666666667, 3.491452070944528e-5, 1.2681217427488777e-5],
368
- [10.783333333333333, 3.485463302383731e-5, 1.2396750920850886e-5],
369
- [10.8, 3.4794745338229354e-5, 1.2112284414212998e-5],
370
- [10.816666666666666, 3.473485765262139e-5, 1.1827817907575114e-5],
371
- [10.833333333333334, 3.4674969967013414e-5, 1.1543351400937226e-5],
372
- [10.85, 3.4615082281405457e-5, 1.1258884894299345e-5],
373
- [10.866666666666667, 3.4555194595797481e-5, 1.0974418387661456e-5],
374
- [10.883333333333333, 3.4495306910189517e-5, 1.068995188102357e-5],
375
- [10.9, 3.4435419224581541e-5, 1.0405485374385682e-5],
376
- [10.916666666666666, 3.4375531538973571e-5, 1.0121018867747805e-5],
377
- [10.933333333333334, 3.43156438533656e-5, 9.836552361109924e-6],
378
- [10.95, 3.4255756167757624e-5, 9.552085854472033e-6],
379
- [10.966666666666667, 3.4195868482149654e-5, 9.26761934783415e-6],
380
- [10.983333333333333, 3.4135980796541684e-5, 8.9831528411962729e-6]
381
- ];
382
-
383
- describe('validSmoother', () => {
384
-
385
-
386
- it('Should return the good value', () => {
387
- const smoother = new Smoother();
388
-
389
- for (let i = 0; i < positions.length; i++) {
390
- const pos = new WGS84UserPosition(positions[i][1], positions[i][2]);
391
- pos.time = positions[i][0];
392
- smoother.generateNextPositions(pos, positions[i][3]);
393
- }
394
-
395
- const predicted = smoother.positionsQueue;
396
- expect(predicted.length).to.equal(expectations.length);
397
-
398
- for (let i = 0; i < predicted.length; i++) {
399
- const dist = predicted[i].distanceTo(new WGS84(expectations[i][1], expectations[i][2]));
400
- const timeDiff = predicted[i].time - expectations[i][0];
401
- expect(dist).to.almost.equal(0);
402
- expect(timeDiff).to.almost.equal(0);
403
- }
404
-
405
- const positionAt10 = smoother.pullPosition(10);
406
- expect(positionAt10.distanceTo(new WGS84(3.7669421260460435E-5, 2.5766995044818355E-5))).to.almost.equal(0);
407
- });
408
- });
409
-
410
- describe('smoother return same value if unique', () => {
411
-
412
-
413
- it('Should return the good value', () => {
414
- const smoother = new Smoother();
415
-
416
- const pos = new WGS84UserPosition(positions[0][1], positions[0][2]);
417
- pos.time = positions[0][0];
418
- smoother.generateNextPositions(pos);
419
- const posExpected = smoother.pullPosition();
420
-
421
- expect(posExpected).to.be.an.instanceof(WGS84UserPosition);
422
- expect(posExpected.distanceTo(pos)).to.almost.equal(0);
423
- expect(smoother.positionsQueue).to.be.an('array').that.is.empty;
424
- });
425
- });
426
-
@@ -1,37 +0,0 @@
1
- import { Constants as GeoConstants } from '@wemap/geo';
2
- import { Vector3 } from '@wemap/maths';
3
-
4
- // in seconds
5
- const MIN_TIME_BETWEEN_DETECTIONS = 0.5;
6
-
7
- // in m.s^-2
8
- const EXT_ACC_NORM_THRESHOLD = 4;
9
-
10
-
11
- class ThugDetector {
12
-
13
- constructor() {
14
- this.lastDetectionTimestamp = 0;
15
- }
16
-
17
- compute(timestamp, acceleration) {
18
-
19
- let detection = false;
20
-
21
- if (timestamp - this.lastDetectionTimestamp < MIN_TIME_BETWEEN_DETECTIONS) {
22
- return detection;
23
- }
24
-
25
- const extAccNorm = Vector3.norm(acceleration) - GeoConstants.EARTH_GRAVITY;
26
- if (Math.abs(extAccNorm) > EXT_ACC_NORM_THRESHOLD) {
27
- detection = true;
28
- this.lastDetectionTimestamp = timestamp;
29
- }
30
-
31
- return detection;
32
- }
33
-
34
-
35
- }
36
-
37
- export default ThugDetector;
@@ -1,7 +0,0 @@
1
- import StepDetectionMinMaxPeaks2 from './StepDetectionMinMaxPeaks2';
2
-
3
- class StepDetection extends StepDetectionMinMaxPeaks2 {
4
-
5
- }
6
-
7
- export default StepDetection;
@@ -1,67 +0,0 @@
1
-
2
- // in seconds
3
- const MIN_TIME_BETWEEN_STEPS = 0.4;
4
-
5
- // in Hz
6
- const MAX_FRENQUENCY = 4;
7
- const MIN_FRENQUENCY = 1;
8
-
9
- // in m.s-2
10
- const VERTICAL_ACC_POSITIVE_PEAK_THRESHOLD = 1;
11
-
12
-
13
- class StepDetectionLadetto {
14
-
15
- lastVerticalAcc = 0;
16
- maxAcceleration = 0;
17
- lastStepTimestamp = -MIN_TIME_BETWEEN_STEPS;
18
-
19
- compute(timestamp, linearAcc) {
20
-
21
- let stepDetected = false;
22
-
23
- const verticalAcc = linearAcc[2];
24
- const timeInterval = timestamp - this.lastStepTimestamp;
25
-
26
- const upfront = verticalAcc > this.lastVerticalAcc;
27
-
28
- if (upfront) {
29
- if (verticalAcc > this.maxAcceleration) {
30
- this.maxAcceleration = verticalAcc;
31
- }
32
- } else if (this.maxAcceleration > VERTICAL_ACC_POSITIVE_PEAK_THRESHOLD
33
- && timeInterval > MIN_TIME_BETWEEN_STEPS) {
34
- this.maxAcceleration = 0;
35
-
36
- const diffTime = timestamp - this.lastStepTimestamp;
37
- this.frequency = Math.min(Math.max((1 / diffTime), MIN_FRENQUENCY), MAX_FRENQUENCY);
38
-
39
- stepDetected = true;
40
- this.lastStepTimestamp = timestamp;
41
- } else {
42
- this.maxAcceleration = 0;
43
- }
44
-
45
- this.lastVerticalAcc = verticalAcc;
46
-
47
- return stepDetected;
48
- }
49
-
50
- get lastStepSize() {
51
-
52
- if (!this.frequency) {
53
- return 0;
54
- }
55
-
56
- const kParamA = 0.45;
57
- const kParamB = 0.2;
58
- return kParamA + kParamB * this.frequency;
59
- }
60
-
61
- get speed() {
62
- return this.lastStepTimestamp ? this.lastStepSize * this.frequency : 0;
63
- }
64
-
65
- }
66
-
67
- export default StepDetectionLadetto;