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.
3.1 KiB
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,uint8object_id:1..255,uint8target_state:0..3,uint8offset_y_px:int16offset_x_px:int16offset_y_pct:int8offset_x_pct:int8bbox_area_pct:uint8
Порядок полей фиксированный. Для упаковки используется little-endian бинарный формат.
Docker artifacts
Dockerfile.dockerignorerequirements-docker.txtdocker-compose.ymldocker/entrypoint.shREADME_docker.md
Verification
- Unit-тесты для упаковки UDP-пакета и выбора backend'а.
- Unit-тесты для env-overrides.
python -m compileallпо измененным Python-файлам.- Проверка синтаксиса compose/config файлов локально без сетевых шагов runtime.