Files
ruvnet--ruview/docs/adr/ADR-044-geospatial-satellite-integration.md
wehub-resource-sync 9740bc64c9
Firmware QEMU Tests (ADR-061) / QEMU Test (edge-tier1) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (full-adr060) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (tdm-3node) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / Swarm Test (ADR-062) (push) Has been skipped
npm packages / tools/ruview-mcp (node 22) (push) Failing after 1s
nvsim-server → ghcr.io / build-and-publish (push) Failing after 1s
ruview-swarm CI guard / tests (full+train) (push) Failing after 2s
Bench Regression Guard / bench compile-verify (--no-run) (push) Failing after 0s
Bench Regression Guard / bench fast-run (informational, non-gating) (push) Has been skipped
Firmware CI / Verify version.txt matches release tag (push) Has been skipped
Dashboard a11y + cross-browser / a11y (push) Failing after 0s
nvsim Dashboard → GitHub Pages / build-and-deploy (push) Failing after 2s
Firmware CI / Build firmware (esp32s3 / 4mb) (push) Failing after 15s
Firmware QEMU Tests (ADR-061) / Build Espressif QEMU (push) Failing after 1s
Firmware QEMU Tests (ADR-061) / Fuzz Testing (ADR-061 Layer 6) (push) Failing after 1s
Continuous Deployment / Pre-deployment Checks (push) Has been skipped
Firmware CI / Build firmware (esp32c6 / c6-4mb) (push) Failing after 15s
Firmware CI / Build firmware (esp32s3 / 8mb) (push) Failing after 15s
Firmware QEMU Tests (ADR-061) / QEMU Test (boundary-max) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (boundary-min) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (default) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (edge-tier0) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / NVS Matrix Generation (push) Failing after 1s
Security Scanning / Security Policy Compliance (push) Failing after 0s
Security Scanning / Dependency Vulnerability Scan (push) Failing after 0s
Security Scanning / Static Application Security Testing (push) Failing after 1s
Security Scanning / Infrastructure Security Scan (push) Failing after 1s
Security Scanning / Secret Scanning (push) Failing after 1s
npm packages / harness/ruview (node 22) (push) Failing after 17s
Security Scanning / License Compliance Scan (push) Failing after 1s
Security Scanning / Container Security Scan (push) Failing after 4s
three.js demos → GitHub Pages / build-and-deploy (push) Failing after 1s
Verify Pipeline Determinism / Verify Pipeline Determinism (3.11) (push) Failing after 1s
Fix-Marker Regression Guard / Verify fix markers (push) Failing after 1s
ADR-115 MQTT integration tests / mqtt-integration (push) Failing after 1s
npm packages / harness/ruview (node 20) (push) Failing after 1s
npm packages / tools/ruview-mcp (node 20) (push) Failing after 1s
npm packages / tools/ruview-cli (node 20) (push) Failing after 1s
npm packages / tools/ruview-cli (node 22) (push) Failing after 1s
BFLD MQTT Integration / cargo test --features mqtt (live mosquitto) (push) Failing after 29s
ruview-swarm CI guard / build train_marl bin (push) Failing after 2s
ruview-swarm CI guard / clippy (-D warnings, --no-deps) (push) Failing after 3s
ruview-swarm CI guard / tests (ruflo) (push) Failing after 1s
ruview-swarm CI guard / tests (train) (push) Failing after 2s
ruview-swarm CI guard / tests (default) (push) Failing after 2s
Point Cloud Viewer → GitHub Pages / build-and-deploy (push) Failing after 8s
ruview-swarm CI guard / ITAR / publish guard (push) Failing after 0s
wifi-densepose sensing-server → Docker Hub + ghcr.io / build · push · smoke-test (push) Failing after 1s
Continuous Deployment / Deploy to Production (push) Has been cancelled
Continuous Deployment / Rollback Deployment (push) Has been cancelled
Continuous Deployment / Post-deployment Monitoring (push) Has been cancelled
Continuous Deployment / Notify Deployment Status (push) Has been cancelled
Continuous Deployment / Deploy to Staging (push) Has been cancelled
Security Scanning / Security Report (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:59:54 +08:00

3.0 KiB

ADR-044: Geospatial Satellite Integration

Status

Accepted

Context

RuView generates real-time 3D point clouds from camera + WiFi CSI, but these exist in a local coordinate frame with no geographic reference. Integrating free satellite imagery, terrain elevation, and map data provides environmental context that enables the ruOS brain to reason about the physical world beyond the room.

Decision

Data Sources (all free, no API keys)

Source Data Resolution Update Format
EOX Sentinel-2 Cloudless Satellite tiles 10m Static mosaic XYZ/JPEG
SRTM GL1 (NASA) Elevation/DEM 30m (1-arcsec) Static Binary HGT
Overpass API (OSM) Buildings, roads Vector Real-time JSON
ip-api.com IP geolocation ~1km Per-request JSON
Sentinel-2 STAC Temporal satellite 10m Every 5 days COG/STAC
Open Meteo Weather Point Hourly JSON

Architecture

Pure Rust implementation in wifi-densepose-geo crate. No GDAL/PROJ/GEOS — coordinate transforms implemented directly (~250 LOC). Tile caching on disk at ~/.local/share/ruview/geo-cache/.

Coordinate System

  • WGS84 for geographic coordinates
  • ENU (East-North-Up) as the bridge between local sensor frame and world
  • Local sensor frame: camera origin, +Z forward, +Y up

Temporal Awareness

Nightly scheduled fetch of Sentinel-2 latest imagery + OSM diffs + weather. Changes detected via image comparison and stored as brain memories for contrastive learning.

Brain Integration

Geospatial context stored as brain memories:

  • spatial-geo: location, elevation, nearby landmarks
  • spatial-change: detected changes in satellite/OSM data
  • spatial-weather: current conditions + forecast
  • spatial-season: vegetation index, snow cover, seasonal patterns
  • spatial-local: hyperlocal web context from Common Crawl WET

Extended Data Sources (via ruvector WET/Common Crawl)

Source Data Use
Common Crawl WET Web text near location Local business info, reviews, events
Wikidata Structured knowledge Building names, POI descriptions
NASA FIRMS Active fire (3-hour) Safety alerts
USGS Earthquakes Seismic events Safety context
OpenAQ Air quality (PM2.5) Environmental health
Overture Maps Building footprints (Meta/MS) Higher quality than OSM

The ruvector brain server has existing web_ingest + Common Crawl support. WET files filtered by geographic URL patterns provide hyperlocal context.

Consequences

Positive

  • Agent gains environmental awareness beyond the room
  • Temporal data enables seasonal calibration of CSI sensing
  • Change detection finds construction, vegetation, weather effects
  • All data sources are genuinely free with no API keys

Negative

  • Initial data fetch requires internet (~2MB tiles + ~25MB DEM)
  • Cached data becomes stale (mitigated by nightly refresh)
  • IP geolocation has ~1km accuracy (mitigated by manual override)