Skip to content

Архитектура

Пока у робота два-три компонента, вопрос стоит просто: «работает датчик или нет». Как только деталей становится десять, главный вопрос меняется. Теперь важно не «работает ли деталь», а работают ли все детали вместе — не отбирая друг у друга питание, не мешая на общей линии данных и не выходя из строя целиком, когда ломается что-то одно.

Ответы на эти вопросы и есть архитектура — набор решений о том, как части робота соединены и как они договариваются между собой.

Ключевая мысль модуля. Робот — это не набор деталей, а система. Хорошая система остаётся понятной и управляемой, даже когда становится большой.

Три вопроса, на которые отвечает архитектура

Любая архитектура — от школьного робота на столе до промышленного манипулятора — отвечает на одни и те же три вопроса.

Как части общаются? Датчики, мозг и моторы обмениваются сообщениями — нужно выбрать линию связи и «язык»:

Откуда берут энергию? Каждый компонент потребляет ток — питание считают заранее, а не «как получится»:

Что будет, когда что-то сломается? Датчик врёт, батарея садится, программа зависает — робот должен пережить это достойно:

Три принципа хорошей архитектуры

Разделение ответственности. Каждая часть делает свою работу и не лезет в чужую. Блок, который читает датчики, не должен решать, куда ехать. Блок, который управляет моторами, не должен разбирать данные с камеры. Когда роли перемешаны, любое изменение ломает что-то в неожиданном месте.

Наблюдаемость. Ты всегда должен иметь возможность понять, что робот сейчас делает и почему. Индикатор состояния, запись событий, «чёрный ящик» — это не украшение, а инструмент, без которого невозможно найти причину сбоя.

Запас прочности. По питанию, по прочности проводов, по времени реакции. Робот, спроектированный впритык, ломается на первой же неожиданности.

Самая частая ошибка — «всё в одном». Один огромный файл кода, одна батарея на всё, один датчик без запасного. Такая конструкция работает ровно до первой проблемы, а потом отказывает целиком и без предупреждения.

Робот как набор слоёв

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

    • пульт / веб-страница управления
    • индикация состояния, журнал событий
    • аварийная остановка (красная кнопка)
    • навигация: куда ехать
    • принятие решений, состояния робота
    • управление моторами (ШИМ)
    • чтение и фильтрация датчиков
    • моторы, энкодеры
    • датчики
    • вычислитель и питание

Заменить датчик — меняется только драйвер, всё остальное не трогаем. Улучшить алгоритм — меняется только логика. Проверить моторы — можно вообще без верхних слоёв. Это и есть выгода от архитектуры.

Сквозной пример модуля: робот-исследователь

Через все страницы этого раздела мы проектируем одного и того же робота — колёсного разведчика, который ездит по комнате, объезжает препятствия и передаёт данные на компьютер. На страницах про связь выбираем ему линии обмена, на страницах про питание — считаем батарею и расход, на странице про резервирование — защищаем от вранья датчиков.

Код — в отдельном курсе. Архитектура отвечает на вопрос «как устроено и почему так». Конкретные прошивки, драйверы и программные паттерны (конечный автомат, издатель-подписчик) вынесены в отдельный практикум по программированию компонентов. Здесь мы принимаем инженерные решения, там — воплощаем их в коде.

С чего начать

Если проходишь этот блок впервые — начни со связи и питания: это фундамент, без которого не поедет ни один робот. Резервирование даёт глубину и пригодится, когда робот станет сложнее.

Чего здесь пока нет. Тема безопасности (аварийная остановка, правила работы с мощными приводами, защита оператора) в этом разделе ещё не написана — она важна и появится отдельной страницей. Пока по технике безопасности при работе с электричеством стоит смотреть курс электротехники, где ТБ разобрана в каждом уроке.