mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-04-22 22:26:38 +00:00
69 lines
4.1 KiB
Markdown
69 lines
4.1 KiB
Markdown
# 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) - очікується в наступних етапах |
|
|
|
|
## Швидкий старт
|
|
|
|
```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
|
|
```
|
|
|
|
## Ліцензія
|
|
|
|
Приватний репозиторій. Усі права захищено.
|