space-data-module-sdk 0.8.15 → 0.8.17
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/bin/space-data-module.js +24 -6
- package/docs/_shell/consumer-assets.html +5 -0
- package/docs/browser-wasmedge-isomorphic.html +261 -0
- package/docs/byo-wasm-quickstart.html +226 -0
- package/docs/byo-wasm-quickstart.md +204 -0
- package/docs/conformance.html +162 -0
- package/docs/conformance.md +20 -4
- package/docs/emception-shared-memory-verdict.md +209 -0
- package/docs/events-abi.html +313 -0
- package/docs/events-abi.md +530 -0
- package/docs/families/analytics.html +178 -0
- package/docs/families/analytics.md +104 -0
- package/docs/families/attitude.html +157 -0
- package/docs/families/attitude.md +36 -0
- package/docs/families/behavior.html +157 -0
- package/docs/families/behavior.md +36 -0
- package/docs/families/breakup.html +157 -0
- package/docs/families/breakup.md +36 -0
- package/docs/families/conjunction.html +186 -0
- package/docs/families/conjunction.md +121 -0
- package/docs/families/data-source.html +323 -0
- package/docs/families/effects.html +157 -0
- package/docs/families/effects.md +36 -0
- package/docs/families/environment.html +170 -0
- package/docs/families/environment.md +73 -0
- package/docs/families/estimation.html +192 -0
- package/docs/families/estimation.md +158 -0
- package/docs/families/gnc.html +157 -0
- package/docs/families/gnc.md +36 -0
- package/docs/families/maneuver.html +209 -0
- package/docs/families/maneuver.md +206 -0
- package/docs/families/obstruction.html +191 -0
- package/docs/families/obstruction.md +96 -0
- package/docs/families/propagator.html +347 -0
- package/docs/families/propulsion.html +157 -0
- package/docs/families/propulsion.md +36 -0
- package/docs/families/reentry.html +157 -0
- package/docs/families/reentry.md +36 -0
- package/docs/families/rf.html +193 -0
- package/docs/families/rf.md +136 -0
- package/docs/families/scheduler.html +157 -0
- package/docs/families/scheduler.md +36 -0
- package/docs/families/sensor.html +157 -0
- package/docs/families/sensor.md +36 -0
- package/docs/families/signature.html +157 -0
- package/docs/families/signature.md +36 -0
- package/docs/flatsql-host-contract.html +176 -0
- package/docs/flatsql-streaming-standard.html +375 -0
- package/docs/gpu-module-abi.html +233 -0
- package/docs/harness-family-matrix.md +135 -0
- package/docs/index.html +216 -85
- package/docs/isomorphic-pthreads.html +228 -0
- package/docs/isomorphic-pthreads.md +84 -0
- package/docs/isomorphic-sdn-runtime-plan.html +274 -0
- package/docs/language-runtime-matrix.html +182 -0
- package/docs/llms.txt +86 -0
- package/docs/module-bundle-runtime-plan.html +146 -0
- package/docs/module-publication-standard.html +503 -0
- package/docs/node-red-default-node-parity.html +201 -0
- package/docs/propagator-abi.md +97 -12
- package/docs/protect-and-sign.html +181 -0
- package/docs/protect-and-sign.md +120 -0
- package/docs/protocol-installation.html +296 -0
- package/docs/provider-access-abi.md +25 -0
- package/docs/publication-submission.html +158 -0
- package/docs/publication-submission.md +78 -0
- package/docs/secrets-capability.html +206 -0
- package/docs/styles.css +860 -167
- package/docs/testing-harness.html +408 -0
- package/docs/tri-runtime-parity-gate.html +182 -0
- package/docs/tri-runtime-parity.html +203 -0
- package/include/orbpro/orbpro_estimation_abi.h +883 -0
- package/include/orbpro/orbpro_event_runner.h +951 -0
- package/include/orbpro/orbpro_events_abi.h +565 -0
- package/include/orbpro/orbpro_propagator_abi.h +75 -0
- package/package.json +13 -4
- package/schemas/orbpro/Estimation.fbs +244 -0
- package/schemas/orbpro/Events.fbs +501 -0
- package/schemas/orbpro/Propagator.fbs +136 -9
- package/schemas/orbpro/reference-frame-crosswalk.json +108 -0
- package/schemas/orbpro/reference-frame.lock.json +98 -0
- package/src/browser.js +13 -0
- package/src/conformance/estimationReference.js +81 -0
- package/src/conformance/estimationSuite.js +134 -0
- package/src/conformance/index.js +39 -2
- package/src/generated/orbpro/events-abi.js +206 -0
- package/src/generated/orbpro/events-abi.ts +319 -0
- package/src/generated/orbpro/propagator/reference-frame.js +17 -0
- package/src/generated/orbpro/propagator/reference-frame.ts +91 -1
- package/src/generated/orbpro/propagator-abi.js +38 -0
- package/src/generated/orbpro/propagator-abi.ts +67 -0
- package/src/generated/spacedatastandards/plg/CCT.d.ts +94 -0
- package/src/generated/spacedatastandards/plg/CCT.d.ts.map +1 -0
- package/src/generated/spacedatastandards/plg/CCT.js +208 -0
- package/src/generated/spacedatastandards/plg/CCT.ts +281 -0
- package/src/generated/spacedatastandards/plg/CCTCategory.d.ts +98 -0
- package/src/generated/spacedatastandards/plg/CCTCategory.d.ts.map +1 -0
- package/src/generated/spacedatastandards/plg/CCTCategory.js +177 -0
- package/src/generated/spacedatastandards/plg/CCTCategory.ts +269 -0
- package/src/generated/spacedatastandards/plg/CCTCategoryRollup.d.ts +54 -0
- package/src/generated/spacedatastandards/plg/CCTCategoryRollup.d.ts.map +1 -0
- package/src/generated/spacedatastandards/plg/CCTCategoryRollup.js +106 -0
- package/src/generated/spacedatastandards/plg/CCTCategoryRollup.ts +144 -0
- package/src/generated/spacedatastandards/plg/PLG.d.ts +46 -2
- package/src/generated/spacedatastandards/plg/PLG.d.ts.map +1 -1
- package/src/generated/spacedatastandards/plg/PLG.js +78 -5
- package/src/generated/spacedatastandards/plg/PLG.ts +90 -5
- package/src/generated/spacedatastandards/plg/capabilityClass.d.ts +181 -0
- package/src/generated/spacedatastandards/plg/capabilityClass.d.ts.map +1 -0
- package/src/generated/spacedatastandards/plg/capabilityClass.js +183 -0
- package/src/generated/spacedatastandards/plg/capabilityClass.ts +208 -0
- package/src/generated/spacedatastandards/plg/main.d.ts +4 -0
- package/src/generated/spacedatastandards/plg/main.d.ts.map +1 -1
- package/src/generated/spacedatastandards/plg/main.js +4 -0
- package/src/generated/spacedatastandards/plg/main.ts +4 -0
- package/src/generated/spacedatastandards/plg/pluginCategory.d.ts +40 -2
- package/src/generated/spacedatastandards/plg/pluginCategory.d.ts.map +1 -1
- package/src/generated/spacedatastandards/plg/pluginCategory.js +40 -2
- package/src/generated/spacedatastandards/plg/pluginCategory.ts +40 -2
- package/src/host/browserModuleHarness.js +8 -0
- package/src/host/wasiThreadHost.js +189 -14
- package/src/index.d.ts +18 -1
- package/src/standards/sharedCatalog.js +7 -0
- package/src/transport/index.js +16 -0
- package/src/transport/records.js +1015 -3
- package/templates/estimation-module/README.md +24 -0
- package/templates/estimation-module/build.mjs +32 -0
- package/templates/estimation-module/package.json +12 -0
- package/templates/estimation-module/plugin-manifest.json +34 -0
- package/templates/estimation-module/src/reference_estimation.cpp +53 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<meta name="description" content="Status: RATIFIED. The estimation harness is the measurement-based orbit" />
|
|
7
|
+
<title>Estimation — Space Data Module SDK</title>
|
|
8
|
+
<link rel="stylesheet" href="../styles.css" />
|
|
9
|
+
<!-- SDN_CONSUMER_ASSETS_START -->
|
|
10
|
+
<link rel="stylesheet" href="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.c3f68d1cfd88478f10d836a5e829d1dfc6a10157972cf0f7d4d319d0636f2cc4.css" integrity="sha384-fICuhN4I9xqOK1F5vGGzl26opuO+xQIvTZXMSV76lWTBiQ6AfzztMGLLDw8yRT8i" crossorigin="anonymous">
|
|
11
|
+
<script defer src="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.f611e7e151a3b5c38384272f8894a4c6634f0a29bf925b0e02e0e27f8db0bfff.js" integrity="sha384-R+QqsKoWJIS7iWrtPmgJ49DVnb1hSGjZokupbLInJd1PLp8RwQhtF/hnaerc33ci" crossorigin="anonymous" data-sdn-wallet-public-client="v1"></script>
|
|
12
|
+
<script defer src="https://static.spacedatanetwork.org/assets/sdn-stack-nav/1.0.0/sdn-stack-nav.52fde607eee38ffa116188201f50258ed50bd18c9f06c1af9678f763147a8fe5.js" integrity="sha384-dgeojhJ8vTszHXIbv7O7nZcEzqD10oUYYJjBmPrV7+kLQEUlXLQD4ek5Q7HOFiO5" crossorigin="anonymous" data-nav-style-url="https://static.spacedatanetwork.org/assets/sdn-stack-nav/1.0.0/sdn-stack-nav.36a36359ce18322185e9ff179f88175bab67d5ad84a14d9c08a54f2ff27267e7.css" data-nav-style-integrity="sha384-c4M8Fg+kYaeOYYtJVr7jJsde24IhSWkWaRyAOHEZU9jozhRck089aw+mnHwxymds" data-wallet-client-url="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.f611e7e151a3b5c38384272f8894a4c6634f0a29bf925b0e02e0e27f8db0bfff.js" data-wallet-client-integrity="sha384-R+QqsKoWJIS7iWrtPmgJ49DVnb1hSGjZokupbLInJd1PLp8RwQhtF/hnaerc33ci" data-wallet-style-url="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.c3f68d1cfd88478f10d836a5e829d1dfc6a10157972cf0f7d4d319d0636f2cc4.css" data-wallet-style-integrity="sha384-fICuhN4I9xqOK1F5vGGzl26opuO+xQIvTZXMSV76lWTBiQ6AfzztMGLLDw8yRT8i" data-wallet-client-id="sdn-module-sdk-pages-v1" data-wallet-callback-uri="https://digitalarsenal.github.io/space-data-module-sdk/wallet-callback.html" data-wallet-registry-sha256="e1ce6fe903c9700484a8a87d96581c8cad97063dabf63030b4518a31a3bdaa93"></script>
|
|
13
|
+
<!-- SDN_CONSUMER_ASSETS_END -->
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<a class="skip-link" href="#main">Skip to content</a>
|
|
17
|
+
<sdn-stack-nav active="module-sdk"></sdn-stack-nav>
|
|
18
|
+
<header class="site-header">
|
|
19
|
+
<a class="site-brand" href="../">Space Data Module SDK</a>
|
|
20
|
+
<nav class="header-links" aria-label="Site">
|
|
21
|
+
<a href="../byo-wasm-quickstart.html">Quickstart</a>
|
|
22
|
+
<a href="../conformance.html">Conformance</a>
|
|
23
|
+
<a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
|
|
24
|
+
<a class="stack-button" href="#stack">Stack</a>
|
|
25
|
+
</nav>
|
|
26
|
+
</header>
|
|
27
|
+
<div class="shell">
|
|
28
|
+
<nav class="sidebar" id="sidebar" aria-label="Documentation">
|
|
29
|
+
<h2>Start here</h2><ul>
|
|
30
|
+
<li><a href="../index.html"><span>Harness family matrix</span></a></li>
|
|
31
|
+
<li><a href="../byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
|
|
32
|
+
<li><a href="../conformance.html"><span>Conformance kit</span></a></li>
|
|
33
|
+
<li><a href="../protect-and-sign.html"><span>Protect and sign</span></a></li>
|
|
34
|
+
<li><a href="../publication-submission.html"><span>Publication and listing</span></a></li>
|
|
35
|
+
</ul>
|
|
36
|
+
<h2>Dynamics</h2><ul>
|
|
37
|
+
<li><a href="./propagator.html"><span>Propagator</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
38
|
+
<li><a href="./maneuver.html"><span>Maneuver</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
39
|
+
<li><a href="./propulsion.html"><span>Propulsion</span><span class="tag tag-planned">planned</span></a></li>
|
|
40
|
+
<li><a href="./attitude.html"><span>Attitude</span><span class="tag tag-planned">planned</span></a></li>
|
|
41
|
+
<li><a href="./gnc.html"><span>GNC</span><span class="tag tag-planned">planned</span></a></li>
|
|
42
|
+
</ul>
|
|
43
|
+
<h2>Environment and interaction</h2><ul>
|
|
44
|
+
<li><a href="./rf.html"><span>RF</span><span class="tag tag-designed">designed</span></a></li>
|
|
45
|
+
<li><a href="./sensor.html"><span>Sensor</span><span class="tag tag-planned">planned</span></a></li>
|
|
46
|
+
<li><a href="./signature.html"><span>Signature</span><span class="tag tag-planned">planned</span></a></li>
|
|
47
|
+
<li><a href="./environment.html"><span>Environment</span><span class="tag tag-planned">planned</span></a></li>
|
|
48
|
+
<li><a href="./obstruction.html"><span>Obstruction</span><span class="tag tag-designed">designed</span></a></li>
|
|
49
|
+
</ul>
|
|
50
|
+
<h2>Event physics</h2><ul>
|
|
51
|
+
<li><a href="./breakup.html"><span>Breakup</span><span class="tag tag-planned">planned</span></a></li>
|
|
52
|
+
<li><a href="./reentry.html"><span>Reentry</span><span class="tag tag-planned">planned</span></a></li>
|
|
53
|
+
<li><a href="./conjunction.html"><span>Conjunction</span><span class="tag tag-designed">designed</span></a></li>
|
|
54
|
+
<li><a href="./effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
|
+
</ul>
|
|
56
|
+
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
+
<li><a href="./estimation.html" aria-current="page"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
|
+
<li><a href="./data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
|
+
<li><a href="./analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
|
+
<li><a href="./scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
61
|
+
<li><a href="./behavior.html"><span>Behavior</span><span class="tag tag-planned">planned</span></a></li>
|
|
62
|
+
</ul>
|
|
63
|
+
<h2>Runtime contract</h2><ul>
|
|
64
|
+
<li><a href="../events-abi.html"><span>Event locator ABI</span></a></li>
|
|
65
|
+
<li><a href="../module-publication-standard.html"><span>Module publication standard</span></a></li>
|
|
66
|
+
<li><a href="../browser-wasmedge-isomorphic.html"><span>Browser / WasmEdge isomorphism</span></a></li>
|
|
67
|
+
<li><a href="../isomorphic-pthreads.html"><span>Isomorphic pthreads</span></a></li>
|
|
68
|
+
<li><a href="../tri-runtime-parity.html"><span>Tri-runtime parity</span></a></li>
|
|
69
|
+
<li><a href="../tri-runtime-parity-gate.html"><span>Tri-runtime parity gate</span></a></li>
|
|
70
|
+
<li><a href="../testing-harness.html"><span>Testing harness</span></a></li>
|
|
71
|
+
<li><a href="../language-runtime-matrix.html"><span>Language and runtime matrix</span></a></li>
|
|
72
|
+
</ul>
|
|
73
|
+
<h2>Host surfaces</h2><ul>
|
|
74
|
+
<li><a href="../flatsql-host-contract.html"><span>FlatSQL host contract</span></a></li>
|
|
75
|
+
<li><a href="../flatsql-streaming-standard.html"><span>FlatSQL streaming standard</span></a></li>
|
|
76
|
+
<li><a href="../secrets-capability.html"><span>Credential lanes</span></a></li>
|
|
77
|
+
<li><a href="../protocol-installation.html"><span>Protocol installation</span></a></li>
|
|
78
|
+
<li><a href="../gpu-module-abi.html"><span>GPU module ABI</span></a></li>
|
|
79
|
+
<li><a href="../module-bundle-runtime-plan.html"><span>Module bundle runtime</span></a></li>
|
|
80
|
+
<li><a href="../isomorphic-sdn-runtime-plan.html"><span>Isomorphic SDN runtime</span></a></li>
|
|
81
|
+
<li><a href="../node-red-default-node-parity.html"><span>Node-RED node parity</span></a></li>
|
|
82
|
+
</ul>
|
|
83
|
+
</nav>
|
|
84
|
+
<main class="doc" id="main">
|
|
85
|
+
<p class="breadcrumb"><a href="../index.html">Harness families</a> / Estimation, data and logic</p>
|
|
86
|
+
<h1>Estimation</h1>
|
|
87
|
+
<p class="doc-meta"><span class="pill pill-shipped">shipped</span><span>Shipped contract. Generated from a ratified .fbs single source, covered by a conformance kit and a reference module.</span></p>
|
|
88
|
+
<p><strong>Status: RATIFIED.</strong> The estimation harness is the measurement-based orbit determination contract. It covers simulation, batch weighted least squares, sequential filtering, smoothing, process noise, media corrections, and initial orbit determination without selecting a propagator implementation.</p>
|
|
89
|
+
<h2 id="result-model-ruling"><a class="anchor" href="#result-model-ruling" aria-hidden="true">#</a>Result-model ruling</h2>
|
|
90
|
+
<p>The result-model decision previously deferred by this family is final:</p>
|
|
91
|
+
<ul>
|
|
92
|
+
<li><code>$ODR</code> is the canonical signed run report. It carries the solver configuration, iteration and editing ledgers, estimated parameters, filter history, residual statistics, and the estimated Cartesian state.</li>
|
|
93
|
+
<li><code>$OCM</code> is the canonical covariance product named by <code>ODR.OCM_CONTENT_ID</code>. Its covariance values are the estimator's computed values; a diagonal placeholder or an <code>N/A</code> solve-for is non-conforming.</li>
|
|
94
|
+
<li><code>Estimation.fbs</code> is the family request/result wire. It may embed the exact <code>$ODR</code> and <code>$OCM</code> bytes for a one-frame invocation result, but it does not replace either standards record.</li>
|
|
95
|
+
<li><code>$MEM</code>, <code>$TRH</code>, and <code>$TDM</code> are supporting input records: measurement error and editing policy, tracking hardware, and observations respectively.</li>
|
|
96
|
+
</ul>
|
|
97
|
+
<p>This split keeps algorithm telemetry out of a covariance interchange record while still giving every reported covariance one immutable run provenance.</p>
|
|
98
|
+
<h2 id="propagator-port"><a class="anchor" href="#propagator-port" aria-hidden="true">#</a>Propagator port</h2>
|
|
99
|
+
<p>The caller supplies <code>propagator_port_id</code> and <code>propagator_capability</code>. The estimator consumes <code>EstimationPropagatorSample</code> values whose states come from <code>plugin_propagate</code> and whose state-transition matrices come from <code>plugin_compute_stm</code>. The STM maps the a-priori epoch to the sample epoch.</p>
|
|
100
|
+
<p>Provider names, provider enums, and a default provider are absent from this family. A host must reject a request whose named port does not provide both capabilities. An estimator that imports or selects a concrete propagator is not an estimation-family module.</p>
|
|
101
|
+
<h2 id="source-of-truth-and-generated-header"><a class="anchor" href="#source-of-truth-and-generated-header" aria-hidden="true">#</a>Source of truth and generated header</h2>
|
|
102
|
+
<p><code>schemas/orbpro/Estimation.fbs</code> is the single layout source. <code>include/orbpro/orbpro_estimation_abi.h</code> is generated from it by the SDK's schema ABI renderer. Its compile-time size and offset assertions are part of conformance; handwritten copies are not.</p>
|
|
103
|
+
<p>All state components use metres and metres per second. Covariance is row-major 6 by 6 in matching SI units. Observation values use their native SI unit: metres, metres per second, hertz, or radians. Epochs use the two-double Julian day representation shared by the propagator family.</p>
|
|
104
|
+
<p>Angular and local-plane observations carry the station's inertial east, north and up unit vectors alongside its inertial position and velocity. A runtime uses that explicit topocentric basis when it is present; deriving latitude and longitude from an inertial position rotates the local frame twice and is non-conformant.</p>
|
|
105
|
+
<p>The fixed layouts are:</p>
|
|
106
|
+
<div class="table-wrap"><table><thead><tr><th>Type</th><th>Bytes</th><th>Alignment</th></tr></thead><tbody><tr><td><code>OrbProEstimationEpoch</code></td><td>16</td><td>8</td></tr><tr><td><code>OrbProEstimationObservation</code></td><td>376</td><td>8</td></tr><tr><td><code>OrbProEstimationErrorModel</code></td><td>72</td><td>8</td></tr><tr><td><code>OrbProEstimationConfig</code></td><td>448</td><td>8</td></tr><tr><td><code>OrbProEstimationState</code></td><td>384</td><td>8</td></tr><tr><td><code>OrbProFilterEpoch</code></td><td>696</td><td>8</td></tr><tr><td><code>OrbProEstimationPropagatorSample</code></td><td>352</td><td>8</td></tr><tr><td><code>OrbProInitialOrbitRequest</code></td><td>240</td><td>8</td></tr><tr><td><code>OrbProInitialOrbitResult</code></td><td>80</td><td>8</td></tr></tbody></table></div>
|
|
107
|
+
<p>Call each generated <code>_init</code> helper before filling a struct. Padding is contractual and must remain zero so browser, native, and WasmEdge runtimes hash the same bytes.</p>
|
|
108
|
+
<h2 id="measurement-and-estimator-roster"><a class="anchor" href="#measurement-and-estimator-roster" aria-hidden="true">#</a>Measurement and estimator roster</h2>
|
|
109
|
+
<p>The measurement roster contains range, range rate and Doppler; azimuth and elevation; XEast/YNorth and XSouth/YEast; right ascension and declination; position vectors; sequential and pseudonoise range; time-correlated phase; relay range, Doppler and differenced Doppler; bistatic, skin and crosslink range/range rate; laser range; TDOA; and FDOA.</p>
|
|
110
|
+
<p><code>EstimatorKind</code> distinguishes batch weighted least squares, a covariance-form extended Kalman filter, a sigma-point unscented Kalman filter, and EKF with Rauch–Tung–Striebel smoothing. Chaining one-observation batch solves is not an EKF or UKF and fails conformance. SNC and DMC are explicit process-noise kinds.</p>
|
|
111
|
+
<p>The initial-orbit entry point exposes Gauss, Laplace, Gibbs, and Herrick–Gibbs. It returns the middle-epoch Cartesian state and a typed status.</p>
|
|
112
|
+
<h2 id="result-and-error-contract"><a class="anchor" href="#result-and-error-contract" aria-hidden="true">#</a>Result and error contract</h2>
|
|
113
|
+
<p>Successful estimation produces a populated <code>OrbProEstimationState</code>. A batch result includes convergence, iteration, accepted and rejected counts, RMS, recovered noise sigma, and covariance. A sequential result includes every filtered covariance and, for the smoother kind, every smoothed covariance.</p>
|
|
114
|
+
<p>Batch result wires also carry <code>iteration_covariances</code> as consecutive row-major 6-by-6 blocks. Each block is the normal-matrix covariance from that exact outer iteration, so a convergence visualization uses solver output rather than an interpolated uncertainty.</p>
|
|
115
|
+
<p>The public status vocabulary is:</p>
|
|
116
|
+
<div class="table-wrap"><table><thead><tr><th>Status</th><th>Meaning</th></tr></thead><tbody><tr><td><code>ORBPRO_ESTIMATION_OK</code></td><td>Result is complete.</td></tr><tr><td><code>ORBPRO_ESTIMATION_NOT_CONFIGURED</code></td><td>Required family or propagator configuration is absent.</td></tr><tr><td><code>ORBPRO_ESTIMATION_NULL_OUTPUT</code></td><td>Caller supplied no result destination.</td></tr><tr><td><code>ORBPRO_ESTIMATION_BAD_INPUT</code></td><td>Shape, unit, enum, sigma, or covariance validation failed.</td></tr><tr><td><code>ORBPRO_ESTIMATION_NOT_CONVERGED</code></td><td>A valid iteration history exists but the declared convergence criteria were not met.</td></tr><tr><td><code>ORBPRO_ESTIMATION_BUFFER_TOO_SMALL</code></td><td>Output storage cannot hold the declared result.</td></tr><tr><td><code>ORBPRO_ESTIMATION_PROPAGATOR_PROTOCOL</code></td><td>State/STM response does not match the request.</td></tr><tr><td><code>ORBPRO_ESTIMATION_INTERNAL</code></td><td>Numerical or invariant failure not attributable to input.</td></tr></tbody></table></div>
|
|
117
|
+
<p>No sentinel means success. NaN, an invalid covariance, or a missing required record is an error. A non-converged batch may be reported only with <code>NOT_CONVERGED</code> and its actual iteration history; it may not be relabelled OK.</p>
|
|
118
|
+
<h2 id="lifetime-and-threading"><a class="anchor" href="#lifetime-and-threading" aria-hidden="true">#</a>Lifetime and threading</h2>
|
|
119
|
+
<p>Request, sample, and result buffers are invocation-owned and remain valid only for the call. Modules copy any state retained between input frames. Family implementations declare their thread model in <code>$PLG</code>; deterministic six-dimensional sequential implementations may use <code>wasi-sequential</code> while still compiling on the sanctioned <code>wasm32-wasip1-threads</code> toolchain. The same artifact and bytes must pass browser, native, and embedded WasmEdge lanes.</p>
|
|
120
|
+
<h2 id="conformance-kit"><a class="anchor" href="#conformance-kit" aria-hidden="true">#</a>Conformance kit</h2>
|
|
121
|
+
<p>The official kit checks:</p>
|
|
122
|
+
<ol>
|
|
123
|
+
<li>generated ABI sizes, offsets, enum values, zeroed padding, and an Estimation.fbs schema-lock regeneration;</li>
|
|
124
|
+
<li>a positive reference module using caller-supplied state and STM samples;</li>
|
|
125
|
+
<li>a negative provider-selection control, which fails if a provider name or a concrete propagator import is introduced;</li>
|
|
126
|
+
<li>batch state, covariance, RMS, recovered sigma, and exact edited-set vectors;</li>
|
|
127
|
+
<li>real EKF and UKF covariance histories, RTS covariance contraction, and SNC/DMC growth;</li>
|
|
128
|
+
<li>the complete measurement roster, light-time and body-rotation corrections, media corrections, hardware delay and turnaround handling;</li>
|
|
129
|
+
<li>deterministic simulation and the four initial-orbit methods; and</li>
|
|
130
|
+
<li>byte-equivalent results in the browser, native, and WasmEdge lanes.</li>
|
|
131
|
+
</ol>
|
|
132
|
+
<p>The kit's reference module is deliberately force-model blind: its propagator fixture arrives through the same required <code>propagator_samples</code> port as a real provider. Replacing that fixture with a compiled-in trajectory is a failing negative control, not a reference implementation.</p>
|
|
133
|
+
<h2 id="manifest-surface"><a class="anchor" href="#manifest-surface" aria-hidden="true">#</a>Manifest surface</h2>
|
|
134
|
+
<p>An estimation module declares the <code>estimation</code> harness family and exposes <code>run_estimation</code>, <code>simulate_tracking</code>, and <code>initial_orbit</code>. <code>run_estimation</code> requires <code>request</code> and <code>propagator_samples</code>; <code>$TDM</code>, <code>$MEM</code>, and <code>$TRH</code> are optional typed ports. It emits the Estimation result wire plus signed <code>$ODR</code> and <code>$OCM</code> records. Signatures are applied by the caller's keyslot capability; private signing material never appears in the estimation module.</p>
|
|
135
|
+
<section class="playground" id="playground-slot" data-family="estimation" data-playground="pending" aria-labelledby="playground-title">
|
|
136
|
+
<h2 id="playground-title">Playground</h2>
|
|
137
|
+
<p>
|
|
138
|
+
An in-browser build-and-run playground for the <code>estimation</code> harness
|
|
139
|
+
mounts here. It is being built under the graph task
|
|
140
|
+
<code>sdk-playground-emception</code>; this slot is its reserved mount
|
|
141
|
+
point and is intentionally empty until that lands.
|
|
142
|
+
</p>
|
|
143
|
+
</section>
|
|
144
|
+
<p class="doc-footer">
|
|
145
|
+
Source of truth for this page:
|
|
146
|
+
<code>docs/families/estimation.md</code>. Regenerate with
|
|
147
|
+
<code>npm run build:docs</code>.
|
|
148
|
+
</p>
|
|
149
|
+
</main>
|
|
150
|
+
<nav class="rail" aria-label="On this page"><h2>On this page</h2><ul><li><a class="depth-2" href="#result-model-ruling">Result-model ruling</a></li>
|
|
151
|
+
<li><a class="depth-2" href="#propagator-port">Propagator port</a></li>
|
|
152
|
+
<li><a class="depth-2" href="#source-of-truth-and-generated-header">Source of truth and generated header</a></li>
|
|
153
|
+
<li><a class="depth-2" href="#measurement-and-estimator-roster">Measurement and estimator roster</a></li>
|
|
154
|
+
<li><a class="depth-2" href="#result-and-error-contract">Result and error contract</a></li>
|
|
155
|
+
<li><a class="depth-2" href="#lifetime-and-threading">Lifetime and threading</a></li>
|
|
156
|
+
<li><a class="depth-2" href="#conformance-kit">Conformance kit</a></li>
|
|
157
|
+
<li><a class="depth-2" href="#manifest-surface">Manifest surface</a></li></ul></nav>
|
|
158
|
+
</div>
|
|
159
|
+
<section id="stack" class="section" aria-labelledby="stack-title">
|
|
160
|
+
<div class="section-head">
|
|
161
|
+
<p class="eyebrow">SDN Stack</p>
|
|
162
|
+
<h2 id="stack-title">Connected sites</h2>
|
|
163
|
+
</div>
|
|
164
|
+
<div class="link-list">
|
|
165
|
+
<a href="https://spacedatastandards.org/">
|
|
166
|
+
<span>Standards</span>
|
|
167
|
+
<small>Canonical schemas, record contracts, and generated bindings.</small>
|
|
168
|
+
</a>
|
|
169
|
+
<a href="https://digitalarsenal.github.io/flatbuffers/">
|
|
170
|
+
<span>FlatBuffers</span>
|
|
171
|
+
<small>Binary encoding, schema tooling, and runtime documentation.</small>
|
|
172
|
+
</a>
|
|
173
|
+
<a href="https://digitalarsenal.github.io/flatsql/">
|
|
174
|
+
<span>FlatSQL</span>
|
|
175
|
+
<small>SQL-style queries over FlatBuffer-backed datasets and streams.</small>
|
|
176
|
+
</a>
|
|
177
|
+
<a href="https://spacedatanetwork.org/">
|
|
178
|
+
<span>SDN</span>
|
|
179
|
+
<small>Distributed publication, discovery, delivery, and marketplace infrastructure.</small>
|
|
180
|
+
</a>
|
|
181
|
+
<a href="https://digitalarsenal.github.io/space-data-module-sdk/" class="active">
|
|
182
|
+
<span>Module SDK</span>
|
|
183
|
+
<small>WASM module packaging, validation, and host compatibility tooling.</small>
|
|
184
|
+
</a>
|
|
185
|
+
</div>
|
|
186
|
+
</section>
|
|
187
|
+
<footer class="site-footer">
|
|
188
|
+
Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
|
|
189
|
+
source in <code>docs/</code>; edit the Markdown, never the HTML.
|
|
190
|
+
</footer>
|
|
191
|
+
</body>
|
|
192
|
+
</html>
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Estimation
|
|
2
|
+
|
|
3
|
+
**Status: RATIFIED.** The estimation harness is the measurement-based orbit
|
|
4
|
+
determination contract. It covers simulation, batch weighted least squares,
|
|
5
|
+
sequential filtering, smoothing, process noise, media corrections, and initial
|
|
6
|
+
orbit determination without selecting a propagator implementation.
|
|
7
|
+
|
|
8
|
+
## Result-model ruling
|
|
9
|
+
|
|
10
|
+
The result-model decision previously deferred by this family is final:
|
|
11
|
+
|
|
12
|
+
- `$ODR` is the canonical signed run report. It carries the solver
|
|
13
|
+
configuration, iteration and editing ledgers, estimated parameters, filter
|
|
14
|
+
history, residual statistics, and the estimated Cartesian state.
|
|
15
|
+
- `$OCM` is the canonical covariance product named by `ODR.OCM_CONTENT_ID`.
|
|
16
|
+
Its covariance values are the estimator's computed values; a diagonal
|
|
17
|
+
placeholder or an `N/A` solve-for is non-conforming.
|
|
18
|
+
- `Estimation.fbs` is the family request/result wire. It may embed the exact
|
|
19
|
+
`$ODR` and `$OCM` bytes for a one-frame invocation result, but it does not
|
|
20
|
+
replace either standards record.
|
|
21
|
+
- `$MEM`, `$TRH`, and `$TDM` are supporting input records: measurement error
|
|
22
|
+
and editing policy, tracking hardware, and observations respectively.
|
|
23
|
+
|
|
24
|
+
This split keeps algorithm telemetry out of a covariance interchange record
|
|
25
|
+
while still giving every reported covariance one immutable run provenance.
|
|
26
|
+
|
|
27
|
+
## Propagator port
|
|
28
|
+
|
|
29
|
+
The caller supplies `propagator_port_id` and `propagator_capability`. The
|
|
30
|
+
estimator consumes `EstimationPropagatorSample` values whose states come from
|
|
31
|
+
`plugin_propagate` and whose state-transition matrices come from
|
|
32
|
+
`plugin_compute_stm`. The STM maps the a-priori epoch to the sample epoch.
|
|
33
|
+
|
|
34
|
+
Provider names, provider enums, and a default provider are absent from this
|
|
35
|
+
family. A host must reject a request whose named port does not provide both
|
|
36
|
+
capabilities. An estimator that imports or selects a concrete propagator is not
|
|
37
|
+
an estimation-family module.
|
|
38
|
+
|
|
39
|
+
## Source of truth and generated header
|
|
40
|
+
|
|
41
|
+
`schemas/orbpro/Estimation.fbs` is the single layout source.
|
|
42
|
+
`include/orbpro/orbpro_estimation_abi.h` is generated from it by the SDK's
|
|
43
|
+
schema ABI renderer. Its compile-time size and offset assertions are part of
|
|
44
|
+
conformance; handwritten copies are not.
|
|
45
|
+
|
|
46
|
+
All state components use metres and metres per second. Covariance is row-major
|
|
47
|
+
6 by 6 in matching SI units. Observation values use their native SI unit:
|
|
48
|
+
metres, metres per second, hertz, or radians. Epochs use the two-double Julian
|
|
49
|
+
day representation shared by the propagator family.
|
|
50
|
+
|
|
51
|
+
Angular and local-plane observations carry the station's inertial east,
|
|
52
|
+
north and up unit vectors alongside its inertial position and velocity. A
|
|
53
|
+
runtime uses that explicit topocentric basis when it is present; deriving
|
|
54
|
+
latitude and longitude from an inertial position rotates the local frame twice
|
|
55
|
+
and is non-conformant.
|
|
56
|
+
|
|
57
|
+
The fixed layouts are:
|
|
58
|
+
|
|
59
|
+
| Type | Bytes | Alignment |
|
|
60
|
+
| --- | ---: | ---: |
|
|
61
|
+
| `OrbProEstimationEpoch` | 16 | 8 |
|
|
62
|
+
| `OrbProEstimationObservation` | 376 | 8 |
|
|
63
|
+
| `OrbProEstimationErrorModel` | 72 | 8 |
|
|
64
|
+
| `OrbProEstimationConfig` | 448 | 8 |
|
|
65
|
+
| `OrbProEstimationState` | 384 | 8 |
|
|
66
|
+
| `OrbProFilterEpoch` | 696 | 8 |
|
|
67
|
+
| `OrbProEstimationPropagatorSample` | 352 | 8 |
|
|
68
|
+
| `OrbProInitialOrbitRequest` | 240 | 8 |
|
|
69
|
+
| `OrbProInitialOrbitResult` | 80 | 8 |
|
|
70
|
+
|
|
71
|
+
Call each generated `_init` helper before filling a struct. Padding is
|
|
72
|
+
contractual and must remain zero so browser, native, and WasmEdge runtimes hash
|
|
73
|
+
the same bytes.
|
|
74
|
+
|
|
75
|
+
## Measurement and estimator roster
|
|
76
|
+
|
|
77
|
+
The measurement roster contains range, range rate and Doppler; azimuth and
|
|
78
|
+
elevation; XEast/YNorth and XSouth/YEast; right ascension and declination;
|
|
79
|
+
position vectors; sequential and pseudonoise range; time-correlated phase;
|
|
80
|
+
relay range, Doppler and differenced Doppler; bistatic, skin and crosslink
|
|
81
|
+
range/range rate; laser range; TDOA; and FDOA.
|
|
82
|
+
|
|
83
|
+
`EstimatorKind` distinguishes batch weighted least squares, a covariance-form
|
|
84
|
+
extended Kalman filter, a sigma-point unscented Kalman filter, and EKF with
|
|
85
|
+
Rauch–Tung–Striebel smoothing. Chaining one-observation batch solves is not an
|
|
86
|
+
EKF or UKF and fails conformance. SNC and DMC are explicit process-noise kinds.
|
|
87
|
+
|
|
88
|
+
The initial-orbit entry point exposes Gauss, Laplace, Gibbs, and
|
|
89
|
+
Herrick–Gibbs. It returns the middle-epoch Cartesian state and a typed status.
|
|
90
|
+
|
|
91
|
+
## Result and error contract
|
|
92
|
+
|
|
93
|
+
Successful estimation produces a populated `OrbProEstimationState`. A batch
|
|
94
|
+
result includes convergence, iteration, accepted and rejected counts, RMS,
|
|
95
|
+
recovered noise sigma, and covariance. A sequential result includes every
|
|
96
|
+
filtered covariance and, for the smoother kind, every smoothed covariance.
|
|
97
|
+
|
|
98
|
+
Batch result wires also carry `iteration_covariances` as consecutive row-major
|
|
99
|
+
6-by-6 blocks. Each block is the normal-matrix covariance from that exact
|
|
100
|
+
outer iteration, so a convergence visualization uses solver output rather
|
|
101
|
+
than an interpolated uncertainty.
|
|
102
|
+
|
|
103
|
+
The public status vocabulary is:
|
|
104
|
+
|
|
105
|
+
| Status | Meaning |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| `ORBPRO_ESTIMATION_OK` | Result is complete. |
|
|
108
|
+
| `ORBPRO_ESTIMATION_NOT_CONFIGURED` | Required family or propagator configuration is absent. |
|
|
109
|
+
| `ORBPRO_ESTIMATION_NULL_OUTPUT` | Caller supplied no result destination. |
|
|
110
|
+
| `ORBPRO_ESTIMATION_BAD_INPUT` | Shape, unit, enum, sigma, or covariance validation failed. |
|
|
111
|
+
| `ORBPRO_ESTIMATION_NOT_CONVERGED` | A valid iteration history exists but the declared convergence criteria were not met. |
|
|
112
|
+
| `ORBPRO_ESTIMATION_BUFFER_TOO_SMALL` | Output storage cannot hold the declared result. |
|
|
113
|
+
| `ORBPRO_ESTIMATION_PROPAGATOR_PROTOCOL` | State/STM response does not match the request. |
|
|
114
|
+
| `ORBPRO_ESTIMATION_INTERNAL` | Numerical or invariant failure not attributable to input. |
|
|
115
|
+
|
|
116
|
+
No sentinel means success. NaN, an invalid covariance, or a missing required
|
|
117
|
+
record is an error. A non-converged batch may be reported only with
|
|
118
|
+
`NOT_CONVERGED` and its actual iteration history; it may not be relabelled OK.
|
|
119
|
+
|
|
120
|
+
## Lifetime and threading
|
|
121
|
+
|
|
122
|
+
Request, sample, and result buffers are invocation-owned and remain valid only
|
|
123
|
+
for the call. Modules copy any state retained between input frames. Family
|
|
124
|
+
implementations declare their thread model in `$PLG`; deterministic
|
|
125
|
+
six-dimensional sequential implementations may use `wasi-sequential` while
|
|
126
|
+
still compiling on the sanctioned `wasm32-wasip1-threads` toolchain. The same
|
|
127
|
+
artifact and bytes must pass browser, native, and embedded WasmEdge lanes.
|
|
128
|
+
|
|
129
|
+
## Conformance kit
|
|
130
|
+
|
|
131
|
+
The official kit checks:
|
|
132
|
+
|
|
133
|
+
1. generated ABI sizes, offsets, enum values, zeroed padding, and an
|
|
134
|
+
Estimation.fbs schema-lock regeneration;
|
|
135
|
+
2. a positive reference module using caller-supplied state and STM samples;
|
|
136
|
+
3. a negative provider-selection control, which fails if a provider name or a
|
|
137
|
+
concrete propagator import is introduced;
|
|
138
|
+
4. batch state, covariance, RMS, recovered sigma, and exact edited-set vectors;
|
|
139
|
+
5. real EKF and UKF covariance histories, RTS covariance contraction, and
|
|
140
|
+
SNC/DMC growth;
|
|
141
|
+
6. the complete measurement roster, light-time and body-rotation corrections,
|
|
142
|
+
media corrections, hardware delay and turnaround handling;
|
|
143
|
+
7. deterministic simulation and the four initial-orbit methods; and
|
|
144
|
+
8. byte-equivalent results in the browser, native, and WasmEdge lanes.
|
|
145
|
+
|
|
146
|
+
The kit's reference module is deliberately force-model blind: its propagator
|
|
147
|
+
fixture arrives through the same required `propagator_samples` port as a real
|
|
148
|
+
provider. Replacing that fixture with a compiled-in trajectory is a failing
|
|
149
|
+
negative control, not a reference implementation.
|
|
150
|
+
|
|
151
|
+
## Manifest surface
|
|
152
|
+
|
|
153
|
+
An estimation module declares the `estimation` harness family and exposes
|
|
154
|
+
`run_estimation`, `simulate_tracking`, and `initial_orbit`. `run_estimation`
|
|
155
|
+
requires `request` and `propagator_samples`; `$TDM`, `$MEM`, and `$TRH` are
|
|
156
|
+
optional typed ports. It emits the Estimation result wire plus signed `$ODR`
|
|
157
|
+
and `$OCM` records. Signatures are applied by the caller's keyslot capability;
|
|
158
|
+
private signing material never appears in the estimation module.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<meta name="description" content="Status: PLANNED. This family is a ratified entry in the harness-family" />
|
|
7
|
+
<title>GNC — Space Data Module SDK</title>
|
|
8
|
+
<link rel="stylesheet" href="../styles.css" />
|
|
9
|
+
<!-- SDN_CONSUMER_ASSETS_START -->
|
|
10
|
+
<link rel="stylesheet" href="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.c3f68d1cfd88478f10d836a5e829d1dfc6a10157972cf0f7d4d319d0636f2cc4.css" integrity="sha384-fICuhN4I9xqOK1F5vGGzl26opuO+xQIvTZXMSV76lWTBiQ6AfzztMGLLDw8yRT8i" crossorigin="anonymous">
|
|
11
|
+
<script defer src="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.f611e7e151a3b5c38384272f8894a4c6634f0a29bf925b0e02e0e27f8db0bfff.js" integrity="sha384-R+QqsKoWJIS7iWrtPmgJ49DVnb1hSGjZokupbLInJd1PLp8RwQhtF/hnaerc33ci" crossorigin="anonymous" data-sdn-wallet-public-client="v1"></script>
|
|
12
|
+
<script defer src="https://static.spacedatanetwork.org/assets/sdn-stack-nav/1.0.0/sdn-stack-nav.52fde607eee38ffa116188201f50258ed50bd18c9f06c1af9678f763147a8fe5.js" integrity="sha384-dgeojhJ8vTszHXIbv7O7nZcEzqD10oUYYJjBmPrV7+kLQEUlXLQD4ek5Q7HOFiO5" crossorigin="anonymous" data-nav-style-url="https://static.spacedatanetwork.org/assets/sdn-stack-nav/1.0.0/sdn-stack-nav.36a36359ce18322185e9ff179f88175bab67d5ad84a14d9c08a54f2ff27267e7.css" data-nav-style-integrity="sha384-c4M8Fg+kYaeOYYtJVr7jJsde24IhSWkWaRyAOHEZU9jozhRck089aw+mnHwxymds" data-wallet-client-url="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.f611e7e151a3b5c38384272f8894a4c6634f0a29bf925b0e02e0e27f8db0bfff.js" data-wallet-client-integrity="sha384-R+QqsKoWJIS7iWrtPmgJ49DVnb1hSGjZokupbLInJd1PLp8RwQhtF/hnaerc33ci" data-wallet-style-url="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.c3f68d1cfd88478f10d836a5e829d1dfc6a10157972cf0f7d4d319d0636f2cc4.css" data-wallet-style-integrity="sha384-fICuhN4I9xqOK1F5vGGzl26opuO+xQIvTZXMSV76lWTBiQ6AfzztMGLLDw8yRT8i" data-wallet-client-id="sdn-module-sdk-pages-v1" data-wallet-callback-uri="https://digitalarsenal.github.io/space-data-module-sdk/wallet-callback.html" data-wallet-registry-sha256="e1ce6fe903c9700484a8a87d96581c8cad97063dabf63030b4518a31a3bdaa93"></script>
|
|
13
|
+
<!-- SDN_CONSUMER_ASSETS_END -->
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<a class="skip-link" href="#main">Skip to content</a>
|
|
17
|
+
<sdn-stack-nav active="module-sdk"></sdn-stack-nav>
|
|
18
|
+
<header class="site-header">
|
|
19
|
+
<a class="site-brand" href="../">Space Data Module SDK</a>
|
|
20
|
+
<nav class="header-links" aria-label="Site">
|
|
21
|
+
<a href="../byo-wasm-quickstart.html">Quickstart</a>
|
|
22
|
+
<a href="../conformance.html">Conformance</a>
|
|
23
|
+
<a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
|
|
24
|
+
<a class="stack-button" href="#stack">Stack</a>
|
|
25
|
+
</nav>
|
|
26
|
+
</header>
|
|
27
|
+
<div class="shell">
|
|
28
|
+
<nav class="sidebar" id="sidebar" aria-label="Documentation">
|
|
29
|
+
<h2>Start here</h2><ul>
|
|
30
|
+
<li><a href="../index.html"><span>Harness family matrix</span></a></li>
|
|
31
|
+
<li><a href="../byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
|
|
32
|
+
<li><a href="../conformance.html"><span>Conformance kit</span></a></li>
|
|
33
|
+
<li><a href="../protect-and-sign.html"><span>Protect and sign</span></a></li>
|
|
34
|
+
<li><a href="../publication-submission.html"><span>Publication and listing</span></a></li>
|
|
35
|
+
</ul>
|
|
36
|
+
<h2>Dynamics</h2><ul>
|
|
37
|
+
<li><a href="./propagator.html"><span>Propagator</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
38
|
+
<li><a href="./maneuver.html"><span>Maneuver</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
39
|
+
<li><a href="./propulsion.html"><span>Propulsion</span><span class="tag tag-planned">planned</span></a></li>
|
|
40
|
+
<li><a href="./attitude.html"><span>Attitude</span><span class="tag tag-planned">planned</span></a></li>
|
|
41
|
+
<li><a href="./gnc.html" aria-current="page"><span>GNC</span><span class="tag tag-planned">planned</span></a></li>
|
|
42
|
+
</ul>
|
|
43
|
+
<h2>Environment and interaction</h2><ul>
|
|
44
|
+
<li><a href="./rf.html"><span>RF</span><span class="tag tag-designed">designed</span></a></li>
|
|
45
|
+
<li><a href="./sensor.html"><span>Sensor</span><span class="tag tag-planned">planned</span></a></li>
|
|
46
|
+
<li><a href="./signature.html"><span>Signature</span><span class="tag tag-planned">planned</span></a></li>
|
|
47
|
+
<li><a href="./environment.html"><span>Environment</span><span class="tag tag-planned">planned</span></a></li>
|
|
48
|
+
<li><a href="./obstruction.html"><span>Obstruction</span><span class="tag tag-designed">designed</span></a></li>
|
|
49
|
+
</ul>
|
|
50
|
+
<h2>Event physics</h2><ul>
|
|
51
|
+
<li><a href="./breakup.html"><span>Breakup</span><span class="tag tag-planned">planned</span></a></li>
|
|
52
|
+
<li><a href="./reentry.html"><span>Reentry</span><span class="tag tag-planned">planned</span></a></li>
|
|
53
|
+
<li><a href="./conjunction.html"><span>Conjunction</span><span class="tag tag-designed">designed</span></a></li>
|
|
54
|
+
<li><a href="./effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
|
+
</ul>
|
|
56
|
+
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
+
<li><a href="./estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
|
+
<li><a href="./data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
|
+
<li><a href="./analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
|
+
<li><a href="./scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
61
|
+
<li><a href="./behavior.html"><span>Behavior</span><span class="tag tag-planned">planned</span></a></li>
|
|
62
|
+
</ul>
|
|
63
|
+
<h2>Runtime contract</h2><ul>
|
|
64
|
+
<li><a href="../events-abi.html"><span>Event locator ABI</span></a></li>
|
|
65
|
+
<li><a href="../module-publication-standard.html"><span>Module publication standard</span></a></li>
|
|
66
|
+
<li><a href="../browser-wasmedge-isomorphic.html"><span>Browser / WasmEdge isomorphism</span></a></li>
|
|
67
|
+
<li><a href="../isomorphic-pthreads.html"><span>Isomorphic pthreads</span></a></li>
|
|
68
|
+
<li><a href="../tri-runtime-parity.html"><span>Tri-runtime parity</span></a></li>
|
|
69
|
+
<li><a href="../tri-runtime-parity-gate.html"><span>Tri-runtime parity gate</span></a></li>
|
|
70
|
+
<li><a href="../testing-harness.html"><span>Testing harness</span></a></li>
|
|
71
|
+
<li><a href="../language-runtime-matrix.html"><span>Language and runtime matrix</span></a></li>
|
|
72
|
+
</ul>
|
|
73
|
+
<h2>Host surfaces</h2><ul>
|
|
74
|
+
<li><a href="../flatsql-host-contract.html"><span>FlatSQL host contract</span></a></li>
|
|
75
|
+
<li><a href="../flatsql-streaming-standard.html"><span>FlatSQL streaming standard</span></a></li>
|
|
76
|
+
<li><a href="../secrets-capability.html"><span>Credential lanes</span></a></li>
|
|
77
|
+
<li><a href="../protocol-installation.html"><span>Protocol installation</span></a></li>
|
|
78
|
+
<li><a href="../gpu-module-abi.html"><span>GPU module ABI</span></a></li>
|
|
79
|
+
<li><a href="../module-bundle-runtime-plan.html"><span>Module bundle runtime</span></a></li>
|
|
80
|
+
<li><a href="../isomorphic-sdn-runtime-plan.html"><span>Isomorphic SDN runtime</span></a></li>
|
|
81
|
+
<li><a href="../node-red-default-node-parity.html"><span>Node-RED node parity</span></a></li>
|
|
82
|
+
</ul>
|
|
83
|
+
</nav>
|
|
84
|
+
<main class="doc" id="main">
|
|
85
|
+
<p class="breadcrumb"><a href="../index.html">Harness families</a> / Dynamics</p>
|
|
86
|
+
<h1>GNC</h1>
|
|
87
|
+
<p class="doc-meta"><span class="pill pill-planned">planned</span><span>Planned. This family is a ratified entry in the harness-family taxonomy; its individual shape has not been ratified and nothing is implemented.</span></p>
|
|
88
|
+
<p><strong>Status: PLANNED.</strong> This family is a ratified entry in the harness-family taxonomy. Its individual shape has not been ratified, and nothing is implemented. This page states scope and status; it is not a contract, and it does not imply parity with the Designed tier.</p>
|
|
89
|
+
<h2 id="scope"><a class="anchor" href="#scope" aria-hidden="true">#</a>Scope</h2>
|
|
90
|
+
<p>Closed-loop guidance, navigation and control. A GNC module observes estimated state, decides what the vehicle should do, and commands the maneuver and attitude families. It is the only family in the dynamics group that is allowed to be stateful across a scenario timeline, because a controller without memory is not a controller.</p>
|
|
91
|
+
<h2 id="what-exists-today"><a class="anchor" href="#what-exists-today" aria-hidden="true">#</a>What exists today</h2>
|
|
92
|
+
<p>Nothing. No schema, no header, no module, no open design task.</p>
|
|
93
|
+
<p>GNC is the family most likely to need a scheduler and behavior contract to exist first, since a control loop is defined as much by when it runs as by what it computes.</p>
|
|
94
|
+
<h2 id="what-ratification-requires"><a class="anchor" href="#what-ratification-requires" aria-hidden="true">#</a>What ratification requires</h2>
|
|
95
|
+
<p>A family reaches Designed when an ABI has been drafted against a real consumer, and Shipped only when all of the following exist:</p>
|
|
96
|
+
<ul>
|
|
97
|
+
<li>A single <code>.fbs</code> schema as the source of the wire layout.</li>
|
|
98
|
+
<li>A generated ABI header with size and offset locks, plus a drift gate that fails when the schema and the committed header disagree.</li>
|
|
99
|
+
<li>Declared units and frames per field, named sentinels, and named negative error codes.</li>
|
|
100
|
+
<li>A conformance kit carrying its own negative control, and a reference module.</li>
|
|
101
|
+
<li>A stated tri-runtime parity envelope.</li>
|
|
102
|
+
<li>Exactly one generic consumer port.</li>
|
|
103
|
+
</ul>
|
|
104
|
+
<p>Until then, do not build against this family. If your work falls in this scope and cannot wait, build a records-in, records-out module through the <a href="../byo-wasm-quickstart.html">BYO-wasm quickstart</a> — that path needs no harness and is available now — and expect to migrate to the family ABI when it is ratified.</p>
|
|
105
|
+
<section class="playground" id="playground-slot" data-family="gnc" data-playground="pending" aria-labelledby="playground-title">
|
|
106
|
+
<h2 id="playground-title">Playground</h2>
|
|
107
|
+
<p>
|
|
108
|
+
An in-browser build-and-run playground for the <code>gnc</code> harness
|
|
109
|
+
mounts here. It is being built under the graph task
|
|
110
|
+
<code>sdk-playground-emception</code>; this slot is its reserved mount
|
|
111
|
+
point and is intentionally empty until that lands.
|
|
112
|
+
</p>
|
|
113
|
+
</section>
|
|
114
|
+
<p class="doc-footer">
|
|
115
|
+
Source of truth for this page:
|
|
116
|
+
<code>docs/families/gnc.md</code>. Regenerate with
|
|
117
|
+
<code>npm run build:docs</code>.
|
|
118
|
+
</p>
|
|
119
|
+
</main>
|
|
120
|
+
<nav class="rail" aria-label="On this page"><h2>On this page</h2><ul><li><a class="depth-2" href="#scope">Scope</a></li>
|
|
121
|
+
<li><a class="depth-2" href="#what-exists-today">What exists today</a></li>
|
|
122
|
+
<li><a class="depth-2" href="#what-ratification-requires">What ratification requires</a></li></ul></nav>
|
|
123
|
+
</div>
|
|
124
|
+
<section id="stack" class="section" aria-labelledby="stack-title">
|
|
125
|
+
<div class="section-head">
|
|
126
|
+
<p class="eyebrow">SDN Stack</p>
|
|
127
|
+
<h2 id="stack-title">Connected sites</h2>
|
|
128
|
+
</div>
|
|
129
|
+
<div class="link-list">
|
|
130
|
+
<a href="https://spacedatastandards.org/">
|
|
131
|
+
<span>Standards</span>
|
|
132
|
+
<small>Canonical schemas, record contracts, and generated bindings.</small>
|
|
133
|
+
</a>
|
|
134
|
+
<a href="https://digitalarsenal.github.io/flatbuffers/">
|
|
135
|
+
<span>FlatBuffers</span>
|
|
136
|
+
<small>Binary encoding, schema tooling, and runtime documentation.</small>
|
|
137
|
+
</a>
|
|
138
|
+
<a href="https://digitalarsenal.github.io/flatsql/">
|
|
139
|
+
<span>FlatSQL</span>
|
|
140
|
+
<small>SQL-style queries over FlatBuffer-backed datasets and streams.</small>
|
|
141
|
+
</a>
|
|
142
|
+
<a href="https://spacedatanetwork.org/">
|
|
143
|
+
<span>SDN</span>
|
|
144
|
+
<small>Distributed publication, discovery, delivery, and marketplace infrastructure.</small>
|
|
145
|
+
</a>
|
|
146
|
+
<a href="https://digitalarsenal.github.io/space-data-module-sdk/" class="active">
|
|
147
|
+
<span>Module SDK</span>
|
|
148
|
+
<small>WASM module packaging, validation, and host compatibility tooling.</small>
|
|
149
|
+
</a>
|
|
150
|
+
</div>
|
|
151
|
+
</section>
|
|
152
|
+
<footer class="site-footer">
|
|
153
|
+
Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
|
|
154
|
+
source in <code>docs/</code>; edit the Markdown, never the HTML.
|
|
155
|
+
</footer>
|
|
156
|
+
</body>
|
|
157
|
+
</html>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# GNC
|
|
2
|
+
|
|
3
|
+
**Status: PLANNED.** This family is a ratified entry in the harness-family
|
|
4
|
+
taxonomy. Its individual shape has not been ratified, and nothing is
|
|
5
|
+
implemented. This page states scope and status; it is not a contract, and it
|
|
6
|
+
does not imply parity with the Designed tier.
|
|
7
|
+
|
|
8
|
+
## Scope
|
|
9
|
+
|
|
10
|
+
Closed-loop guidance, navigation and control. A GNC module observes estimated state, decides what the vehicle should do, and commands the maneuver and attitude families. It is the only family in the dynamics group that is allowed to be stateful across a scenario timeline, because a controller without memory is not a controller.
|
|
11
|
+
|
|
12
|
+
## What exists today
|
|
13
|
+
|
|
14
|
+
Nothing. No schema, no header, no module, no open design task.
|
|
15
|
+
|
|
16
|
+
GNC is the family most likely to need a scheduler and behavior contract to exist first, since a control loop is defined as much by when it runs as by what it computes.
|
|
17
|
+
|
|
18
|
+
## What ratification requires
|
|
19
|
+
|
|
20
|
+
A family reaches Designed when an ABI has been drafted against a real consumer,
|
|
21
|
+
and Shipped only when all of the following exist:
|
|
22
|
+
|
|
23
|
+
- A single `.fbs` schema as the source of the wire layout.
|
|
24
|
+
- A generated ABI header with size and offset locks, plus a drift gate that
|
|
25
|
+
fails when the schema and the committed header disagree.
|
|
26
|
+
- Declared units and frames per field, named sentinels, and named negative error
|
|
27
|
+
codes.
|
|
28
|
+
- A conformance kit carrying its own negative control, and a reference module.
|
|
29
|
+
- A stated tri-runtime parity envelope.
|
|
30
|
+
- Exactly one generic consumer port.
|
|
31
|
+
|
|
32
|
+
Until then, do not build against this family. If your work falls in this scope
|
|
33
|
+
and cannot wait, build a records-in, records-out module through the
|
|
34
|
+
[BYO-wasm quickstart](../byo-wasm-quickstart.html) — that path needs no harness
|
|
35
|
+
and is available now — and expect to migrate to the family ABI when it is
|
|
36
|
+
ratified.
|