Releases
v0.60.0
Compare
Sorry, something went wrong.
No results found
0.60.0 (2026-06-17)
Features
3D drone path/pose viewer (Phase 0 + Phase 1 prototype) (#302 ) (b4da4a4 )
add the S4 forward-backward and S5 parallax outlier gates (#323 ) (73bcd81 )
bench: graphs energy-model integration (cpu/gpu/kpu-t64) (#204 ) (0fc9249 )
bench: on-device energy backends — tegrastats + external meter (#207 ) (e257a25 )
bench: vio_bench — euroc accuracy + latency + rapl energy report (#201 ) (ba13dec )
bench: vio_bench progress output + usage docs (#208 ) (077751a )
ci: add a Windows MSVC build + test target (#216 ) (5f439b4 )
complete the structural stage pages (S3, S4, S7-S9) (#319 ) (d3ec53b )
core: add cxx bridge, build.rs, and lifecycle state machine (#133 ) (3ee12fb )
core: add KPU MemoryProvider stub (#131 ) (a2445c8 )
core: add SITL MemoryProvider with shm + heap backends (3d99738 )
core: define MemoryProvider trait + BufferHandle + MemErr (#127 ) (5c1d67a )
core: SITL MemoryProvider — Linux shm + heap backends (#129 ) (3d99738 )
cv: FAST-9 corner detector with non-maximum suppression (#174 ) (53c8850 )
cv: gaussian image pyramid with configurable scale (#170 ) (afefa22 )
cv: image container + grayscale PGM/PNG I/O (#169 ) (087a432 )
cv: sub-pixel pyramidal KLT feature tracker (#176 ) (9a54aec )
eval: add IMU Allan-variance noise characterization (#268 ) (#276 ) (4eafd31 )
eval: add NEES-against-ground-truth consistency (closes #264 ) (#273 ) (a93cc17 )
eval: add NEES/NIS filter-consistency statistics (9dc9a1b )
eval: NEES/NIS filter-consistency statistics (#264 ) (#271 ) (9dc9a1b )
landmark cloud + camera frustum in the 3D viewer (#303 ) (7f4f532 )
math: add SE2(3) extended-pose Lie group — the R-IEKF state manifold (#347 ) (#353 ) (1a7da91 )
math: arithmetic-type plumbing for MTL5 over Universal types (#143 ) (4163b22 ), closes #25
math: camera models — pinhole+radtan, fisheye, unified omni (#172 ) (8ce771b )
math: direct sparse Cholesky/LDLT for SPD normal equations (#151 ) (818ef32 ), closes #28
math: header-only Lie groups SO3, SE3, Sim3 (#147 ) (3dd410f ), closes #29
math: Krylov solvers (CG, GMRES, BiCGSTAB) over MTL5 ITL (#149 ) (f27b47c )
math: non-linear least squares solvers (GN, LM, Dogleg) (d85444d ), closes #30
math: non-linear least squares solvers (gn, lm, dogleg) (#153 ) (d85444d )
math: sparse storage views (CSR, CSC, COO) over caller buffers (#145 ) (d556f14 ), closes #26
math: tensor views over std::span with stride/shape metadata (bb868d5 ), closes #24
math: TensorView<T,Rank> over std::span with stride/shape metadata (#141 ) (bb868d5 )
math: thin Krylov solver wrappers (cg, gmres, bicgstab) over MTL5 ITL (f27b47c ), closes #27
S5 feature-triangulation probe + stage page (parallax gate, quantified) (#313 ) (8fbf1cd )
sdk: add 6-DoF rigid camera extrinsics to MsckfInvariantBackend (105852f )
sdk: add 6-DoF rigid camera extrinsics to MsckfInvariantBackend (#396 ) (8ed59cc )
sdk: add S10 calibration-uncertainty R-term; measure it end-to-end on V2_03 (#328 ) (bce345f )
sdk: add the R-IEKF invariant camera measurement update (#347 ) (#356 ) (c136991 )
sdk: add the R-IEKF invariant IMU propagation on SE2(3) (#347 ) (#354 ) (98683ab )
sdk: camera updaters with MSCKF null-space projection (#185 ) (191c4e7 )
sdk: feature representations + MSCKF null-space projection (#180 ) (58bc198 )
sdk: force-dynamic VI-init validation on MH_05 (real-data #211 ) (#246 ) (f80fa63 )
sdk: implement Phase C 6-DoF online extrinsic calibration for MsckfInvariantBackend (f9007da )
sdk: IMU initialization (static + dynamic) (#184 ) (b638566 )
sdk: imu preintegration (closed-form, clean-room) (#178 ) (355661b )
sdk: MSCKF backend implementation (#186 ) (02f3948 )
sdk: observability null-space probe — localizes the #212 NEES leak to yaw (#337 ) (#338 ) (2720ec7 )
sdk: online extrinsic calibration (S10-as-state), mechanism + synthetic proof (#332 ) (#333 ) (e5fc23f )
sdk: perspective-n-point resectioning via DLT + RANSAC (#236 ) (fb3370a )
sdk: Phase C - 6-DoF online extrinsic calibration for MsckfInvariantBackend (#400 ) (f9007da )
sdk: prove the right-invariant propagation Φ is state-independent (R-IEKF Phase A, #348 ) (#351 ) (a0c35aa )
sdk: Q/R consistency-sweep knobs + #212 root-cause diagnosis (#279 ) (b718e5e )
sdk: R-IEKF Phase-A gate — invariant parameterization flattens the yaw leak (#348 ) (#349 ) (427134e )
sdk: R-IEKF VIO backend adapter + continuous-update divergence localization (#365 ) (#367 ) (f7c2671 )
sdk: resolve metric scale in ImuInitializer::try_dynamic (#233 ) (0df58a0 )
sdk: S6 update probe; lock S3/S5/S6/S9 contracts by measurement (#325 ) (df6cafe )
sdk: sliding-window optimization backend skeleton (#189 ) (456a373 )
sdk: square-root covariance MSCKF backend (#218 ) (fe8014b )
sdk: state vector + propagator + state-helper (MSCKF core) (#182 ) (0e78154 )
sdk: surface per-update NIS for filter-consistency monitoring (149c127 )
sdk: surface per-update NIS for filter-consistency monitoring (#264 ) (#272 ) (149c127 )
sdk: top-level vio estimator API (#188 ) (c068bd9 )
sdk: two-view SfM bootstrap (essential matrix + RANSAC) (#231 ) (1900a16 )
sdk: vio backend interface separating front-end from estimator (377dfaa ), closes #34
sdk: VioBackend interface separating front-end from estimator (#167 ) (377dfaa )
sdk: wire dynamic VI init into MsckfBackend (InitMethod::Dynamic) (#238 ) (108cf02 )
sdk: wire the MsckfInvariantBackend (R-IEKF filter) (#347 ) (#357 ) (a52f6f8 )
test: EuRoC verdict — online extrinsic calibration cleared as #212 driver (#332 ) (#343 ) (98488f6 )
tools: --trace tap for EuRoC asl_replay — real per-stage trace dumps (#387 ) (b9cc112 )
tools: add EuRoC source + scene-video metric overlay to vio_pipeline (#292 ) (f4b8e9e )
tools: add VIO stage-probe utilities — S0 sensor-model + S2 propagation (#283 ) (785e875 )
tools: depth-colored scene overlay + vio_pipeline how-to guide (#300 ) (96df842 )
tools: end-to-end VIO noise->robustness demo (synthetic source) (#290 ) (047defa )
tools: inter-stage VIO trace bus — typed, human-readable per-stage I/O records (#385 ) (e5b8caf )
tools: s0 sensor-model inspector — real EuRoC frame/IMU → camera & noise contract (#394 ) (f1599e6 )
tools: s1 initialization inspector — real EuRoC bootstrap → initial state & covariance (#407 ) (60872dd )
tools: S4 frontend inspector — real EuRoC FAST+KLT tracks, visualized (#390 ) (4ecb210 )
tools: s5 triangulation inspector — real EuRoC tracks+poses → 3D landmarks (#398 ) (7a5ffb0 )
tools: s6 msckf-update inspector — real EuRoC updates → state/covariance (#403 ) (a707fbd )
tools: wire S1 (initialization) stage-probe (#286 ) (22c8b71 )
tools: wire S10 (calibration) stage-probe to quantify the #212 Rx4 (#295 ) (9a01499 )
wire the S4 visual-frontend probe + data-backed page (#321 ) (67ac45c )
Bug Fixes
build: link the Rust core in MSVC Debug by pinning the release CRT (#226 ) (59075af )
docs: make topology + VIO stage-flow SVGs readable in dark theme (#334 ) (c6d494c )
docs: point the benchmark generator at the moved euroc test (#223 ) (41bd61b )
docs: re-anchor EuRoC gate extraction (unbreak Deploy Documentation) (#256 ) (7021cd6 )
docs: re-anchor the EuRoC gate extraction to the run_euroc_replay call (7021cd6 )
math: correctness fixes from post-merge review of Phase 2 (#159 ) (fbb35e0 )
math: guard degenerate inputs in the Lie-group helpers (#214 ) (d8034bf ), closes #161
sdk: bootstrap dynamic-init SfM on the widest baseline (445f1bb )
sdk: bootstrap dynamic-init SfM on the widest baseline (#247 ) (#251 ) (445f1bb )
sdk: correct dynamic-init gravity sign — real-data divergence → bounded (#247 ) (#252 ) (84cc8ba )
sdk: correct dynamic-init gravity sign + widest-parallax bootstrap (84cc8ba )
sdk: resolve R-IEKF continuous divergence (#366 ) (4f4ee1d )
sdk: resolve R-IEKF continuous divergence (#366 ) (#388 ) (4f4ee1d )
sdk: set EuRoC extrinsics + gravity-align init; surface VIO divergence (#209 ) (f14a450 )
test: make the vio_latency budget informational on CI (#240 ) (#259 ) (9edb5ed )
test: split euroc-moving-start local decls (set -u unbound var) (#243 ) (4737ebf )
tools: create the --out directory so artifacts are not silently dropped (#298 ) (029727d )
Reverts
docs: restore original working vio_run.jsonl (397a2d2 )
Code Refactoring
test: drop redundant layer/_test segments from test filenames (#225 ) (2ff7cd3 )
Build System
cmake: add CMakePresets.json with sitl/kpu-cross/wsl2 presets (89440ff )
cmake: add CMakePresets.json with sitl/kpu-cross/wsl2 presets (8d37aa8 )
cmake: add cross-toolchain.cmake for KPU aarch64 cross-compile (d6b1471 )
cmake: add cross-toolchain.cmake for KPU aarch64 cross-compile (89e0e1c )
cmake: wire FetchContent for foundational dependencies (8eb02f8 )
cmake: wire FetchContent for foundational dependencies (0e6dc7c )
test: generate test targets from a compile_all glob macro (#220 ) (33c6126 )
Continuous Integration
add lint job (clippy + cargo fmt + clang-format) (2622eb7 )
add lint job (clippy + cargo fmt + clang-format) (75d3c91 )
gate Rust coverage at >= 85% line coverage (#135 ) (739c12c )
install sccache in lint job too (RUSTC_WRAPPER consistency) (dd341a0 )
integrate sccache for Rust + C++ object caching (69851c6 )
integrate sccache for Rust + C++ object caching (0865db2 )
windows: build the MSVC job via Ninja + sccache (#222 ) (2d59380 )
Documentation
add CLAUDE.md and bootstrap plan (c2dc4f1 )
add CLAUDE.md and bootstrap plan; gitignore .claude/ (4509cca )
add Phase 0 Foundation retrospective (589a74e )
add Phase 0 Foundation retrospective (6e2bd0e )
add Phase 1 design — Rust RM + cxx bridge (#125 ) (bec0037 )
add PR template with the per-PR docs-update rule (#196 ) (d2a669c )
add Starlight + Doxygen documentation site for Phases 0-3 (#192 ) (9ccfac2 )
add VIO S0–S10 stage-flow SVG and replace the pipeline ASCII dataflow (2b93b51 )
add VIO S0–S10 stage-flow SVG; replace pipeline ASCII dataflow (#330 ) (2b93b51 )
assessment: a plain-language tutorial on NEES/NIS filter consistency (98c1f58 )
assessment: plain-language NEES/NIS filter-consistency tutorial (#274 ) (98c1f58 )
assessment: VIO diagnostic methodology + instrumentation build list (#269 ) (b2bf23e )
fix doubled base path on the API reference sidebar link (#194 ) (857354a )
improve overview phrasing and trigger documentation rebuild (56f6811 )
math: Doxygen API docs + concepts reference page (#157 ) (f54a245 )
math: doxygen API docs and a concepts reference page (f54a245 ), closes #32
migrate diagnostic-methodology as the section's method primer (#316 ) (fd4b7bb )
pin benchmark gate numbers to their source (#197 ) (01d43da )
process documentation (441810a )
record the #212 observability investigation — yaw leak localized, FEJ refuted, R-IEKF next (#345 ) (714bc9f )
render architecture topology as SVG; wire in orphaned S0 fisheye figures (#327 ) (af801c6 )
render LaTeX math on the site (KaTeX) + camera-calibration walkthrough (#362 ) (5b0e426 )
S1 initialization stage page (algorithm sound, seed suspect) (#315 ) (54d8f33 )
S10 online-calibration stage page (the #212 centerpiece) (#307 ) (91ead13 )
S2 IMU-propagation stage page (a cleared #212 candidate) (#311 ) (8623a9a )
S6 MSCKF-update stage + consistency-analysis page (#309 ) (08a9864 )
session log + changelog for the R-IEKF/FEJ/verdict arc (#369 ) (24c21ff )
session: wrap up 2026-06-05 — VIO pipeline docs + 3D viz (#318 ) (7ec2091 )
session: wrap up 2026-06-05 — VIO pipeline docs section + 3D viz (7ec2091 )
site: add S2 IMU-propagation stage page (a cleared #212 candidate) (8623a9a )
site: add the S1 initialization stage page (54d8f33 )
site: add the S10 online-calibration stage page (#212 centerpiece) (91ead13 )
site: improve VIO pipeline overview, S0, and S1 stages (d701c99 )
site: improve VIO pipeline overview, S0, and S1 stages (d701c99 )
site: migrate the diagnostic-methodology doc as a section page (fd4b7bb )
site: widen the triangulation baseline so the 3D view reads (#364 ) (31d584f )
test: explain pyramidal KLT + add the numerical failure-mode taxonomy (49f77d2 )
test: pyramidal KLT explainer + EuRoC numerical failure-mode taxonomy (#255 ) (49f77d2 )
test: vio_euroc goal & architecture (#249 ) (b0b75d2 )
VIO pipeline section (overview, metrics, S0, status) + issue-ref policy (#305 ) (af69f04 )
Tests
bridge: add C++/Rust cxx::bridge integration test (#137 ) (50e3e3c )
math: golden-data NLS suite + Jacobian FD checks + type matrix (#155 ) (2348e87 ), closes #31
sdk: dataset-gated MH_05/V2_03 moving-start dynamic-init validation (#241 ) (b5a0df3 )
sdk: drive the observability gauge check through the production CameraUpdater (#358 ) (637990e )
sdk: dynamic-init diagnostics to localize the real-data divergence (#247 ) (#248 ) (48be50e )
sdk: euroc replay harness + ATE/RPE benchmark (#190 ) (577e201 )
sdk: instrument dynamic-init attempts (#247 localization) (#250 ) (972015d )
sdk: instrument dynamic-init attempts to localize why it won't fire (972015d )
sdk: latency budget enforcement (per-frame upper bound) (#191 ) (8dadc96 )
sdk: real EuRoC extrinsics — MH_05 moving-start ATE validated (~0.79 m) (#245 ) (7f35ebb )
sdk: score EuRoC ATE from initialization onward (#253 ) (8304d67 )
sdk: score EuRoC ATE only from initialization onward (8304d67 )
Maintenance
You can’t perform that action at this time.