Отчет смотреть тут
Этот проект представляет собой заготовку для задачи "Дрон-инспектор" и предназначен для получения представления об интерфейсе взаимодействия компонентов, возможных способах реализации их минимального функционала, его объеме и т.д.
Пример является отправной точкой работы, но не обязательно является образцом "хорошо" или "правильно" и может быть изменен и расширен участниками в своих реализациях.
Применять только в учебных целях. Данный код может содержать ошибки, авторы не несут никакой ответственности за любые последствия использования этого кода. Условия использования и распространения - MIT лицензия (см. файл LICENSE).
Предполагается, что настройка и подготовка хостовой и гостевой машины были осуществлены в соответствии с инструкциями, приведенными в подготовительном курсе https://stepik.org/course/133991/promo.
Данный пример разработан и проверен на ОС Ubuntu 20.04.5, авторы предполагают, что без каких-либо изменений этот код может работать на любых Debian-подобных OS, для других Linux систем. Для MAC OS как минимум необходимо использовать другой менеджер пакетов. В Windows необходимо самостоятельно установить необходимое ПО или воспользоваться виртуальной машиной с Ubuntu (также можно использовать WSL версии не ниже 2).
Стандартный способ запуска демо-версии предполагает наличие установленного пакета docker, а также docker-compose. Для автоматизации типовых операций используется утилита make, хотя можно обойтись и без неё, вручную выполняя соответствующие команды из файла Makefile в командной строке.
Другое используемое ПО (в Ubuntu будет установлено автоматически, см. следующий раздел):
- python (желательно версия не ниже 3.8)
- pipenv (для виртуальных окружений python)
Для работы с кодом примера рекомендуется использовать VS Code или PyCharm.
В случае использования VS Code следует установить расширения
- REST client
- Docker
- Python
Подразумевается наличие развернутой по предоставленному образцу машины с установленным и настроенным ПО, например, docker и docker-compose, с выбранным интерпретатором (детальные инструкции по настройке среды разработки представлены в подготовительном курсе, ссылка на который приведена выше).
Для запуска примера рекомендуется использовать следующую комбинацию команд в терминалах 1 и 2:
0.0 (пере)настройка окружения (один раз для проекта, перед первым запуском и выбором интерпретатора)
make prepare
1.1 (пере)сборка docker-образов
docker-compose build --force-rm
или
make rebuild
1.2 запуск примера: в контейнерах будут развернуты серверы, готовые к приему команд и начнут генерироваться и поступать необходимые сигналы
make run
1.3 просмотр логов: в консоли будет показан лог работы контейнеров
docker-compose logs -f --tail 100
или
make logs
1.4 тестирование (будет запущен тестовый сценарий проверки работы основного функционала системы)
make test
Можно пользоваться запросами из файла request.rest
1.5 завершение работы:
docker stop $(docker ps -q)
или
make stop
Система архитектурно выглядит следующим образом:
Название | Назначение | Комментарий |
---|---|---|
ATM (Air Traffic Manager, Система организации воздушного движения) | Имитатор центральной (возможно, государственной) системы управления движением дронов в общем воздушном пространстве. Получает информацию о местоположении каждого дрона, подтверждает полетное задание. | при желании можно настроить визуализации положения дронов, но в рамках хакатона это побочный функционал, на который не стоит тратить время |
FPS (Flight Planning System, Система планирования полетов) | Имитатор сервиса распределения задач по дронам. Позволяет согласовывать полетное задание с системой ATM, отправлять дронов на задание, задавать режимы полёта. Получает данные телеметрии от дрона. | - |
drone (Drone, Дрон) | имитатор дрона-инспектора, получает команды от операторов через FPS, выполняет их, обрабатывает и передает данные от встроенных датчиков на пульт управления, а также информацию о местоположении в АТМ. | - |
Диаграмма последовательности этого примера выглядит следующим образом: