Хабр, привет! С вами снова Денис Колупаев, руководитель разработки AR/VR в “Северстали”.
С тех пор как я рассказывал о внедрении у нас AR/VR-симуляций, прошел почти год (и по этому поводу мы даже сделали поздравительное видео), и за это время у нас появилось много новостей. После внедрения технологии и увеличения количества симуляций мы столкнулись с проблемой: а как лучше всего управлять этим парком? Мы пробовали разные решения, но в результате разработали свою платформу для управления AR/VR-симуляциями. Если вас это заинтересовало — за подробностями прошу под кат.
Что не так с разрозненными симуляциями
Наши симуляции — это по большей части тренажеры, которые обучают специалистов нужным навыкам: взятие пробы металла, выход из шахты, управление коксовой батареей и так далее. Иногда это могут быть туры-360 или другие простые обучающие симуляции.
После внедрения AR/VR у нас заметно начало расти количество симуляций и пользователей. Сейчас у нас уже есть 15 обучающих программ, через которые проходят тысячи человек. Поэтому начала назревать новая задача — как всем этим управлять. Проблема в том, что каждый тренажер — это отдельная программа, а это несет в себе определенные минусы:
Мы отправляем пользователям программы в виде архива. Они его распаковывают и запускают симуляцию. Чем больше пользователей и программ, тем больше запросов к нам приходит. Мы стали тратить больше времени на рутинную работу, которую нужно автоматизировать.
Программы сложно обновлять. Пользователю нужно как-то узнать, что у симуляции появилась новая версия и ее нужно обновить. При этом обновление проходит так же, как установка: мы отправляем новую версию архива, пользователь скачивает ее, а старую удаляет.
Пользователь может забыть, скачивал ли он уже такую симуляцию, а если скачал — то куда сохранил. В итоге у него может быть 2 экземпляра этой программы, при этом он тратит время на поиски и скачивание.
Все наши программы обучения сохраняют результат прохождения. Пользователям приходится вручную загружать этот файл на корпоративный портал обучения или отправлять ответственному менеджеру.
В корпоративной сборке Windows по умолчанию не установлены необходимые для работы библиотеки, вроде DirectX и C++ Runtime. Поэтому пользователям приходится либо самим их устанавливать (а это могут далеко не все), либо идти за помощью к системным администраторам.
Мы поняли, что нам нужна платформа для централизованного управления всеми симуляциями. Пользователи должны просто запускать одно приложение, которое само найдет и скачает нужные программы, проследит, чтобы они были актуальны, и отправит результат на корпоративный портал. Это должно быть чем-то вроде Steam для мира AR/VR-обучения. Почему не SCCM? К сожалению, при его использовании возникает несколько проблем:
Задержка между заявкой на установку пакета SCCM на ПК (с момента добавления имени ПК в коллекцию на установку и до окончания установки) может достигать 2-х часов. В клиенте платформы же сразу начинается загрузка дистрибутива.
У пользователя нет инструмента отследить состояние загрузки и установки, он может определить только факт окончания установки. В клиенте платформы процесс загрузки и установки нагляден.
Через SCCM неудобно управлять библиотекой тренажеров на ПК, а в клиенте можно перенести библиотеку на другой раздел диска, например, или вручную удалить лишние тренажеры, самостоятельно контролируя свободное дисковое пространство, даже при ограниченных правах пользователя.
Мы попробовали несколько готовых платформ, но в итоге нам ничего не подошло. В большинстве случаев у них не было нужных функций, а часть платформ были довольно сырые. Другой важный фактор — цена. Некоторые платформы требуют покупать лицензию на каждого отдельного пользователя, а это выливается в довольно крупную сумму.
Поэтому мы решили разрабатывать собственное решение. Так мы сможем реализовать все нужные для нас функции, при этом сэкономить на дорогих лицензиях.
Что же у нас получилось
Схематично наша платформа выглядит так:
Клиент. Приложение, которое устанавливается на машинах пользователей. Во время его установки дополнительно ставятся все нужные библиотеки, вроде DirectX или C++ Runtime. Пользователям не нужно самим искать этот клиент — он скачивается, когда пользователь заходит на корпоративный портал в раздел «Обучение» и нажимает кнопку «Начать симуляцию».
Авторизация проходит автоматически на основе учетной записи Windows AD. Пользователь может просмотреть все доступные для него обучения, увидеть историю прохождения симуляций и подробную информацию по каждому обучению.
После прохождения симуляции клиент автоматически отправляет результаты на сервер.
Сервер. Состоит из интерфейса для администратора портала и бэкенда, который обрабатывает все запросы от клиентов и портала. Также через SAP PI он интегрируется с ERP-системой SAP HCM: считывает назначенные пользователю курсы и отправляет результаты обучения.
Пользователям могут назначаться обязательные программы, и сами пользователи могут регистрироваться на интересные для них курсы. А администратор портала может назначать задания пользователю, просматривать более подробную аналитику по пользователям и курсам, загружать и обновлять симуляции.
Сами симуляции хранятся в файловом хранилище, а в базе данных хранится метаинформация о них: описание, версия, дата последнего обновления и т.п.
Симуляция глазами пользователя
Лучше один раз увидеть, чем сто раз прочитать. Вот небольшая демонстрация, как это выглядит для пользователя. Рекомендуем включить субтитры, в них мы комментируем основные моменты.
Чего мы добились и что нам еще предстоит
Основной результат: мы запустились в производстве, сейчас проходят обучение работники производства плоского проката, а также цеха проката и обжига. До конца года мы планируем перевести все наши тренажеры на эту платформу.
Основные планы на следующий год:
Доработка под мобильные платформы. Это не только телефоны и планшеты, но в том числе и VR-гарнитуры вроде Oculus Quest 2.
Улучшение интерфейса клиентского приложения: доработка фильтров и отчетов для пользователя.
Развитие сбора статистики. Например, мы хотим начать собирать тепловые карты: где пользователь ошибался чаще всего, на чем акцентировал внимание, где больше всего провел времени и т.п. Это позволит улучшать наши симуляции.
Территориальное разделение хранилища. Симуляции весят по несколько гигабайт. Если скачивать их из локальной сети, пользователям достаточно подождать несколько минут. Но, например, передача трех гигабайт из Череповца в Белгород может занять много времени. Мы планируем разделить хранилища на несколько территориальных реплик и настроить между ними синхронизацию.
Подготовка для внешнего использования. Мы хотим делиться своим решением и планируем подготовить платформу для работы у внешних клиентов. Нам предстоит подумать над адаптацией под работу в контейнерах, интеграцией с различными системами учета помимо SAP и т.п.
Буду рад узнать о вашем похожем опыте, или советам, что по вашему мнению можно еще улучшить.