@wemap/providers 12.10.8 → 12.10.9

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 (146) hide show
  1. package/dist/helpers/CustomMapProvider.d.ts +10 -0
  2. package/{index.ts → dist/index.d.ts} +0 -14
  3. package/dist/index.js +1 -3446
  4. package/dist/index.js.map +1 -1
  5. package/{src/ProvidersOptions.ts → dist/src/ProvidersOptions.d.ts} +7 -16
  6. package/dist/src/errors/AskImuOnDesktopError.d.ts +5 -0
  7. package/dist/src/errors/ContainsIgnoredProviderError.d.ts +5 -0
  8. package/dist/src/errors/GeolocationApiMissingError.d.ts +5 -0
  9. package/dist/src/errors/GeolocationPermissionDeniedError.d.ts +5 -0
  10. package/dist/src/errors/GeolocationPositionUnavailableError.d.ts +5 -0
  11. package/dist/src/errors/IpResolveServerError.d.ts +5 -0
  12. package/dist/src/errors/MissingAccelerometerError.d.ts +6 -0
  13. package/dist/src/errors/MissingArCoreError.d.ts +5 -0
  14. package/dist/src/errors/MissingGyroscopeError.d.ts +6 -0
  15. package/dist/src/errors/MissingMagnetometerError.d.ts +5 -0
  16. package/dist/src/errors/MissingNativeInterfaceError.d.ts +5 -0
  17. package/dist/src/errors/MissingPoleStarError.d.ts +5 -0
  18. package/dist/src/errors/MissingSensorError.d.ts +6 -0
  19. package/dist/src/errors/NoProviderFoundError.d.ts +5 -0
  20. package/dist/src/events/AvailabilityHelper.d.ts +5 -0
  21. package/dist/src/events/ProvidersLoggerOld.d.ts +24 -0
  22. package/dist/src/events/Types.d.ts +34 -0
  23. package/dist/src/mapmatching/MapMatchingHandler.d.ts +93 -0
  24. package/dist/src/providers/Constants.d.ts +4 -0
  25. package/{src/providers/NativeProviders.ts → dist/src/providers/NativeProviders.d.ts} +2 -23
  26. package/dist/src/providers/Provider.d.ts +64 -0
  27. package/dist/src/providers/attitude/EkfAttitude.d.ts +41 -0
  28. package/dist/src/providers/attitude/TurnProvider.d.ts +17 -0
  29. package/dist/src/providers/attitude/absolute/AbsoluteAttitudeFromBrowserProvider.d.ts +60 -0
  30. package/dist/src/providers/attitude/absolute/AbsoluteAttitudeProvider.d.ts +44 -0
  31. package/dist/src/providers/attitude/relative/RelativeAttitudeFromBrowserProvider.d.ts +31 -0
  32. package/dist/src/providers/attitude/relative/RelativeAttitudeFromEkfProvider.d.ts +26 -0
  33. package/dist/src/providers/attitude/relative/RelativeAttitudeFromInertialProvider.d.ts +18 -0
  34. package/dist/src/providers/attitude/relative/RelativeAttitudeProvider.d.ts +25 -0
  35. package/dist/src/providers/imu/AccelerometerProvider.d.ts +11 -0
  36. package/dist/src/providers/imu/GyroscopeProvider.d.ts +11 -0
  37. package/dist/src/providers/imu/HighRotationsProvider.d.ts +15 -0
  38. package/dist/src/providers/imu/ImuProvider.d.ts +34 -0
  39. package/dist/src/providers/imu/MagnetometerCalibrationProvider.d.ts +11 -0
  40. package/dist/src/providers/inclination/InclinationFromAccProvider.d.ts +18 -0
  41. package/dist/src/providers/inclination/InclinationFromRelativeAttitudeProvider.d.ts +19 -0
  42. package/dist/src/providers/inclination/InclinationProvider.d.ts +18 -0
  43. package/dist/src/providers/legacy/helpers/HeadingUnlocker.d.ts +12 -0
  44. package/dist/src/providers/legacy/helpers/ThugDetector.d.ts +8 -0
  45. package/dist/src/providers/others/CameraNativeProvider.d.ts +11 -0
  46. package/dist/src/providers/others/CameraProjectionMatrixProvider.d.ts +11 -0
  47. package/dist/src/providers/position/absolute/AbsolutePositionProvider.d.ts +35 -0
  48. package/dist/src/providers/position/absolute/GnssWifiProvider.d.ts +28 -0
  49. package/dist/src/providers/position/absolute/IpProvider.d.ts +16 -0
  50. package/dist/src/providers/position/absolute/PoleStarProvider.d.ts +14 -0
  51. package/dist/src/providers/position/relative/GeoRelativePositionFromArCoreProvider.d.ts +17 -0
  52. package/dist/src/providers/position/relative/GeoRelativePositionProvider.d.ts +12 -0
  53. package/dist/src/providers/position/relative/PdrProvider.d.ts +15 -0
  54. package/dist/src/providers/steps/StepDetectionLadetto.d.ts +15 -0
  55. package/dist/src/providers/steps/StepDetectionMinMaxPeaks.d.ts +19 -0
  56. package/dist/src/providers/steps/StepDetectionMinMaxPeaks2.d.ts +27 -0
  57. package/dist/src/providers/steps/StepDetectionMinMaxPeaks3.d.ts +24 -0
  58. package/dist/src/providers/steps/StepProvider.d.ts +36 -0
  59. package/dist/src/providers/steps/StraightLineProvider.d.ts +21 -0
  60. package/dist/src/providers/vision/ArCoreProvider.d.ts +50 -0
  61. package/dist/src/providers/vision/BarcodeProvider.d.ts +11 -0
  62. package/dist/src/providers/vision/vps/ImageRelocalization.d.ts +11 -0
  63. package/dist/src/providers/vision/vps/RelativeRotationCalc.d.ts +10 -0
  64. package/dist/src/providers/vision/vps/VpsMetadata.d.ts +33 -0
  65. package/dist/src/providers/vision/vps/VpsProvider.d.ts +45 -0
  66. package/dist/src/providers/vision/vps/VpsRequest.d.ts +18 -0
  67. package/dist/src/providers/vision/vps/VpsResponse.d.ts +15 -0
  68. package/dist/src/smoothers/AttitudeSmoother.d.ts +23 -0
  69. package/dist/src/smoothers/PositionSmoother.d.ts +21 -0
  70. package/package.json +16 -12
  71. package/src/errors/AskImuOnDesktopError.ts +0 -10
  72. package/src/errors/ContainsIgnoredProviderError.ts +0 -10
  73. package/src/errors/GeolocationApiMissingError.ts +0 -10
  74. package/src/errors/GeolocationPermissionDeniedError.ts +0 -10
  75. package/src/errors/GeolocationPositionUnavailableError.ts +0 -10
  76. package/src/errors/IpResolveServerError.ts +0 -10
  77. package/src/errors/MissingAccelerometerError.ts +0 -11
  78. package/src/errors/MissingArCoreError.ts +0 -10
  79. package/src/errors/MissingGyroscopeError.ts +0 -11
  80. package/src/errors/MissingMagnetometerError.ts +0 -9
  81. package/src/errors/MissingNativeInterfaceError.ts +0 -11
  82. package/src/errors/MissingPoleStarError.ts +0 -10
  83. package/src/errors/MissingSensorError.ts +0 -15
  84. package/src/errors/NoProviderFoundError.ts +0 -10
  85. package/src/events/AvailabilityHelper.spec.ts +0 -30
  86. package/src/events/AvailabilityHelper.ts +0 -28
  87. package/src/events/ProvidersLoggerOld.ts +0 -87
  88. package/src/events/Types.ts +0 -18
  89. package/src/mapmatching/MapMatchingHandler.spec.ts +0 -142
  90. package/src/mapmatching/MapMatchingHandler.ts +0 -540
  91. package/src/providers/Constants.ts +0 -5
  92. package/src/providers/FakeProvider.spec.ts +0 -49
  93. package/src/providers/Provider.spec.ts +0 -113
  94. package/src/providers/Provider.ts +0 -244
  95. package/src/providers/attitude/EkfAttitude.spec.ts +0 -115
  96. package/src/providers/attitude/EkfAttitude.ts +0 -233
  97. package/src/providers/attitude/TurnProvider.ts +0 -58
  98. package/src/providers/attitude/absolute/AbsoluteAttitudeFromBrowserProvider.ts +0 -267
  99. package/src/providers/attitude/absolute/AbsoluteAttitudeProvider.ts +0 -268
  100. package/src/providers/attitude/relative/RelativeAttitudeFromBrowserProvider.ts +0 -84
  101. package/src/providers/attitude/relative/RelativeAttitudeFromEkfProvider.ts +0 -89
  102. package/src/providers/attitude/relative/RelativeAttitudeFromInertialProvider.ts +0 -66
  103. package/src/providers/attitude/relative/RelativeAttitudeProvider.ts +0 -70
  104. package/src/providers/imu/AccelerometerProvider.ts +0 -28
  105. package/src/providers/imu/GyroscopeProvider.ts +0 -27
  106. package/src/providers/imu/HighRotationsProvider.ts +0 -49
  107. package/src/providers/imu/ImuProvider.ts +0 -110
  108. package/src/providers/imu/MagnetometerCalibrationProvider.ts +0 -21
  109. package/src/providers/inclination/InclinationFromAccProvider.ts +0 -57
  110. package/src/providers/inclination/InclinationFromRelativeAttitudeProvider.ts +0 -51
  111. package/src/providers/inclination/InclinationProvider.ts +0 -59
  112. package/src/providers/legacy/helpers/HeadingUnlocker.spec.ts +0 -53
  113. package/src/providers/legacy/helpers/HeadingUnlocker.ts +0 -44
  114. package/src/providers/legacy/helpers/ThugDetector.ts +0 -30
  115. package/src/providers/others/CameraNativeProvider.ts +0 -29
  116. package/src/providers/others/CameraProjectionMatrixProvider.ts +0 -25
  117. package/src/providers/position/absolute/AbsolutePositionProvider.spec.ts +0 -31
  118. package/src/providers/position/absolute/AbsolutePositionProvider.ts +0 -277
  119. package/src/providers/position/absolute/GnssWifiProvider.ts +0 -126
  120. package/src/providers/position/absolute/GnssWifiProviders.spec.ts +0 -90
  121. package/src/providers/position/absolute/IpProvider.ts +0 -47
  122. package/src/providers/position/absolute/PoleStarProvider.ts +0 -88
  123. package/src/providers/position/relative/GeoRelativePositionFromArCoreProvider.ts +0 -82
  124. package/src/providers/position/relative/GeoRelativePositionProvider.ts +0 -35
  125. package/src/providers/position/relative/PdrProvider.ts +0 -107
  126. package/src/providers/steps/StepDetectionLadetto.ts +0 -67
  127. package/src/providers/steps/StepDetectionMinMaxPeaks.ts +0 -70
  128. package/src/providers/steps/StepDetectionMinMaxPeaks2.ts +0 -99
  129. package/src/providers/steps/StepDetectionMinMaxPeaks3.ts +0 -192
  130. package/src/providers/steps/StepProvider.ts +0 -151
  131. package/src/providers/steps/StraightLineProvider.ts +0 -69
  132. package/src/providers/vision/ArCoreProvider.ts +0 -184
  133. package/src/providers/vision/BarcodeProvider.ts +0 -28
  134. package/src/providers/vision/vps/ImageRelocalization.ts +0 -98
  135. package/src/providers/vision/vps/RelativeRotationCalc.ts +0 -58
  136. package/src/providers/vision/vps/VpsMetadata.ts +0 -63
  137. package/src/providers/vision/vps/VpsProvider.ts +0 -251
  138. package/src/providers/vision/vps/VpsRequest.ts +0 -29
  139. package/src/providers/vision/vps/VpsResponse.ts +0 -43
  140. package/src/providers/vision/vps/VpsSchema.json +0 -90
  141. package/src/smoothers/AttitudeSmoother.ts +0 -110
  142. package/src/smoothers/PositionSmoother.spec.ts +0 -53
  143. package/src/smoothers/PositionSmoother.ts +0 -96
  144. package/tsconfig.json +0 -3
  145. package/vite.config.ts +0 -4
  146. /package/{src/providers/ProviderState.ts → dist/src/providers/ProviderState.d.ts} +0 -0
