8.7 KiB
RUNBOOK: запуск и эксплуатация
1. Назначение
Этот документ нужен, чтобы новый человек мог:
- понять, что делает проект;
- подготовить окружение;
- запустить проект локально;
- запустить проект в Docker;
- выбрать источник видео;
- выбрать backend выдачи команд;
- включить испытательный UDP-протокол.
2. Что делает проект
Проект решает задачу сопровождения цели в видеопотоке. Базовая схема такая:
- Видео поступает из файла, камеры, RTSP или UDP.
YOLOищет объект.ByteTrackведет ID трека.KalmanиKLTсглаживают движение и удерживают цель при кратких провалах детекции.guidance.pyстроит экранную точку наведения и управляющие команды.autopilot_bridge.pyотправляет команды наружу.
3. Минимальные требования
Для локального запуска
- Windows 10/11 или Linux
- Python 3.12
- NVIDIA GPU для быстрого режима
- установленный CUDA-совместимый
torch - модель
best.ptв корне проекта
Для Docker
- Docker Engine или Docker Desktop
- для GPU: NVIDIA драйвер на хосте
- для GPU: NVIDIA Container Toolkit
4. Структура запуска
Проект не запускается через CLI-параметры. Есть два способа настройки:
Вариант 1. Прямое редактирование файлов
config.pyconfig_intercept.py
Этот вариант проще для локальной разработки.
Вариант 2. Переменные окружения
Используется для:
- Docker
- запуска из shell без правки файлов
Поддерживаемые env-переменные описаны в CONFIG_REFERENCE_RU.md.
5. Локальный запуск на Windows
5.1. Создание окружения
Пример:
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
5.2. Установка зависимостей
CPU/GPU-зависимости проекта не сведены в отдельный локальный requirements.txt, поэтому ставятся вручную.
Пример для CUDA 12.8:
python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
python -m pip install -r requirements-docker.txt
Если нужен MSP, нужен pyserial.
Если нужен MAVLink, нужен pymavlink.
Они уже входят в requirements-docker.txt.
5.3. Проверка модели
Убедитесь, что файл:
best.pt
находится в корне проекта и MODEL_PATH указывает на него.
5.4. Выбор источника
В config.py настройте SOURCE.
Примеры:
SOURCE = 0
SOURCE = "rtsp://192.168.1.10:8554/live"
SOURCE = "udp://@0.0.0.0:5600"
SOURCE = r"C:\videos\sample.mp4"
5.5. Выбор backend команд
В config_intercept.py настройте:
AUTOPILOT_BACKEND = "json"
Доступные значения:
jsonmavlinkmspproto_udp
5.6. Запуск
python main.py
6. Локальный запуск на Linux
Пример:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
python3 -m pip install -r requirements-docker.txt
python3 main.py
Для USB-камеры обычно используется:
CAP_BACKEND = cv2.CAP_V4L2
SOURCE = 0
7. Запуск без правки config.py через env
Windows PowerShell
$env:FPV_SOURCE = "0"
$env:FPV_MODEL_PATH = "D:\PycharmProjects\YOLOTrain\BYTETRACK\TEST\fpv_tracker_optimized\best.pt"
$env:FPV_AUTOPILOT_BACKEND = "proto_udp"
$env:FPV_PROTO_UDP_ENABLE = "1"
$env:FPV_PROTO_UDP_HOST = "192.168.1.50"
$env:FPV_PROTO_UDP_PORT = "5005"
python main.py
Linux bash
export FPV_SOURCE=0
export FPV_MODEL_PATH=/path/to/best.pt
export FPV_AUTOPILOT_BACKEND=proto_udp
export FPV_PROTO_UDP_ENABLE=1
export FPV_PROTO_UDP_HOST=192.168.1.50
export FPV_PROTO_UDP_PORT=5005
python3 main.py
8. Docker-запуск
8.1. Что уже упаковано
Образ включает:
- Python 3
- CUDA runtime
torchtorchvisionultralyticsopencvpymavlinkpyserial- код проекта
best.pt
8.2. Сборка
docker compose build
После сборки интернет для старта контейнера не нужен.
8.3. Запуск
docker compose up
8.4. Изменение режима запуска
Проще всего править environment в docker-compose.yml.
Ключевые параметры:
FPV_SOURCEFPV_AUTOPILOT_BACKENDFPV_PROTO_UDP_ENABLEFPV_PROTO_UDP_HOSTFPV_PROTO_UDP_PORTFPV_SHOW_OUTPUTFPV_SAVE_INFER_VIDEO
8.5. Примеры
Камера
FPV_SOURCE: "0"
RTSP
FPV_SOURCE: "rtsp://192.168.1.10:8554/live"
UDP-видео
FPV_SOURCE: "udp://@0.0.0.0:5600"
Видео-файл внутри контейнера
Смонтируйте каталог с видео и укажите:
FPV_SOURCE: "/data/input/test.mp4"
9. Важные замечания по Docker и камере
Linux
Для прямой камеры часто нужно явно пробросить устройство:
devices:
- /dev/video0:/dev/video0
Windows Docker Desktop
Обычная webcam часто недоступна напрямую Linux-контейнеру. На Windows лучше использовать:
- RTSP-источник
- UDP-источник
- внешний capture-источник, доступный как сеть
10. Выбор backend выдачи команд
json
Самый простой режим.
Что делает:
- записывает текущее управляющее состояние в
autopilot_cmd.json
Когда использовать:
- отладка
- интеграция с внешним процессом через файл
mavlink
Что делает:
- отправляет команды по MAVLink
Что нужно:
- доступный endpoint
pymavlink
msp
Что делает:
- отправляет RC-команды по MSP
Что нужно:
- COM-порт или
/dev/ttyUSB0 pyserial
proto_udp
Что делает:
- отправляет бинарный UDP-пакет по вашему испытательному протоколу
Подробности: PROTOCOL_UDP_RU.md
11. Какие файлы появляются после запуска
out_infer_*.mp4— видео с отрисовкойtrack_log_*.csv— покадровый лог логики выбора целиtrack_summary_*.json— итоговая сводкаguidance_state.json— состояние guidanceautopilot_cmd.json— внешний файл команд для backendjson
12. Что проверять после первого запуска
- Открывается ли источник видео.
- Загружается ли модель
best.pt. - Есть ли детекции на экране.
- Создается ли
out_infer_*.mp4, если включена запись. - Создается ли
guidance_state.json, если включен export. - Доходит ли UDP/MAVLink/MSP до вашей внешней системы.
13. Рекомендуемый порядок первого ввода в эксплуатацию
- Запуск на видеофайле.
- Проверка логов и
out_infer_*.mp4. - Запуск с backend
json. - Проверка
guidance_state.jsonиautopilot_cmd.json. - Переключение на
proto_udp. - Только после этого переход на live-источник.