Проекты*

Сервис для моделирования поведения и программирования квадрокоптеров в облачной среде «COEX-Cloud»

Работа призёра открытой городской научно-практической конференции «Инженеры будущего» по направлению «Инженеры» в секции «Интеллектуальные робототехнические системы, беспилотные аппараты» среди работ учащихся 10-11 классов

Направление работы: Интеллектуальные робототехнические системы
Авторы работы: ГБОУ Цифровая школа
Предметы: Физика, Математика, Информатика, Технология
Классы: 10 класс
Мероприятия: Открытая городская научно-практическая конференция «Инженеры будущего» по направлению «Инженеры» 2022 года

Актуальность

Использование БПЛА всё актуальнее с каждым годом. Согласно исследованию «Drone Investement Report 2020», за 2020 год мировой рынок услуг дронов вырос более чем на 50 %.

С каждым годом всё больше юных инженеров, школьников и студентов начинают интересоваться сферой программирования и пилотирования БПЛА. Чтобы попробовать себя в управлении БПЛА, не обязательно покупать настоящий дрон – в нашем мире существуют технологические решения, которые позволяют моделировать поведение дронов в виртуальной среде (далее – VR).

Цель

Создать облачный сервис для моделирования поведения БПЛА с учётом всех недостатков TheConstructSim.

Задачи

  1. Создать образ системы (Ubuntu 20.04), который будет содержать в себе всё необходимое ПО для симуляции и программирования.
  2. Запустить виртуальные машины (далее – ВМ) на облачных серверах (далее – облако) для обеспечения постоянного бесперебойного доступа к рабочим средам.
  3. Написать веб-приложение (Python 3), которое будет предоставлять доступ ко всем необходимым приложениям, запущенным на ВМ.

Оснащение и оборудование, использованное при создании работы

  • Персональный компьютер с установленным ПО (Python, MongoDB)
  • COEX Clover (Клевер) 4 Code – конструктор программируемого квадрокоптера

Описание

Работа над проектом состояла из следующих этапов.

  1. Концепция реализации и предполагаемый пользовательский опыт. В качестве первого устройства для моделирования в облаке был выбран квадрокоптер компании CopterExpress Clover4Code, так как он является одним из флагманов на рынке образовательных дронов в РФ, а также имеет открытый исходный код.

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

  1. Техническая реализация. Пользовательский опыт прорабатывали исходя из концепции «Всё просто и понятно». Для полноценного рабочего сервиса автору необходимо было спроектировать множество дочерних сервисов (микросервисная архитектура).

  1. Приложение-маршрутизатор («Route-Manager»). Авторы упростили авторизацию до одного шага: ввели код доступа ВМ. Код доступа является уникальным для каждого сервера (каждой ВМ).

Чтобы получить доступ к альфа-версии сервиса, стороннему пользователю необходимо отправить электронное письмо с заполненной заявкой на почтовый адрес recieve-code@coex-cloud.ru.

После нажатия кнопки «Подключиться» приложение-маршрутизатор делает запрос к базе данных. Если в базе находится ВМ с таким кодом доступа, маршрутизатор перенаправляет пользователя в интерфейс ВМ.

  1. Прикладной интерфейс Яндекс.Облака («YC-API»). Провайдер серверов – компания, которая предоставляет серверы или виртуальные машины в аренду. Автор выбрал провайдер Яндекс Облако (далее – YC, сокр. «Yandex Cloud»), т. к. стоимость аренды необходимых ВМ у других провайдеров выше в несколько раз.

YC предоставляет доступ к API (прикладному интерфейсу) управления ресурсами «Compute Cloud». С помощью Python 3 автор разработал приложение, которое упрощает взаимодействие с облаком.

  1. Облачная база данных («MongoDB»). В качестве системы управления базами данных (далее – СУБД) для всего сервиса была выбрана MongoDB. No-SQL база данных подходила больше всего, т. к. в ней легко можно добавлять дополнительные поля в отдельные записи, что открывает простор для тестирования новых функций. Для подключения и создания запросов базе данных автор использовал специальную библиотеку ODM для Python-pymodm.
  2. Удалённый рабочий стол («Clover-OS»). Интерфейс удалённого рабочего стола представляет собой веб-приложение, созданное на фреймворке Flask. Все окна представляют собой элементы IFRAME языка разметки HTML – элементы IFRAME позволяют отображать одну веб-страницу внутри другой. Каждое окно с программой можно «растягивать», а также «перетаскивать» за его «шапку».

На странице работает код на JavaScript, который управляет изменением размера окна, а также меняет параметр Z-INDEX, отвечающий за номер «слоя» элемента на странице.

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

  1. Разработка инструкции по эксплуатации
    1. Вход на сайт и ввод кода доступа
    2. Статус сервера
    3. Авторизация в консоли
    4. Запуск программ через Blocks (Blockly)
    5. Запуск программ на Python
    6. Перезапуск среды
  2. Экономическое обоснование и результаты разработки

Результаты работы/выводы

В результате работы над проектом автору удалось успешно решить практически все задачи, которые он ставил перед собой.

Перспективы использования результатов работы

В перспективе автор запланировал

  • добавление новых отечественных программируемых робототехнических устройств,
  • оптимизацию использования серверов – запуск нескольких рабочих столов на 1-м сервере,
  • внедрение Kubernetes для автоматического масштабирования сервиса.

Разработанный сервис может быть использован на всероссийских соревнованиях, хакатонах и олимпиадах в качестве среды для моделирования поведения дронов перед реальным запуском (например, CopterHack, Олимпиада НТИ).