221 lines
7.2 KiB
Markdown
221 lines
7.2 KiB
Markdown
# RFCP Project Roadmap — Updated February 4, 2026
|
|
|
|
**Project:** RFCP (RF Coverage Planning) for UMTC
|
|
**Developer:** Олег + Claude
|
|
**Started:** January 30, 2025
|
|
**Current Version:** 3.8.0 (GPU Acceleration Complete)
|
|
|
|
---
|
|
|
|
## ✅ Completed Milestones
|
|
|
|
### Phase 1: Frontend (January 2025)
|
|
- ✅ React + TypeScript + Vite + Leaflet
|
|
- ✅ Multi-site RF coverage planning
|
|
- ✅ Multi-sector sites (Alpha/Beta/Gamma)
|
|
- ✅ Geographic-scale canvas heatmap
|
|
- ✅ Keyboard shortcuts + delete confirmation
|
|
- ✅ NumberInput components with sliders
|
|
- ✅ TypeScript strict mode, ESLint clean
|
|
- ✅ Production build: 536KB / 163KB gzipped
|
|
|
|
### Phase 2: Backend Architecture (February 1, 2025)
|
|
- ✅ Python FastAPI + NumPy + ProcessPoolExecutor
|
|
- ✅ 8 propagation models (FreeSpace, Okumura-Hata, COST-231, ITU-R P.1546, etc.)
|
|
- ✅ Modular geometry engine (haversine, intersection, reflection, diffraction, LOS)
|
|
- ✅ SharedMemoryManager for terrain data (zero-copy, 25 MB)
|
|
- ✅ Building filtering (351k → 27k bbox → 15k cap)
|
|
- ✅ Overpass API with retry + mirror failover
|
|
- ✅ WebSocket progress streaming
|
|
|
|
### Phase 3: Performance (February 2-3, 2025)
|
|
- ✅ LOD (Level of Detail) optimization
|
|
- ✅ Spatial indexing for buildings (R-tree)
|
|
- ✅ Dominant path simplification for distant points
|
|
- ✅ OOM fix + memory management
|
|
- ✅ CloudRF-style color gradient
|
|
- ✅ Results popup + session history
|
|
- ✅ Terrain profile viewer
|
|
|
|
### Phase 4: GPU Acceleration (February 3-4, 2025) ⭐
|
|
- ✅ CuPy + CUDA backend (RTX 4060)
|
|
- ✅ CUDA Toolkit 13.1 + cupy-cuda13x setup
|
|
- ✅ Phase 2.5: Vectorized distances + path_loss (0.006s)
|
|
- ✅ Phase 2.6: Vectorized terrain LOS + diffraction (0.04s)
|
|
- ✅ Phase 2.7: Vectorized antenna pattern loss
|
|
- ✅ Vegetation bbox pre-filter (100x+ speedup)
|
|
- ✅ Worker process isolation (no CUDA in workers)
|
|
- ✅ PyInstaller ONEDIR GPU build (1.2 GB installer)
|
|
- ✅ **Full preset: 195s → 11.2s (17.4x speedup)**
|
|
|
|
### Supporting Work
|
|
- ✅ RF Radio Theory wiki article (comprehensive)
|
|
- ✅ Propagation model research (CloudRF, SPLAT!, Signal Server)
|
|
- ✅ RFCP Method collaboration framework documented
|
|
|
|
---
|
|
|
|
## 📊 Current Performance
|
|
|
|
| Preset | Points | Resolution | Time (cached) | Time (cold) |
|
|
|--------|--------|-----------|---------------|-------------|
|
|
| Standard | 1,975 | 200m | **2.3s** | ~12s |
|
|
| Full | 6,640 | 50m | **11.2s** | ~20s |
|
|
| 50km radius | 4,966 | adaptive | ~410s | ~420s |
|
|
|
|
**Hardware:** Windows 11, RTX 4060 Laptop GPU, 6-core CPU
|
|
|
|
---
|
|
|
|
## 🔜 Next: Phase 5 — Data & Accuracy
|
|
|
|
### 5.1 SRTM Terrain Integration
|
|
**Priority:** HIGH
|
|
**Status:** Not started
|
|
|
|
Current terrain: Single HGT tile download per calculation
|
|
Target: Pre-cached SRTM/ASTER DEM tiles with proper interpolation
|
|
|
|
- [ ] SRTM tile manager (auto-download, cache)
|
|
- [ ] Bilinear interpolation for elevation sampling
|
|
- [ ] Multi-tile coverage for large radius
|
|
- [ ] Terrain profile accuracy validation
|
|
- [ ] Compare with current terrain data quality
|
|
|
|
### 5.2 Project Persistence
|
|
**Priority:** MEDIUM
|
|
|
|
- [ ] Save/load projects (JSON or SQLite)
|
|
- [ ] Site configurations persistence
|
|
- [ ] Coverage results caching
|
|
- [ ] Session history persistence across restarts
|
|
- [ ] Export coverage report (PDF/PNG)
|
|
|
|
### 5.3 Accuracy Validation
|
|
**Priority:** MEDIUM
|
|
|
|
- [ ] Compare with known coverage maps
|
|
- [ ] Field measurements with real equipment
|
|
- [ ] Calibrate propagation models per environment
|
|
- [ ] Antenna pattern library (real equipment specs)
|
|
|
|
---
|
|
|
|
## 🔮 Future Phases
|
|
|
|
### Phase 6: Multi-Station & Dashboard
|
|
- [ ] Multi-station view (aggregate coverage)
|
|
- [ ] Station discovery via WireGuard mesh
|
|
- [ ] Coverage gap analysis
|
|
- [ ] Interference modeling between stations
|
|
- [ ] Handover zone visualization
|
|
|
|
### Phase 7: Hardware Integration
|
|
- [ ] LimeSDR Mini 2.0 testing
|
|
- [ ] Real RF attach validation
|
|
- [ ] sysmoISIM-SJA2 SIM integration
|
|
- [ ] ZTE B8200 base station testing
|
|
- [ ] INFOZAHYST Plastun SDR (if accessible)
|
|
|
|
### Phase 8: Advanced Features
|
|
- [ ] 3D visualization mode
|
|
- [ ] Link budget analysis view
|
|
- [ ] Frequency planning tool
|
|
- [ ] Indoor coverage modeling
|
|
- [ ] Time-series analysis (seasonal vegetation)
|
|
- [ ] Offline mode (embedded terrain DB)
|
|
|
|
### Phase 9: Distribution
|
|
- [ ] Auto-updater (electron-updater)
|
|
- [ ] Live USB distribution for field deployment
|
|
- [ ] Standalone offline package
|
|
- [ ] User documentation / help system
|
|
|
|
---
|
|
|
|
## 🏛️ Architecture Overview
|
|
|
|
```
|
|
RFCP Application (Electron)
|
|
├── Frontend (React + TypeScript + Vite)
|
|
│ ├── Leaflet map with custom canvas heatmap
|
|
│ ├── Zustand state management
|
|
│ └── WebSocket for progress streaming
|
|
│
|
|
├── Backend (Python FastAPI)
|
|
│ ├── Coverage Engine
|
|
│ │ ├── Grid generator (adaptive zones)
|
|
│ │ ├── GPU pipeline (CuPy/CUDA) — main process
|
|
│ │ │ ├── Phase 2.5: distances + path_loss
|
|
│ │ │ ├── Phase 2.6: terrain LOS + diffraction
|
|
│ │ │ └── Phase 2.7: antenna pattern
|
|
│ │ └── CPU workers (ProcessPool) — 3-6 workers
|
|
│ │ ├── Building obstruction (spatial index)
|
|
│ │ ├── Reflections (ray-building intersection)
|
|
│ │ └── Vegetation loss (bbox pre-filter)
|
|
│ │
|
|
│ ├── Propagation Models (8 models)
|
|
│ │ ├── Free-Space Path Loss
|
|
│ │ ├── Okumura-Hata (150-1500 MHz)
|
|
│ │ ├── COST-231-Hata (1500-2000 MHz)
|
|
│ │ ├── ITU-R P.1546
|
|
│ │ └── ... 4 more
|
|
│ │
|
|
│ ├── OSM Services
|
|
│ │ ├── Buildings (Overpass API + cache)
|
|
│ │ ├── Vegetation (bbox pre-filter)
|
|
│ │ ├── Water bodies
|
|
│ │ └── Streets
|
|
│ │
|
|
│ └── Terrain Service
|
|
│ ├── HGT tile download + cache
|
|
│ ├── Elevation sampling
|
|
│ └── Line-of-sight checking
|
|
│
|
|
└── Desktop (Electron)
|
|
├── Backend process management
|
|
└── NSIS installer (1.2 GB with CUDA)
|
|
```
|
|
|
|
---
|
|
|
|
## 📈 Development Timeline
|
|
|
|
```
|
|
Jan 30, 2025 Phase 1: Frontend complete (10 iterations)
|
|
Feb 01, 2025 Phase 2: Backend architecture (48 files, 82 tests)
|
|
Feb 02, 2025 Phase 3: LOD + performance optimization
|
|
Feb 03, 2025 Phase 3.5-3.6: GPU setup + CUDA build
|
|
Feb 04, 2025 Phase 3.7-3.8: GPU vectorization complete ⭐
|
|
─────────────────────────────────────────
|
|
Full preset: 195s → 11.2s (17.4x speedup)
|
|
Standard: 38s → 2.3s (16.5x speedup)
|
|
```
|
|
|
|
**Total development time:** ~5 days intensive
|
|
**Total iterations:** 3.8.0 (20+ sub-iterations)
|
|
**Architecture:** Battle-tested, production-ready
|
|
|
|
---
|
|
|
|
## 🧰 Tech Stack
|
|
|
|
| Component | Technology | Version |
|
|
|-----------|-----------|---------|
|
|
| Frontend | React + TypeScript | 18 |
|
|
| Build | Vite | 5.x |
|
|
| Map | Leaflet | 1.9 |
|
|
| State | Zustand | 4.x |
|
|
| Backend | Python FastAPI | 3.12 |
|
|
| GPU | CuPy + CUDA | 13.x |
|
|
| Parallel | ProcessPoolExecutor | stdlib |
|
|
| Terrain | NumPy (HGT tiles) | 1.26 |
|
|
| Desktop | Electron | 28.x |
|
|
| Installer | NSIS (via electron-builder) | - |
|
|
| Build (BE) | PyInstaller | 6.x |
|
|
|
|
---
|
|
|
|
*"11.2 seconds. Full preset. 6,640 points. GPU acceleration complete."*
|
|
*— February 4, 2026*
|