f1-telemetry/README.ru.md
2026-08-07 17:51:54 +03:00

11 KiB
Raw Blame History

English

F1 22 / ACC Telemetry Analyzer

Превращает сырую телеметрию круга F1 22 и Assetto Corsa Competizione в компактные Markdown-отчёты для анализа через LLM. Сырой круг — около 1М токенов; отчёты — 1–35k.

# из папки tool/
python -m telemetry technique "races/Zandvoort/Практика/zandvoort_P1_L7_74.074_ferrari.csv"
# -> races/Zandvoort/Практика/reports/zandvoort_P1_L7_74.074_ferrari_technique.md   (~35k токенов)

Или просто двойной клик по run-gui.bat и кнопка Generate report.

Установка

  • Python 3.10+ (только стандартная библиотека — без pip install).
  • Для GUI нужен Tk; он идёт в стандартном установщике Python на Windows/macOS. CLI работает и без него.

Скачай или склонируй репозиторий. Держи CSV-файлы телеметрии в папке на уровень выше tool/ (см. структуру папок).

Что умеет

Шесть режимов. Пять строят отчёты, один переименовывает файлы. Поддерживаются CSV из F1 22 и ACC (GT3/GT4) — игра определяется автоматически из метаданных каждого файла.

Режим Вход Для анализа
technique один круг как едешь — точки торможения, скорости в апексах, работа газом, блокировки, расход ресурсов
setup один круг что настроено — баланс (US/OS), температуры шин, тормоза, rake и крен подвески
compare два+ круга где один круг быстрее — дельта по поворотам и накопленная, плюс детерминированный Verdict (с топливной поправкой)
race папка кругов вся гонка — темп, деградация в стинтах, износ резины, ERS по кругам (F1)
profile папка кругов дёшево (~400 токенов) тенденции пилота по каждому составу (медиана coast/lock/spin на поворот, флаги относительно сессии) + авто-выбор кругов. Универсально: повороты кластеризуются по дистанции апекса, не по индексу
rename файлы/папка вставить тип сессии и номер круга в имя файла (..._74.074_... → ..._P1_L7_74.074_...)

Отчёты содержат легенду с пояснением каждой колонки, а промпт анализа добавляется в конец файла автоматически — достаточно скинуть файл в LLM. Промпты доступны на RU и EN; выбирается флагом --lang en в CLI или переключателем языка в GUI.

Флаги: --no-prompt убирает встроенный промпт (меньше файлы для агентных конвейеров; в GUI — чекбокс Включить промпт). --force перегенерирует, даже если свежий отчёт уже есть (иначе прогон пропускается как cached). --game {auto,f1,acc} переопределяет автоопределение игры (по умолчанию auto).

Оптимальный порядок: сначала profile — увидеть хронические тенденции и какие круги важны, затем technique/setup/compare только по этим кругам с --no-prompt.

Отличия ACC от F1 22

Машины GT3/GT4 не имеют гибридной системы, а ACC не экспортирует настройки машины:

  • Отчёты technique и race не содержат разделов DRS / ERS / MGU-K.
  • Режим setup: экспорт настроек из ACC — все нули, поэтому таблица параметров заменяется пометкой («ACC не экспортирует сетап — анализ построен по телеметрии»); разделы, основанные на телеметрии (баланс в поворотах, шины, тормоза, подвеска), остаются.
  • Топливо в литрах (GT), а не в кг (F1). Шины — составы Pirelli dry/wet, а не F1 C1–C5.

Структура папок

Telemetry/
  races/
    F1 22/
      Zandvoort/
        Practice/                      <- CSV-файлы после переименования
          zandvoort_P1_L7_74.074_ferrari.csv
          reports/                     <- отчёты technique/setup/compare
        Qualifying/
          zandvoort_Q1_L3_74.897_ferrari.csv
          reports/
        Race/
          zandvoort_R_L7_74.152_ferrari.csv
          reports/
            Race_race.md               <- отчёт режима race
    ACC/
      Hungaroring/
        Practice/
          hungaroring_P_L1_123.702_ktm_gt4.csv
          reports/
  tool/                                <- этот репозиторий
    telemetry/
    prompts/
    run-gui.bat

