Files
autopilot/README.md

157 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` |