README.md

Общая информация

Этот проект представляет собой заготовку для задачи “Дрон-огнеборец” и предназначен для получения представления об интерфейсе взаимодействия компонентов, возможных способах реализации их минимального функционала, его объеме и т.д.

Оговорка разработчика и условия использования

Пример является отправной точкой работы, но не обязательно является образцом “хорошо” или “правильно” и может быть изменен и расширен участниками в своих реализациях.

Применять только в учебных целях. Данный код может содержать ошибки, авторы не несут никакой ответственности за любые последствия использования этого кода. Условия использования и распространения - MIT лицензия (см. файл LICENSE).

Настройка и запуск

Предполагается, что настройка и подготовка хостовой и гостевой машины были осуществлены в соответствии с инструкциями, приведенными в подготовительном курсе https://stepik.org/course/133991/promo.

Системные требования

Данный пример разработан и проверен на ОС Ubuntu 22.04, авторы предполагают, что без каких-либо изменений этот код может работать на любых Debian-подобных OS, для других Linux систем. Для MAC OS как минимум необходимо использовать другой менеджер пакетов. В Windows необходимо самостоятельно установить необходимое ПО или воспользоваться виртуальной машиной с Ubuntu (также можно использовать WSL версии не ниже 2).

Используемое ПО

Стандартный способ запуска демо-версии предполагает наличие установленного пакета docker, а также docker-compose. Для автоматизации типовых операций используется утилита make и curl.

Для работы с кодом примера рекомендуется использовать Vim.

Настройка окружения и запуск примера

Подразумевается наличие развернутой по предоставленному образцу машины с установленным и настроенным ПО, например, docker и docker-compose, с выбранным интерпретатором (детальные инструкции по настройке среды разработки представлены в подготовительном курсе, ссылка на который приведена выше).

Для запуска примера рекомендуется использовать следующую комбинацию команд в терминалах 1 и 2:

1.1 (пере)сборка docker-образов

make docker

1.2 запуск примера: в контейнерах будут развернуты серверы, готовые к приему команд и начнут генерироваться и поступать необходимые сигналы

make run

Разработка

Все необходимые компоненты для разработки можно подсмотреть в файле Dockerfile (названия пакетов могут различаться).

Для удобства разработки можно собирать всё у себя на хост системе, без контейнеров, достаточно запустить сборку:

  • Для Ubuntu 22.04 make prepare && make

  • Для Ubuntu 20.04 make prepare-20 && make

Если требуется брокер, то можно запустить контейнер с ним (будет доступен с хост системы):

make mosquitto

Для тестирования компонентов посылать сообщения в очередь можно так:

mosquitto_pub -h "127.0.0.1" -t "monitor" -m "navigator,aggretation,coordinates"

Подписаться на очередь так:

mosquitto_sub -h "127.0.0.1" -t "monitor"

Дополнительные материалы для разработчика

Тестирование

  1. Запуск всех автоматических тестов:

make tests

  • Запускает сборку docker образа (один для всех компонентов)
  • Собирает при сборке все компоненты
  • Автоматически запускаются unit tests (включающие policy tests)
    • Отдельно запустить policy tests можно при помощи make policy-tests
  • docker-compose проверяет не запущены ли уже контейнеры
  • docker-compose запускает все необходимые компоненты
  • запускаются e2e тесты
    • проверяется полётное задание (А) описанное в документе Uchebnyy_primer_-_BLA_Ogneborets_arhitektura.pdf
    • проверяется неавторизованное полётное задание (B)
  • docker-compose останавливает все контейнеры

Работа make tests в SVG видео

  1. Запуск системы

make run

  • Запускает сборку docker образа
  • docker-compose запускает все контейнеры
  • журнал вывода попадет на экран
  • зайти на интерфейс FPS http://localhost:8081
  • запустить задание A, подождать окончание (журнал на главной странице выводит статус)
  • запустить задание B, подождать окончание

Работа make run в SVG видео

Описание

FireFighter drone prototype using C++ and mosquitto message broker

Конвейеры
0 успешных
0 с ошибкой