# Autopilot Симуляция автопилота по маршруту на карте. ## Требования - Python 3.10+ - Chrome/Chromium - Выключенный VPN ## Установка ```powershell python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt ``` ## Запуск ```powershell python main.py --mode standalone --name test_route ``` Команда построит маршрут и запустит симуляцию. Результаты сохраняются в `trajectories`. Можно выполнить шаги отдельно: ```powershell python main.py --mode markup --name test_route python main.py --mode build --name test_route python main.py --mode run --name test_route ``` `markup` только скачивает карту и сохраняет разметку маршрута. `build` наполняет маршрут chunks и служебными данными. Если при `build` папки маршрута ещё нет, сначала автоматически выполнится разметка, затем наполнение. `standalone` выполняет весь путь: разметка, build и run. Дополнительно можно указать координаты и карты: ```powershell python main.py --mode standalone --name test_route --lat 49.103814 --lon 55.794258 --reference google --simulation yandex ``` ## Флаги - `--mode` - режим работы: `standalone`, `markup`, `build`, `run`. - `--name` - название маршрута. - `--lat`, `--lon` - координаты начальной области. - `--reference` - карта для эталонных изображений: `google` или `yandex`. - `--simulation` - карта для симуляции: `google` или `yandex`. - `--ref-min-distance` - минимальное расстояние между эталонами. - `--debug-fps` - вывести отладку FPS. - `--debug-landmark` - вывести отладку ориентиров. - `--use-sian-similarity` - выбирать ориентир через SiaN Similarity. - `--use-gan` - преобразовывать эталонные изображения через GAN. - `--no-landmarks` - отключить эталоны и лететь только по межкадровой одометрии. - `--interframe-method` - метод межкадрового сравнения: `optical-flow`, `orb`, `akaze`, `sift`, `brisk`. - `--landmark-method` - метод сравнения с эталонами: `orb`, `akaze`, `sift`, `brisk`. ## Автоматические серии запусков `run_batch.ps1` запускает серию экспериментов по уже построенным маршрутам. Скрипт не делает ручную разметку: маршруты должны быть заранее подготовлены через `markup` и `build`, либо через `standalone`. Каждый запуск вызывает `python main.py --mode run ...`, а результаты сохраняются обычным способом в `test_runs`. Минимальный запуск для одного маршрута: ```powershell .\run_batch.ps1 -Routes test_route ``` Если `-Routes` не указан, скрипт запустит все маршруты из `trajectories`, у которых есть `positions.pkl`: ```powershell .\run_batch.ps1 ``` Несколько маршрутов можно указать через запятую: ```powershell .\run_batch.ps1 -Routes 2026-05-31_15-32-53,2026-05-31_15-21-17 ``` Или через текстовый файл, по одному маршруту на строку: ```powershell .\run_batch.ps1 -RouteListPath .\routes.txt ``` Пример `routes.txt`: ```text 2026-05-31_15-32-53 2026-05-31_15-21-17 # строки с комментариями игнорируются ``` Прогон разных методов межкадрового сравнения: ```powershell .\run_batch.ps1 ` -Routes test_route ` -InterframeMethods optical-flow,orb,akaze,sift,brisk ` -LandmarkMethods orb ``` Прогон разных методов эталонов: ```powershell .\run_batch.ps1 ` -Routes test_route ` -InterframeMethods optical-flow ` -LandmarkMethods orb,akaze,sift,brisk ``` Прогон с эталонами и без эталонов: ```powershell .\run_batch.ps1 ` -Routes test_route ` -UseLandmarksValues true,false ``` Полная матрица экспериментов: ```powershell .\run_batch.ps1 ` -Routes test_route ` -SimulationMaps yandex,google ` -InterframeMethods optical-flow,orb,akaze ` -LandmarkMethods orb,sift ` -UseLandmarksValues true,false ` -UseSianSimilarityValues false,true ` -UseGanValues false,true ` -RefMinDistances 75,100 ``` Для проверки команд без запуска Selenium: ```powershell .\run_batch.ps1 -DryRun ``` ### Флаги `run_batch.ps1` | Флаг | Описание | Пример | |---|---|---| | `-Routes` | Список имён маршрутов из `trajectories`. Можно через запятую. | `-Routes route1,route2` | | `-RouteListPath` | Путь к txt-файлу со списком маршрутов, по одному на строку. | `-RouteListPath .\routes.txt` | | `-SimulationMaps` | Карты, на которых выполнять симуляцию. | `-SimulationMaps yandex,google` | | `-InterframeMethods` | Методы межкадрового сравнения. | `-InterframeMethods optical-flow,orb,sift` | | `-LandmarkMethods` | Методы сравнения с эталонами. | `-LandmarkMethods orb,akaze,brisk` | | `-UseLandmarksValues` | Использовать эталоны или лететь только по межкадровой одометрии. | `-UseLandmarksValues true,false` | | `-UseSianSimilarityValues` | Включать выбор эталона через SiaN Similarity. | `-UseSianSimilarityValues false,true` | | `-UseGanValues` | Включать GAN-преобразование эталонных изображений. | `-UseGanValues false,true` | | `-RefMinDistances` | Минимальное расстояние между загружаемыми эталонами. | `-RefMinDistances 50,100,150` | | `-UseSianSimilarity` | Быстрый вариант `-UseSianSimilarityValues true`. | `-UseSianSimilarity` | | `-UseGan` | Быстрый вариант `-UseGanValues true`. | `-UseGan` | | `-DryRun` | Только напечатать команды, не запускать Selenium и симуляцию. | `-DryRun` |