Как и зачем мы создаем собственную платформу для управления VR-симуляциями

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Хабр, привет! С вами снова Денис Колупаев, руководитель разработки AR/VR в “Северстали”. 

С тех пор как я рассказывал о внедрении у нас AR/VR-симуляций, прошел почти год (и по этому поводу мы даже сделали поздравительное видео), и за это время у нас появилось много новостей. После внедрения технологии и увеличения количества симуляций мы столкнулись с проблемой: а как лучше всего управлять этим парком? Мы пробовали разные решения, но в результате разработали свою платформу для управления AR/VR-симуляциями. Если вас это заинтересовало — за подробностями прошу под кат.

Что не так с разрозненными симуляциями

Наши симуляции — это по большей части тренажеры, которые обучают специалистов нужным навыкам: взятие пробы металла, выход из шахты, управление коксовой батареей и так далее. Иногда это могут быть туры-360 или другие простые обучающие симуляции.

После внедрения AR/VR у нас заметно начало расти количество симуляций и пользователей. Сейчас у нас уже есть 15 обучающих программ, через которые проходят тысячи человек. Поэтому начала назревать новая задача — как всем этим управлять. Проблема в том, что каждый тренажер — это отдельная программа, а это несет в себе определенные минусы:

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

  1. Программы сложно обновлять. Пользователю нужно как-то узнать, что у симуляции появилась новая версия и ее нужно обновить. При этом обновление проходит так же, как установка: мы отправляем новую версию архива, пользователь скачивает ее, а старую удаляет.

  1. Пользователь может забыть, скачивал ли он уже такую симуляцию, а если скачал — то куда сохранил. В итоге у него может быть 2 экземпляра этой программы, при этом он тратит время на поиски и скачивание.

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

  1. В корпоративной сборке Windows по умолчанию не установлены необходимые для работы библиотеки, вроде DirectX и C++ Runtime. Поэтому пользователям приходится либо самим их устанавливать (а это могут далеко не все), либо идти за помощью к системным администраторам.

Мы поняли, что нам нужна платформа для централизованного управления всеми симуляциями. Пользователи должны просто запускать одно приложение, которое само найдет и скачает нужные программы, проследит, чтобы они были актуальны, и отправит результат на корпоративный портал. Это должно быть чем-то вроде Steam для мира AR/VR-обучения. Почему не SCCM? К сожалению, при его использовании возникает несколько проблем:

  1. Задержка между заявкой на установку пакета SCCM на ПК (с момента добавления имени ПК в коллекцию на установку и до окончания установки) может достигать 2-х часов. В клиенте платформы же сразу начинается загрузка дистрибутива.

  2. У пользователя нет инструмента отследить состояние загрузки и установки, он может определить только факт окончания установки. В клиенте платформы процесс загрузки и установки нагляден.

  3. Через SCCM неудобно управлять библиотекой тренажеров на ПК, а в клиенте можно перенести библиотеку на другой раздел диска, например, или вручную удалить лишние тренажеры, самостоятельно контролируя свободное дисковое пространство, даже при ограниченных правах пользователя.

Мы попробовали несколько готовых платформ, но в итоге нам ничего не подошло. В большинстве случаев у них не было нужных функций, а часть платформ были довольно сырые. Другой важный фактор — цена. Некоторые платформы требуют покупать лицензию на каждого отдельного пользователя, а это выливается в довольно крупную сумму. 

Поэтому мы решили разрабатывать собственное решение. Так мы сможем реализовать все нужные для нас функции, при этом сэкономить на дорогих лицензиях.

Что же у нас получилось

Схематично наша платформа выглядит так:

Клиент. Приложение, которое устанавливается на машинах пользователей. Во время его установки дополнительно ставятся все нужные библиотеки, вроде DirectX или C++ Runtime. Пользователям не нужно самим искать этот клиент — он скачивается, когда пользователь заходит на корпоративный портал в раздел «Обучение» и нажимает кнопку «Начать симуляцию».

Авторизация проходит автоматически на основе учетной записи Windows AD. Пользователь может просмотреть все доступные для него обучения, увидеть историю прохождения симуляций и подробную информацию по каждому обучению. 

После прохождения симуляции клиент автоматически отправляет результаты на сервер.

Сервер. Состоит из интерфейса для администратора портала и бэкенда, который обрабатывает все запросы от клиентов и портала. Также через SAP PI он интегрируется с ERP-системой SAP HCM: считывает назначенные пользователю курсы и отправляет результаты обучения.

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

Сами симуляции хранятся в файловом хранилище, а в базе данных хранится метаинформация о них: описание, версия, дата последнего обновления и т.п.

Симуляция глазами пользователя

Лучше один раз увидеть, чем сто раз прочитать. Вот небольшая демонстрация, как это выглядит для пользователя. Рекомендуем включить субтитры, в них мы комментируем основные моменты.

Чего мы добились и что нам еще предстоит

Основной результат: мы запустились в производстве, сейчас проходят обучение работники производства плоского проката, а также цеха проката и обжига. До конца года мы планируем перевести все наши тренажеры на эту платформу.

Основные планы на следующий год:

  • Доработка под мобильные платформы. Это не только телефоны и планшеты, но в том числе и VR-гарнитуры вроде Oculus Quest 2.

  • Улучшение интерфейса клиентского приложения: доработка фильтров и отчетов для пользователя.

  • Развитие сбора статистики. Например, мы хотим начать собирать тепловые карты: где пользователь ошибался чаще всего, на чем акцентировал внимание, где больше всего провел времени и т.п. Это позволит улучшать наши симуляции.

  • Территориальное разделение хранилища. Симуляции весят по несколько гигабайт. Если скачивать их из локальной сети, пользователям достаточно подождать несколько минут. Но, например, передача трех гигабайт из Череповца в Белгород может занять много времени. Мы планируем разделить хранилища на несколько территориальных реплик и настроить между ними синхронизацию.

  • Подготовка для внешнего использования. Мы хотим делиться своим решением и планируем подготовить платформу для работы у внешних клиентов. Нам предстоит подумать над адаптацией под работу в контейнерах, интеграцией с различными системами учета помимо SAP и т.п.

Буду рад узнать о вашем похожем опыте, или советам, что по вашему мнению можно еще улучшить.

Источник: https://habr.com/ru/company/severstal/blog/598417/


Интересные статьи

Интересные статьи

Привет, Хабр! Хотим рассказать о том, как создать плагин Qt GeoServices и использовать его в своём приложении на ОС Аврора. В этом посте мы подробно объясним, как научить...
Светодиоды типа WS2812 очень популярны, ими удобно управлять, передавая по одному проводу команды для сотен светодиодов. Они имеют, с одной стороны, очень простой протоко...
Продолжаем рассказывать об эксплуатации Ceph. Сегодня поговорим о процессе восстановления данных и флагах, которые позволяют его контролировать: norebalance, nobackfill и norecover. Ст...
Статья ориентированна на людей, которые уже имеют понимание работы Vue, на котором основан Nuxt, поэтому я буду заострять внимание только на специфических для Nuxt вещах. Но даже если вы не знако...
Состояние используется для организации наблюдения за данными React-приложений. Состояния меняются по мере того, как пользователи взаимодействуют с приложениями. Когда пользователь выполняет некое...