Files
gps-denied-onboard/README.md
T

4.1 KiB

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°).
Model Manager (F16) Архітектура завантаження ML моделей (Mock/Fallback).
Візуальна Одометрія (F07) Суперпоінт / LightGlue імітація. OpenCV (findEssentialMat + RANSAC + recoverPose) для розрахунку відносного руху між кадрами без відомого масштабу.
Global Place Recognition (F08) Розпізнавання місцевості (DINOv2/AnyLoc мок), використання імпровізованого Faiss-індексу для ранжирування кандидатів.
Metric Refinement (F09) Вимірювання абсолютної GPS-координати (LiteSAM мок) через гомографію з супутниковим знімком та bounds scaling.
Граф поз (VO/GPR) GTSAM (Python) - очікується в наступних етапах

Швидкий старт

# Клонувати та перейти в гілку 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.

Тести

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

Ліцензія

Приватний репозиторій. Усі права захищено.