# FPV Tracker Optimized

Русская документация для проекта сопровождения и удержания воздушной цели на базе `YOLO + ByteTrack + Kalman + KLT`.

Проект умеет:

- принимать видео с файла, камеры, RTSP и UDP-потока;
- обнаруживать и сопровождать цель;
- удерживать цель при кратковременной потере детекции;
- строить команды наведения в экранных координатах;
- экспортировать команды в `json`, `mavlink`, `msp` и испытательный `proto_udp`;
- работать локально или в Docker с GPU.

## Быстрый старт

### Локальный запуск

1. Установите Python 3.12 и зависимости.
2. Проверьте, что модель `best.pt` лежит в корне проекта.
3. Настройте `SOURCE` и `MODEL_PATH` в `config.py`.
4. При необходимости настройте backend в `config_intercept.py`.
5. Запустите:

```bash
python main.py
```

### Docker-запуск

1. Установите Docker.
2. Для GPU установите NVIDIA Container Toolkit на хосте.
3. Соберите образ:

```bash
docker compose build
```

4. Запустите:

```bash
docker compose up
```

## Комплект документации

- [Полный runbook](docs/RUNBOOK_RU.md)
- [Архитектура проекта](docs/ARCHITECTURE_RU.md)
- [Справочник конфигурации](docs/CONFIG_REFERENCE_RU.md)
- [Испытательный UDP-протокол](docs/PROTOCOL_UDP_RU.md)
- [Поиск и устранение проблем](docs/TROUBLESHOOTING_RU.md)

## Что является точкой входа

Основной runtime проекта запускается через:

```bash
python main.py
```

В проекте нет полноценного CLI с аргументами командной строки. Конфигурация задается:

- напрямую через `config.py`;
- напрямую через `config_intercept.py`;
- через env-переменные, если проект запускается в контейнере или через shell.

## Основные файлы

- `main.py` — основной цикл обработки видео.
- `config.py` — настройки источника, детектора, трекинга, ROI и вывода.
- `config_intercept.py` — настройки наведения, range/PN/FSM и backend'ов.
- `guidance.py` — экранный guidance и экспорт `guidance_state.json`.
- `autopilot_bridge.py` — отправка команд наружу.
- `runtime_env.py` — env-overrides для контейнера и shell-запуска.
- `bytetrack_min_aggressive.py` — локальная реализация ByteTrack.

## Что генерируется во время работы

В зависимости от настроек проект может создавать:

- `out_infer_*.mp4` — видео с наложениями;
- `track_log_*.csv` — покадровый лог;
- `track_summary_*.json` — сводка по прогону;
- `guidance_state.json` — текущее состояние guidance;
- `autopilot_cmd.json` — команды автопилота при backend `json`.

## Статус Docker-упаковки

В проекте уже подготовлены:

- `Dockerfile`
- `docker-compose.yml`
- `docker/entrypoint.sh`
- `requirements-docker.txt`

После сборки образ рассчитан на запуск без интернета.
