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.

96 lines
3.7 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.

# 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`
После сборки образ рассчитан на запуск без интернета.