gps-plus-slam-app-framework 1.4.0 → 1.8.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/dist/absolute-orientation-BAxc15J6.d.ts +54 -0
- package/dist/{accuracy-circles-Pi2YeCrM.d.ts → accuracy-circles-DkWBkF5g.d.ts} +16 -6
- package/dist/{app-selectors-CrOucL00.d.ts → app-selectors-JqydaUMN.d.ts} +1 -1
- package/dist/ar/bresenham3d.d.ts +1 -1
- package/dist/ar/camera-blit-capture.d.ts +1 -1
- package/dist/ar/capability-checker.d.ts +1 -1
- package/dist/ar/capture-failure-tracker.d.ts +1 -1
- package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
- package/dist/ar/depth-grid-lookup.d.ts +1 -1
- package/dist/ar/depth-occluder.d.ts +127 -0
- package/dist/ar/depth-occluder.js +299 -0
- package/dist/ar/depth-sampler.d.ts +2 -2
- package/dist/ar/depth-sampler.js +24 -4
- package/dist/ar/depth-unprojection.d.ts +1 -1
- package/dist/ar/depth-unprojection.js +52 -21
- package/dist/ar/enable-gps-ar.d.ts +1 -1
- package/dist/ar/enable-gps-ar.js +1 -1
- package/dist/ar/frame-loop.d.ts +1 -1
- package/dist/ar/frame-loop.js +12 -2
- package/dist/ar/image-capture.d.ts +2 -2
- package/dist/ar/image-capture.js +1 -154
- package/dist/ar/image-quality.d.ts +2 -0
- package/dist/ar/image-quality.js +169 -0
- package/dist/ar/index.d.ts +32 -30
- package/dist/ar/index.js +7 -5
- package/dist/ar/occlusion-mesh-worker.d.ts +58 -0
- package/dist/ar/occlusion-mesh-worker.js +129 -0
- package/dist/ar/occupancy-grid.d.ts +2 -2
- package/dist/ar/occupancy-grid.js +287 -31
- package/dist/ar/occupancy-mesher.d.ts +2 -0
- package/dist/ar/occupancy-mesher.js +638 -0
- package/dist/ar/planar-pnp.d.ts +1 -1
- package/dist/ar/qr-debug-view.d.ts +1 -1
- package/dist/ar/qr-derived-pose.d.ts +1 -1
- package/dist/ar/qr-detection-controller.d.ts +1 -1
- package/dist/ar/qr-frontend.d.ts +1 -1
- package/dist/ar/qr-pose.d.ts +1 -1
- package/dist/ar/qr-size-depth-context.d.ts +2 -2
- package/dist/ar/qr-size-measurer.d.ts +1 -1
- package/dist/ar/replay-scene.d.ts +1 -1
- package/dist/ar/replay-scene.js +1 -1
- package/dist/ar/scene-node-names.d.ts +1 -1
- package/dist/ar/webxr-nue-basis.d.ts +1 -1
- package/dist/ar/webxr-session.d.ts +4 -4
- package/dist/ar/webxr-session.js +2 -2
- package/dist/ar/xr-camera-texture.d.ts +1 -1
- package/dist/ar/xr-error-handler.d.ts +1 -1
- package/dist/ar/xr-frame-loop.d.ts +1 -1
- package/dist/ar/xr-frame-loop.js +12 -2
- package/dist/{ar-Dc72Ksiu.js → ar-BqCudtqE.js} +4 -3
- package/dist/{ar-world-group-alignment-DDLkgNf_.d.ts → ar-world-group-alignment-BlvGcIAk.d.ts} +1 -1
- package/dist/capture-motion-gate-BGoAMkmf.d.ts +24 -0
- package/dist/capture-motion-gate-_NdTSwKi.js +106 -0
- package/dist/cell-key-DIB4rOTV.js +51 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/{create-slam-app-store-Ce2FMKCp.d.ts → create-slam-app-store-D3nzh9Wb.d.ts} +50 -40
- package/dist/create-slam-app-store-DXiAnJwR.js +156 -0
- package/dist/{depth-grid-lookup-vMDrGTk_.d.ts → depth-grid-lookup-D5atpNZ3.d.ts} +1 -1
- package/dist/{depth-sampler-DwfPYzS7.d.ts → depth-sampler-CwObAwEA.d.ts} +33 -1
- package/dist/{depth-unprojection-CK3b9htH.d.ts → depth-unprojection-DRdBU90S.d.ts} +1 -1
- package/dist/{enable-gps-ar-CjZ1nEdu.d.ts → enable-gps-ar-DvGzBOrp.d.ts} +4 -4
- package/dist/{frame-conversions-D_Af8Dt3.d.ts → frame-conversions-C4bnNOEY.d.ts} +1 -1
- package/dist/{fused-path-C0FHe67t.d.ts → fused-path-C5pp0PJU.d.ts} +1 -1
- package/dist/geo/h3-proximity.d.ts +1 -1
- package/dist/geo/index.d.ts +1 -1
- package/dist/geodesic-angle-BTldfFgs.js +39 -0
- package/dist/{gps-anchor-C6I9NDHA.d.ts → gps-anchor-BjECcYnD.d.ts} +1 -1
- package/dist/{gps-ar-pose-sampler-DaHg2aPZ.d.ts → gps-ar-pose-sampler-DEGNk2CI.d.ts} +1 -1
- package/dist/{gps-event-coordinator-C7hwHyLA.d.ts → gps-event-coordinator-CHtIkhb7.d.ts} +21 -11
- package/dist/{image-capture-C2Feywet.d.ts → image-capture-Bp6Pd4Md.d.ts} +103 -3
- package/dist/image-capture-DVcuqMtX.js +374 -0
- package/dist/image-quality-BMx2ko9-.d.ts +158 -0
- package/dist/index-D4vrgV4b.d.ts +2 -0
- package/dist/index-D74JTX4I.d.ts +22 -0
- package/dist/{index-m_LneUSi.d.ts → index-DlsOo2IB.d.ts} +1 -1
- package/dist/{index-BvLo2poy.d.ts → index-cCQWuYqy.d.ts} +3 -3
- package/dist/index.d.ts +82 -77
- package/dist/index.js +15 -10
- package/dist/{leaflet-map-overlay-bnb2U1NQ.d.ts → leaflet-map-overlay-BOZFW5kT.d.ts} +64 -10
- package/dist/leaflet-map-overlay-CBWPvaX9.js +452 -0
- package/dist/lerp-utils-Qs8OhumS.d.ts +42 -0
- package/dist/map-data-D7rpMC6f.js +120 -0
- package/dist/{map-data-DdjPiSav.d.ts → map-data-PNfGKGWx.d.ts} +22 -2
- package/dist/{map-overlay-draw-CPVdAsFq.d.ts → map-overlay-draw-DiroaJed.d.ts} +1 -1
- package/dist/{null-storage-backend-CuSdYFsM.d.ts → null-storage-backend-B1-jlpin.d.ts} +2 -2
- package/dist/occlusion-mesh-b28lRJ6S.d.ts +194 -0
- package/dist/occupancy-grid-BV7RhB7I.d.ts +194 -0
- package/dist/occupancy-mesher-C2ecWhNp.d.ts +100 -0
- package/dist/{opfs-storage-DMtlt57S.d.ts → opfs-storage-CTkxvxN4.d.ts} +5 -0
- package/dist/{opfs-storage-backend-CeQAb0SD.d.ts → opfs-storage-backend-D6Z03fML.d.ts} +2 -2
- package/dist/{persistence-middleware-5eearhSV.d.ts → persistence-middleware-CG-t08X4.d.ts} +1 -1
- package/dist/{planar-pnp-cjthe7Be.d.ts → planar-pnp-D7bc_rLX.d.ts} +1 -1
- package/dist/{qr-debug-view-B8gTzjMm.d.ts → qr-debug-view-BJooqbiP.d.ts} +1 -1
- package/dist/{qr-derived-pose-DinKE600.d.ts → qr-derived-pose-BwNWn8oV.d.ts} +2 -2
- package/dist/{qr-detected-slice-Cpv-dg82.d.ts → qr-detected-slice-TzVb8bij.d.ts} +4 -4
- package/dist/{qr-detection-controller-Cd2Ih4cC.d.ts → qr-detection-controller-Bo4XfQTP.d.ts} +3 -3
- package/dist/{qr-frontend-DufZp2xS.d.ts → qr-frontend-BPURlh3S.d.ts} +1 -1
- package/dist/{qr-pose-aggregation-CFlmLm6w.d.ts → qr-pose-aggregation-CypnmjA-.d.ts} +1 -1
- package/dist/{qr-pose-aggregation-DXR9STHs.js → qr-pose-aggregation-DBiaLW0O.js} +1 -10
- package/dist/{qr-size-depth-context-onu36E9s.d.ts → qr-size-depth-context-apAOmbrZ.d.ts} +2 -2
- package/dist/{qr-size-measurer-D7739ZpB.d.ts → qr-size-measurer-DxiMqRUw.d.ts} +3 -3
- package/dist/recording-options-vASCFzc5.d.ts +667 -0
- package/dist/{recording-replayer-CUEK82tM.d.ts → recording-replayer-D0V9WkmY.d.ts} +2 -2
- package/dist/{recording-slice-B-uCgGoh.d.ts → recording-slice-DTUtSVgd.d.ts} +2 -2
- package/dist/{replay-engine-BSVd7Zzb.d.ts → replay-engine-xdrUgWJi.d.ts} +1 -1
- package/dist/{replay-scene-CPt56pps.d.ts → replay-scene-zJ8SFDjE.d.ts} +3 -3
- package/dist/sensors/absolute-orientation.d.ts +2 -0
- package/dist/sensors/absolute-orientation.js +162 -0
- package/dist/sensors/gps-error-handler.d.ts +1 -1
- package/dist/sensors/gps.d.ts +1 -1
- package/dist/sensors/index.d.ts +5 -4
- package/dist/sensors/index.js +2 -1
- package/dist/sensors/permission-checker.d.ts +1 -1
- package/dist/state/app-selectors.d.ts +1 -1
- package/dist/state/combined-root-state.d.ts +1 -1
- package/dist/state/create-slam-app-store.d.ts +1 -1
- package/dist/state/create-slam-app-store.js +1 -74
- package/dist/state/gps-ar-pose-sampler.d.ts +3 -3
- package/dist/state/gps-event-coordinator.d.ts +2 -2
- package/dist/state/gps-event-coordinator.js +27 -17
- package/dist/state/index.d.ts +20 -20
- package/dist/state/index.js +4 -4
- package/dist/state/persistence-middleware.d.ts +1 -1
- package/dist/state/persistence-middleware.js +30 -19
- package/dist/state/qr-detected-slice.d.ts +3 -3
- package/dist/state/qr-detected-slice.js +1 -1
- package/dist/state/recording-options.d.ts +2 -2
- package/dist/state/recording-options.js +286 -25
- package/dist/state/recording-replayer.d.ts +2 -2
- package/dist/state/recording-replayer.js +1 -1
- package/dist/state/recording-slice.d.ts +1 -1
- package/dist/state/replay-engine.d.ts +1 -1
- package/dist/state/store-subscribers.d.ts +2 -2
- package/dist/state/store-subscribers.js +2 -1
- package/dist/state/subscribe-to-selector.d.ts +1 -1
- package/dist/state/tracking-quality.d.ts +2 -2
- package/dist/state/tracking-quality.js +49 -128
- package/dist/state/tracking-slice.d.ts +1 -1
- package/dist/{state-IEw0ZsBu.js → state-BeKvn4B-.js} +1 -1
- package/dist/storage/file-system-utils.d.ts +1 -1
- package/dist/storage/index.d.ts +8 -8
- package/dist/storage/null-storage-backend.d.ts +1 -1
- package/dist/storage/opfs-storage-backend.d.ts +1 -1
- package/dist/storage/opfs-storage.d.ts +1 -1
- package/dist/storage/opfs-storage.js +25 -1
- package/dist/storage/storage-backend.d.ts +1 -1
- package/dist/storage/zip-coverage-embed.d.ts +1 -1
- package/dist/storage/zip-export.d.ts +1 -1
- package/dist/storage/zip-reader.d.ts +1 -1
- package/dist/{storage-backend-CTJHNdMp.d.ts → storage-backend-sEtmM4yW.d.ts} +1 -1
- package/dist/{store-subscribers-BZP81hjh.d.ts → store-subscribers-DScA7tdT.d.ts} +2 -2
- package/dist/{subscribe-to-selector-Bp3sLx8L.d.ts → subscribe-to-selector-B9ylM5Oh.d.ts} +1 -1
- package/dist/test-utils/browser-mocks.d.ts +1 -1
- package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
- package/dist/{tracking-slice-DJZ9qeGg.d.ts → tracking-slice-DMkHlbny.d.ts} +1 -1
- package/dist/types/ar-types.d.ts +1 -1
- package/dist/types/geo-types.d.ts +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/utils/concurrency.d.ts +1 -1
- package/dist/utils/failure-tracker.d.ts +1 -1
- package/dist/utils/format-file-size.d.ts +1 -1
- package/dist/utils/fused-path.d.ts +1 -1
- package/dist/utils/index.d.ts +8 -7
- package/dist/utils/index.js +2 -1
- package/dist/utils/list-formatter.d.ts +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/visualization/accuracy-circles.d.ts +1 -1
- package/dist/visualization/accuracy-circles.js +17 -8
- package/dist/visualization/alignment-lerper.d.ts +1 -1
- package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
- package/dist/visualization/ar-world-group-alignment.js +1 -1
- package/dist/visualization/camera-follower.d.ts +1 -1
- package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
- package/dist/visualization/frame-conversions.d.ts +1 -1
- package/dist/visualization/frustum-visibility.d.ts +1 -1
- package/dist/visualization/gps-anchor.d.ts +1 -1
- package/dist/visualization/gps-compass-cubes.d.ts +1 -1
- package/dist/visualization/gps-event-markers.d.ts +1 -1
- package/dist/visualization/gps-event-markers.js +1 -1
- package/dist/visualization/hit-test-reticle.d.ts +1 -1
- package/dist/visualization/index.d.ts +20 -19
- package/dist/visualization/index.js +4 -3
- package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
- package/dist/visualization/leaflet-map-overlay.js +1 -282
- package/dist/visualization/lerp-utils.d.ts +2 -2
- package/dist/visualization/lerp-utils.js +27 -3
- package/dist/visualization/map-data.d.ts +1 -1
- package/dist/visualization/map-data.js +1 -32
- package/dist/visualization/map-overlay-draw.d.ts +1 -1
- package/dist/visualization/map-overlay-draw.js +24 -2
- package/dist/visualization/map-overlay.d.ts +1 -1
- package/dist/visualization/occluder-mesh-driver.d.ts +130 -0
- package/dist/visualization/occluder-mesh-driver.js +219 -0
- package/dist/visualization/occlusion-mesh.d.ts +2 -0
- package/dist/visualization/occlusion-mesh.js +437 -0
- package/dist/visualization/three-dispose.d.ts +1 -1
- package/dist/visualization/vis-colors.d.ts +1 -1
- package/dist/{webxr-session-CJF9Nijp.js → webxr-session-BCP2XK7k.js} +110 -14
- package/dist/{webxr-session-COsOjJwn.d.ts → webxr-session-cRG2SYAQ.d.ts} +83 -10
- package/package.json +4 -4
- package/dist/index-eaI1Z1KR.d.ts +0 -2
- package/dist/lerp-utils-kLxMJ2Xj.d.ts +0 -20
- package/dist/occupancy-grid-Bvi2Gw1U.d.ts +0 -82
- package/dist/recording-options-D93kksJU.d.ts +0 -369
- /package/dist/{alignment-lerper-BUTsQ2yu.d.ts → alignment-lerper-gD70k7Fq.d.ts} +0 -0
- /package/dist/{ar-types-BckI1E-O.d.ts → ar-types-Cc5yvBwn.d.ts} +0 -0
- /package/dist/{bresenham3d-ByjcmEgM.d.ts → bresenham3d-DGc4nIb-.d.ts} +0 -0
- /package/dist/{camera-blit-capture-CqWe1G7s.d.ts → camera-blit-capture-BimSdyih.d.ts} +0 -0
- /package/dist/{camera-follower-BTb2Yp12.d.ts → camera-follower-DfBm2J5i.d.ts} +0 -0
- /package/dist/{capability-checker-CXqoJYtb.d.ts → capability-checker-BTTpygvZ.d.ts} +0 -0
- /package/dist/{capture-failure-tracker-BL5SoG2a.d.ts → capture-failure-tracker-_BVfhpxv.d.ts} +0 -0
- /package/dist/{chromium-camera-access-workaround-BNK189P0.d.ts → chromium-camera-access-workaround-C6yJLXz9.d.ts} +0 -0
- /package/dist/{concurrency-DqAlKX4j.d.ts → concurrency-DPeGBH0X.d.ts} +0 -0
- /package/dist/{css3d-renderer-manager-m-ab19vp.d.ts → css3d-renderer-manager-CPpVtvgs.d.ts} +0 -0
- /package/dist/{failure-tracker-Cnc_xWUw.d.ts → failure-tracker-CeKf5HIc.d.ts} +0 -0
- /package/dist/{file-system-utils-Bs7lpeVP.d.ts → file-system-utils-DueXHxo9.d.ts} +0 -0
- /package/dist/{format-file-size-BFUWvir1.d.ts → format-file-size-DxN-EBLc.d.ts} +0 -0
- /package/dist/{frame-loop-BEO9_q3k.d.ts → frame-loop-7GBMBu68.d.ts} +0 -0
- /package/dist/{frustum-visibility-D_RGmH98.d.ts → frustum-visibility-CokkgS_i.d.ts} +0 -0
- /package/dist/{geo-types-DqiBzPO9.d.ts → geo-types-DrGVu8nS.d.ts} +0 -0
- /package/dist/{gps-C5inWeNV.d.ts → gps-CDKDQokE.d.ts} +0 -0
- /package/dist/{gps-compass-cubes-BExxrWJ-.d.ts → gps-compass-cubes-1mooS3BS.d.ts} +0 -0
- /package/dist/{gps-error-handler-C2bS69oJ.d.ts → gps-error-handler-C34GQuTu.d.ts} +0 -0
- /package/dist/{gps-event-markers-Dd0G2bD0.d.ts → gps-event-markers-Di2nBzx-.d.ts} +0 -0
- /package/dist/{h3-proximity-B57C6rYL.d.ts → h3-proximity-D0GTHQmr.d.ts} +0 -0
- /package/dist/{hit-test-reticle-Dqak9hiR.d.ts → hit-test-reticle-CaQbrhbk.d.ts} +0 -0
- /package/dist/{list-formatter-ct8txwvR.d.ts → list-formatter-DLFDnS70.d.ts} +0 -0
- /package/dist/{logger-CzQrCe6C.d.ts → logger-CqTd5Kpk.d.ts} +0 -0
- /package/dist/{map-overlay-Dci4yvm3.d.ts → map-overlay-BCQgvIgU.d.ts} +0 -0
- /package/dist/{permission-checker-CtPtPQRq.d.ts → permission-checker-B-VtjnBA.d.ts} +0 -0
- /package/dist/{qr-pose-Bt2reSw7.d.ts → qr-pose-y3vaEd6x.d.ts} +0 -0
- /package/dist/{scene-node-names-CdNeQjOE.d.ts → scene-node-names-CGb-ylBd.d.ts} +0 -0
- /package/dist/{session-disposers-D8wnO-uW.js → session-disposers-BPrMplIC.js} +0 -0
- /package/dist/{three-dispose-BCZkSJp2.d.ts → three-dispose-BMOAmPhb.d.ts} +0 -0
- /package/dist/{vis-colors-BZsSLI4i.d.ts → vis-colors-C7HI0u9_.d.ts} +0 -0
- /package/dist/{webxr-nue-basis-CW1wsbm6.d.ts → webxr-nue-basis-CaCnYxuq.d.ts} +0 -0
- /package/dist/{xr-camera-texture-BmrP7iNZ.d.ts → xr-camera-texture-q0eIDSRg.d.ts} +0 -0
- /package/dist/{xr-error-handler-BEjRgZjt.d.ts → xr-error-handler-uVGDu9IX.d.ts} +0 -0
- /package/dist/{xr-frame-loop-K8ebdjLw.d.ts → xr-frame-loop-DX3JPpAU.d.ts} +0 -0
- /package/dist/{zip-coverage-embed-tFohI2J4.d.ts → zip-coverage-embed-ncVbaZAz.d.ts} +0 -0
- /package/dist/{zip-export-DDWXInTR.d.ts → zip-export-CtiUnAlJ.d.ts} +0 -0
- /package/dist/{zip-reader-Q2ue6zlC.d.ts → zip-reader-CvruaGvD.d.ts} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as WEBXR_TO_NUE } from "../webxr-nue-basis-
|
|
1
|
+
import { t as WEBXR_TO_NUE } from "../webxr-nue-basis-CaCnYxuq.js";
|
|
2
2
|
export { WEBXR_TO_NUE };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as DepthSample, t as ARPose } from "../ar-types-
|
|
2
|
-
import { n as CapturedImage } from "../image-capture-
|
|
3
|
-
import { A as
|
|
4
|
-
export { ARPose, CameraFrameCaptureConfig, CapturedImage, DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, DepthSample, SessionFeatureOptions, TrackingSubscribableStore, applyAlignmentMatrix, buildSessionOptions, createSceneHierarchy, endARSession, extractPoseFromViewer, extractResetTransformData, getArPose, getArWorldGroup, getCamera, getCameraFrameCaptureSize, getCameraFrameCount, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getScene, getXrCameraFromPose, initAR, isWebXRSupported, isXRCameraLike, nuePositionToWebXR, nueQuaternionToWebXR, resetWebXRState, setArPose, setArWorldGroup, setCamera, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setScene, setTrackingCallbacks, setTrackingLostCallback, setTrackingRecoveredCallback, setTrackingStore, shouldLogCameraAccessDiagnostic, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture };
|
|
1
|
+
import { i as DepthSample, t as ARPose } from "../ar-types-Cc5yvBwn.js";
|
|
2
|
+
import { n as CapturedImage } from "../image-capture-Bp6Pd4Md.js";
|
|
3
|
+
import { $ as stopImageCapture, A as nuePositionToWebXR, B as setImageQualityAnalyzer, C as getImageCaptureFrameCount, D as initAR, E as getXrCameraFromPose, F as setCamera, G as setTrackingRecoveredCallback, H as setSessionEndCallback, I as setCameraFrameCallback, J as startCameraFrameCapture, K as setTrackingStore, L as setDepthCaptureCallback, M as resetWebXRState, N as setArPose, O as isWebXRSupported, P as setArWorldGroup, Q as stopDepthCapture, R as setFrameCallback, S as getDepthSampleCount, T as getScene, U as setTrackingCallbacks, V as setScene, W as setTrackingLostCallback, X as startImageCapture, Y as startDepthCapture, Z as stopCameraFrameCapture, _ as getCamera, a as DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, b as getCurrentArPose, c as TrackingSubscribableStore, d as createSceneHierarchy, f as endARSession, g as getArWorldGroup, h as getArPose, i as CameraFrameCaptureConfig, j as nueQuaternionToWebXR, k as isXRCameraLike, l as applyAlignmentMatrix, m as extractResetTransformData, n as AR_CAMERA_FOV, o as SessionEndInfo, p as extractPoseFromViewer, q as shouldLogCameraAccessDiagnostic, r as AR_CAMERA_NEAR, s as SessionFeatureOptions, t as AR_CAMERA_FAR, u as buildSessionOptions, v as getCameraFrameCaptureSize, w as getLiveCss3dManager, x as getDepthInfoFromFrame, y as getCameraFrameCount, z as setImageCaptureCallback } from "../webxr-session-cRG2SYAQ.js";
|
|
4
|
+
export { ARPose, AR_CAMERA_FAR, AR_CAMERA_FOV, AR_CAMERA_NEAR, CameraFrameCaptureConfig, CapturedImage, DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, DepthSample, SessionEndInfo, SessionFeatureOptions, TrackingSubscribableStore, applyAlignmentMatrix, buildSessionOptions, createSceneHierarchy, endARSession, extractPoseFromViewer, extractResetTransformData, getArPose, getArWorldGroup, getCamera, getCameraFrameCaptureSize, getCameraFrameCount, getCurrentArPose, getDepthInfoFromFrame, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getScene, getXrCameraFromPose, initAR, isWebXRSupported, isXRCameraLike, nuePositionToWebXR, nueQuaternionToWebXR, resetWebXRState, setArPose, setArWorldGroup, setCamera, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setImageQualityAnalyzer, setScene, setSessionEndCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingRecoveredCallback, setTrackingStore, shouldLogCameraAccessDiagnostic, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture };
|
package/dist/ar/webxr-session.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as
|
|
2
|
-
export { DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, applyAlignmentMatrix, buildSessionOptions, createSceneHierarchy, endARSession, extractPoseFromViewer, extractResetTransformData, getArPose, getArWorldGroup, getCamera, getCameraFrameCaptureSize, getCameraFrameCount, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getScene, getXrCameraFromPose, initAR, isWebXRSupported, isXRCameraLike, nuePositionToWebXR, nueQuaternionToWebXR, resetWebXRState, setArPose, setArWorldGroup, setCamera, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setScene, setTrackingCallbacks, setTrackingLostCallback, setTrackingRecoveredCallback, setTrackingStore, shouldLogCameraAccessDiagnostic, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture };
|
|
1
|
+
import { A as setArWorldGroup, B as setTrackingLostCallback, C as initAR, D as nueQuaternionToWebXR, E as nuePositionToWebXR, F as setImageCaptureCallback, G as startDepthCapture, H as setTrackingStore, I as setImageQualityAnalyzer, J as stopDepthCapture, K as startImageCapture, L as setScene, M as setCameraFrameCallback, N as setDepthCaptureCallback, O as resetWebXRState, P as setFrameCallback, R as setSessionEndCallback, S as getXrCameraFromPose, T as isXRCameraLike, U as shouldLogCameraAccessDiagnostic, V as setTrackingRecoveredCallback, W as startCameraFrameCapture, Y as stopImageCapture, _ as getDepthInfoFromFrame, a as applyAlignmentMatrix, b as getLiveCss3dManager, c as endARSession, d as getArPose, f as getArWorldGroup, g as getCurrentArPose, h as getCameraFrameCount, i as DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, j as setCamera, k as setArPose, l as extractPoseFromViewer, m as getCameraFrameCaptureSize, n as AR_CAMERA_FOV, o as buildSessionOptions, p as getCamera, q as stopCameraFrameCapture, r as AR_CAMERA_NEAR, s as createSceneHierarchy, t as AR_CAMERA_FAR, u as extractResetTransformData, v as getDepthSampleCount, w as isWebXRSupported, x as getScene, y as getImageCaptureFrameCount, z as setTrackingCallbacks } from "../webxr-session-BCP2XK7k.js";
|
|
2
|
+
export { AR_CAMERA_FAR, AR_CAMERA_FOV, AR_CAMERA_NEAR, DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, applyAlignmentMatrix, buildSessionOptions, createSceneHierarchy, endARSession, extractPoseFromViewer, extractResetTransformData, getArPose, getArWorldGroup, getCamera, getCameraFrameCaptureSize, getCameraFrameCount, getCurrentArPose, getDepthInfoFromFrame, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getScene, getXrCameraFromPose, initAR, isWebXRSupported, isXRCameraLike, nuePositionToWebXR, nueQuaternionToWebXR, resetWebXRState, setArPose, setArWorldGroup, setCamera, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setImageQualityAnalyzer, setScene, setSessionEndCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingRecoveredCallback, setTrackingStore, shouldLogCameraAccessDiagnostic, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-
|
|
1
|
+
import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-q0eIDSRg.js";
|
|
2
2
|
export { CameraTextureResult, RendererLike, XRCameraLike, acquireCameraTexture };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "../xr-error-handler-
|
|
1
|
+
import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "../xr-error-handler-uVGDu9IX.js";
|
|
2
2
|
export { XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, getXrErrorMessage };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as runXrFrameUpdates, i as registerXrFrameUpdate, n as XrFrameUpdate, r as clearXrFrameUpdates, t as XrFrameContext } from "../xr-frame-loop-
|
|
1
|
+
import { a as runXrFrameUpdates, i as registerXrFrameUpdate, n as XrFrameUpdate, r as clearXrFrameUpdates, t as XrFrameContext } from "../xr-frame-loop-DX3JPpAU.js";
|
|
2
2
|
export { XrFrameContext, XrFrameUpdate, clearXrFrameUpdates, registerXrFrameUpdate, runXrFrameUpdates };
|
package/dist/ar/xr-frame-loop.js
CHANGED
|
@@ -24,6 +24,13 @@ import { createLogger } from "../utils/logger.js";
|
|
|
24
24
|
const log = createLogger("XrFrameLoop");
|
|
25
25
|
const updates = /* @__PURE__ */ new Set();
|
|
26
26
|
/**
|
|
27
|
+
* Cached iteration snapshot of {@link updates}, invalidated on every registry
|
|
28
|
+
* mutation. The snapshot SEMANTICS (a register/unregister during a tick defers
|
|
29
|
+
* to the next frame) are unchanged — caching only avoids re-allocating an
|
|
30
|
+
* identical array at 60–90 Hz between (rare) registry changes (PR #67 review).
|
|
31
|
+
*/
|
|
32
|
+
let snapshot = null;
|
|
33
|
+
/**
|
|
27
34
|
* Register a per-frame XR-access callback. Returns an unregister function.
|
|
28
35
|
*
|
|
29
36
|
* Registration is idempotent — registering the same `fn` twice is a no-op
|
|
@@ -31,8 +38,10 @@ const updates = /* @__PURE__ */ new Set();
|
|
|
31
38
|
*/
|
|
32
39
|
function registerXrFrameUpdate(fn) {
|
|
33
40
|
updates.add(fn);
|
|
41
|
+
snapshot = null;
|
|
34
42
|
return () => {
|
|
35
43
|
updates.delete(fn);
|
|
44
|
+
snapshot = null;
|
|
36
45
|
};
|
|
37
46
|
}
|
|
38
47
|
/**
|
|
@@ -51,8 +60,8 @@ function registerXrFrameUpdate(fn) {
|
|
|
51
60
|
* loop continues — mirroring `runFrameUpdates`.
|
|
52
61
|
*/
|
|
53
62
|
function runXrFrameUpdates(ctx) {
|
|
54
|
-
const snapshot = Array.from(updates);
|
|
55
|
-
for (const fn of
|
|
63
|
+
const fns = snapshot ?? (snapshot = Array.from(updates));
|
|
64
|
+
for (const fn of fns) try {
|
|
56
65
|
fn(ctx);
|
|
57
66
|
} catch (error) {
|
|
58
67
|
log.error("A registered XrFrameUpdate threw; continuing the loop", error);
|
|
@@ -64,6 +73,7 @@ function runXrFrameUpdates(ctx) {
|
|
|
64
73
|
*/
|
|
65
74
|
function clearXrFrameUpdates() {
|
|
66
75
|
updates.clear();
|
|
76
|
+
snapshot = null;
|
|
67
77
|
}
|
|
68
78
|
//#endregion
|
|
69
79
|
export { clearXrFrameUpdates, registerXrFrameUpdate, runXrFrameUpdates };
|
|
@@ -10,12 +10,13 @@ import "./ar/qr-derived-pose.js";
|
|
|
10
10
|
import "./ar/webxr-nue-basis.js";
|
|
11
11
|
import "./ar/qr-debug-view.js";
|
|
12
12
|
import { n as createDetectionScheduler } from "./qr-detection-controller-B-tLVd-S.js";
|
|
13
|
-
import "./qr-pose-aggregation-
|
|
14
|
-
import "./webxr-session-
|
|
13
|
+
import "./qr-pose-aggregation-DBiaLW0O.js";
|
|
14
|
+
import "./webxr-session-BCP2XK7k.js";
|
|
15
15
|
import "./ar/occupancy-grid.js";
|
|
16
|
+
import "./ar/occupancy-mesher.js";
|
|
16
17
|
import "./ar/frame-loop.js";
|
|
17
18
|
import "./ar/xr-frame-loop.js";
|
|
18
|
-
import "./
|
|
19
|
+
import "./image-capture-DVcuqMtX.js";
|
|
19
20
|
import "./ar/xr-camera-texture.js";
|
|
20
21
|
import "./ar/enable-gps-ar.js";
|
|
21
22
|
import "./ar/replay-scene.js";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region ../src/ar/capture-motion-gate.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* User-/consumer-facing motion-filter configuration. Shared by both config
|
|
4
|
+
* shapes that carry it — `ImageCaptureConfig` (what `ImageCaptureManager`
|
|
5
|
+
* consumes) and `ImageCaptureOptions` (the persisted recorder options) — so the
|
|
6
|
+
* one definition cannot drift between them. The window size and glitch ceilings
|
|
7
|
+
* are deliberately NOT here: they are internal tuning constants, not exposed.
|
|
8
|
+
*/
|
|
9
|
+
interface MotionFilterConfig {
|
|
10
|
+
/** Master switch for the motion gate. Default `true`. */
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
/** Angular-velocity threshold (rad/s); at/below this a frame is "calm". */
|
|
13
|
+
maxAngularVelocity: number;
|
|
14
|
+
/** Linear-velocity threshold (m/s); at/below this a frame is "calm". */
|
|
15
|
+
maxLinearVelocity: number;
|
|
16
|
+
/**
|
|
17
|
+
* Never-calm safety fallback: once a due capture has waited this many ms it
|
|
18
|
+
* fires regardless of motion, so an interval is never silently lost. A
|
|
19
|
+
* sensible value is ~2× the capture interval.
|
|
20
|
+
*/
|
|
21
|
+
maxWaitMs: number;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { MotionFilterConfig as t };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Angular velocity (rad/s) above which a sample is treated as a tracking glitch
|
|
3
|
+
* (e.g. relocalization teleport), not real motion. A genuine hand/device turn
|
|
4
|
+
* tops out well below this; a teleport is far above it. Module-internal tuning
|
|
5
|
+
* constant (not exported — the gate's user surface is only the four
|
|
6
|
+
* `MotionFilterConfig` fields); overridable per-instance via the `MotionWindow`
|
|
7
|
+
* constructor for tests.
|
|
8
|
+
*/
|
|
9
|
+
const ANGULAR_GLITCH_CEILING_RAD_S = 50;
|
|
10
|
+
/**
|
|
11
|
+
* Linear velocity (m/s) above which a sample is treated as a tracking glitch.
|
|
12
|
+
* ~20 m/s (72 km/h) is unreachable by handheld scanning but trivially exceeded
|
|
13
|
+
* by a relocalization origin jump. Module-internal tuning constant (see
|
|
14
|
+
* {@link ANGULAR_GLITCH_CEILING_RAD_S}).
|
|
15
|
+
*/
|
|
16
|
+
const LINEAR_GLITCH_CEILING_M_S = 20;
|
|
17
|
+
/**
|
|
18
|
+
* Default motion-filter configuration. Enabled by default (plan §1).
|
|
19
|
+
*
|
|
20
|
+
* `maxLinearVelocity` was raised `0.5 → 2.5` m/s on 2026-07-02 after a
|
|
21
|
+
* 5-recording field analysis: at 0.5 m/s (~⅓ of a ~1.4 m/s walking pace) the
|
|
22
|
+
* gate deferred ~90 % of captures to the never-calm `maxWaitMs` fallback,
|
|
23
|
+
* collapsing the walking capture rate from the configured 0.5 Hz to ~0.17 Hz.
|
|
24
|
+
* Measured 1 Hz-averaged walking speed was a tight band (median 1.38, max
|
|
25
|
+
* 1.73 m/s); allowing for higher instantaneous per-frame stride peaks, 2.5 m/s
|
|
26
|
+
* clears steady and brisk walking while still deferring genuine lunges/jogging
|
|
27
|
+
* — demoting the (weak-at-scanning-distance) linear signal to a gross-motion
|
|
28
|
+
* safety net and letting the well-behaved angular gate be the primary blur
|
|
29
|
+
* selector. See
|
|
30
|
+
* `GpsPlusSlamJs_Docs/docs/2026-07-02-image-capture-rate-motion-gate-finding.md`.
|
|
31
|
+
*
|
|
32
|
+
* `maxAngularVelocity` remains a PLACEHOLDER pending on-device field tuning
|
|
33
|
+
* (plan §7). `maxWaitMs` of 4000 ms is 2× the default 2000 ms image interval.
|
|
34
|
+
*/
|
|
35
|
+
const DEFAULT_MOTION_FILTER = {
|
|
36
|
+
enabled: true,
|
|
37
|
+
maxAngularVelocity: .6,
|
|
38
|
+
maxLinearVelocity: 2.5,
|
|
39
|
+
maxWaitMs: 4e3
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Decide whether a due capture should fire now or defer to a later frame.
|
|
43
|
+
*
|
|
44
|
+
* A frame is "calm" when BOTH windowed maxima are at/below their thresholds —
|
|
45
|
+
* an empty window reports `Infinity`, so it is never calm (no capture before a
|
|
46
|
+
* valid sample exists). If not calm, the capture is deferred UNTIL `msSinceDue`
|
|
47
|
+
* reaches `maxWaitMs`, at which point it fires regardless to guarantee an
|
|
48
|
+
* interval is never silently lost (worst case: one blurry frame, not a gap).
|
|
49
|
+
*/
|
|
50
|
+
function decideCapture(input) {
|
|
51
|
+
if (input.windowMaxAngular <= input.maxAngularVelocity && input.windowMaxLinear <= input.maxLinearVelocity) return "capture";
|
|
52
|
+
if (input.msSinceDue >= input.maxWaitMs) return "capture";
|
|
53
|
+
return "defer";
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Fixed-size ring of the most recent VALID (non-glitch) per-frame velocities.
|
|
57
|
+
*
|
|
58
|
+
* `maxAngular()`/`maxLinear()` return the max over the retained samples, or
|
|
59
|
+
* `Infinity` when empty so "no data yet" reads as not-calm in
|
|
60
|
+
* {@link decideCapture}. A sample exceeding either glitch ceiling is rejected
|
|
61
|
+
* outright (`push` returns `false`) and never stored, so a relocalization spike
|
|
62
|
+
* neither pollutes the window (no spurious defer) nor is treated as motion.
|
|
63
|
+
*/
|
|
64
|
+
var MotionWindow = class {
|
|
65
|
+
angularGlitchCeiling;
|
|
66
|
+
linearGlitchCeiling;
|
|
67
|
+
size;
|
|
68
|
+
angular = [];
|
|
69
|
+
linear = [];
|
|
70
|
+
constructor(size = 3, angularGlitchCeiling = ANGULAR_GLITCH_CEILING_RAD_S, linearGlitchCeiling = LINEAR_GLITCH_CEILING_M_S) {
|
|
71
|
+
this.angularGlitchCeiling = angularGlitchCeiling;
|
|
72
|
+
this.linearGlitchCeiling = linearGlitchCeiling;
|
|
73
|
+
this.size = Number.isFinite(size) && size >= 1 ? Math.floor(size) : 1;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Record a per-frame velocity pair. Returns `false` (and stores nothing) when
|
|
77
|
+
* the sample exceeds either glitch ceiling, `true` otherwise.
|
|
78
|
+
*/
|
|
79
|
+
push(angularVel, linearVel) {
|
|
80
|
+
if (!Number.isFinite(angularVel) || !Number.isFinite(linearVel) || angularVel > this.angularGlitchCeiling || linearVel > this.linearGlitchCeiling) return false;
|
|
81
|
+
this.angular.push(angularVel);
|
|
82
|
+
this.linear.push(linearVel);
|
|
83
|
+
if (this.angular.length > this.size) this.angular.shift();
|
|
84
|
+
if (this.linear.length > this.size) this.linear.shift();
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
/** Whether the window holds at least one valid (non-glitch) sample yet. */
|
|
88
|
+
hasSamples() {
|
|
89
|
+
return this.angular.length > 0;
|
|
90
|
+
}
|
|
91
|
+
/** Max angular velocity over the retained window, or `Infinity` if empty. */
|
|
92
|
+
maxAngular() {
|
|
93
|
+
return this.angular.length === 0 ? Number.POSITIVE_INFINITY : Math.max(...this.angular);
|
|
94
|
+
}
|
|
95
|
+
/** Max linear velocity over the retained window, or `Infinity` if empty. */
|
|
96
|
+
maxLinear() {
|
|
97
|
+
return this.linear.length === 0 ? Number.POSITIVE_INFINITY : Math.max(...this.linear);
|
|
98
|
+
}
|
|
99
|
+
/** Clear all samples (e.g. on tracking loss / capture restart). */
|
|
100
|
+
reset() {
|
|
101
|
+
this.angular.length = 0;
|
|
102
|
+
this.linear.length = 0;
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
//#endregion
|
|
106
|
+
export { MotionWindow as n, decideCapture as r, DEFAULT_MOTION_FILTER as t };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
//#region ../src/ar/cell-key.ts
|
|
2
|
+
/** Full-field envelope: direct cell keys are collision-free for `|c| ≤` this. */
|
|
3
|
+
const CELL_KEY_LIMIT = 65535;
|
|
4
|
+
/**
|
|
5
|
+
* Mesher-tier envelope: leaves headroom for the derived half-lattice
|
|
6
|
+
* (`2·coord ± 1`) and neighbour (`±1`) keys the meshers build from a cell.
|
|
7
|
+
*/
|
|
8
|
+
const HALF_LATTICE_CELL_KEY_LIMIT = 32767;
|
|
9
|
+
const KEY_OFFSET = 65536;
|
|
10
|
+
const KEY_FIELD = 131072;
|
|
11
|
+
const KEY_FIELD_SQ = KEY_FIELD * KEY_FIELD;
|
|
12
|
+
/**
|
|
13
|
+
* Pack three integer coordinates into the numeric key. Collision-free only
|
|
14
|
+
* within the caller's envelope (see the module header); scalar form so hot
|
|
15
|
+
* loops need no tuple.
|
|
16
|
+
*/
|
|
17
|
+
function packCellKey(x, y, z) {
|
|
18
|
+
return (x + KEY_OFFSET) * KEY_FIELD_SQ + (y + KEY_OFFSET) * KEY_FIELD + (z + KEY_OFFSET);
|
|
19
|
+
}
|
|
20
|
+
/** Tuple convenience over {@link packCellKey}. */
|
|
21
|
+
function cellKey(cell) {
|
|
22
|
+
return packCellKey(cell[0], cell[1], cell[2]);
|
|
23
|
+
}
|
|
24
|
+
/** One axis of {@link unpackCellKey} without allocating the tuple (hot paths). */
|
|
25
|
+
function unpackCellCoord(key, axis) {
|
|
26
|
+
if (axis === 0) return Math.floor(key / KEY_FIELD_SQ) - KEY_OFFSET;
|
|
27
|
+
if (axis === 1) return Math.floor(key / KEY_FIELD) % KEY_FIELD - KEY_OFFSET;
|
|
28
|
+
return key % KEY_FIELD - KEY_OFFSET;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Exact inverse of {@link cellKey} over the ±{@link CELL_KEY_LIMIT} envelope
|
|
32
|
+
* (property-tested). Consumers that no longer store coordinate tuples recover
|
|
33
|
+
* them from the key through this function.
|
|
34
|
+
*/
|
|
35
|
+
function unpackCellKey(key) {
|
|
36
|
+
return [
|
|
37
|
+
unpackCellCoord(key, 0),
|
|
38
|
+
unpackCellCoord(key, 1),
|
|
39
|
+
unpackCellCoord(key, 2)
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* True iff every coordinate is within ±`limit` — the aliasing guard callers
|
|
44
|
+
* must apply before keying untrusted coordinates. Defaults to the full-field
|
|
45
|
+
* {@link CELL_KEY_LIMIT}; the meshers pass {@link HALF_LATTICE_CELL_KEY_LIMIT}.
|
|
46
|
+
*/
|
|
47
|
+
function cellCoordsInKeyRange(cell, limit = CELL_KEY_LIMIT) {
|
|
48
|
+
return Math.abs(cell[0]) <= limit && Math.abs(cell[1]) <= limit && Math.abs(cell[2]) <= limit;
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { packCellKey as a, cellKey as i, HALF_LATTICE_CELL_KEY_LIMIT as n, unpackCellCoord as o, cellCoordsInKeyRange as r, unpackCellKey as s, CELL_KEY_LIMIT as t };
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as LibraryRootState, c as RootState, d as
|
|
2
|
-
export { ArImageCapture, GpsPoint, LatLong, LatLongAlt, LibraryRootState, Matrix4, Quaternion, RootState, Vector3, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, odometryTrackingRestarted, validateLicenseKey, webxrToNUE };
|
|
1
|
+
import { _ as odometryTrackingRestarted, a as LibraryRootState, c as RootState, d as bearingDeltaDeg, f as calcGpsCoords, g as magneticHeadingFromEnuQuat, h as isIdentityMatrix4, i as LatLongAlt, l as Vector3, m as createGpsSlamStore, n as GpsPoint, o as Matrix4, p as calcRelativeCoordsInMeters, r as LatLong, s as Quaternion, t as ArImageCapture, u as arNorthBearingDeg, v as validateLicenseKey, y as webxrToNUE } from "../index-D4vrgV4b.js";
|
|
2
|
+
export { ArImageCapture, GpsPoint, LatLong, LatLongAlt, LibraryRootState, Matrix4, Quaternion, RootState, Vector3, arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE };
|
package/dist/core/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, odometryTrackingRestarted, validateLicenseKey, webxrToNUE } from "gps-plus-slam-js";
|
|
2
|
-
export { calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, odometryTrackingRestarted, validateLicenseKey, webxrToNUE };
|
|
1
|
+
import { arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE } from "gps-plus-slam-js";
|
|
2
|
+
export { arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE };
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as StorageBackend } from "./storage-backend-CTJHNdMp.js";
|
|
1
|
+
import { a as TrackingSliceState } from "./tracking-slice-DMkHlbny.js";
|
|
2
|
+
import { t as RecordingState } from "./recording-slice-DTUtSVgd.js";
|
|
3
|
+
import { n as SessionMetadata } from "./opfs-storage-CTkxvxN4.js";
|
|
4
|
+
import { n as StorageBackend } from "./storage-backend-sEtmM4yW.js";
|
|
6
5
|
import { GpsPoint, LatLong, Matrix4, RootState, Vector3 } from "gps-plus-slam-js";
|
|
7
6
|
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
|
8
7
|
import { Middleware, Reducer, ReducersMapObject, configureStore } from "@reduxjs/toolkit";
|
|
@@ -18,8 +17,7 @@ interface TrackingQualityReport {
|
|
|
18
17
|
confidence: number;
|
|
19
18
|
subScores: {
|
|
20
19
|
convergence: number;
|
|
21
|
-
residualConsensus: number;
|
|
22
|
-
compassAgreement: number | null;
|
|
20
|
+
residualConsensus: number;
|
|
23
21
|
gpsAccuracy: number;
|
|
24
22
|
coverage: number;
|
|
25
23
|
};
|
|
@@ -37,9 +35,7 @@ interface TrackingQualityReport {
|
|
|
37
35
|
medianResidualM: number;
|
|
38
36
|
medianRecentGpsAccuracyM: number;
|
|
39
37
|
walkedDistanceM: number;
|
|
40
|
-
directionSpreadDeg: number;
|
|
41
|
-
headingDeltaDeg: number | null;
|
|
42
|
-
compassDriftDetected: boolean;
|
|
38
|
+
directionSpreadDeg: number;
|
|
43
39
|
observationsSeen: number; /** §4.6 — diagnostic only, never feeds the aggregate. */
|
|
44
40
|
gpsVsFusedMaxDivergenceM: number;
|
|
45
41
|
};
|
|
@@ -61,10 +57,6 @@ interface TrackingQualityOptions {
|
|
|
61
57
|
convergenceRotationWarnDeg?: number;
|
|
62
58
|
/** §4.1 ΣΔtranslation (m) at/below which convergence scores 1.0. Fail ramp ends at 4×. */
|
|
63
59
|
convergenceTranslationWarnM?: number;
|
|
64
|
-
/** §4.3 EMA threshold (deg) below which compass scores 1.0. */
|
|
65
|
-
compassWarnDeg?: number;
|
|
66
|
-
/** §4.3 EMA threshold (deg) above which compass scores 0.0. */
|
|
67
|
-
compassFailDeg?: number;
|
|
68
60
|
/** Minimum GPS observations before leaving `warming-up`. */
|
|
69
61
|
warmupMinObservations?: number;
|
|
70
62
|
/** Minimum coverage score before leaving `warming-up`. */
|
|
@@ -73,8 +65,6 @@ interface TrackingQualityOptions {
|
|
|
73
65
|
residualConfidenceTargetM?: number;
|
|
74
66
|
/** §4.4 GPS-accuracy floor used to normalise residuals (m). */
|
|
75
67
|
gpsAccuracyFloorM?: number;
|
|
76
|
-
/** §4.3 consecutive compass-agreeing observations for first agreement. */
|
|
77
|
-
firstAgreementMinStreak?: number;
|
|
78
68
|
/** §4.8 consecutive sub-threshold observations before ok → degraded. */
|
|
79
69
|
degradedHoldoff?: number;
|
|
80
70
|
/**
|
|
@@ -97,7 +87,6 @@ interface AlignmentSnapshot {
|
|
|
97
87
|
}
|
|
98
88
|
interface TrackingQualitySliceState {
|
|
99
89
|
recentAlignments: AlignmentSnapshot[];
|
|
100
|
-
firstAgreementObservationIndex: number | null;
|
|
101
90
|
report: TrackingQualityReport | null;
|
|
102
91
|
/** §4.8 — consecutive observations with raw confidence < degradedThreshold. */
|
|
103
92
|
degradedConsecutiveCount: number;
|
|
@@ -143,7 +132,8 @@ declare function computeConvergence(snapshots: readonly AlignmentSnapshot[], opt
|
|
|
143
132
|
* the column-major layout that gl-matrix and the framework use.
|
|
144
133
|
*
|
|
145
134
|
* Rotation: extract the orientation quaternion with `mat4.getRotation`
|
|
146
|
-
* and compute the relative angle via `
|
|
135
|
+
* and compute the relative angle via the shared `geodesicAngleRad` kernel
|
|
136
|
+
* (radians, converted to degrees here).
|
|
147
137
|
* Translation: extract the origin column with `mat4.getTranslation` and
|
|
148
138
|
* compute the Euclidean distance.
|
|
149
139
|
*
|
|
@@ -206,25 +196,6 @@ declare function computeCoverage(odometryPositions: readonly Vector3[], options?
|
|
|
206
196
|
walkedDistanceM?: number;
|
|
207
197
|
directionSpreadDeg?: number;
|
|
208
198
|
}): CoverageResult;
|
|
209
|
-
interface CompassAgreementResult {
|
|
210
|
-
/** `null` when `absolute !== true` on the sensor orientation. */
|
|
211
|
-
score: number | null;
|
|
212
|
-
headingDeltaDeg: number | null;
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* §4.3 — Compare the alignment matrix's mapping of AR-forward to ENU
|
|
216
|
-
* against the device compass heading. Returns `score = null` whenever
|
|
217
|
-
* the sensor's `absolute !== true` so the aggregate excludes the
|
|
218
|
-
* sub-score (per Q2 in the plan).
|
|
219
|
-
*
|
|
220
|
-
* AR-forward in our `ARPose` convention is `(0, 0, -1)` (right-handed,
|
|
221
|
-
* Y-up). We rotate that by the alignment's 3×3 rotation, take its
|
|
222
|
-
* North/East components, and compare against the compass alpha.
|
|
223
|
-
*/
|
|
224
|
-
declare function computeCompassAgreement(alignmentMatrix: Matrix4 | null, sensorOrientation: DeviceOrientation | null, arPose: ARPose | null, options?: {
|
|
225
|
-
warnDeg?: number;
|
|
226
|
-
failDeg?: number;
|
|
227
|
-
}): CompassAgreementResult;
|
|
228
199
|
/**
|
|
229
200
|
* §4.6 — Maximum lateral distance between raw GPS positions and the
|
|
230
201
|
* positions you would predict by transforming the matching odometry
|
|
@@ -234,14 +205,13 @@ declare function computeCompassAgreement(alignmentMatrix: Matrix4 | null, sensor
|
|
|
234
205
|
declare function computeGpsVsFusedDivergence(alignmentMatrix: Matrix4 | null, gpsPositions: readonly GpsPoint[], odometryPositions: readonly Vector3[], zeroRef: LatLong | null, windowSize?: number): number;
|
|
235
206
|
declare const snapshotPushed: _$_reduxjs_toolkit0.ActionCreatorWithPayload<AlignmentSnapshot, "trackingQuality/snapshotPushed">, snapshotsTrimmed: _$_reduxjs_toolkit0.ActionCreatorWithPayload<{
|
|
236
207
|
size: number;
|
|
237
|
-
}, "trackingQuality/snapshotsTrimmed">, reportUpdated: _$_reduxjs_toolkit0.ActionCreatorWithPayload<TrackingQualityReport | null, "trackingQuality/reportUpdated">,
|
|
208
|
+
}, "trackingQuality/snapshotsTrimmed">, reportUpdated: _$_reduxjs_toolkit0.ActionCreatorWithPayload<TrackingQualityReport | null, "trackingQuality/reportUpdated">, degradedCountUpdated: _$_reduxjs_toolkit0.ActionCreatorWithPayload<number, "trackingQuality/degradedCountUpdated">, resetTrackingQuality: _$_reduxjs_toolkit0.ActionCreatorWithoutPayload<"trackingQuality/resetTrackingQuality">;
|
|
238
209
|
declare const trackingQualityReducer: _$_reduxjs_toolkit0.Reducer<TrackingQualitySliceState>;
|
|
239
210
|
interface RootWithTrackingQuality {
|
|
240
211
|
trackingQuality?: TrackingQualitySliceState;
|
|
241
212
|
}
|
|
242
213
|
declare function selectTrackingQuality(state: RootWithTrackingQuality): TrackingQualityReport | null;
|
|
243
214
|
declare function selectRecentAlignments(state: RootWithTrackingQuality): readonly AlignmentSnapshot[];
|
|
244
|
-
declare function selectFirstAgreementObservationIndex(state: RootWithTrackingQuality): number | null;
|
|
245
215
|
/**
|
|
246
216
|
* Pure function — produces a {@link TrackingQualityReport} from a root
|
|
247
217
|
* state and options. The Investigation harness imports this directly to
|
|
@@ -339,6 +309,46 @@ interface SlamAppStoreOptions<ExtraReducers extends ReducersMapObject = Record<s
|
|
|
339
309
|
* @see docs/2026-05-16-tracking-quality-metrics-plan.md
|
|
340
310
|
*/
|
|
341
311
|
trackingQualityOptions?: Partial<TrackingQualityOptions>;
|
|
312
|
+
/**
|
|
313
|
+
* Enable the library's Phase-4 **Stage-0** cold-start compass yaw override.
|
|
314
|
+
* **Default `true`** — Stage 0 is a field-validated, default-on feature: at
|
|
315
|
+
* cold start the GPS-derived yaw is unobservable (clustered fixes ⇒ a yaw set
|
|
316
|
+
* by noise that flips as the user looks around), so the compass heading gives
|
|
317
|
+
* a roughly-correct, stable orientation immediately ("open app, stand still,
|
|
318
|
+
* look around" works). It is an observability-gated handover — once a walked
|
|
319
|
+
* baseline conditions the GPS yaw, the solve hands back to GPS — so it does no
|
|
320
|
+
* harm once GPS is observable. Pass `false` to opt out (the recorder exposes
|
|
321
|
+
* this as a settings toggle).
|
|
322
|
+
*
|
|
323
|
+
* When enabled the factory dispatches `setColdStartOverrideEnabled(true)` the
|
|
324
|
+
* first time `gpsData` becomes non-null (right after the first `setZeroPos`,
|
|
325
|
+
* since the flag lives on that slice and cannot be set before it exists).
|
|
326
|
+
*
|
|
327
|
+
* Replay/determinism: the library's `DefaultAlignmentConfig` stays OFF, so
|
|
328
|
+
* historical recordings replay unchanged; default-on lives here as a recorded
|
|
329
|
+
* `gpsData` action. A recording made with this on therefore replays with the
|
|
330
|
+
* override on. **For Stage-A/§6a field-calibration recordings, turn this OFF**
|
|
331
|
+
* (recorder settings) so the captured compass behaviour is unmodified.
|
|
332
|
+
*
|
|
333
|
+
* @see GpsPlusSlamJs_Docs/docs/2026-06-26-stage0-field-collection-and-enablement.md
|
|
334
|
+
*/
|
|
335
|
+
enableCompassColdStartOverride?: boolean;
|
|
336
|
+
/**
|
|
337
|
+
* **Debug/experiment flag** — enable the library's Phase-4 **Stage-C**
|
|
338
|
+
* trust-gated compass rotation prior (keeps a steady compass vote once GPS yaw
|
|
339
|
+
* is observable + the compass is trusted; supersedes Stage 0). Dispatches
|
|
340
|
+
* `setCompassRotationPriorEnabled(true)` once `gpsData` exists. Default `false`
|
|
341
|
+
* ⇒ byte-identical. Like the Stage-0 flag, the action persists into recordings.
|
|
342
|
+
*/
|
|
343
|
+
enableCompassRotationPrior?: boolean;
|
|
344
|
+
/**
|
|
345
|
+
* **Debug/experiment flag** — enable the library's GPS-free compass↔WebXR
|
|
346
|
+
* consistency gate. When on, the compass override (Stage 0 / Stage C) abstains
|
|
347
|
+
* unless the compass is rotating in lock-step with the WebXR pose. Dispatches
|
|
348
|
+
* `setCompassWebXRConsistencyEnabled(true)` once `gpsData` exists. Default
|
|
349
|
+
* `false` ⇒ byte-identical. The action persists into recordings.
|
|
350
|
+
*/
|
|
351
|
+
enableCompassWebXRConsistency?: boolean;
|
|
342
352
|
}
|
|
343
353
|
/**
|
|
344
354
|
* Combined root state: the framework's base state plus any caller-supplied
|
|
@@ -368,4 +378,4 @@ interface SlamAppStore<ExtraReducers extends ReducersMapObject = Record<string,
|
|
|
368
378
|
*/
|
|
369
379
|
declare function createSlamAppStore<ExtraReducers extends ReducersMapObject = Record<string, never>>(options: SlamAppStoreOptions<ExtraReducers>): SlamAppStore<ExtraReducers>;
|
|
370
380
|
//#endregion
|
|
371
|
-
export {
|
|
381
|
+
export { snapshotPushed as A, createTrackingQualityListenerMiddleware as C, resetTrackingQuality as D, reportUpdated as E, trackingQualityReducer as M, CombinedRootState as N, selectRecentAlignments as O, computeTrackingQualityReport as S, matrixDelta as T, computeConvergence as _, SlamAppStoreOptions as a, computeGpsVsFusedDivergence as b, ConvergenceResult as c, GpsAccuracyResult as d, ResidualConsensusResult as f, TrackingQualityState as g, TrackingQualitySliceState as h, SlamAppStore as i, snapshotsTrimmed as j, selectTrackingQuality as k, CoverageResult as l, TrackingQualityReport as m, SlamAppMiddleware as n, createSlamAppStore as o, TrackingQualityOptions as p, SlamAppRootState as r, AlignmentSnapshot as s, SlamAppCombinedState as t, DEFAULT_TRACKING_QUALITY_OPTIONS as u, computeCoverage as v, degradedCountUpdated as w, computeResidualConsensus as x, computeGpsAccuracy as y };
|