Skip to content

Repository files navigation

robot-orchestrator

Программа, которая управляет роботом на плате Orange Pi 5 Plus + микроконтроллер STM32.

Кто это и за что отвечает

robot-orchestrator — это оркестратор и supervisor робота: единственный процесс, который стартует первым при подаче питания, приводит систему в рабочее состояние и дальше следит за жизненным циклом всех остальных компонентов. Роли:

  • Health-check оборудования — на каждом старте опрашивает камеру, микрофон, сетевое подключение и микроконтроллер, и знает, в каком они состоянии.
  • Деплой и обновление зависимых репозиториев — атомарно подтягивает свежие версии остальных программ робота (веб-интерфейс, голосовой модуль), если в них что-то изменилось.
  • Прошивка и верификация MCU — при необходимости пересобирает и прошивает микроконтроллер, затем проверяет, что прошивка встала корректно.
  • Process supervisor — запускает сервисы робота в порядке зависимостей и перезапускает упавшие (с backoff), то есть выполняет ту же роль, что systemd/supervisord, но со знанием специфики этого проекта.
  • Boot UI — отображает на экране робота состояние загрузки и текущий режим работы.
  • Admin-панель — веб-интерфейс по сети для наблюдения и ручного управления: логи, перезапуск сервисов, обновление репозиториев и т.п.
  • Self-update — умеет обновлять сам себя: новую версию оркестратора готовит автоматически, но переключение на неё требует ручного подтверждения.

Если какого-то ресурса не хватает (нет камеры, нет интернета, не подключён микроконтроллер и т.д.) — робот не падает, а переходит в деградированный (non-prod) режим с понятным указанием причины.

Как это работает — простыми словами

  1. Включили питание — оркестратор запускается первым.
  2. Он проверяет всё оборудование: камеру, микрофон, интернет, микроконтроллер.
  3. Если каких-то настроек/секретов ещё нет — включает камеру и ждёт, когда оператор покажет ей заранее подготовленный QR-код, и считывает из него всё нужное.
  4. Скачивает и подготавливает актуальные версии программ робота.
  5. Если нужно — обновляет прошивку микроконтроллера и проверяет, что она встала правильно.
  6. Запускает все программы робота в нужном порядке.
  7. Если всё хорошо — робот полностью готов к работе. Если чего-то не хватает — робот всё равно работает, но в урезанном режиме, и это видно на экране.
  8. Дальше оркестратор просто следит: если какая-то программа упала — перезапускает её; если вышла новая версия самого оркестратора — готовит её и ждёт, когда человек подтвердит переход на неё.
  9. В любой момент можно зайти на веб-страницу оркестратора по сети и посмотреть, что происходит, или что-то перезапустить/обновить вручную.