157 lines
6.7 KiB
Markdown
157 lines
6.7 KiB
Markdown
# 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` |
|