Модуль 10
Мультиузловая система: пайплайн телеметрии
5 блок(ов) теории · 12 заданий · 185 баллов
Конвейер телеметрии — первая многонодная система курса: сенсор измеряет, монитор решает, реле доставляет, логгер запоминает. Правило «одна нода — одна ответственность» здесь начинает работать на систему, а не на одиночную ноду.
sensor_sim таймером 1 Гц публикует заряд Float32 в /telemetry/battery и спутники Int32 в /telemetry/sats; battery_monitor подписан на заряд, сравнивает его с порогом и публикует Bool в /telemetry/battery_warning; alert_relay перепубликует предупреждение строкой "LOW_BATTERY" в /telemetry/alerts, но только настоящие — при true; event_logger слушает /telemetry/status, считает сообщения и помечает каждое третье.
Цена деления окупается диагностикой по звеньям: упавшее звено не роняет соседей, а локализуется без чтения кода — ноды в ros2 node list, каналы в ros2 topic list, поток каждого звена в ros2 topic echo. Второй выигрыш — имена-самодокументация: /telemetry/battery_warning говорит, что в канале и кто его породил по смыслу; безликое /data2 заставляет открывать код. По тем же именам читается топология: канал слушает следующее звено — сигнал течёт от измерения к потребителю.
Честная граница модуля: один прогон = один граф. Эмулятор CLI и тесты видят шину последнего ros-прогона, а полный конвейер из четырёх нод в одной шине живёт только на реальной машине — там ноды поднимают вместе (ros2 launch, модуль 9). Здесь система собирается прогонами по звеньям: зелёный прогон каждого code-ros оставляет в шине свой граф, и терминал честно показывает звено последнего запуска.
Когда звено гаснет, конвейер деградирует каскадом: выключенный сенсор осиротивает всё вниз по течению — монитор молчит, алертов нет, логгер не тикает, хотя сами ноды живы. Локализация корня — идти по потоку до самого верхнего замершего звена. В заданиях модуля соседняя нода-издатель заменяется учебной инъекцией: нода кладёт тестовые пакеты в свой канал сама (loopback, прецедент М4) — в живом конвейере вместо неё говорит sensor_sim.
Задания
0/12 заданий · 0/185 баллов
1. Зачем конвейер, а не одна нода
10 балл(ов)Зачем телеметрию стенда делят на узлы «сенсор / монитор / логгер», а не пишут одной большой нодой? Выберите вариант, который верно называет главный выигрыш разделения и объясняет, чем он не является: не лимитом фреймворка и не требованием транспорта.