# GPS-Denied Onboard Сервіс геолокалізації знімків БПЛА в умовах відсутності GPS-сигналу. Система використовує візуальну одометрію (VO), співставлення з супутниковими картами (cross-view matching) та оптимізацію траєкторії через фактор-графи для визначення координат дрона в реальному часі. ## Стек та можливості системи | Підсистема | Технології та реалізація | |-----------|------------| | **Core API** | FastAPI + Pydantic v2 (REST endpoints `POST /flights`, `POST /flights/{id}/images/batch`) | | **Real-time стрім (SSE)** | `sse-starlette`, `asyncio.Queue` (Pub/Sub для live-трансляції уточнених поз на наземну станцію) | | **Репозиторій (БД)** | `SQLite` + `SQLAlchemy 2` + `AsyncIO` + `Alembic`. Скеровує каскадні видалення та зберігає waypoint-результати. | | **Супутникові тайли (F04)** | `httpx`, `diskcache`, інтеграція з Google Maps Static Tiles + утиліти Web Mercator | | **Трансформація координат (F13)** | Зберігання локального ENU Origin, конвертація WGS84 ↔ Local ENU ↔ Pixels | | **Вхідний пайплайн (F05)** | `cv2`, `asyncio.Queue`. Керує FIFO чергою батчів кадрів з БПЛА, здійснює базову валідацію послідовностей та збереження фотографій на диск. | | **Менеджер ротацій (F06)** | Оберти 360° блоками по 30° для підбору орієнтації; трекінг історії курсу з виявленням різких поворотів (>45°). | | **Граф поз (VO/GPR)** | GTSAM (Python) - очікується в наступних етапах | ## Швидкий старт ```bash # Клонувати та перейти в гілку stage1 git clone https://github.com/azaion/gps-denied-onboard.git cd gps-denied-onboard git checkout stage1 # Створити віртуальне середовище python3 -m venv .venv source .venv/bin/activate # Встановити залежності pip install -e ".[dev]" # Запустити сервер python -m gps_denied ``` Сервер стартує на `http://127.0.0.1:8000`. Health check: `GET /health`. ## Тести ```bash python -m pytest tests/ -v ``` ## Структура проєкту ``` gps-denied-onboard/ ├── src/gps_denied/ # Основний пакет │ ├── __init__.py │ ├── __main__.py # Entry point (uvicorn) │ └── app.py # FastAPI application ├── tests/ # Тести ├── docs-Lokal/ # Локальна документація та план ├── _docs/ # Архітектурна документація ├── pyproject.toml # Залежності та конфігурація └── .gitignore ``` ## Ліцензія Приватний репозиторій. Усі права захищено.