@wemap/positioning 1.2.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.
- package/.eslintrc.json +479 -0
- package/.nvmrc +1 -0
- package/babel.config.js +11 -0
- package/config.json +7 -0
- package/debug/index.html +15 -0
- package/debug/index.old.html +37 -0
- package/package.json +82 -0
- package/scripts/release-github.js +216 -0
- package/src/Constants.js +11 -0
- package/src/NavigationHandler.js +244 -0
- package/src/Pose.js +8 -0
- package/src/attitude/Attitude.js +65 -0
- package/src/attitude/AttitudeHandler.js +343 -0
- package/src/attitude/EkfAttitude.js +238 -0
- package/src/attitude/EkfAttitude.spec.js +116 -0
- package/src/components/AbsoluteAttitude.jsx +136 -0
- package/src/components/Imu.jsx +89 -0
- package/src/components/LocationSource.jsx +434 -0
- package/src/components/Logger.jsx +113 -0
- package/src/components/NavigationDebugApp.jsx +106 -0
- package/src/components/Others.jsx +121 -0
- package/src/components/RelativeAttitude.jsx +104 -0
- package/src/components/Utils.js +35 -0
- package/src/components/index.js +13 -0
- package/src/index.js +9 -0
- package/src/providers/FixedLocationImuLocationSource.js +66 -0
- package/src/providers/GnssLocationSource.js +118 -0
- package/src/providers/GnssPdrLocationSource.js +182 -0
- package/src/providers/IPLocationSource.js +96 -0
- package/src/providers/LocationSource.js +290 -0
- package/src/providers/PdrLocationSource.js +312 -0
- package/src/providers/ProvidersLogger.js +77 -0
- package/src/providers/pdr/HeadingUnlocker.js +41 -0
- package/src/providers/pdr/HeadingUnlocker.spec.js +26 -0
- package/src/providers/pdr/Smoother.js +90 -0
- package/src/providers/pdr/Smoother.spec.js +424 -0
- package/src/providers/pdr/ThugDetector.js +37 -0
- package/src/providers/steps/StepDetection.js +7 -0
- package/src/providers/steps/StepDetectionLadetto.js +67 -0
- package/src/providers/steps/StepDetectionMinMaxPeaks.js +80 -0
- package/src/providers/steps/StepDetectionMinMaxPeaks2.js +108 -0
- package/src/sensors/SensorsCompatibility.js +484 -0
- package/src/sensors/SensorsCompatibility.spec.js +270 -0
- package/src/sensors/SensorsLogger.js +94 -0
- package/src/sensors/SensorsLoggerUtils.js +35 -0
- package/src.new/NavigationHandler.js +62 -0
- package/src.new/index.js +3 -0
- package/src.new/providers/FakeLocationSource.js +39 -0
- package/webpack/webpack.common.js +20 -0
- package/webpack/webpack.dev.js +24 -0
- package/webpack/webpack.prod.js +15 -0
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
import chai from 'chai';
|
|
2
|
+
import chaiAlmost from 'chai-almost';
|
|
3
|
+
|
|
4
|
+
import Smoother from './Smoother';
|
|
5
|
+
import {
|
|
6
|
+
WGS84, WGS84UserPosition
|
|
7
|
+
} from '@wemap/geo';
|
|
8
|
+
|
|
9
|
+
const expect = chai.expect;
|
|
10
|
+
chai.use(chaiAlmost());
|
|
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.4775840697754848E-8, 2.9910336279101931E-8],
|
|
25
|
+
[1.2166666666666666, 1.495516813955097E-7, 5.9820672558203862E-8],
|
|
26
|
+
[1.2333333333333334, 2.2432752209326456E-7, 8.9731008837305807E-8],
|
|
27
|
+
[1.25, 2.9910336279101939E-7, 1.1964134511640772E-7],
|
|
28
|
+
[1.2666666666666666, 3.7387920348877425E-7, 1.4955168139550964E-7],
|
|
29
|
+
[1.2833333333333332, 4.4865504418652911E-7, 1.7946201767461161E-7],
|
|
30
|
+
[1.3, 5.23430884884284E-7, 2.0937235395371356E-7],
|
|
31
|
+
[1.3166666666666667, 5.9820672558203878E-7, 2.392826902328155E-7],
|
|
32
|
+
[1.3333333333333333, 6.7298256627979364E-7, 2.6919302651191745E-7],
|
|
33
|
+
[1.3499999999999999, 7.477584069775485E-7, 2.9910336279101934E-7],
|
|
34
|
+
[1.3666666666666667, 8.2253424767530315E-7, 3.2901369907012123E-7],
|
|
35
|
+
[1.3833333333333333, 8.9731008837305823E-7, 3.5892403534922328E-7],
|
|
36
|
+
[1.4, 9.72085929070813E-7, 3.8883437162832528E-7],
|
|
37
|
+
[1.4166666666666665, 1.0468617697685681E-6, 4.1874470790742717E-7],
|
|
38
|
+
[1.4333333333333333, 1.1216376104663228E-6, 4.4865504418652911E-7],
|
|
39
|
+
[1.45, 1.1964134511640774E-6, 4.785653804656309E-7],
|
|
40
|
+
[1.4666666666666666, 1.2711892918618325E-6, 5.08475716744733E-7],
|
|
41
|
+
[1.4833333333333334, 1.3459651325595873E-6, 5.3838605302383489E-7],
|
|
42
|
+
[1.5, 1.4207409732573425E-6, 5.6829638930293684E-7],
|
|
43
|
+
[1.5166666666666666, 1.495516813955097E-6, 5.9820672558203889E-7],
|
|
44
|
+
[1.5333333333333332, 1.5702926546528518E-6, 6.2811706186114073E-7],
|
|
45
|
+
[1.5499999999999998, 1.6450684953506063E-6, 6.5802739814024267E-7],
|
|
46
|
+
[1.5666666666666667, 1.7198443360483617E-6, 6.8793773441934483E-7],
|
|
47
|
+
[1.5833333333333333, 1.7946201767461169E-6, 7.1784807069844656E-7],
|
|
48
|
+
[1.6, 1.8693960174438714E-6, 7.4775840697754872E-7],
|
|
49
|
+
[1.6166666666666667, 1.9441718581416262E-6, 7.7766874325665055E-7],
|
|
50
|
+
[1.6333333333333333, 2.0189476988393807E-6, 8.075790795357525E-7],
|
|
51
|
+
[1.65, 2.0937235395371357E-6, 8.3748941581485455E-7],
|
|
52
|
+
[1.6666666666666665, 2.1684993802348902E-6, 8.673997520939566E-7],
|
|
53
|
+
[1.6833333333333333, 2.2432752209326456E-6, 8.9731008837305844E-7],
|
|
54
|
+
[1.7, 2.318051061630401E-6, 9.2722042465216059E-7],
|
|
55
|
+
[1.7166666666666668, 2.3928269023281551E-6, 9.5713076093126243E-7],
|
|
56
|
+
[1.7333333333333334, 2.46760274302591E-6, 9.8704109721036438E-7],
|
|
57
|
+
[1.75, 2.5423785837236642E-6, 1.0169514334894661E-6],
|
|
58
|
+
[1.7666666666666666, 2.6171544244214196E-6, 1.0468617697685685E-6],
|
|
59
|
+
[1.7833333333333332, 2.6919302651191746E-6, 1.0767721060476704E-6],
|
|
60
|
+
[1.7999999999999998, 2.7667061058169291E-6, 1.1066824423267722E-6],
|
|
61
|
+
[1.8166666666666667, 2.8414819465146841E-6, 1.1365927786058745E-6],
|
|
62
|
+
[1.8333333333333333, 2.916257787212439E-6, 1.1665031148849767E-6],
|
|
63
|
+
[1.85, 2.991033627910194E-6, 1.1964134511640782E-6],
|
|
64
|
+
[1.8666666666666667, 3.065809468607949E-6, 1.2263237874431804E-6],
|
|
65
|
+
[1.8833333333333333, 3.1405853093057035E-6, 1.2562341237222825E-6],
|
|
66
|
+
[1.9, 3.2153611500034581E-6, 1.2861444600013845E-6],
|
|
67
|
+
[1.9166666666666665, 3.2901369907012126E-6, 1.3160547962804864E-6],
|
|
68
|
+
[1.9333333333333331, 3.364912831398968E-6, 1.3459651325595886E-6],
|
|
69
|
+
[1.95, 3.4396886720967234E-6, 1.3758754688386907E-6],
|
|
70
|
+
[1.9666666666666668, 3.5144645127944775E-6, 1.4057858051177924E-6],
|
|
71
|
+
[1.9833333333333334, 3.5892403534922329E-6, 1.4356961413968948E-6],
|
|
72
|
+
[2, 3.6640161941899874E-6, 1.4656064776759965E-6],
|
|
73
|
+
[2.0166666666666666, 3.7387920348877424E-6, 1.4955168139550989E-6],
|
|
74
|
+
[2.0333333333333332, 3.8135678755854974E-6, 1.5254271502342006E-6],
|
|
75
|
+
[2.05, 3.8883437162832523E-6, 1.555337486513303E-6],
|
|
76
|
+
[2.0666666666666664, 3.9631195569810069E-6, 1.585247822792405E-6],
|
|
77
|
+
[2.083333333333333, 4.0378953976787606E-6, 1.6151581590715067E-6],
|
|
78
|
+
[2.1, 4.1126712383765168E-6, 1.6450684953506091E-6],
|
|
79
|
+
[2.1166666666666667, 4.1874470790742722E-6, 1.6749788316297112E-6],
|
|
80
|
+
[2.1333333333333333, 4.2622229197720259E-6, 1.7048891679088132E-6],
|
|
81
|
+
[2.15, 4.3369987604697805E-6, 1.7347995041879153E-6],
|
|
82
|
+
[2.1666666666666665, 4.411774601167535E-6, 1.7647098404670175E-6],
|
|
83
|
+
[2.1833333333333331, 4.48655044186529E-6, 1.7946201767461194E-6],
|
|
84
|
+
[2.1833333333333331, 4.5663522612953616E-6, 1.9087943292856796E-6],
|
|
85
|
+
[2.1999999999999997, 4.6411281019931179E-6, 2.0209580903323118E-6],
|
|
86
|
+
[2.2166666666666663, 4.7159039426908716E-6, 2.1331218513789445E-6],
|
|
87
|
+
[2.2333333333333329, 4.7906797833886261E-6, 2.2452856124255771E-6],
|
|
88
|
+
[2.25, 4.8654556240863815E-6, 2.3574493734722098E-6],
|
|
89
|
+
[2.2666666666666666, 4.940231464784136E-6, 2.4696131345188424E-6],
|
|
90
|
+
[2.2833333333333332, 5.0150073054818906E-6, 2.5817768955654751E-6],
|
|
91
|
+
[2.3, 5.089783146179646E-6, 2.6939406566121078E-6],
|
|
92
|
+
[2.3166666666666664, 5.1645589868774E-6, 2.8061044176587404E-6],
|
|
93
|
+
[2.333333333333333, 5.2393348275751551E-6, 2.9182681787053731E-6],
|
|
94
|
+
[2.3499999999999996, 5.31411066827291E-6, 3.0304319397520062E-6],
|
|
95
|
+
[2.3666666666666663, 5.3888865089706633E-6, 3.1425957007986388E-6],
|
|
96
|
+
[2.3833333333333333, 5.4636623496684178E-6, 3.2547594618452715E-6],
|
|
97
|
+
[2.4, 5.5384381903661732E-6, 3.366923222891905E-6],
|
|
98
|
+
[2.4166666666666665, 5.6132140310639278E-6, 3.4790869839385372E-6],
|
|
99
|
+
[2.4333333333333331, 5.6879898717616823E-6, 3.5912507449851695E-6],
|
|
100
|
+
[2.4499999999999997, 5.7627657124594377E-6, 3.703414506031803E-6],
|
|
101
|
+
[2.4666666666666663, 5.8375415531571922E-6, 3.8155782670784357E-6],
|
|
102
|
+
[2.4833333333333329, 5.9123173938549468E-6, 3.92774202812507E-6],
|
|
103
|
+
[2.5, 5.9870932345527E-6, 4.0399057891717018E-6],
|
|
104
|
+
[2.5166666666666666, 6.0618690752504559E-6, 4.1520695502183366E-6],
|
|
105
|
+
[2.5333333333333332, 6.1366449159482087E-6, 4.2642333112649688E-6],
|
|
106
|
+
[2.55, 6.2114207566459633E-6, 4.3763970723116019E-6],
|
|
107
|
+
[2.5666666666666664, 6.2861965973437187E-6, 4.4885608333582342E-6],
|
|
108
|
+
[2.5666666666666664, 6.2861965973437195E-6, 4.4885608333582359E-6],
|
|
109
|
+
[2.5666666666666664, 6.3380575493018143E-6, 4.5912775415279676E-6],
|
|
110
|
+
[2.583333333333333, 6.3879081097669849E-6, 4.6909786624583079E-6],
|
|
111
|
+
[2.5999999999999996, 6.4377586702321546E-6, 4.7906797833886481E-6],
|
|
112
|
+
[2.6166666666666663, 6.4876092306973243E-6, 4.8903809043189884E-6],
|
|
113
|
+
[2.6333333333333333, 6.537459791162494E-6, 4.9900820252493286E-6],
|
|
114
|
+
[2.65, 6.5873103516276628E-6, 5.0897831461796688E-6],
|
|
115
|
+
[2.6666666666666665, 6.6371609120928325E-6, 5.18948426711001E-6],
|
|
116
|
+
[2.6833333333333331, 6.6870114725580014E-6, 5.28918538804035E-6],
|
|
117
|
+
[2.6999999999999997, 6.7368620330231711E-6, 5.38888650897069E-6],
|
|
118
|
+
[2.7166666666666663, 6.7867125934883408E-6, 5.4885876299010306E-6],
|
|
119
|
+
[2.7333333333333329, 6.8365631539535113E-6, 5.5882887508313717E-6],
|
|
120
|
+
[2.7499999999999996, 6.88641371441868E-6, 5.687989871761712E-6],
|
|
121
|
+
[2.7666666666666666, 6.936264274883849E-6, 5.787690992692053E-6],
|
|
122
|
+
[2.7833333333333332, 6.9861148353490179E-6, 5.8873921136223941E-6],
|
|
123
|
+
[2.8, 7.0359653958141892E-6, 5.9870932345527335E-6],
|
|
124
|
+
[2.8166666666666664, 7.0858159562793581E-6, 6.0867943554830746E-6],
|
|
125
|
+
[2.833333333333333, 7.1356665167445269E-6, 6.1864954764134148E-6],
|
|
126
|
+
[2.8499999999999996, 7.1855170772096941E-6, 6.2861965973437559E-6],
|
|
127
|
+
[2.8666666666666663, 7.2353676376748663E-6, 6.385897718274097E-6],
|
|
128
|
+
[2.8833333333333329, 7.2852181981400352E-6, 6.4855988392044381E-6],
|
|
129
|
+
[2.9, 7.3350687586052032E-6, 6.58529996013478E-6],
|
|
130
|
+
[2.9166666666666665, 7.384919319070372E-6, 6.6850010810651186E-6],
|
|
131
|
+
[2.9333333333333331, 7.4347698795355426E-6, 6.78470220199546E-6],
|
|
132
|
+
[2.9499999999999997, 7.4846204400007123E-6, 6.8844033229258E-6],
|
|
133
|
+
[2.9666666666666663, 7.5344710004658794E-6, 6.9841044438561427E-6],
|
|
134
|
+
[2.9833333333333329, 7.58432156093105E-6, 7.0838055647864838E-6],
|
|
135
|
+
[3, 7.6341721213962188E-6, 7.1835066857168232E-6],
|
|
136
|
+
[3.0166666666666666, 7.6840226818613885E-6, 7.2832078066471642E-6],
|
|
137
|
+
[3.0333333333333332, 7.7338732423265548E-6, 7.3829089275775045E-6],
|
|
138
|
+
[3.05, 7.7837238027917262E-6, 7.4826100485078464E-6],
|
|
139
|
+
[3.0666666666666664, 7.8335743632568959E-6, 7.5823111694381866E-6],
|
|
140
|
+
[3.083333333333333, 7.8834249237220639E-6, 7.6820122903685286E-6],
|
|
141
|
+
[3.0999999999999996, 7.9332754841872336E-6, 7.78171341129887E-6],
|
|
142
|
+
[3.1166666666666663, 7.9831260446524016E-6, 7.88141453222921E-6],
|
|
143
|
+
[3.1333333333333329, 8.03297660511757E-6, 7.98111565315955E-6],
|
|
144
|
+
[3.15, 8.082827165582741E-6, 8.0808167740898946E-6],
|
|
145
|
+
[3.15, 8.082827165582741E-6, 8.0808167740898946E-6],
|
|
146
|
+
[3.15, 8.5484477694017419E-6, 8.5484477694018368E-6],
|
|
147
|
+
[3.1666666666666665, 9.0120579817278186E-6, 9.012057981727927E-6],
|
|
148
|
+
[3.1833333333333331, 9.4756681940538918E-6, 9.4756681940540189E-6],
|
|
149
|
+
[3.1999999999999997, 9.9392784063799668E-6, 9.9392784063801125E-6],
|
|
150
|
+
[3.2166666666666668, 1.0402888618706038E-5, 1.0402888618706206E-5],
|
|
151
|
+
[3.2333333333333334, 1.0866498831032112E-5, 1.0866498831032303E-5],
|
|
152
|
+
[3.25, 1.1330109043358183E-5, 1.13301090433584E-5],
|
|
153
|
+
[3.2666666666666666, 1.1793719255684253E-5, 1.1793719255684499E-5],
|
|
154
|
+
[3.2833333333333332, 1.2257329468010321E-5, 1.2257329468010597E-5],
|
|
155
|
+
[3.3, 1.2720939680336391E-5, 1.2720939680336701E-5],
|
|
156
|
+
[3.3166666666666664, 1.3184549892662456E-5, 1.3184549892662803E-5],
|
|
157
|
+
[3.333333333333333, 1.3648160104988527E-5, 1.3648160104988912E-5],
|
|
158
|
+
[3.35, 1.4111770317314592E-5, 1.4111770317315017E-5],
|
|
159
|
+
[3.3666666666666667, 1.4575380529640657E-5, 1.4575380529641123E-5],
|
|
160
|
+
[3.3833333333333333, 1.5038990741966722E-5, 1.5038990741967235E-5],
|
|
161
|
+
[3.4, 1.5502600954292787E-5, 1.5502600954293349E-5],
|
|
162
|
+
[3.4166666666666665, 1.5966211166618851E-5, 1.5966211166619465E-5],
|
|
163
|
+
[3.4333333333333331, 1.6429821378944909E-5, 1.642982137894558E-5],
|
|
164
|
+
[3.4499999999999997, 1.6893431591270971E-5, 1.68934315912717E-5],
|
|
165
|
+
[3.4666666666666668, 1.7357041803597029E-5, 1.7357041803597825E-5],
|
|
166
|
+
[3.4833333333333334, 1.782065201592309E-5, 1.7820652015923944E-5],
|
|
167
|
+
[3.5, 1.8284262228249145E-5, 1.8284262228250073E-5],
|
|
168
|
+
[3.5166666666666666, 1.87478724405752E-5, 1.87478724405762E-5],
|
|
169
|
+
[3.5333333333333332, 1.9211482652901257E-5, 1.9211482652902331E-5],
|
|
170
|
+
[3.55, 1.9675092865227305E-5, 1.9675092865228467E-5],
|
|
171
|
+
[3.5666666666666664, 2.0138703077553363E-5, 2.01387030775546E-5],
|
|
172
|
+
[3.583333333333333, 2.0602313289879414E-5, 2.0602313289880743E-5],
|
|
173
|
+
[3.6, 2.1065923502205462E-5, 2.1065923502206879E-5],
|
|
174
|
+
[3.6166666666666667, 2.152953371453151E-5, 2.1529533714533025E-5],
|
|
175
|
+
[3.6333333333333333, 2.1993143926857558E-5, 2.1993143926859171E-5],
|
|
176
|
+
[3.65, 2.2456754139183602E-5, 2.2456754139185324E-5],
|
|
177
|
+
[3.6666666666666665, 2.2920364351509644E-5, 2.292036435151147E-5],
|
|
178
|
+
[3.6833333333333331, 2.3383974563835688E-5, 2.3383974563837629E-5],
|
|
179
|
+
[3.7, 2.3847584776161732E-5, 2.3847584776163789E-5],
|
|
180
|
+
[3.7166666666666668, 2.431119498848777E-5, 2.4311194988489949E-5],
|
|
181
|
+
[3.7333333333333334, 2.4774805200813804E-5, 2.4774805200816112E-5],
|
|
182
|
+
[3.75, 2.5238415413139846E-5, 2.5238415413142282E-5],
|
|
183
|
+
[3.7666666666666666, 2.5702025625465876E-5, 2.5702025625468451E-5],
|
|
184
|
+
[3.7833333333333332, 2.6165635837791911E-5, 2.6165635837794625E-5],
|
|
185
|
+
[3.8, 2.6629246050117942E-5, 2.6629246050120808E-5],
|
|
186
|
+
[3.8166666666666664, 2.7092856262443973E-5, 2.7092856262446991E-5],
|
|
187
|
+
[3.833333333333333, 2.7556466474769997E-5, 2.7556466474773175E-5],
|
|
188
|
+
[3.8499999999999996, 2.8020076687096024E-5, 2.8020076687099358E-5],
|
|
189
|
+
[3.8666666666666667, 2.8483686899422038E-5, 2.8483686899425552E-5],
|
|
190
|
+
[3.8833333333333333, 2.8947297111748066E-5, 2.8947297111751752E-5],
|
|
191
|
+
[3.9, 2.941090732407408E-5, 2.9410907324077949E-5],
|
|
192
|
+
[3.9166666666666665, 2.9874517536400104E-5, 2.9874517536404153E-5],
|
|
193
|
+
[3.9333333333333331, 3.0338127748726121E-5, 3.033812774873037E-5],
|
|
194
|
+
[3.95, 3.0801737961052142E-5, 3.0801737961056574E-5],
|
|
195
|
+
[3.9666666666666668, 3.1265348173378149E-5, 3.1265348173382791E-5],
|
|
196
|
+
[3.9833333333333334, 3.1728958385704149E-5, 3.1728958385709008E-5],
|
|
197
|
+
[4, 3.2192568598030163E-5, 3.2192568598035239E-5],
|
|
198
|
+
[4.0166666666666666, 3.2656178810356164E-5, 3.2656178810361463E-5],
|
|
199
|
+
[4.0333333333333332, 3.3119789022682178E-5, 3.31197890226877E-5],
|
|
200
|
+
[4.05, 3.3583399235008171E-5, 3.3583399235013931E-5],
|
|
201
|
+
[4.0666666666666664, 3.4047009447334179E-5, 3.4047009447340169E-5],
|
|
202
|
+
[4.083333333333333, 3.4510619659660172E-5, 3.451061965966642E-5],
|
|
203
|
+
[4.1, 3.4974229871986166E-5, 3.4974229871992671E-5],
|
|
204
|
+
[4.1166666666666663, 3.5437840084312159E-5, 3.5437840084318929E-5],
|
|
205
|
+
[4.1333333333333329, 3.5901450296638146E-5, 3.5901450296645187E-5],
|
|
206
|
+
[4.1333333333333329, 3.6119550966522884E-5, 3.5932611364785614E-5],
|
|
207
|
+
[4.1499999999999995, 3.6306490568267264E-5, 3.5932611364785668E-5],
|
|
208
|
+
[4.1666666666666661, 3.6493430170011636E-5, 3.5932611364785722E-5],
|
|
209
|
+
[4.1833333333333327, 3.6680369771756008E-5, 3.5932611364785776E-5],
|
|
210
|
+
[4.1999999999999993, 3.6867309373500381E-5, 3.5932611364785824E-5],
|
|
211
|
+
[4.2166666666666659, 3.705424897524476E-5, 3.5932611364785878E-5],
|
|
212
|
+
[4.2333333333333325, 3.7241188576989132E-5, 3.5932611364785939E-5],
|
|
213
|
+
[4.2499999999999991, 3.7428128178733511E-5, 3.5932611364785986E-5],
|
|
214
|
+
[4.2666666666666666, 3.7615067780477877E-5, 3.5932611364786034E-5],
|
|
215
|
+
[4.2833333333333332, 3.7802007382222256E-5, 3.5932611364786088E-5],
|
|
216
|
+
[4.3, 3.7988946983966629E-5, 3.5932611364786135E-5],
|
|
217
|
+
[4.3166666666666664, 3.8175886585711008E-5, 3.5932611364786196E-5],
|
|
218
|
+
[4.333333333333333, 3.8362826187455387E-5, 3.5932611364786244E-5],
|
|
219
|
+
[4.35, 3.8549765789199752E-5, 3.59326113647863E-5],
|
|
220
|
+
[4.3666666666666663, 3.8736705390944125E-5, 3.5932611364786352E-5],
|
|
221
|
+
[4.3833333333333329, 3.8923644992688504E-5, 3.59326113647864E-5],
|
|
222
|
+
[4.3999999999999995, 3.9110584594432876E-5, 3.5932611364786461E-5],
|
|
223
|
+
[4.4166666666666661, 3.9297524196177242E-5, 3.5932611364786508E-5],
|
|
224
|
+
[4.4333333333333327, 3.9484463797921628E-5, 3.5932611364786555E-5],
|
|
225
|
+
[4.4499999999999993, 3.9671403399666014E-5, 3.593261136478661E-5],
|
|
226
|
+
[4.4666666666666659, 3.9858343001410379E-5, 3.5932611364786671E-5],
|
|
227
|
+
[4.4833333333333325, 4.0045282603154752E-5, 3.5932611364786718E-5],
|
|
228
|
+
[4.4999999999999991, 4.0232222204899124E-5, 3.5932611364786772E-5],
|
|
229
|
+
[4.5166666666666666, 4.0419161806643503E-5, 3.5932611364786826E-5],
|
|
230
|
+
[4.5166666666666666, 4.041916180664351E-5, 3.5932611364786826E-5],
|
|
231
|
+
[8.5, 4.0424187785375829E-5, 3.582792518780995E-5],
|
|
232
|
+
[8.5166666666666675, 4.042418778537585E-5, 3.5723239010833081E-5],
|
|
233
|
+
[8.5333333333333332, 4.0424187785375863E-5, 3.56185528338562E-5],
|
|
234
|
+
[8.55, 4.0424187785375884E-5, 3.5513866656879329E-5],
|
|
235
|
+
[8.5666666666666664, 4.04241877853759E-5, 3.5409180479902452E-5],
|
|
236
|
+
[8.5833333333333339, 4.0424187785375918E-5, 3.5304494302925583E-5],
|
|
237
|
+
[8.6, 4.0424187785375931E-5, 3.5199808125948707E-5],
|
|
238
|
+
[8.6166666666666671, 4.0424187785375951E-5, 3.5095121948971831E-5],
|
|
239
|
+
[8.6333333333333329, 4.0424187785375972E-5, 3.4990435771994961E-5],
|
|
240
|
+
[8.65, 4.0424187785375985E-5, 3.4885749595018085E-5],
|
|
241
|
+
[8.6666666666666661, 4.0424187785376006E-5, 3.4781063418041216E-5],
|
|
242
|
+
[8.6833333333333336, 4.0424187785376019E-5, 3.4676377241064333E-5],
|
|
243
|
+
[8.7, 4.0424187785376039E-5, 3.4571691064087456E-5],
|
|
244
|
+
[8.7166666666666668, 4.0424187785376053E-5, 3.4467004887110587E-5],
|
|
245
|
+
[8.7333333333333325, 4.0424187785376073E-5, 3.4362318710133711E-5],
|
|
246
|
+
[8.75, 4.042418778537608E-5, 3.4257632533156835E-5],
|
|
247
|
+
[8.7666666666666675, 4.04241877853761E-5, 3.4152946356179965E-5],
|
|
248
|
+
[8.7833333333333332, 4.0424187785376114E-5, 3.4048260179203089E-5],
|
|
249
|
+
[8.8, 4.0424187785376134E-5, 3.394357400222622E-5],
|
|
250
|
+
[8.8166666666666664, 4.0424187785376148E-5, 3.3838887825249344E-5],
|
|
251
|
+
[8.8333333333333339, 4.0424187785376161E-5, 3.3734201648272461E-5],
|
|
252
|
+
[8.85, 4.0424187785376182E-5, 3.3629515471295591E-5],
|
|
253
|
+
[8.8666666666666671, 4.0424187785376195E-5, 3.3524829294318715E-5],
|
|
254
|
+
[8.8833333333333329, 4.04241877853762E-5, 3.3420143117341846E-5],
|
|
255
|
+
[8.9, 4.0424187785376216E-5, 3.3315456940364969E-5],
|
|
256
|
+
[8.9166666666666661, 4.0424187785376243E-5, 3.3210770763388093E-5],
|
|
257
|
+
[8.9333333333333336, 4.0424187785376256E-5, 3.3106084586411224E-5],
|
|
258
|
+
[8.95, 4.0424187785376263E-5, 3.3001398409434348E-5],
|
|
259
|
+
[8.9666666666666668, 4.0424187785376277E-5, 3.2896712232457465E-5],
|
|
260
|
+
[8.9833333333333325, 4.04241877853763E-5, 3.2792026055480595E-5],
|
|
261
|
+
[9, 4.0424187785376311E-5, 3.2687339878503719E-5],
|
|
262
|
+
[9.0166666666666675, 4.0424187785376324E-5, 3.258265370152685E-5],
|
|
263
|
+
[9.0333333333333332, 4.0424187785376338E-5, 3.2477967524549974E-5],
|
|
264
|
+
[9.05, 4.0424187785376351E-5, 3.23732813475731E-5],
|
|
265
|
+
[9.0666666666666664, 4.0424187785376365E-5, 3.2268595170596221E-5],
|
|
266
|
+
[9.0833333333333339, 4.0424187785376385E-5, 3.2163908993619352E-5],
|
|
267
|
+
[9.1, 4.0424187785376385E-5, 3.2059222816642476E-5],
|
|
268
|
+
[9.1166666666666671, 4.0424187785376412E-5, 3.1954536639665606E-5],
|
|
269
|
+
[9.1333333333333329, 4.0424187785376419E-5, 3.184985046268873E-5],
|
|
270
|
+
[9.15, 4.0424187785376426E-5, 3.1745164285711854E-5],
|
|
271
|
+
[9.1666666666666661, 4.0424187785376453E-5, 3.1640478108734984E-5],
|
|
272
|
+
[9.1833333333333336, 4.0424187785376453E-5, 3.15357919317581E-5],
|
|
273
|
+
[9.2, 4.0424187785376466E-5, 3.1431105754781225E-5],
|
|
274
|
+
[9.2166666666666668, 4.0424187785376487E-5, 3.1326419577804356E-5],
|
|
275
|
+
[9.2333333333333325, 4.0424187785376493E-5, 3.122173340082748E-5],
|
|
276
|
+
[9.25, 4.0424187785376507E-5, 3.111704722385061E-5],
|
|
277
|
+
[9.2666666666666675, 4.0424187785376521E-5, 3.1012361046873734E-5],
|
|
278
|
+
[9.2833333333333332, 4.0424187785376527E-5, 3.0907674869896858E-5],
|
|
279
|
+
[9.3, 4.0424187785376541E-5, 3.0802988692919988E-5],
|
|
280
|
+
[9.3166666666666664, 4.0424187785376548E-5, 3.0698302515943112E-5],
|
|
281
|
+
[9.3333333333333339, 4.0424187785376561E-5, 3.0593616338966243E-5],
|
|
282
|
+
[9.35, 4.0424187785376575E-5, 3.048893016198936E-5],
|
|
283
|
+
[9.3666666666666671, 4.0424187785376588E-5, 3.0384243985012487E-5],
|
|
284
|
+
[9.3833333333333329, 4.0424187785376588E-5, 3.0279557808035614E-5],
|
|
285
|
+
[9.4, 4.0424187785376615E-5, 3.0174871631058742E-5],
|
|
286
|
+
[9.4166666666666661, 4.0424187785376615E-5, 3.0070185454081862E-5],
|
|
287
|
+
[9.4333333333333336, 4.0424187785376636E-5, 2.9965499277104989E-5],
|
|
288
|
+
[9.45, 4.0424187785376636E-5, 2.9860813100128116E-5],
|
|
289
|
+
[9.4666666666666668, 4.0424187785376649E-5, 2.9756126923151244E-5],
|
|
290
|
+
[9.4833333333333325, 4.0424187785376656E-5, 2.9651440746174371E-5],
|
|
291
|
+
[9.4833333333333325, 4.033445677653938E-5, 2.9524763030832678E-5],
|
|
292
|
+
[9.5, 4.02447257677021E-5, 2.9405121685716222E-5],
|
|
293
|
+
[9.5166666666666657, 4.01549947588648E-5, 2.9285480340599776E-5],
|
|
294
|
+
[9.5333333333333332, 4.0065263750027518E-5, 2.9165838995483323E-5],
|
|
295
|
+
[9.5499999999999989, 3.9975532741190229E-5, 2.9046197650366877E-5],
|
|
296
|
+
[9.5666666666666664, 3.9885801732352939E-5, 2.8926556305250432E-5],
|
|
297
|
+
[9.5833333333333321, 3.979607072351565E-5, 2.8806914960133976E-5],
|
|
298
|
+
[9.6, 3.9706339714678367E-5, 2.8687273615017526E-5],
|
|
299
|
+
[9.6166666666666654, 3.9616608705841077E-5, 2.856763226990108E-5],
|
|
300
|
+
[9.6333333333333329, 3.9526877697003795E-5, 2.8447990924784634E-5],
|
|
301
|
+
[9.6499999999999986, 3.9437146688166492E-5, 2.8328349579668185E-5],
|
|
302
|
+
[9.6666666666666661, 3.9347415679329216E-5, 2.8208708234551739E-5],
|
|
303
|
+
[9.6833333333333318, 3.9257684670491919E-5, 2.8089066889435293E-5],
|
|
304
|
+
[9.7, 3.9167953661654637E-5, 2.7969425544318844E-5],
|
|
305
|
+
[9.716666666666665, 3.907822265281734E-5, 2.7849784199202398E-5],
|
|
306
|
+
[9.7333333333333325, 3.8988491643980051E-5, 2.7730142854085952E-5],
|
|
307
|
+
[9.75, 3.8898760635142761E-5, 2.7610501508969503E-5],
|
|
308
|
+
[9.7666666666666657, 3.8809029626305472E-5, 2.7490860163853067E-5],
|
|
309
|
+
[9.7833333333333332, 3.8719298617468189E-5, 2.7371218818736618E-5],
|
|
310
|
+
[9.7999999999999989, 3.8629567608630893E-5, 2.7251577473620176E-5],
|
|
311
|
+
[9.8166666666666664, 3.85398365997936E-5, 2.713193612850373E-5],
|
|
312
|
+
[9.8333333333333321, 3.8450105590956314E-5, 2.7012294783387284E-5],
|
|
313
|
+
[9.85, 3.8360374582119017E-5, 2.6892653438270841E-5],
|
|
314
|
+
[9.8666666666666654, 3.8270643573281728E-5, 2.6773012093154395E-5],
|
|
315
|
+
[9.8833333333333329, 3.8180912564444445E-5, 2.6653370748037949E-5],
|
|
316
|
+
[9.8999999999999986, 3.8091181555607149E-5, 2.6533729402921507E-5],
|
|
317
|
+
[9.9166666666666661, 3.8001450546769859E-5, 2.6414088057805064E-5],
|
|
318
|
+
[9.9333333333333318, 3.7911719537932563E-5, 2.6294446712688622E-5],
|
|
319
|
+
[9.95, 3.782198852909528E-5, 2.6174805367572179E-5],
|
|
320
|
+
[9.966666666666665, 3.7732257520257977E-5, 2.6055164022455737E-5],
|
|
321
|
+
[10, 3.7669421260460435E-5, 2.5766995044818355E-5],
|
|
322
|
+
[10.016666666666667, 3.7609600587902279E-5, 2.5482846850166836E-5],
|
|
323
|
+
[10.033333333333333, 3.7549779915344115E-5, 2.5198698655515309E-5],
|
|
324
|
+
[10.05, 3.7489959242785958E-5, 2.491455046086379E-5],
|
|
325
|
+
[10.066666666666666, 3.7430138570227794E-5, 2.4630402266212263E-5],
|
|
326
|
+
[10.083333333333334, 3.7370317897669631E-5, 2.434625407156074E-5],
|
|
327
|
+
[10.1, 3.7310497225111474E-5, 2.4062105876909217E-5],
|
|
328
|
+
[10.116666666666667, 3.725067655255331E-5, 2.3777957682257698E-5],
|
|
329
|
+
[10.133333333333333, 3.7190855879995147E-5, 2.3493809487606178E-5],
|
|
330
|
+
[10.15, 3.7131035207436969E-5, 2.3209661292954655E-5],
|
|
331
|
+
[10.166666666666666, 3.7071214534878806E-5, 2.2925513098303135E-5],
|
|
332
|
+
[10.183333333333334, 3.7011393862320635E-5, 2.2641364903651616E-5],
|
|
333
|
+
[10.2, 3.6951573189762465E-5, 2.2357216709000096E-5],
|
|
334
|
+
[10.216666666666667, 3.68917525172043E-5, 2.207306851434857E-5],
|
|
335
|
+
[10.233333333333333, 3.6831931844646131E-5, 2.1788920319697057E-5],
|
|
336
|
+
[10.25, 3.677211117208796E-5, 2.1504772125045537E-5],
|
|
337
|
+
[10.266666666666667, 3.671229049952979E-5, 2.1220623930394021E-5],
|
|
338
|
+
[10.283333333333333, 3.6652469826971613E-5, 2.09364757357425E-5],
|
|
339
|
+
[10.3, 3.6592649154413435E-5, 2.0652327541090982E-5],
|
|
340
|
+
[10.316666666666666, 3.6532828481855265E-5, 2.0368179346439466E-5],
|
|
341
|
+
[10.333333333333334, 3.6473007809297088E-5, 2.0084031151787949E-5],
|
|
342
|
+
[10.35, 3.6413187136738904E-5, 1.979988295713643E-5],
|
|
343
|
+
[10.366666666666667, 3.6353366464180733E-5, 1.9515734762484917E-5],
|
|
344
|
+
[10.383333333333333, 3.6293545791622549E-5, 1.9231586567833397E-5],
|
|
345
|
+
[10.4, 3.6233725119064372E-5, 1.8947438373181884E-5],
|
|
346
|
+
[10.416666666666666, 3.6173904446506188E-5, 1.8663290178530365E-5],
|
|
347
|
+
[10.433333333333334, 3.6114083773948011E-5, 1.8379141983878855E-5],
|
|
348
|
+
[10.45, 3.6054263101389827E-5, 1.8094993789227339E-5],
|
|
349
|
+
[10.466666666666667, 3.599444242883165E-5, 1.7810845594575826E-5],
|
|
350
|
+
[10.483333333333333, 3.5934621756273459E-5, 1.7526697399924314E-5],
|
|
351
|
+
[10.5, 3.5874801083715275E-5, 1.72425492052728E-5],
|
|
352
|
+
[10.516666666666667, 3.5814980411157091E-5, 1.6958401010621288E-5],
|
|
353
|
+
[10.533333333333333, 3.5755159738598907E-5, 1.6674252815969775E-5],
|
|
354
|
+
[10.55, 3.5695339066040716E-5, 1.6390104621318262E-5],
|
|
355
|
+
[10.566666666666666, 3.5635518393482532E-5, 1.6105956426666749E-5],
|
|
356
|
+
[10.583333333333334, 3.5575697720924335E-5, 1.582180823201524E-5],
|
|
357
|
+
[10.6, 3.5515877048366151E-5, 1.553766003736373E-5],
|
|
358
|
+
[10.616666666666667, 3.5456056375807967E-5, 1.5253511842712221E-5],
|
|
359
|
+
[10.633333333333333, 3.5396235703249763E-5, 1.496936364806071E-5],
|
|
360
|
+
[10.65, 3.5336415030691572E-5, 1.4685215453409197E-5],
|
|
361
|
+
[10.666666666666666, 3.5276594358133374E-5, 1.4401067258757691E-5],
|
|
362
|
+
[10.683333333333334, 3.5216773685575183E-5, 1.411691906410618E-5],
|
|
363
|
+
[10.7, 3.5156953013016986E-5, 1.3832770869454672E-5],
|
|
364
|
+
[10.716666666666667, 3.5097132340458788E-5, 1.3548622674803166E-5],
|
|
365
|
+
[10.733333333333333, 3.5037311667900591E-5, 1.3264474480151657E-5],
|
|
366
|
+
[10.75, 3.49774909953424E-5, 1.2980326285500149E-5],
|
|
367
|
+
[10.766666666666667, 3.4917670322784196E-5, 1.2696178090848638E-5],
|
|
368
|
+
[10.783333333333333, 3.4857849650225991E-5, 1.2412029896197132E-5],
|
|
369
|
+
[10.8, 3.4798028977667794E-5, 1.2127881701545627E-5],
|
|
370
|
+
[10.816666666666666, 3.4738208305109596E-5, 1.1843733506894125E-5],
|
|
371
|
+
[10.833333333333334, 3.4678387632551392E-5, 1.1559585312242615E-5],
|
|
372
|
+
[10.85, 3.4618566959993181E-5, 1.1275437117591106E-5],
|
|
373
|
+
[10.866666666666667, 3.4558746287434983E-5, 1.0991288922939605E-5],
|
|
374
|
+
[10.883333333333333, 3.4498925614876779E-5, 1.0707140728288104E-5],
|
|
375
|
+
[10.9, 3.4439104942318575E-5, 1.0422992533636598E-5],
|
|
376
|
+
[10.916666666666666, 3.4379284269760364E-5, 1.013884433898509E-5],
|
|
377
|
+
[10.933333333333334, 3.4319463597202159E-5, 9.8546961443335889E-6],
|
|
378
|
+
[10.95, 3.4259642924643948E-5, 9.5705479496820846E-6],
|
|
379
|
+
[10.966666666666667, 3.4199822252085737E-5, 9.2863997550305819E-6],
|
|
380
|
+
[10.983333333333333, 3.414000157952754E-5, 9.0022515603790826E-6]];
|
|
381
|
+
|
|
382
|
+
describe('validSmoother', () => {
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
it('Should return the good value', () => {
|
|
386
|
+
const smoother = new Smoother();
|
|
387
|
+
|
|
388
|
+
for (let i = 0; i < positions.length; i++) {
|
|
389
|
+
const pos = new WGS84UserPosition(positions[i][1], positions[i][2]);
|
|
390
|
+
pos.time = positions[i][0];
|
|
391
|
+
smoother.generateNextLocations(pos, positions[i][3]);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
const predicted = smoother.locationsQueue;
|
|
395
|
+
expect(predicted.length).to.equal(expectations.length);
|
|
396
|
+
|
|
397
|
+
for (let i = 0; i < predicted.length; i++) {
|
|
398
|
+
const dist = predicted[i].distanceTo(new WGS84(expectations[i][1], expectations[i][2]));
|
|
399
|
+
const timeDiff = predicted[i].time - expectations[i][0];
|
|
400
|
+
expect(dist).to.almost.equal(0);
|
|
401
|
+
expect(timeDiff).to.almost.equal(0);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
const locationAt10 = smoother.pullLocation(10);
|
|
405
|
+
expect(locationAt10.distanceTo(new WGS84(3.7669421260460435E-5, 2.5766995044818355E-5))).to.almost.equal(0);
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
|
|
409
|
+
describe('smoother return same value if unique', () => {
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
it('Should return the good value', () => {
|
|
413
|
+
const smoother = new Smoother();
|
|
414
|
+
|
|
415
|
+
const pos = new WGS84UserPosition(positions[0][1], positions[0][2]);
|
|
416
|
+
smoother.generateNextLocations(pos);
|
|
417
|
+
const posExpected = smoother.pullLocation();
|
|
418
|
+
|
|
419
|
+
expect(posExpected).to.be.an.instanceof(WGS84UserPosition);
|
|
420
|
+
expect(posExpected.distanceTo(pos)).to.almost.equal(0);
|
|
421
|
+
expect(smoother.locationsQueue).to.be.an('array').that.is.empty;
|
|
422
|
+
});
|
|
423
|
+
});
|
|
424
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
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;
|
|
@@ -0,0 +1,67 @@
|
|
|
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;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
|
|
2
|
+
// in seconds
|
|
3
|
+
const WINDOW_TIME = 0.3;
|
|
4
|
+
|
|
5
|
+
// in seconds
|
|
6
|
+
const MIN_TIME_BETWEEN_STEPS = 0.4;
|
|
7
|
+
|
|
8
|
+
// in Hz
|
|
9
|
+
const MAX_FRENQUENCY = 4;
|
|
10
|
+
const MIN_FRENQUENCY = 1;
|
|
11
|
+
|
|
12
|
+
// in m.s-2
|
|
13
|
+
const VERTICAL_ACC_POSITIVE_PEAK_THRESHOLD = 1.5;
|
|
14
|
+
const VERTICAL_ACC_NEGATIVE_PEAK_THRESHOLD = -1;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class StepDetectionMinMaxPeaks {
|
|
18
|
+
|
|
19
|
+
constructor() {
|
|
20
|
+
this.slidingWindow = [];
|
|
21
|
+
|
|
22
|
+
this.lastStepTimestamp = -MIN_TIME_BETWEEN_STEPS;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
compute(timestamp, linearAcc) {
|
|
27
|
+
|
|
28
|
+
if (this.lastStepTimestamp && this.lastStepTimestamp + MIN_TIME_BETWEEN_STEPS > timestamp) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let maxValue = Number.MIN_SAFE_INTEGER;
|
|
33
|
+
let minValue = Number.MAX_SAFE_INTEGER;
|
|
34
|
+
|
|
35
|
+
const windowTime = WINDOW_TIME;
|
|
36
|
+
this.slidingWindow.forEach(function(item, index, object) {
|
|
37
|
+
if (item.timestamp < timestamp - windowTime) {
|
|
38
|
+
object.splice(index, 1);
|
|
39
|
+
} else {
|
|
40
|
+
maxValue = Math.max(item.verticalAcc, maxValue);
|
|
41
|
+
minValue = Math.min(item.verticalAcc, minValue);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
this.slidingWindow.push({
|
|
45
|
+
timestamp: timestamp,
|
|
46
|
+
verticalAcc: linearAcc[2]
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
if (maxValue > VERTICAL_ACC_POSITIVE_PEAK_THRESHOLD
|
|
51
|
+
&& minValue < VERTICAL_ACC_NEGATIVE_PEAK_THRESHOLD) {
|
|
52
|
+
|
|
53
|
+
const timeInterval = this.lastStepTimestamp ? timestamp - this.lastStepTimestamp : 1;
|
|
54
|
+
this.frequency = Math.min(Math.max((1 / timeInterval), MIN_FRENQUENCY), MAX_FRENQUENCY);
|
|
55
|
+
|
|
56
|
+
this.lastStepTimestamp = timestamp;
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
get lastStepSize() {
|
|
64
|
+
|
|
65
|
+
if (!this.frequency) {
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const kParamA = 0.45;
|
|
70
|
+
const kParamB = 0.2;
|
|
71
|
+
return kParamA + kParamB * this.frequency;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
get speed() {
|
|
75
|
+
return this.lastStepTimestamp ? this.lastStepSize * this.frequency : 0;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export default StepDetectionMinMaxPeaks;
|