Необходимо создать среду моделирования на базе движка Unity для отладки и оценки математического обеспечения. Предлагаем посмотреть на готовые решения и выбрать самое хорошее, затем дописать необходимый функционал. В результате должен появится простой и понятный фреймворк, позволяющий разным математикам/программистам подключать свои модели и алгоритмы поведения коптеров.
За основу можно взять:
https://assetstore.unity.com/packages/tools/physics/drone-controller-full-pc-joystick-mobile-111163
https://assetstore.unity.com/packages/tools/physics/drone-simulation-physics-inputs-gui-156990
https://habr.com/ru/post/267791/
Версия 1.0 (MVP):
- Разработать в Unity модель квадрокоптера - берём готовое решение и добавляем функционал.
- Подключить к модели квадрокоптера какой-нибудь реальный opensource полетный контроллер. Какая сложность? Примеры контроллеров:
- Обеспечить простую заменяемость одного полетного контроллера другим.
- В среде Unity необходимо сэмулировать датчики: GPS, барометрический высотомер, ультразвуковой датчик, модуль связи с определением расстояния до другого модуля связи, трехосевой гироскоп, трехосевой акселерометр, компас, датчик воздушной скорости. Для каждого эмулированного датчика необходимо задавать точность возвращаемых сигналов (данных).
- Каждый коптер должен знать расстояние до соседних коптеров (эмулирование модуля связи с определением расстояния до другого модуля связи):
- Определение расстояния между центрами коптеров происходит автоматически.
- Необходимо добавлять или вычитать из расстояния рандомное значение в определенном интервале. То есть, нужно иметь возможность определения расстояния с указанной точностью, например 10%.
- Расстояние до соседних коптеров должно определяться только в заданном радиусе, то есть видеть расстояние друг до друга могут только соседние коптеры.
- Обеспечить возможность задания кол-ва квадрокоптеров на карте.
- Коптеры появляются на “земле”, располагаются в виде квадрата или прямоугольника. Например, выбираем 100 коптеров, они появляются на карте в квадрате 10 на 10.
- Должна быть возможность задания расстояния между коптерами при появлении.
- Игровой веб UI должен обеспечить следующий функционал (можно взять за основу какой-нибудь похожий игровой UI и допилить его, может из какой-нить стратегии или MOBA):
- Задание кол-ва коптеров для появления на карте
- Задание точки появления коптеров кликом мышки
- Выбор группы коптеров выделением мышки - прямоугольное выделение
- Задание тега (типа) группы выделенных коптеров
- Выбор группы коптеров с конкретным тегом (типом) нажатием кнопки на клавиатуре
- Назначение алгоритмов поведения на группу коптеров - можно выбрать разные алгоритмы для разных групп коптеров.
- Задание точности определения расстояния до соседнего коптера
- Задание радиуса определения соседних коптеров
- Задание расстояния между коптерами при появлении.
- Обеспечить возможность задания алгоритмов движения коптеров. Для отладки предлагаем использовать такой сценарий:
- Задаем кол-во коптеров - они появляются на игровом поле
- Кликаем на любую точку карты и коптеры начинают летать вокруг этой точки с сохранением расстояния до точки (описывают окружность)
- Должна быть возможность группировать коптеры и задавать отдельные алгоритмы движения для разных групп. Например, выделяем часть коптеров и даём задание летать по часовой стрелки, оставшимся коптерам даём задание летать против часовой стрелки.
- Обеспечить простоту подключения алгоритмов в Unity из внешних файлов или иным путём.
- Написать readme
Версия 2.0:
- Добавить компьютерное зрение
- Добавить возможность определения расстояния до объектов
- Добавить определение объектов на карте
https://habr.com/ru/post/267791/
https://habr.com/ru/post/269007/
https://habr.com/ru/post/271337/