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
+37 -11
View File
@@ -8,7 +8,7 @@
- [`materials/presentations`](materials/presentations) — пять учебных презентаций (введение, документация, Python/ROS, симулятор, развитие компетенции).
- [`materials/pdf`](materials/pdf) — шестая презентация про датасет и модели, расписание.
- [`materials/final`](materials/final) — полный очный финал: инфраструктурный лист, КЗ модулей А–Д, критерии и приложения.
- [`materials/final`](materials/final) — полный очный финал: инфраструктурный лист, КЗ модулей А–Д, критерии, приложения и выданная документация физических РМК.
- [`materials/tasks`](materials/tasks) — отдельный ранний/отборочный комплект по навигации; не путать с полным финалом.
- [`basic`](basic) — примеры для реального ROS 2: движение к ArUco с odometry/TF/lidar, ручной `cmd_vel`, остановка, лифт, мониторинг и BFS-маршрут.
- [`setup/FROM_ZERO.md`](setup/FROM_ZERO.md) — подготовка полностью чистого Windows/Ubuntu и день настройки оборудования.
@@ -22,12 +22,13 @@
## Порядок чтения
1. `materials/final/04-final-task.docx` и `materials/final/05-final-criteria.xlsx` — сначала понять конечный результат и баллы очного финала.
2. `1. Введение...` и `2. Документация...` — термины, РМК и структура компетенции.
3. `3. Разбор...` — Python, ROS 2, топики и сервисы.
4. `4. Практика... (симулятор)` — установка и работа с Webots.
5. `5. Практика... (датасет + модели)` — разметка и обучение детектора.
6. `setup/FROM_ZERO.md` — подготовка ПК и оборудования.
7. README каждого модуля в `mvch` — точные команды текущего решения.
2. `materials/final/09-robot-documentation.pdf` — реальные размеры, топики, камеры, лифт и сеть РМК.
3. `1. Введение...` и `2. Документация...` — термины, РМК и структура компетенции.
4. `3. Разбор...` — Python, ROS 2, топики и сервисы.
5. `4. Практика... (симулятор)` — установка и работа с Webots.
6. `5. Практика... (датасет + модели)` — разметка и обучение детектора.
7. `setup/FROM_ZERO.md` — подготовка ПК и оборудования.
8. README каждого модуля в `mvch` — точные команды текущего решения.
## Быстрый старт на подготовленной VM
@@ -177,6 +178,29 @@ ros2 topic echo /RMC2/scan_front --once
Точный список топиков зависит от активного launch-файла. Если `scan_front` отсутствует, сначала посмотрите `ros2 topic list | sort`, а не меняйте код вслепую.
## ROS API физических роверов из новой документации
Физическое поле на схеме имеет сетку 5 × 5 и ID 0–24. Система координат та же,
что использует код: `0=(0,0)`, `1=(0,+1 м)`, `5=(-1 м,0)`. Webots остаётся
отдельным профилем 6 × 6 с ID 0–35.
| Назначение | RMC1 | RMC2 |
| --- | --- | --- |
| Скорость | `/RMC1/cmd_vel` (`Twist`) | `/RMC2/cmd_vel` (`Twist`) |
| Одометрия | `/RMC1/odometry` | `/RMC2/odometry` |
| Лидары | `/RMC1/scan_front`, `/scan_back`, `/scan` | `/RMC2/scan_front`, `/scan_back`, `/scan` |
| TF | `/RMC1/tf`, `/RMC1/tf_static` | `/RMC2/tf`, `/RMC2/tf_static` |
| Камера | `/RMC1/arm95/svcam/right/image/compressed` | `/RMC2/camera_bottom/image` |
| ArUco ID | в PDF отдельный топик не указан | `/RMC2/camera_bottom/aruco_id` (`String`) |
| Лифт | — | `/RMC2/lift` (`Float64`), `/RMC2/lift_status` (`String`, Transient Local) |
Лифт принимает `0.0` для нижнего положения и `0.05` для верхнего; статусы:
`lowered`, `moving`, `raised`. В PDF у RMC1 камера с суффиксом `/compressed`
помечена типом `sensor_msgs/Image`, а не `CompressedImage`, и топик `CameraInfo`
не перечислен. Это нужно обязательно проверить командой `ros2 topic info -v` на
оборудовании: код умеет работать с обоими типами, а калибровку при отсутствии
`CameraInfo` можно передать аргументами.
## Если на реальном ровере другие датчики или ROS API
Успешный запуск Python-процесса ещё не означает, что ровер готов ехать. Текущие
@@ -208,12 +232,14 @@ ros2 topic list -t | tee ~/equipment-audit/topics.txt
ros2 topic info /RMC2/cmd_vel -v | tee ~/equipment-audit/cmd_vel.txt
ros2 topic info /RMC2/odometry -v | tee ~/equipment-audit/odometry.txt
ros2 topic info /RMC2/scan_front -v | tee ~/equipment-audit/scan_front.txt
ros2 topic info /RMC2/aruco_id -v | tee ~/equipment-audit/aruco_id.txt
ros2 topic info /RMC2/camera_bottom/aruco_id -v | tee ~/equipment-audit/aruco_id.txt
ros2 topic info /RMC2/lift_status -v | tee ~/equipment-audit/lift_status.txt
ros2 topic info /RMC1/arm95/svcam/right/image/compressed -v | tee ~/equipment-audit/rmc1_camera.txt
timeout 5 ros2 topic hz /RMC2/odometry
timeout 5 ros2 topic hz /RMC2/scan_front
ros2 topic echo /RMC2/odometry --once
ros2 topic echo /RMC2/aruco_id --once
ros2 topic echo /RMC2/camera_bottom/aruco_id --once
ros2 run tf2_ros tf2_echo RMC2/odom RMC2/base_link
ros2 run tf2_ros tf2_echo RMC2/odom aruco_0
@@ -257,8 +283,8 @@ python3 basic/watch_robot.py --robot RMC2
| Модуль | Решение | Основной запуск |
| --- | --- | --- |
| Б | навигация RMC2 по ArUco | `python3 module2/module_b.py --target 14 --sim` |
| В | YOLO + ARM95 | `module3/.venv/bin/python module3/module3.py --target hammer` |
| Б | навигация RMC2 по ArUco | реальный: `python3 module2/module_b.py --target 14`; Webots: добавить `--sim` |
| В | YOLO + ARM95 | реальный: `module3/.venv/bin/python module3/module3.py --target hammer`; Webots: добавить `--sim` |
| Г | веб-FMS двух роверов | `cd module4 && bun run start` |
| Д | общий сценарий RMC1 + RMC2 | `module3/.venv/bin/python module5/module5.py --target hammer` |