fix: align modules with physical rover API
This commit is contained in:
@@ -61,9 +61,21 @@ python3 module2/module_b.py --target 14 --sim --auto --return-delay 10
|
||||
python3 module2/module_b.py --xy -2 2 --target-yaw 1.57 --sim
|
||||
```
|
||||
|
||||
На физическом роботе `--sim` не указывать. Перед переносом обязательно проверить
|
||||
размеры корпуса, тормозной путь, TF, шаг и ориентации графа, датчики и аппаратную
|
||||
аварийную остановку. Испытания в Webots не подтверждают готовность к реальному полю.
|
||||
На физическом роботе `--sim` не указывать:
|
||||
|
||||
```bash
|
||||
python3 module2/module_b.py --target 14
|
||||
```
|
||||
|
||||
Тогда используется подтверждённый документацией профиль: поле 5×5 (ID 0–24),
|
||||
ArUco `/RMC2/camera_bottom/aruco_id`, TF `/RMC2/tf` и `/RMC2/tf_static`, габарит
|
||||
RMC2 до 0.870 м. С `--sim` остаётся прежний профиль Webots 6×6 (ID 0–35),
|
||||
`/RMC2/aruco_id` и глобальные `/tf`/`/tf_static`.
|
||||
|
||||
Перед физическим заездом всё равно проверить частоту топиков, имена frame_id, шаг
|
||||
сетки, тормозной путь и аппаратную аварийную остановку. Документ не сообщает шаг
|
||||
между маркерами и точные имена TF-фреймов. Испытания в Webots не подтверждают
|
||||
готовность к реальному полю.
|
||||
У штатного Webots-драйвера нет таймаута последней команды: при SIGKILL/обрыве питания
|
||||
процесса программная остановка не гарантируется; остановить симулятор вручную.
|
||||
|
||||
@@ -74,7 +86,8 @@ python3 module2/module_b.py --xy -2 2 --target-yaw 1.57 --sim
|
||||
|
||||
Читайте в таком порядке: `Field.route` → `localize` → `scan_points` → `plan` → `drive` → `tick`.
|
||||
|
||||
Координаты штатного поля: `0=(0,0)`, `6=(-1,0)`, `1=(0,1)`.
|
||||
Координаты реального поля: `0=(0,0)`, `5=(-1,0)`, `1=(0,1)`; в Webots 6×6:
|
||||
`0=(0,0)`, `6=(-1,0)`, `1=(0,1)`.
|
||||
Поворот `yaw` каждой метки — ориентация её TF-системы относительно поля.
|
||||
Измеренное положение метки в odom сравнивается с её известным положением на поле;
|
||||
так получаем преобразование `map_from_odom`. Между метками движение идёт по одометрии.
|
||||
@@ -88,13 +101,14 @@ python3 module2/module_b.py --xy -2 2 --target-yaw 1.57 --sim
|
||||
к предыдущему маркеру по своему ребру и публикует новый маршрут `ROUTE_REPLANNED`.
|
||||
Если отступить безопасно нельзя, он стоит и завершает попытку по таймауту.
|
||||
|
||||
Размеры сетки, шаг и известные занятые клетки задаются константами `ROWS`, `COLS`,
|
||||
`MARKER_SPACING`, `BLOCKED_MARKERS` в начале скрипта. Все длины — метры.
|
||||
Профили сетки находятся в `REAL_FIELD` и `SIM_FIELD`, известные занятые клетки —
|
||||
в `BLOCKED_MARKERS`. Все длины — метры.
|
||||
|
||||
## Проверки и логи
|
||||
|
||||
```bash
|
||||
python3 module2/module_b.py --target 14 --dry-run
|
||||
python3 module2/module_b.py --target 14 --dry-run # реальное поле 5x5
|
||||
python3 module2/module_b.py --target 35 --sim --dry-run # Webots 6x6
|
||||
```
|
||||
|
||||
`reports/module_b_*.jsonl` содержат маршрут, движение, ошибки, препятствия,
|
||||
|
||||
Reference in New Issue
Block a user