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.

80 lines
2.2 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Docker Runtime
## Что собирается
Один GPU-образ для `fpv_tracker_optimized` с уже встроенными:
- `torch` + `torchvision` для CUDA 12.8
- `ultralytics`
- `opencv`
- `pymavlink`
- `pyserial`
- моделью `best.pt`
- локальным `bytetrack_min_aggressive.py`
После сборки контейнер может запускаться без интернета.
## Сборка
```bash
docker compose build
```
## Запуск
```bash
docker compose up
```
## Основные env-переменные
- `FPV_SOURCE`
Примеры: `"0"`, `"rtsp://192.168.1.10:8554/live"`, `"udp://@0.0.0.0:5600"`, `"/data/input/test.mp4"`
- `FPV_MODEL_PATH`
- `FPV_SHOW_OUTPUT`
- `FPV_SAVE_INFER_VIDEO`
- `FPV_OUT_VIDEO_PATH`
- `FPV_GUIDANCE_EXPORT_ENABLE`
- `FPV_GUIDANCE_EXPORT_PATH`
- `FPV_AUTOPILOT_ENABLE`
- `FPV_AUTOPILOT_BACKEND`
Значения: `json`, `mavlink`, `msp`, `proto_udp`
## Испытательный UDP-протокол
Включение:
```yaml
FPV_AUTOPILOT_BACKEND: "proto_udp"
FPV_PROTO_UDP_ENABLE: "1"
FPV_PROTO_UDP_HOST: "192.168.1.50"
FPV_PROTO_UDP_PORT: "5005"
```
Пакет отправляется в формате little-endian:
```text
<BBBhhbbB
descriptor
object_id
target_state
offset_y_px
offset_x_px
offset_y_pct
offset_x_pct
bbox_area_pct
```
`target_state`:
- `0` — цели нет
- `1` — цель есть и идет по детекции
- `3` — детекция пропала, работает трекинг/удержание
## Важные замечания
- Для GPU нужен установленный NVIDIA Container Toolkit на хосте.
- На Linux USB-камера обычно пробрасывается как `/dev/video0`.
- На Windows Docker Desktop прямой доступ Linux-контейнера к обычной webcam часто недоступен. В этом случае лучше использовать `RTSP`, `UDP` или внешний capture-источник, который виден контейнеру как сеть.
- `SHOW_OUTPUT=1` внутри headless-контейнера обычно не нужен. По умолчанию он выключен.