# Docker Offline GPU + Proto UDP Design

## Goal

Упаковать `fpv_tracker_optimized` в один офлайн GPU-контейнер, который может работать с live/video-источниками и переключаемыми backend'ами управления, включая новый испытательный UDP-протокол.

## Scope

- Один Docker-образ для runtime проекта.
- Запуск без интернета после сборки.
- Поддержка `camera`, `rtsp`, `udp`, `video` через переменные окружения.
- Поддержка backend'ов `json`, `mavlink`, `msp`, `proto_udp`.
- Возможность включать и выключать испытательный протокол без смены образа.

## Architecture

### Runtime packaging

- Базовый образ: CUDA runtime + Python.
- Все Python-зависимости ставятся на этапе сборки.
- В образ копируются код проекта, модель `best.pt` и локальная реализация `BYTETracker`.
- Запуск идет через entrypoint-скрипт, который настраивает runtime через env.

### Configuration model

- Существующие значения в `config.py` и `config_intercept.py` остаются как дефолты.
- Для контейнера добавляется слой env-overrides, чтобы не редактировать код под каждый запуск.
- Переключаемые параметры:
  - источник видео;
  - путь к модели;
  - режим отображения/записи;
  - backend автопилота;
  - параметры испытательного UDP-протокола.

### Protocol backend

- Новый backend в `autopilot_bridge.py`: `proto_udp`.
- Он сериализует состояние цели в фиксированный бинарный UDP-пакет и отправляет на заданный `host:port`.
- Если цели нет, поля пакета передаются нулевыми согласно протоколу.

## Protocol mapping

Сообщение `нейросеть -> блок`:

- `descriptor`: `1`, `uint8`
- `object_id`: `1..255`, `uint8`
- `target_state`: `0..3`, `uint8`
- `offset_y_px`: `int16`
- `offset_x_px`: `int16`
- `offset_y_pct`: `int8`
- `offset_x_pct`: `int8`
- `bbox_area_pct`: `uint8`

Порядок полей фиксированный. Для упаковки используется little-endian бинарный формат.

## Docker artifacts

- `Dockerfile`
- `.dockerignore`
- `requirements-docker.txt`
- `docker-compose.yml`
- `docker/entrypoint.sh`
- `README_docker.md`

## Verification

- Unit-тесты для упаковки UDP-пакета и выбора backend'а.
- Unit-тесты для env-overrides.
- `python -m compileall` по измененным Python-файлам.
- Проверка синтаксиса compose/config файлов локально без сетевых шагов runtime.
