Модуль 7
CLI-диагностика: глаза джуна
5 блок(ов) теории · 12 заданий · 140 баллов
Диагностика в ROS 2 начинается не с кода, а с наблюдения, и глаза джуна — это три команды CLI (command-line interface, «интерфейс командной строки»: работа с системой текстовыми командами в терминале). ros2 node list — кто вообще жив в графе: имена всех запущенных нод. ros2 topic list — карта эфира: имена всех созданных каналов. ros2 topic echo <топик> — что именно летит по каналу: сообщения одного за другим. Порядок чтения — от обзора к точке: сначала «кто тут», затем «какие каналы есть», затем «что в потоке»; каждая следующая команда уточняет картину предыдущей.
Эмулятор курса исполняет ровно эти три команды и читает шину последнего ros-прогона сессии: любой зелёный прогон код-задания прошлых модулей оставляет после себя настоящий граф. Пустой вывод — не поломка, а честное сообщение: в этой сессии ros-код ещё не запускался; вернуть граф в шину можно, запустив любое код-задание снова. Инспектор, который сначала смотрит, а потом думает, — профессия: дальше модуль учит превращать три распечатки в диагноз.
Три распечатки складываются в диагноз. Молчащая нода: имя в ros2 node list есть, канал в ros2 topic list есть, echo молчит — нода жива и подключена, но не публикует: забытый таймер или публикация вне колбэка. Это не «упавшая нода»: упавшая исчезает из списка узлов — имя в списке довод, что процесс на месте. Опечатка в имени: подписчик слушает /telemetry/batery, издатель пишет в /telemetry/battery — обе стороны «работают», но не встречаются; в списке каналов будут оба имени — канал с опечаткой создало само подключение подписчика, а echo по нему честно отвечает «канал есть, но пока молчит»; сравнение списка каналов с кодом находит лишнюю букву. Мёртвая связь: канал без подписчика — публикации выходят в никуда, доставок ноль; или подписчик без издателя — канал создан, но молчит (канал умеет создавать и подписка).
Отдельный навык — читать пустоту. Пустой ros2 node list в реальной системе — не приговор, а первые вопросы чек-листа: ноды вообще запущены? оболочка подхватила окружение установки (source install/setup.bash)? В эмуляторе курса ответ проще: прогон ещё не запускался. И помните границы: echo печатает до пяти последних сообщений и не показывает тип — тип подтверждается кодом издателя; команд у реального CLI больше, и ros2 topic info с ros2 node info выдают «паспорта» с типами и счётчиками, которых эмулятору не хватает.
Задания
0/12 заданий · 0/140 баллов
1. Терминал: ros2 node list — кто жив в графе
10 балл(ов)Первая команда глаз джуна. ros2 node list печатает имена нод шины последнего ros-прогона сессии: любой зелёный прогон код-задания прошлых модулей оставляет после себя граф — например, heartbeat_node после задания о таймере из модуля 5. Исполните команду в терминале и прочитайте вывод внимательно: сколько нод, как они названы. Пустой вывод — тоже честный ответ, и диагностика начинается с него: прогон в сессии ещё не запускался — вернитесь к любому код-заданию и запустите.
Симуляция ROS 2 (учебный мок); на реальном железе — по инструкции модуля
Цель: ros2 node list исполнен и вывод прочитан: имена нод последнего ros-прогона сессии; пустой список — честный сигнал «прогон ещё не запускался», а не поломка эмулятора · выполнено 0/2
Какие команды доступны?
- · Имена нод последнего ros-прогона сессии: например heartbeat_node после зелёного прогона задания о таймере из модуля 5; пустой список — честный сигнал «прогон ещё не запускался», а не поломка
- · Кросс-проверка: каналы того же последнего прогона — у каждой ноды в графе есть, что создать или что слушать