|
|
# Справочник конфигурации
|
|
|
|
|
|
## 1. Общий принцип
|
|
|
|
|
|
У проекта два основных файла конфигурации:
|
|
|
|
|
|
- `config.py`
|
|
|
- `config_intercept.py`
|
|
|
|
|
|
Плюс слой env-overrides:
|
|
|
|
|
|
- `runtime_env.py`
|
|
|
|
|
|
Если проект запускается локально, обычно проще править `config.py` и `config_intercept.py`.
|
|
|
|
|
|
Если проект запускается в Docker, лучше использовать env-переменные.
|
|
|
|
|
|
## 2. Главные параметры `config.py`
|
|
|
|
|
|
### Источник и модель
|
|
|
|
|
|
- `MODEL_PATH` — путь к `best.pt`
|
|
|
- `DEVICE` — индекс CUDA-устройства
|
|
|
- `USE_HALF` — half precision на GPU
|
|
|
- `SOURCE` — видеофайл, индекс камеры, RTSP или UDP
|
|
|
- `VIDEO_REALTIME` — pacing по времени источника
|
|
|
- `CAP_BACKEND` — backend OpenCV для камер
|
|
|
|
|
|
### Вывод
|
|
|
|
|
|
- `SHOW_OUTPUT` — показывать окно OpenCV
|
|
|
- `WINDOW_NAME` — имя окна
|
|
|
- `SAVE_INFER_VIDEO` — писать выходное видео
|
|
|
- `OUT_VIDEO_PATH` — базовое имя выходного видео
|
|
|
|
|
|
### Детектор YOLO
|
|
|
|
|
|
- `CONF`
|
|
|
- `IMG_SIZE_ROI`
|
|
|
- `IMG_SIZE_FULL`
|
|
|
- `MAX_DET`
|
|
|
- `TARGET_CLASS_ID`
|
|
|
|
|
|
### KLT
|
|
|
|
|
|
- `KLT_MAX_CORNERS`
|
|
|
- `KLT_QUALITY`
|
|
|
- `KLT_MIN_DIST`
|
|
|
- `KLT_WIN`
|
|
|
- `KLT_MAX_LEVEL`
|
|
|
- `KLT_OUTLIER_THRESH`
|
|
|
- `KLT_OK_Q`
|
|
|
- `KLT_OK_PTS`
|
|
|
- `KLT_REFRESH_WITH_YOLO`
|
|
|
|
|
|
### ByteTrack / Kalman
|
|
|
|
|
|
- `BT_HIGH`
|
|
|
- `BT_LOW`
|
|
|
- `BT_NEW`
|
|
|
- `BT_MATCH_IOU`
|
|
|
- `BT_BUFFER`
|
|
|
- `BT_MIN_HITS`
|
|
|
- `BT_MAX_PREDICT_AGE`
|
|
|
- `KALMAN_HOLD_MAX`
|
|
|
|
|
|
### Guidance
|
|
|
|
|
|
- `GUIDANCE_ENABLE`
|
|
|
- `DRAW_GUIDANCE`
|
|
|
- `GUIDANCE_EXPORT_ENABLE`
|
|
|
- `GUIDANCE_EXPORT_PATH`
|
|
|
- `GUIDANCE_EXPORT_EVERY`
|
|
|
- `GUIDANCE_CMD_SMOOTH`
|
|
|
- `GUIDANCE_POINT_SMOOTH`
|
|
|
- `GUIDANCE_CONF_MIN`
|
|
|
- `GUIDANCE_OVERRIDE_ENABLE`
|
|
|
- `GUIDANCE_OVERRIDE_MISS_GE`
|
|
|
- `GUIDANCE_OVERRIDE_TTL`
|
|
|
|
|
|
## 3. Главные параметры `config_intercept.py`
|
|
|
|
|
|
### Range estimation
|
|
|
|
|
|
- `RANGE_ENABLE`
|
|
|
- `CAMERA_FOCAL_LENGTH_PX`
|
|
|
- `TARGET_KNOWN_SIZE_M`
|
|
|
- `RANGE_MIN_APPARENT_SIZE_PX`
|
|
|
- `RANGE_MAX_M`
|
|
|
- `RANGE_MIN_M`
|
|
|
|
|
|
### Proportional navigation
|
|
|
|
|
|
- `PN_ENABLE`
|
|
|
- `PN_NAV_GAIN`
|
|
|
- `PN_AUGMENTED`
|
|
|
- `PN_AUG_GAIN`
|
|
|
- `PN_MAX_ACCEL_CMD`
|
|
|
|
|
|
### Intercept FSM
|
|
|
|
|
|
- `INTERCEPT_FSM_ENABLE`
|
|
|
- `FSM_ACQUIRE_RANGE_M`
|
|
|
- `FSM_TRACK_CONFIRM_HITS`
|
|
|
- `FSM_INTERCEPT_RANGE_M`
|
|
|
- `FSM_TERMINAL_TAU_SEC`
|
|
|
- `FSM_TERMINAL_RANGE_M`
|
|
|
- `FSM_LOST_TIMEOUT`
|
|
|
|
|
|
### Внешние backend'ы
|
|
|
|
|
|
- `AUTOPILOT_ENABLE`
|
|
|
- `AUTOPILOT_BACKEND`
|
|
|
- `AUTOPILOT_JSON_PATH`
|
|
|
- `AUTOPILOT_JSON_EVERY`
|
|
|
- `MAVLINK_CONNECTION`
|
|
|
- `MSP_PORT`
|
|
|
- `MSP_BAUD`
|
|
|
|
|
|
### Испытательный UDP-протокол
|
|
|
|
|
|
- `PROTO_UDP_ENABLE`
|
|
|
- `PROTO_UDP_HOST`
|
|
|
- `PROTO_UDP_PORT`
|
|
|
- `PROTO_UDP_DESCRIPTOR`
|
|
|
|
|
|
### IMM / расширенные модули
|
|
|
|
|
|
- `IMM_ENABLE`
|
|
|
- `IMM_REPLACE_KALMAN`
|
|
|
|
|
|
## 4. Env-переменные, которые реально поддерживаются
|
|
|
|
|
|
Ниже перечислен точный набор env-overrides из `runtime_env.py`.
|
|
|
|
|
|
### Переопределения `config.py`
|
|
|
|
|
|
- `FPV_MODEL_PATH`
|
|
|
- `FPV_SOURCE`
|
|
|
- `FPV_VIDEO_REALTIME`
|
|
|
- `FPV_SHOW_OUTPUT`
|
|
|
- `FPV_SAVE_INFER_VIDEO`
|
|
|
- `FPV_OUT_VIDEO_PATH`
|
|
|
- `FPV_GUIDANCE_EXPORT_ENABLE`
|
|
|
- `FPV_GUIDANCE_EXPORT_PATH`
|
|
|
|
|
|
### Переопределения `config_intercept.py`
|
|
|
|
|
|
- `FPV_AUTOPILOT_ENABLE`
|
|
|
- `FPV_AUTOPILOT_BACKEND`
|
|
|
- `FPV_AUTOPILOT_JSON_PATH`
|
|
|
- `FPV_MAVLINK_CONNECTION`
|
|
|
- `FPV_MSP_PORT`
|
|
|
- `FPV_PROTO_UDP_ENABLE`
|
|
|
- `FPV_PROTO_UDP_HOST`
|
|
|
- `FPV_PROTO_UDP_PORT`
|
|
|
- `FPV_PROTO_UDP_DESCRIPTOR`
|
|
|
|
|
|
## 5. Как интерпретируется `FPV_SOURCE`
|
|
|
|
|
|
### Камера
|
|
|
|
|
|
```text
|
|
|
FPV_SOURCE=0
|
|
|
```
|
|
|
|
|
|
Если строка состоит только из цифр, она будет преобразована в индекс камеры.
|
|
|
|
|
|
### RTSP / HTTP / UDP / RTMP
|
|
|
|
|
|
```text
|
|
|
FPV_SOURCE=rtsp://192.168.1.10:8554/live
|
|
|
FPV_SOURCE=udp://@0.0.0.0:5600
|
|
|
```
|
|
|
|
|
|
Такие источники открываются как поток.
|
|
|
|
|
|
### Видео-файл
|
|
|
|
|
|
```text
|
|
|
FPV_SOURCE=/data/input/test.mp4
|
|
|
```
|
|
|
|
|
|
## 6. Рекомендуемые пресеты запуска
|
|
|
|
|
|
### Отладка на видеофайле
|
|
|
|
|
|
- `SOURCE` = путь к файлу
|
|
|
- `AUTOPILOT_BACKEND = "json"`
|
|
|
- `SHOW_OUTPUT = True`
|
|
|
- `SAVE_INFER_VIDEO = True`
|
|
|
|
|
|
### Реальный live-поток
|
|
|
|
|
|
- `SOURCE` = камера/RTSP/UDP
|
|
|
- `AUTOPILOT_BACKEND = "json"` на первом этапе
|
|
|
- `SHOW_OUTPUT` по ситуации
|
|
|
|
|
|
### Испытания протокола
|
|
|
|
|
|
- `AUTOPILOT_BACKEND = "proto_udp"`
|
|
|
- `PROTO_UDP_ENABLE = True`
|
|
|
- `PROTO_UDP_HOST` и `PROTO_UDP_PORT` под вашу сеть
|
|
|
|
|
|
## 7. Что лучше менять через env, а что через файлы
|
|
|
|
|
|
Через env лучше менять:
|
|
|
|
|
|
- источник;
|
|
|
- backend;
|
|
|
- пути к выходным файлам;
|
|
|
- включение UDP-протокола;
|
|
|
- сетевые адреса и порты.
|
|
|
|
|
|
Через `config.py` и `config_intercept.py` лучше менять:
|
|
|
|
|
|
- глубокий тюнинг трекера;
|
|
|
- пороги KLT/ByteTrack/Kalman;
|
|
|
- ROI- и recover-параметры;
|
|
|
- параметры PN/FSM;
|
|
|
- экспериментальные флаги.
|
|
|
|
|
|
## 8. Что не переопределяется через env
|
|
|
|
|
|
На текущий момент через env не вынесены все сотни тюнинговых параметров из `config.py`.
|
|
|
|
|
|
Это сделано специально, чтобы:
|
|
|
|
|
|
- оставить Docker-конфигурацию компактной;
|
|
|
- не раздувать runtime API;
|
|
|
- не превращать проект в огромный набор shell-параметров.
|
|
|
|
|
|
Если вам нужно контейнерно менять дополнительный параметр, его можно добавить в `runtime_env.py`.
|