@@ -1,49 +0,0 @@
1
- import { UserPosition } from '@wemap/geo';
2
-
3
- import Provider from './Provider.js';
4
-
5
- class FakeProvider1Clazz extends Provider<void> {
6
- getName = () => 'FakeProvider1';
7
- availability = () => Promise.resolve();
8
- start() { this.notifyError(new Error()); }
9
- stop() { /* do nothing */ }
10
- }
11
- const FakeProvider1 = new FakeProvider1Clazz();
12
- export { FakeProvider1 };
13
-
14
- class FakeProvider2Clazz extends Provider<void> {
15
- getName = () => 'FakeProvider2';
16
- availability = () => Promise.resolve(new Error());
17
- start() { /* do nothing */ }
18
- stop() { /* do nothing */ }
19
- }
20
- const FakeProvider2 = new FakeProvider2Clazz();
21
- export { FakeProvider2 };
22
-
23
- class FakeProvider3Clazz extends Provider<UserPosition> {
24
- intervalId?: NodeJS.Timer;
25
- getName = () => 'FakeProvider3';
26
- availability = () => Promise.resolve();
27
- start() {
28
- this.intervalId = setInterval(() => {
29
- this.notify(new UserPosition(Math.random() * 45, Math.random() * 180));
30
- }, 1);
31
- }
32
- stop() { clearInterval(this.intervalId); }
33
- }
34
- const FakeProvider3 = new FakeProvider3Clazz();
35
- export { FakeProvider3 };
36
-
37
- class FakeProvider4Clazz extends Provider<UserPosition> {
38
- fp3id?: number;
39
- getName = () => 'FakeProvider4';
40
- availability = () => FakeProvider3.getAvailability();
41
- start() {
42
- this.fp3id = FakeProvider3.addEventListener(this.notify, this.notifyError);
43
- }
44
- stop() {
45
- FakeProvider3.removeEventListener(this.fp3id);
46
- }
47
- }
48
- const FakeProvider4 = new FakeProvider4Clazz();
49
- export { FakeProvider4 };
@@ -1,113 +0,0 @@
1
- import chai from 'chai';
2
- import chaiAsPromised from 'chai-as-promised';
3
-
4
- import Logger from '@wemap/logger';
5
-
6
- import Provider from './Provider.js';
7
- import ContainsIgnoredProviderError from '../errors/ContainsIgnoredProviderError.js';
8
- import {
9
- FakeProvider1, FakeProvider2, FakeProvider3, FakeProvider4
10
- } from './FakeProvider.spec.js';
11
- import ProvidersOptions from '../ProvidersOptions.js';
12
-
13
- chai.use(chaiAsPromised);
14
- Logger.enable(false);
15
-
16
- const { expect } = chai;
17
-
18
- const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
19
-
20
- describe('Provider', () => {
21
-
22
- it('default getter', () => {
23
- const provider = FakeProvider1;
24
- expect(provider.getName()).equals(FakeProvider1.getName());
25
- expect(provider.useCameraNatively).is.false;
26
- });
27
-
28
- it('availability', async () => {
29
-
30
- expect(FakeProvider1.getAvailability()).to.be.fulfilled;
31
- ProvidersOptions.ignoreProviders.push(FakeProvider1.getName());
32
- expect(await FakeProvider1.getAvailability()).is.instanceOf(ContainsIgnoredProviderError);
33
- ProvidersOptions.ignoreProviders = [];
34
-
35
- expect(await FakeProvider2.getAvailability()).is.instanceOf(Error);
36
-
37
- expect(FakeProvider3.getAvailability()).to.be.fulfilled;
38
- expect(FakeProvider4.getAvailability()).to.be.fulfilled;
39
- });
40
-
41
- it('checkAvailability on start', async () => {
42
-
43
- /**
44
- * checkAvailabilityOnStart = true
45
- */
46
- let errored = false;
47
- FakeProvider2.addEventListener(null, () => (errored = true));
48
-
49
- await sleep(2);
50
-
51
- expect(errored).is.true;
52
- expect(FakeProvider2.state).equals('stopped');
53
- expect(FakeProvider2._eventsCallbacks.length).equals(0);
54
-
55
- /**
56
- * checkAvailabilityOnStart = false
57
- */
58
- ProvidersOptions.checkAvailabilityOnStart = false;
59
-
60
- errored = false;
61
- const id = FakeProvider2.addEventListener(null, () => (errored = true));
62
-
63
- await sleep(2);
64
-
65
- expect(errored).is.false;
66
- expect(FakeProvider2.state).equals('started');
67
-
68
- FakeProvider2.removeEventListener(id);
69
- expect(FakeProvider2.state).equals('stopped');
70
- expect(FakeProvider2._eventsCallbacks.length).equals(0);
71
-
72
- ProvidersOptions.checkAvailabilityOnStart = true;
73
- });
74
-
75
- const startStop = <T>(provider: Provider<T>) => {
76
- return new Promise<void>((resolve, reject) => {
77
- let isStopped = false;
78
- let fail = false;
79
-
80
- const listenerId = provider.addEventListener(() => {
81
- if (isStopped) {
82
- fail = true;
83
- }
84
- });
85
-
86
- setTimeout(() => {
87
- isStopped = true;
88
- provider.removeEventListener(listenerId);
89
-
90
- setTimeout(() => {
91
- if (fail) {
92
- reject('Provider did not stop');
93
- } else {
94
- resolve();
95
- }
96
- }, 5);
97
- }, 7);
98
- });
99
- };
100
-
101
-
102
- it('start/stop', async () => {
103
- let errored = false;
104
- FakeProvider1.addEventListener(null, () => (errored = true));
105
- await sleep(2);
106
- expect(errored).is.true;
107
-
108
- await expect(startStop(FakeProvider2)).to.be.fulfilled;
109
- await expect(startStop(FakeProvider3)).to.be.fulfilled;
110
- await expect(startStop(FakeProvider4)).to.be.fulfilled;
111
-
112
- });
113
- });
@@ -1,244 +0,0 @@
1
- import ProvidersLoggerOld from '../events/ProvidersLoggerOld.js';
2
- import ContainsIgnoredProviderError from '../errors/ContainsIgnoredProviderError.js';
3
- import ProvidersOptions from '../ProvidersOptions.js';
4
- import { ProviderState } from './ProviderState.js';
5
- import { AvailabilityPromise } from '../events/AvailabilityHelper.js';
6
- import { NativeCallbackInterface, NativeInterface } from './NativeProviders.js';
7
-
8
- declare global {
9
- interface Window {
10
- __nativeProviders?: NativeInterface;
11
- __nativeJsProviders?: NativeCallbackInterface;
12
- }
13
- }
14
-
15
- /**
16
- * A provider is a meta class to define an entity which can be
17
- * started / stopped and provides a data of <E>
18
- */
19
- abstract class Provider<E> {
20
-
21
- static _callbackUniqueId = 0;
22
- static _uniqueId = 1;
23
-
24
- id: number;
25
- state: ProviderState = 'stopped';
26
-
27
- _lastEvent: E | null = null;
28
-
29
- _eventsCallbacks: {
30
- id: number,
31
- onEvent: ((event: E) => void) | null,
32
- onError: ((error: Error) => void) | null,
33
- optional: boolean
34
- }[] = [];
35
-
36
- _monitoringCallbacks: {
37
- id: number,
38
- onStarted: (() => void) | null,
39
- onStopped: (() => void) | null
40
- }[] = [];
41
-
42
- /**
43
- * Provider constructor
44
- */
45
- constructor() {
46
- this.id = Provider._uniqueId++;
47
- ProvidersLoggerOld.addEvent(this, 'constructor');
48
- }
49
-
50
- /**
51
- * Get the provider name
52
- */
53
- abstract getName(): string;
54
-
55
-
56
- /**
57
- * Resolve with an error if the provider is not available
58
- */
59
- getAvailability() {
60
- if (ProvidersOptions.ignoreProviders.includes(this.getName())) {
61
- return Promise.resolve(new ContainsIgnoredProviderError());
62
- }
63
-
64
- return this.availability();
65
- }
66
-
67
- protected abstract availability(): AvailabilityPromise;
68
-
69
-
70
- protected get hasNativeInterface() {
71
- return Boolean(this.nativeInterface);
72
- }
73
-
74
- protected get nativeInterface() {
75
- return typeof window !== 'undefined' && window.__nativeProviders as NativeInterface || null;
76
- }
77
-
78
- protected get nativeJsInterface(): NativeCallbackInterface | null {
79
- if (typeof window === 'undefined') {
80
- return null;
81
- }
82
- if (!window.__nativeJsProviders) {
83
- window.__nativeJsProviders = {};
84
- }
85
- return window.__nativeJsProviders;
86
- }
87
-
88
-
89
- get useCameraNatively() {
90
- return false;
91
- }
92
-
93
-
94
- addEventListener(
95
- onEvent: ((events: E) => void) | null = null,
96
- onError: ((error: Error) => void) | null = null,
97
- startIfNecessary = true
98
- ) {
99
- const id = ++Provider._callbackUniqueId;
100
-
101
- /**
102
- * Build callback
103
- */
104
- this._eventsCallbacks.push({
105
- id,
106
- onEvent: onEvent || (() => { /* do nothing */ }),
107
- onError: onError || (() => { /* do nothing */ }),
108
- optional: !startIfNecessary
109
- });
110
-
111
-
112
- // The caller just want to have callbacks without starting the provider,
113
- // the routine can be stopped here
114
- if (!startIfNecessary) {
115
- return id;
116
- }
117
-
118
-
119
- // If the provider is already started do not go further
120
- if (this.state !== 'stopped') {
121
- return id;
122
- }
123
- this.state = 'starting';
124
-
125
- // Check availability on start if defined in options
126
- let availabilityPromise: AvailabilityPromise = Promise.resolve();
127
- if (ProvidersOptions.checkAvailabilityOnStart) {
128
- availabilityPromise = this.getAvailability();
129
- }
130
-
131
- (async () => {
132
- const error = await availabilityPromise;
133
- if (error) {
134
- this.state = 'stopped';
135
- this.notifyError(error);
136
- return;
137
- }
138
-
139
- ProvidersLoggerOld.addEvent(this, 'start');
140
-
141
- // Call the child start function
142
- this.start();
143
-
144
- this.state = 'started';
145
-
146
- this._monitoringCallbacks.forEach(cb => cb.onStarted?.());
147
- })();
148
-
149
- return id;
150
- }
151
-
152
- removeEventListener(callbackUniqueId?: number) {
153
-
154
- // Search the caller object in callbacks list
155
- const callback = this._eventsCallbacks.find(_callback => _callback.id === callbackUniqueId);
156
- if (!callback) {
157
- // The callback object is not found. Maybe it is already stopped.
158
- return;
159
- }
160
-
161
- // Remove the current callback from the list of the callbacks
162
- this._eventsCallbacks = this._eventsCallbacks.filter(_callback => _callback !== callback);
163
-
164
- // If this callback was optional, do not go further to stop the provider
165
- if (callback.optional) {
166
- return;
167
- }
168
-
169
- // If there is callbacks that are not optionals for start, do not stop the provider
170
- if (this._eventsCallbacks.find(_callback => !_callback.optional)) {
171
- return;
172
- }
173
-
174
- // If the provider is already stopped, do not stop it again.
175
- // This condition can be true if checkAvailabilityOnStart is true and returns an error
176
- if (this.state === 'stopped') {
177
- return;
178
- }
179
-
180
- ProvidersLoggerOld.addEvent(this, 'stop');
181
- // Call the child stop function
182
- this.stop();
183
-
184
- this.state = 'stopped';
185
-
186
- this._monitoringCallbacks.forEach(cb => cb.onStopped?.());
187
- }
188
-
189
-
190
- addMonitoringListener(onStarted?: (() => void) | null, onStopped?: (() => void) | null) {
191
- const id = Provider._callbackUniqueId++;
192
- this._monitoringCallbacks.push({
193
- id,
194
- onStarted: onStarted || null,
195
- onStopped: onStopped || null
196
- });
197
- return id;
198
- }
199
-
200
- removeMonitoringListener(callbackUniqueId?: number) {
201
- this._monitoringCallbacks = this._monitoringCallbacks.filter(
202
- _callback => _callback.id !== callbackUniqueId
203
- );
204
- }
205
-
206
-
207
- protected abstract start(): void
208
- protected abstract stop(): void
209
-
210
-
211
- /**
212
- * Notify the subscriber defined in {@link addEventListener}
213
- */
214
- notify = (event: E) => {
215
- // Logging
216
- ProvidersLoggerOld.incrementNotifications(this);
217
-
218
- // Notify callbacks
219
- this._eventsCallbacks.forEach(cb => cb.onEvent?.(event));
220
-
221
- // Keep a trace of the last events.
222
- this._lastEvent = event;
223
- }
224
-
225
- /**
226
- * Notify the subscriber defined in {@link addEventListener}
227
- */
228
- notifyError = (error: Error) => {
229
- this._eventsCallbacks.forEach(({
230
- id, onError
231
- }) => {
232
- if (ProvidersOptions.stopOnError) {
233
- this.removeEventListener(id);
234
- }
235
- onError?.(error);
236
- });
237
- }
238
-
239
- get lastEvent() {
240
- return this._lastEvent;
241
- }
242
- }
243
-
244
- export default Provider;
@@ -1,115 +0,0 @@
1
- import chai from 'chai';
2
-
3
- import { Quaternion, Quaternion_t, Vector3_t } from '@wemap/maths';
4
-
5
- import EkfAttitude from './EkfAttitude.js';
6
-
7
-
8
- const expect = chai.expect;
9
-
10
- const dt = [
11
- 0.02, 0.02, 0.02, 0.02, 0.02
12
- ];
13
- const accData: Vector3_t[] = [
14
- [-0.034561157, 3.81073, 8.860977],
15
- [-0.030700684, 3.814499, 8.818954],
16
- [-0.018234253, 3.8023376, 8.85762],
17
- [-0.020080566, 3.8205414, 8.8676605],
18
- [-0.054519653, 3.8456726, 8.810287]
19
- ];
20
-
21
- const gyrData: Vector3_t[] = [
22
- [0.0047454834, 0.0028076172, 0.0022888184],
23
- [0.005218506, 0.0020446777, 0.0012207031],
24
- [0.0044555664, 0.0023040771, 4.4250488E-4],
25
- [0.0044555664, 0.0027618408, 0.0011444092],
26
- [0.0040893555, 0.0020446777, 0.0025787354]
27
- ];
28
-
29
- const magData: Vector3_t[] = [
30
- [-7.260132, -29.21753, -30.532837],
31
- [-8.378601, -29.589844, -29.684448],
32
- [-8.784485, -29.97284, -29.86145],
33
- [-8.784485, -30.06134, -30.036926],
34
- [-8.917236, -29.666138, -28.616333]
35
- ];
36
-
37
- const expectationsAbsolute: Quaternion_t[] = [
38
- [0.22501367907095468, 0.048112975227173178, -0.19586497565981961, -0.95325279813673824],
39
- [0.22521836492577899, 0.048187611771482071, -0.19604062637627487, -0.953164579168738],
40
- [0.22546875479675244, 0.048146964451479861, -0.19603487950732199, -0.95310861733648156],
41
- [0.22571872218138991, 0.04816067876157637, -0.19609909097002176, -0.95303554708035731],
42
- [0.22598409746972753, 0.048415228863568645, -0.1963289784536566, -0.95291242279877153]
43
- ];
44
-
45
- const expectationsRelative: Quaternion_t[] = [
46
- [0.979449872594084, 0.201679452107589, 0.001829118097573, 0],
47
- [0.979412310855378, 0.201861876976980, 0.001818648953412, 0.000022005516141],
48
- [0.979416707676713, 0.201841237873455, 0.001739180982152, 0.000051642340567],
49
- [0.979405268570585, 0.201897124314688, 0.001692389320913, 0.000083114532679],
50
- [0.979351148979101, 0.202158360999907, 0.001821014027950, 0.000089325563504]
51
- ];
52
-
53
- describe('initAbsolute', () => {
54
- it('Should return the good value', () => {
55
- const ekf = new EkfAttitude();
56
- ekf.setAbsoluteNoises({
57
- acc: 0.5,
58
- gyr: 0.3,
59
- yc: 2
60
- });
61
- const result = ekf.update(dt[0], accData[0], gyrData[0], magData[0]);
62
- const distance = Quaternion.distance(result, expectationsAbsolute[0]);
63
- expect(distance).to.below(0.000001);
64
- });
65
- });
66
-
67
- describe('updateAbsolute', () => {
68
- it('Should return the good value', () => {
69
- const ekf = new EkfAttitude();
70
- ekf.setAbsoluteNoises({
71
- acc: 0.5,
72
- gyr: 0.3,
73
- yc: 2
74
- });
75
- let result;
76
- let distance;
77
-
78
- for (let i = 0; i < accData.length; i++) {
79
- result = ekf.update(dt[i], accData[i], gyrData[i], magData[i]);
80
- distance = Quaternion.distance(result, expectationsAbsolute[i]);
81
- expect(distance).to.below(0.000001);
82
- }
83
- });
84
- });
85
-
86
- describe('initRelative', () => {
87
- it('Should return the good value', () => {
88
- const ekf = new EkfAttitude();
89
- ekf.setRelativeNoises({
90
- acc: 0.5,
91
- gyr: 0.3
92
- });
93
- const result = ekf.update(dt[0], accData[0], gyrData[0]);
94
- const distance = Quaternion.distance(result, expectationsRelative[0]);
95
- expect(distance).to.below(0.000001);
96
- });
97
- });
98
-
99
- describe('updateRelative', () => {
100
- it('Should return the good value', () => {
101
- const ekf = new EkfAttitude();
102
- ekf.setRelativeNoises({
103
- acc: 0.5,
104
- gyr: 0.3
105
- });
106
- let result;
107
- let distance;
108
-
109
- for (let i = 0; i < accData.length; i++) {
110
- result = ekf.update(dt[i], accData[i], gyrData[i]);
111
- distance = Quaternion.distance(result, expectationsRelative[i]);
112
- expect(distance).to.below(0.000001);
113
- }
114
- });
115
- });