Модуль 12 · итоговый проект
Итоговый проект: телеметрический стенд «Модуля»
5 блок(ов) теории · 12 заданий · 175 баллов
Выпускная работа — телеметрический стенд «Модуля»: пять нод в полном контуре «измерение → решение → команда → журнал». sensor_sim задаёт ритм: таймер 1 Гц публикует заряд Float32 в /telemetry/battery (старт 100.0, дренаж 0.1 за тик), спутники Int32 в /telemetry/sats и линк Bool в /telemetry/link. battery_monitor подписан на заряд и переводит его в уровень Int32 в /telemetry/battery_level: 0 — норма, 1 — низко (заряд ≤ 20), 2 — критично (≤ 10); пороги — константы, учебная конструкция курса.
link_watchdog сторожит линк: потеря (False) — ровно одна команда String «RTL» в /drone/command, возврат True — молчание: команда событийная, по случаю. alert_relay — реле-фильтр: перепубликует тревожные уровни алертами в общий канал /telemetry/alerts; это единственное звено проекта без нового кода — механику условной перепубликации курс уже отработал. event_logger замыкает контур: подписки на /telemetry/battery_level и /drone/command, счётчики событий, итоговая сводка.
Система собирается прогонами: один прогон = один граф. Каждое код-задание оставляет в шине граф своей ноды, терминалы читают последний прогон; полный конвейер пяти нод в одной шине живёт только на реальной машине — там ноды поднимают вместе launch-файлом (концепт модуля 9, в моке не исполняется). Зелёный прогон каждой ноды — доказательство её звена, а финальное расследование терминала учит находить разрыв канала в живом графе.
Проект дописан, тесты зелёные — и на этом курс заканчивается: дальше железо, а перенос на железо — отдельная инструкция «Модуля», вне рамок курса. Чек-лист первого реального запуска, который курс требует помнить: первый полёт — со страхующим пилотом, готовым перехватить управление; хозяин отказоустойчивости — полётник с ArduPilot, а не ноды ROS 2: их RTL-команда — просьба, которую полётник исполняет по своим правилам; геозона — ограничение зоны полётов в настройках автопилота — включена до взлёта; линк проверен до arm — вооружать моторы под мёртвым линком нельзя. Зелёные тесты симуляции ни один пункт чек-листа не отменяют: мок проверяет логику, не безопасность.
Числа проекта: дренаж 0.1 за тик на частоте 1 Гц — от 100.0 до порога 20 проходит 800 тиков, восемьсот секунд, около тринадцати минут; пороги 20/10, коридор спутников 8–12 — учебные конструкции курса, у настоящего АКБ пороги задаёт производитель ячеек. И честная рамка проекта: четыре ноды вы напишете сами, сводка логгера дублируется сообщением в шину (печать проверялке невидима), симуляция прогона исполняет граф, но не бизнес-логику порогов — наблюдения читаются по метрикам движка.
Задания
0/12 заданий · 0/175 баллов
1. Состав проекта: пять узлов, не монстр
10 балл(ов)Проект начинается с состава узлов. Из четырёх составов стенда выберите тот, где правило «одна нода — одна ответственность» выполнено честно: измерение, решение о порогах, страховка линка, фильтр алертов и журнал живут в раздельных узлах, и нет «нод-монстров», валящих всё в один процесс.