«Arduino или Raspberry Pi?» — ложный выбор, если они пытаются занять разные роли. Полезнее начать не с платы, а с движения: кто формирует намерение, кто проверяет свежесть команды, кто исполняет её локально, кто наблюдает состояние и какой путь переводит систему в предсказуемое состояние при сбое.

Четыре роли
| Роль | Типичная задача | Чего она не должна обещать |
|---|---|---|
| Высокоуровневый компьютер | маршрут, пользовательский интерфейс, запись данных, тяжёлые алгоритмы | точное локальное исполнение при любой задержке ОС |
| Микроконтроллер | быстрый ввод-вывод, локальный тайм-аут, чтение датчиков, детерминированная логика | функциональную безопасность сам по себе |
| Драйвер привода | преобразование команды в ток и реакции на свои fault-состояния | понимание пользовательской задачи |
| Независимое ограничение энергии | прекращение опасного действия в заявленных условиях | замену оценки риска и испытания |
ROS 2 связывает узлы сообщениями; QoS влияет на доставку, но не отменяет необходимость определить, что делать при отсутствии свежего сообщения. micro-ROS помогает связывать ресурсоограниченные устройства с ROS 2, но не делает любую плату взаимозаменяемой и не превращает watchdog в E‑Stop.
Учебный контракт команды движения
намерение → команда → локальная проверка свежести → разрешение привода → наблюдаемое состояние. Для каждой стрелки запишите формат, единицы, допустимый диапазон, тайм-аут и поведение при ошибке. При невалидном или отсутствующем входе учебный пример должен выдавать permit_motion = false; проверять такую логику безопаснее в симуляции или со снятой исполнительной энергией.
Не публикуйте распиновку или «универсальную» схему управления мотором: она зависит от конкретных устройств. У «Зари 40» эта статья не описывает установленную архитектуру, а помогает будущей версии не смешать роли.
Источники
Дальше: что делать при потере связи.