You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MAI/docs/superpowers/specs/2026-06-29-docker-offline-g...

3.1 KiB

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.