Виртуальный полигон для наземной техники
Виртуальный полигон для наземной техники
В этом примере мы показываем, как создать виртуальный полигон для обработки алгоритмов фильтрации команд с пульта с возможностью контроля в реальном времени не только по графикам, но и по трехмерной модели.
Запустить пример
Выберите удобный для вас сценарий запуска и запустите сервер визуализации, описанный в файле graphics_app.jl.
# Запустить сервер с приборной панелью в отдельном окне
app = engee.genie.start("$(@__DIR__)/graphics_app.jl", log_file="$(@__DIR__)/log.txt", open_url=true);
# Открыть приборную панель под кодовой ячейкой
#app = engee.genie.start("$(@__DIR__)/app.jl", log_file="$(@__DIR__)/log.txt")
#display("text/html", """<iframe src="$(string(app.url))" width="650" height="320" style="border: none;"></iframe>""";)
# Получить ссылку для отправки на другой ПК или запуска в отдельном окне
# display("text/html", """<a href="$(string(app.url))" target="_blank" rel="noopener noreferrer">Открыть в отдельном окне</a>""")
Для остановки приложения выполните команду:
engee.genie.stop("$(@__DIR__)/graphics_app.jl");
Перезагрузка приложения
Рекомендуем перезагружать сервер каждые несколько часов чтобы избежать утечки памяти, однако всё зависит от ваших требований и от сложности модели.
Автономная модель
В примере есть автономная модель для отработки циклограмм и, например, создания алгоритмов управления с обратной связью.
Чтобы увидеть работу модели в трехмерном пространстве, запустите сервер визуализации параллельно в моделью.
Если запустить модель и сервер для визуализации, вы увидите, как трехмерная модель на клетчатом фоне реализует алгоритм управления: угол азимута меняется вслед за поворотом руля, который проходит через уравнение , где - скорость, - поворот руля, а - производная азимута транспортного средства в глобальной системе координат. Через интегрирование мы находим азимут, переводим его из радиан в градусы и ограничиваем сверху и снизу значением 30 градусов, после чего он отправляется на визуализацию.
Сервер визуализации применяет сглаживание, но только для облегчения восприятия (это исключает дерганный вывод изображения). Вся динамика просчитывается в модели engee.

Дискретизация блоков
Если дискретизация входных блоков выставлена в 0 или в Inf (для констант), есть шанс что и коммуникация по UDP будет осуществляться через те же интервалы, поэтому рекомендуем выставлять дискретизацию входных блоков вручную (в данной модели это 0.5 с).
В эту модель подаются сигналы той же амплитуды, что и при управлении с джойстика. Полный газ соответствует нулю на ручке тяги (она инвертирована). Движение вперед соответствует нулю на входе, который обычно поступает от тумблера на джойстике. Угол поворота руля должен находиться в пределах от 0 до 255
Модель для работы с джойстиком
Если у вас есть настроенный джойстик для управления этой моделью, можете запустить следующую модель и поуправлять транспортным средством вручную.
Перед запуском модели
Обязательно запустите и выполните подключение клиентской программы Engee.Интеграции, иначе с джойстика будут приходить только значения 0x00 по всем каналам. Как это сделать - см. Документацию.
Ниже вы видите модель vehicle_control_app_with_usb_controller, которая создана для работы с конкретным USB контроллером:
.png)
Ручка "тяги" отвечает за скорость, ручка крена - за поворот руля. Тумблер на джойстике отвечает за реверс движения. Результат выполнения этой модели:
.gif)
Заключение
Создание трехмерной симуляции в Engee не требует дополнительных программ, если вам не нужны продвинутые функции манипуляции 3D объектами, CAD функции, расчет массо-габаритных характеристик или учет сложных моделей движения. Если трехмерная сцена вам нужна для отображения происходящего в модели, сервера созданного при помощи инструментария Engee-приложений будет вполне достаточно.