4. QoS, время ROS и запись данных rosbag

Почему сообщения могут не приходить

Для обмена недостаточно совпадения имени топика и типа сообщения. Настройки Quality of Service издателя и подписчика должны быть совместимы. Reliability описывает требования к надёжности доставки, durability — доступность ранее опубликованных данных, history и depth — правила хранения очереди.

Для сенсорных потоков часто важна свежесть измерения, а не повторная доставка каждого старого сообщения. Для редко меняющегося описания системы может быть важна возможность получить последнее значение после подключения подписчика.

Диагностика

В работающей системе изучите:

ros2 topic info /turtle1/pose --verbose
ros2 topic hz /turtle1/pose

Сопоставьте частоту с настройкой издателя. Отсутствие сообщений может быть связано с QoS, окружением, пространством имён или тем, что узел вообще не запущен.

Запись и воспроизведение

При запущенном turtlesim запишите небольшой фрагмент движения:

ros2 bag record -o turtle_record /turtle1/pose /turtle1/cmd_vel

Остановите запись сочетанием Ctrl+C. Затем изучите её:

ros2 bag info turtle_record
ros2 bag play turtle_record

Для наблюдения записанных координат используйте отдельный терминал с ros2 topic echo /turtle1/pose. Остановите исходного издателя, если хотите анализировать только воспроизводимые сообщения.

Время в симуляции

При use_sim_time=true узел использует время из /clock. Если симулятор остановлен или этот топик не публикуется, поведение таймеров может отличаться от ожиданий по настенным часам.

Самостоятельное задание

Сравните живой поток и воспроизведение записи. Зафиксируйте типы сообщений, продолжительность записи и частоту публикации.

Самопроверка

  • Чем QoS отличается от типа сообщения?
  • Почему два источника одного топика усложняют анализ записи?
  • Что происходит со временем ROS при паузе симуляции?

Основа урока: учебное пособие «Операционная система для роботов ROS 2», ИТМО, 2026, печатные страницы 14, 17–18, 34–35. Это учебный конспект с упражнениями; полные примеры и рисунки приведены в пособии.