Appearance
ПР04. Launch, QoS и повтор записи
Работа обязательна для обеих траекторий. Рассчитывайте на одну лабораторную пару и примерно 2 часа самостоятельной доработки.
Цель
Одной launch-командой поднять две изолированные копии системы, записать поток в MCAP и доказать, что несовместимые профили QoS обнаружены и исправлены на живом потоке и на повторе записи.
Критерии зачтено
Работа зачтена, когда выполнены все три стадии и прошла автопроверка:
| Стадия | Что требуется |
|---|---|
| 1 · Собрать | launch-файл с аргументами, namespace, переназначениями, логами и записью MCAP |
| 2 · Сломать | reliable-подписчик против best effort-сенсора: топик виден, сообщений нет (qos-before.txt) |
| 3 · Доказать | совместимость восстановлена, тот же профиль проверен на живом потоке и записи (qos-after.txt) |
| Автопроверка | check_practice.py PR04 проверит src/**/*launch.py, evidence/pr04/{qos-before.txt,qos-after.txt,bag-metadata.yaml} и заявления public_tests_passed, defect_reproduced, defect_fixed, replay_verified |
Что получится
Одна launch-команда поднимет две копии системы в пространствах имён /robot_a и /robot_b. Вы запишете поток в MCAP и найдёте случай, когда топик виден, но сообщения не приходят из-за несовместимых профилей QoS.
Пакеты и понятия
course_bringup— пакет с launch-файлами: он поднимает всю систему одной командой, а не отдельные ноды вручную.- Пространство имён (
namespace) — префикс полного имени топика (например,/robot_a/cmd_vel); переназначение (remap) переименовывает топик для конкретной ноды. - QoS — профиль надёжности обмена: издатель и подписчик совместимы только когда согласованы
reliability,historyиdurability. Издательbest effortне может обслужить подписчикаreliable. - MCAP — контейнер записи
rosbag2: хранит сообщения и их временную шкалу, но не версии кода и аргументы запуска.
Что сделать
- Создайте launch-файл в пакете
course_bringup: аргументы запуска, пространства имён, переназначения, структурированные логи и запись потока в MCAP черезros2 bag record. - Запустите две копии системы
/robot_aи/robot_bс разными параметрами. Копии не должны конфликтовать за глобальные топики. - Подписчик с
reliableне получает сенсорный потокbest effort— топик виден вros2 topic list, но сообщения не доходят. Сохраните диагностику (qos-before.txt), исправьте совместимость профилей и повторите проверку на живом потоке и на повторе записи (qos-after.txt).
Сохраните launch-файл и evidence/pr04/{qos-before.txt,qos-after.txt,bag-metadata.yaml,report.json}. bag-metadata.yaml создаётся командой ros2 bag info и показывает, что запись действительно содержит исправленный поток.
Проверка
bash
colcon test
ros2 launch course_bringup patrol.launch.py namespace:=robot_a
ros2 bag info evidence/pr04/bag
python3 /path/to/course/tools/check_practice.py PR04 --submission .Готово, если система запускается из нового терминала, две копии не смешивают топики, а один bag-файл показывает сбой до и нормальную доставку после правки QoS. Дополнительно: launch-тест с корректным завершением процессов.
Как работаем на лабораторной
После проверки отмены действия разберём минимальный пример несовместимого QoS. Затем запишите собственный bag до исправления и соберите запуск в отдельном пространстве имён.
Общий порядок: runbook · troubleshooting.
Если использовался ИИ, применяются правила курса.