docs: add physical rover setup reference

This commit is contained in:
2026-09-10 22:06:15 +03:00
parent 19d08523eb
commit 1b0ebe1b5a
7 changed files with 163 additions and 57 deletions
+13 -4
View File
@@ -1,7 +1,8 @@
# Базовые примеры для реального ROS 2
Это короткие учебные скрипты, которые работают через штатные ROS 2 интерфейсы
роверов: `cmd_vel`, `odometry`, `scan_front`, `aruco_id`, TF и `lift`. В них нет
роверов: `cmd_vel`, `odometry`, `scan_front`, `aruco_id`, TF и `lift`. Имена
сверены с выданной документацией физических РМК от 08.09.2026. В них нет
прямого управления моторами и нет подмены симулятора. Один и тот же ROS API можно
проверять в Webots, а затем перенести на физический РМК после сверки имён топиков,
TF, размеров поля и безопасных скоростей.
@@ -23,7 +24,8 @@ ros2 topic list | sort
ros2 topic info /RMC2/cmd_vel -v
ros2 topic info /RMC2/odometry -v
ros2 topic info /RMC2/scan_front -v
ros2 topic echo /RMC2/aruco_id
ros2 topic info /RMC2/camera_bottom/aruco_id -v
ros2 topic echo /RMC2/camera_bottom/aruco_id --once
ros2 run tf2_ros tf2_echo RMC2/odom aruco_0
```
@@ -56,8 +58,9 @@ python3 basic/lift_rmc2.py down
python3 basic/stop_all.py
```
`drive_to_aruco.py` рассчитан на регулярную сетку 6×6: `0=(0,0)`,
`1=(0,+1 м)`, `6=(-1 м,0)`. Ровер должен стартовать центром над видимой меткой.
`drive_to_aruco.py` по умолчанию использует реальную сетку 5×5: `0=(0,0)`,
`1=(0,+1 м)`, `5=(-1 м,0)`. С `--sim` выбирается сетка Webots 6×6, где
`6=(-1 м,0)`. Ровер должен стартовать центром над видимой меткой.
Скрипт сам определяет старт, строит BFS-маршрут, печатает его до движения, затем
едет по odometry и уточняет положение через TF каждой ArUco. Без свежих odometry,
лидара, метки на финише или при препятствии ближе `--stop-distance` он отправляет
@@ -67,8 +70,14 @@ python3 basic/stop_all.py
`--spacing`. Если организаторы используют другой топик лидара, передайте
`--scan-topic /нужный/топик`. Не используйте `--yes` в первом физическом заезде.
По выданной документации нижняя камера и `aruco_id` есть у RMC2. Поэтому реальный
запуск `drive_to_aruco.py` разрешён только для RMC2. Подъём лифта публикует `0.05`,
опускание — `0.0`, а статус читается с обязательным QoS `Transient Local`.
У RMC1 доступно боковое движение (`linear.y`), у RMC2 оно принудительно запрещено
в `move_rmc.py`. Режим `--no-lidar` предназначен только для вывешенного стенда,
где колёса не могут переместить робот.
`grid_route.py` оставлен как офлайн-проверка графа. Он ничего не публикует в ROS.
Для реального поля используется его дефолт `--size 5`, для Webots добавьте
`--size 6`.