Полезное

GUI — двойной клик по run-gui.bat (или run-gui.pyw без окна консоли, либо python -m telemetry gui). Окно разделено на две вкладки — F1 22 и ACC — у каждой свои независимые элементы управления и лог. Выбери режим и язык промпта (RU/EN), укажи файл/папку, нажми Generate. Диалог открывается в последней использованной папке для каждого режима отдельно. Кнопка Rename unprocessed добавляет тип сессии и номер круга к файлам, у которых их ещё нет, и не трогает остальные. Если игра в файле не совпадает с активной вкладкой, GUI выводит предупреждение, но продолжает работу.

CLI — из папки tool/:

python -m telemetry technique races/Zandvoort/Практика/lap.csv
python -m telemetry setup     races/Zandvoort/Практика/lap.csv
python -m telemetry compare   races/Zandvoort/Практика/lap_a.csv races/Zandvoort/Практика/lap_b.csv
python -m telemetry race      races/Zandvoort/Гонка
python -m telemetry profile   races/Zandvoort/Гонка       # дешёвые тенденции по всем кругам + авто-выбор
python -m telemetry rename    races/Zandvoort/Практика   # или отдельные файлы

# выбор языка промпта (по умолчанию: ru)
python -m telemetry technique races/Zandvoort/Практика/lap.csv --lang en

# переопределить определение игры (по умолчанию: auto)
python -m telemetry technique ACC/races/Hungaroring/Practice/lap.csv --game acc

# агентный конвейер: убрать промпт, переиспользовать свежие отчёты
python -m telemetry technique races/Zandvoort/Практика/lap.csv --no-prompt
python -m telemetry technique races/Zandvoort/Практика/lap.csv --force   # игнорировать кэш

Каждый прогон печатает путь к отчёту и оценку токенов:

C:\...\Telemetry\reports\lap_technique.md
~33834 tokens (budget 60k)

Rename вставляет токены И распределяет по папкам. Укажи папку, где лежат CSV (например, D:\Games\Telemetry\Data\lapdata\f1_2022) — скрипт:

  • Рекурсивно сканирует все подпапки
  • Читает метаданные каждого CSV (трасса, тип сессии)
  • Вставляет P1_L7 в имя файла, если там ещё нет обоих токенов
  • Перемещает в races/<трасса>/Practice|Qualifying|Race/
  • Даже уже переименованные файлы, если они лежат не там где надо, перемещаются в нужную папку
  • Файл пропускается только если он УЖЕ находится именно в нужной папке

Повторный запуск безопасен — файлы уже на месте не трогаются.

Входной формат

Телеметрия F1 22 (UDP) или ACC, экспортированная в CSV (F1 22 тестировалось на F1Laps). UTF-8, 108 каналов, один файл = один круг (F1 22 — ≈1800 строк/круг при ≈29 Гц; круги ACC плотнее, ~14k строк — отчёты остаются компактными за счёт адаптивного ресэмплинга). Для режима race сложи все круги гонки в одну папку. Формат CSV одинаков у F1 22 и ACC; игра определяется из поля Game в метаданных каждого файла.

Для разработчиков

Чистый Python на стандартной библиотеке. Конвейер: parser → segments (+ corner_metrics) → resample → report_*. См. ARCHITECTURE.ru.md.

cd tool
python -m pytest -q        # прогнать тесты
python -m telemetry gui    # запустить GUI

Новый режим: добавь telemetry/report_<mode>.py с функцией generate(...) -> (abs_path, tokens) и одну строку в telemetry/__main__.py. Парсер, детекция поворотов, адаптивная трасса и общие блоки отчётов переиспользуются.

Благодарности

Сделано для разбора личных хотлапов в F1 22 и ACC. Формат экспорта телеметрии — F1Laps. Телеметрия в игре записывается через Telemetry Tool от Iasione.

Лицензия

PolyForm Noncommercial 1.0.0 — см. LICENSE. Бесплатно для некоммерческого использования; коммерческое использование требует отдельной лицензии от автора.