# Справочник конфигурации ## 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`.