Наш клиент — руководитель компании, сфокусированной на Research and Development в области естественных и технических наук. Свою жизнь связал с изобретениями, инновациями и рационализацией.
После победы в научно-техническом фестивале инвестировал свои силы в разработку нового программно-аппаратного решения для дистанционного консультирования специалистов. Заказчик провёл анализ рынка, подтвердил наличие проблемы и решил проверить свою идею на жизнеспособность.
Спойлер: клиент впоследствии дважды получил финансирование от Фонда Содействия Инновациям благодаря совместной работе с командой «Иностудио».
Задача клиента — создать решение, которое позволит специалистам проводить консультации из любой точки мира в режиме реального времени.
После совместного обсуждения идеи весь проект декомпозировали на несколько независимых составляющих:
Главная идея стартапа — это сокращение издержек на командировки инженера-консультанта, уменьшение общего срока ремонта и простоя оборудования. То есть для улучшения качества обслуживания и коммуникаций нам потребовалось подготовить эффективное «рабочее место» — функционирующий прототип шлема для специалистов-исполнителей. После анализа и подбора необходимых компонентов было принято базироваться на простых решениях без узкоспециализированных элементов.
Для передачи изображения со шлема была необходима камера — рабочий компьютер с модулями связи, микропроцессором, интерфейсом ввода. И перед нами встал достаточно простой на тот момент выбор — использование примитивных, дорогих микрокомпьютеров или современных смартфонов. Интуиция и опыт подсказывали проголосовать за последний вариант.
По итогу оказалось, что верных вариантов не было вовсе. Микрокомпьютеры — дорого, а смартфоны, даже «самые-самые», не позволяли передавать стереоизображение. Что крайне важно для корректного взаимодействия с демонстрируемыми объектами.
Поэтому мы запустили процесс поиска стереокамеры. И как ни парадоксально, самое бюджетное решение быстро удалось найти в Китае. Вот так мы с клиентом и собрали технологический минимум, в который вошли:
Для работы с оборудованием нашей команде подошла одна единственная открытая платформа — смартфон с операционной системой Android. И чтобы производить отладку на самом низком уровне, взаимодействовать с драйверами, мы выбрали нативную разработку на Android OS.
Другая сторона комплексного программно-аппаратного решения DAR — веб-клиент, который получает изображение со стереокамеры специалиста. При работе веб-клиента и шлема в тандеме инженер-консультант сможет:
Клиенту важно было реализовать программное решение, которое смогло бы оказывать любую помощь дистанционно вне зависимости от специфики бизнеса или его сложности.
Когда все необходимые модули и оборудование стартапа были определены, вместе с заказчиком перешли на следующий этап — к реализации приложения и веб-клиента.
Мы составили список гипотез, проверили их, отбросили излишние требования и сконцентрировались на главном — разработке приложения, которое позволит:
Когда убедились, что внешняя камера отрабатывает все заложенные сценарии, мы реализовали для неё standalone-приложение. В результате смогли изменять масштаб, фокусное расстояние, работать в разных разрешениях с разной резкостью. Далее мы внедрили поддержку работы с видео в режиме реального времени и перешли к разработке серверного решения.
Разработка веб-клиента началась с выбора протоколов, был необходим баланс между качеством, безопасностью и распространённостью. Мы остановились на WebRTC — одной из самых популярных технологий, которая описывает передачу потоковых аудиоданных, видеоданных и контента здесь и сейчас.
Как итог, мы разработали алгоритм органичного соединения камеры, приложения и веб-клиента. То есть модуль камеры получает и транслирует изображение, операционная система смартфона выполняет всё остальное. Весь результат работы алгоритма передаётся инженеру-консультанту на веб-клиент.
Двухлетнее взаимодействие с клиентом — пример равных партнёрских взаимоотношений. В моменты всемирного кризиса и пандемии произошла коллаборация усилий — все стороны были заинтересованы в развитии продукта DAR, в решении сложных технических задач стартапа.
Каждый принимал активное участие в проекте. Заказчик, например, взял на себя всю работу по конструированию и разработке прототипа шлема, оптимизации соединительных узлов. Также наш клиент тестировал продукт и формировал вектор развития DAR.
Мы же помимо разработки веб- и мобильных решений сконцентрировались на переборе гипотез, чтобы обеспечить быстроту реализации в направлении Research and Development.
Разработка ИТ-решений сопровождается различными трудностями, сложность и количество которых зависит от специфики бизнеса. В данном случае наша команда столкнулась не с классической ситуацией «есть задача — есть решение», а с экспериментальным подходом. Мы постоянно искали, пробовали и тестировали, будто первооткрыватели. Комплексный программно-аппаратный продукт DAR интересен тем, что требовалось «подружить» код с «noname-железом». Поэтому весь путь был тернист и наполнен «забавными» нюансами.
Большая часть проблем возникла из-за устаревшего и недокументированного ПО драйвера камеры. Также стоит отметить вариативность Android-устройств — при разработке приложения приходилось учитывать специфические особенности модификаций от разных производителей.
Камеры, мобильные устройства и прочая техника имели уникальные разъёмы. Для подключения одного с другим нужно было выстроить длинную цепочку кабелей, что влияло на качество соединения. Также неоднократно подключение полностью терялось, что приводило к ошибкам в последовательностях действий пользователя в приложении. Пришлось отказаться от разъёмов в пользу прямого соединения на плате камеры.
Чтобы обеспечить конфиденциальность данных, мы добавили авторизацию для входа в комнату (для веб-клиента). Работало это так: запускалась трансляция в приложении смартфона, копировалась ссылка для входа в комнату и происходила авторизация. Конечно, это не самый оптимальный сценарий соединения, но зато безопасный.
В обычной ситуации для проверки работоспособности разработчик испытывает саму реализацию, QA-инженер проверяет интеграцию и полноту требований. В этом проекте при тестировании продукта было необходимо также проверить продукт в индивидуальном окружении клиента. Дополнительно из-за режима самоизоляции пришлось адаптироваться к постоянной транспортировке камеры от заказчика к тестировщику, от тестировщика к разработчику. И обратно.
Чтобы подключить камеру к телефону, требуется единственный USB-порт, который в обычной ситуации занят, потому что используется программистами для отладки приложений. В связи с этим мы освоили отладку приложений через Wi-Fi.
Kotlin (android), WebRTC, WebSocket, Node.js Express, Vue.js, Coturn Docker, Gitlab CI, Android Jetpack.
Главный показатель успешной работы клиента и Иностудио над продуктом DAR — получение финансирования на первый и второй этапы. Дополнительно мы приобрели уникальный опыт работы в сфере Research and Development и повысили компетенции в работе над WebRTC-проектами.
Обязательно обращусь в Иностудио снова. Это команда, которая, взявшись за что-то, точно доделает до самого конца и не остановится ни перед какими сложностями. Ни разу не пожалел, что обратился именно сюда, рекомендую всем!