Запуск гарнитуры расширения
Для работы EasyAR на устройстве самая важная и одновременно самая сложная часть — обеспечить корректность входных данных. При первом запуске EasyAR на новом устройстве более 90% проблем вызваны некорректными данными.
По возможности рекомендуется проверять корректность данных напрямую через тестовые методы с использованием только устройства и его интерфейсов, без участия EasyAR. В этой статье описаны эмпирические методы проверки данных с использованием функций EasyAR. Этот процесс поможет понять внешние входные кадры данных, однако из-за наличия погрешностей в самом EasyAR, использование этой связанной системы для проверки данных не является оптимальным выбором.
Перед началом
- Завершите разработку поддержки гарнитур для EasyAR.
- Прочтите Быстрый старт, чтобы узнать, как использовать EasyAR Sense Unity Plugin.
- Узнайте, как использовать образцы гарнитур.
- Ознакомьтесь с настройками проекта Android.
Запуск базового функционала пример
При первом запуске проверки EasyAR на устройстве необходимо последовательно выполнить эти функции, особенно не торопитесь запускать Mega. Mega имеет некоторую устойчивость к ошибкам, и проблемы могут остаться незамеченными при кратковременной работе или в простых сценариях реальности.
Наблюдайте за отображаемой информацией о сеансе (session), убедитесь в отсутствии неожиданных ситуаций и проверьте, что счетчик кадров (frame count) непрерывно увеличивается.
Запустите
Image, то есть функцию отслеживания изображений, и сравните результат с работой на смартфоне (рекомендуется использовать iPhone в качестве эталона). Обратите внимание на статус отслеживания и отображение покрытия цели.При отключенном слиянии движения (motion fusion) отслеживание изображений будет ощутимо запаздывать — это ожидаемо. Главное, чтобы движение было корректным, а позиция стабилизировалась при остановке устройства.
Запустите
Dense, то есть функцию плотного пространственного картографирования (dense spatial mapping), и сравните результат с работой на смартфоне (рекомендуется использовать iPhone в качестве эталона). Обратите внимание на позицию сетки, скорость её генерации и качество.При низкой частоте кадров входных данных скорость генерации сетки снизится, но качество не ухудшится существенно.
Эта функция может не работать на некоторых устройствах Android, а качество сетки также варьируется в зависимости от устройства.
Важно
Расширение для гарнитуры использует реализацию пользовательской камеры в качестве входного расширения.
При использовании пробных продуктов (например, лицензии Personal, пробной лицензии XR или пробного сервиса Mega) на пользовательских камерах или гарнитурах, EasyAR Sense перестает отвечать через 100 секунд после каждого запуска (пользователи Mega могут запросить изменение этого времени через EasyAR Business после утверждения). Использование платной версии EasyAR Sense и платного сервиса EasyAR Mega не имеет этого ограничения.
Если Image и Dense работают так же или лучше, чем на смартфоне, значит большая часть функционала EasyAR работает на устройстве корректно, и можно приступать к тестированию Mega.
Решение аномалий в работе: разбивка проблемы
Если не удается воспроизвести те же результаты, что и на телефоне, ниже приведен детальный процесс разбивки проблемы, который можно использовать для поиска первопричины. Рекомендуется всегда обращать внимание на вывод системных логов.
Шаг ноль: Понимание системных погрешностей самого гарнитуры
Вспомните требования к отслеживанию движений и отображению, описанные в Подготовке устройств для AR/MR?
[!ВАЖНО] Погрешности отслеживания движений/VIO всегда будут влиять на стабильность алгоритмов EasyAR по-разному.
[!ВАЖНО] Погрешности системы отображения могут привести к неидеальному совмещению виртуальных и реальных объектов.
В случаях со значительными погрешностями виртуальные объекты могут казаться парящими над реальными объектами или под ними, а затем (казаться) постоянно дрейфующими. Это явление можно наблюдать на Pico 4E, даже если не использовать EasyAR, а просто включить его собственный VST.
Шаг 1: Проверка состояния работы сессии
Для нормального отображения состояния сессии в сообщениях UI необходима исправная работа следующих функций или данных:
ДоступностьExternalFrameSourceВиртуальная камераExternalFrameSource
Если отображение информации о состоянии сессии отсутствует, попробуйте изменить опцию на Log и прочитайте состояние сессии и имя используемого источника кадров (frame source) в системном журнале (system log).
Можно попробовать удалить все другие источники кадров (frame sources) под узлом ARSession, а затем проверить, изменилась ли ситуация.
Шаг второй: подтверждение счетчика кадров камеры, полученного в easyar
Необходимые для нормальной работы функции или данные:
- Путь данных
Camera Frame Dataдля ExternalFrameSource на уровне кода Unity (не включает корректность данных и путь данных до нативного слоя)
Этот счетчик должен увеличиваться со временем, иначе через несколько секунд будет отображено предупреждающее сообщение.
Если обнаружено, что это число не увеличивается, это должно быть решено в первую очередь.
Шаг третий: запись EIF на устройстве и воспроизведение в редакторе Unity
Необходимая функциональность или данные:
- Путь передачи
данных кадров камерыот ExternalFrameSource в нативный слой (не включает корректность данных)raw camera image dataвданных кадров камерыtimestampвданных кадров камеры(исключая временные точки и синхронизацию данных)
Нажмите EIF, чтобы начать запись, нажмите снова для остановки.
Совет
Запись должна быть корректно остановлена для получения файла EIF с возможностью произвольного доступа.
При воспроизведении данных EIF в редакторе Unity предпочтительно использовать чистую сцену EasyAR или примеры EasyAR, чтобы избежать некорректных конфигураций в сцене.
В редакторе Unity вы сможете наблюдать воспроизведение данных кадров камеры. Данные изображения не являются побайтово идентичными — в процессе присутствует lossy-кодирование.
EasyAR использует параметры дисторсии в вычислениях, но не применяет коррекцию дисторсии к отображаемому изображению. Поэтому при воспроизведении файла EIF в Unity вы будете видеть данные без коррекции дисторсии, что соответствует ожиданиям.
Совет
Измените соотношение сторон окна game в Unity, чтобы оно соответствовало входному, иначе данные будут обрезаны при отображении.
Если воспроизведение идет слишком быстро или медленно, проверьте входной timestamp.
Примечание
С помощью EIF можно делать многое: вы можете использовать EIF в редакторе Unity для работы с отслеживанием изображений и плотным пространственным отображением. Учтите, что при работе на устройстве визуальный результат может отличаться.
Шаг четвертый: запуск отслеживания изображений с помощью eif
Необходимые функциональные возможности или данные:
raw camera image dataвданных кадров камерыintrinsicsвданных кадров камеры(корректность данных не гарантирована полностью, так как алгоритм допускает некоторую погрешность)
Чтобы запустить пример отслеживания изображений ImageTracking_Targets с помощью eif в Unity редакторе, необходимо записать eif, в котором изображение может быть отслежено.
Примечание
Отслеживание изображений требует, чтобы отслеживаемый объект занимал определенную долю всего изображения. Если изображение не отслеживается, попробуйте приблизить голову к изображению.
Если отслеживание постоянно терпит неудачу или виртуальные объекты отображаются вдали от цели на изображении, высока вероятность, что проблема в intrinsics.
Если данные изображения искажены, вы можете заметить, что виртуальные объекты не идеально накладываются на отслеживаемую цель в изображении. Это ожидаемо. Эффект более заметен, когда цель отслеживания находится на краю изображения.
Шаг пятый: Запуск отслеживания изображений на устройстве
Обязательные функции или данные:
- Собственная система отображения устройства
raw camera image dataвданных кадров камерыintrinsicsвданных кадров камеры(точность данных не гарантирована полностью, так как алгоритм допускает погрешности)extrinsicsвданных кадров камеры- Согласованность координат
device poseвданных кадров камерыиданных кадров рендеринга- Разница во времени
device poseвданных кадров камерыиданных кадров рендеринга
Примечание
Отслеживание изображений требует, чтобы целевое изображение занимало определенную долю всего кадра. Если отслеживание не удается, попробуйте приблизить голову к изображению.
Отслеживание изображений требует, чтобы горизонтальная длина изображения соответствовала реальному размеру объекта. В примере необходимо отслеживать изображение, горизонтальная сторона которого равна длинной стороне горизонтально расположенного листа формата А4. Поэтому не отслеживайте изображения, отображаемые на экране компьютера, если только вы не используете линейку и не отрегулировали горизонтальную длину изображения до размера А4, ориентируясь по линейке.
Если отслеживание изображений работает идеально при использовании EIF, но не на устройстве, это необходимо исправить, прежде чем переходить к другим тестам. Решать эту проблему на последующих этапах будет гораздо сложнее.
Если виртуальный объект отображается парящим где-то далеко от реального объекта, и это происходит даже когда человек не двигается, то, скорее всего, intrinsics или extrinsics некорректны, либо device pose в данных кадров камеры и данных кадров рендеринга находится не в одной системе координат, либо ошибка вызвана системой отображения.
Если виртуальный объект постоянно двигается при движении головы и выглядит так, будто есть задержка, то высока вероятность, что device pose не в порядке. Часто это происходит в следующих случаях (нельзя исключать другие проблемы):
- Данные времени для
device poseиraw camera image dataне синхронизированы - В
данных кадров камерыиданных кадров рендерингаиспользуется один и тот же pose.
Шаг 6: Использование EIF и запуск плотного пространственного картирования на устройстве
Обязательные функциональные возможности или данные:
- Собственная система отображения устройства
raw camera image dataвданных кадров камерыintrinsicsвданных кадров камеры(полная гарантия корректности данных невозможна, так как алгоритм допускает некоторую погрешность)extrinsicsвданных кадров камерыdevice poseвданных кадров камеры
Если генерация сетки происходит очень медленно и/или реконструкция поверхности земли получается неровной (бугристой), то наиболее вероятно, что проблема в device pose. Также возможно, что система координат позы неверна или временная метка позы не соответствует.
Совет
Если частота кадров входных данных низкая, скорость генерации сетки также снизится, но качество не ухудшится заметно. Такое поведение соответствует ожиданиям.
Обычно точно определить положение сетки не очень легко, поэтому при использовании плотного пространственного картирования ошибки системы отображения не всегда могут быть заметны.
Запуск примера Mega
Прочитайте ниже, чтобы узнать, как использовать Mega в Unity. Если вы еще не активировали услугу Mega, обратитесь в коммерческий отдел EasyAR для получения пробной версии.
- Введение в EasyAR Mega
- Доступна ли моя библиотека локализации?
- Быстрый старт с примером EasyAR Mega Unity
Затем запустите Mega на устройстве и сравните с результатом на смартфоне (рекомендуется ориентироваться на iPhone). Обратите внимание на:
- Корректность отображения позиции объектов
- Корректность позиции и размера объектов вдали (10M и далее)
- Корректность позиции и размера объектов вне центра обзора
- Корректность позиции и размера объектов при повороте головы
Разрешение аномалий в работе
Необходимые функции или данные:
- Собственная система отображения устройства
- Все данные в
данные кадров камерыиданные рендеринга кадров
После проверки функционала отслеживания изображений и плотного пространственного картирования, теоретически EasyAR Mega должна поддерживаться. Если производительность на шлеме значительно хуже, чем на телефоне, обратите внимание на следующее:
- Проверьте данные pose и timestamp в
данные кадров камерыиданные рендеринга кадров - Оцените вывод системы отслеживания движений/VIO. Панда под
XR Originможет быть хорошим ориентиром
Также важно уделить особое внимание собственной системе отображения устройства, особенно при отображении объектов вдали, вне центра зрения или при повороте головы. Такие сценарии часто упускаются при внутреннем тестировании устройства, но проблемы обычно вызваны именно его системой отображения. Вам необходимо информировать EasyAR об этих проблемах и возможных последствиях, а также предоставить разработчикам реалистичные ожидания по качеству изображения.
Важно
Пользователи очень внимательны к подобным проблемам отображения, и многие устройства действительно не могут обеспечить идеальное изображение в больших пространствах. EasyAR не может решить проблемы собственного отображения устройства — это требует доработки со стороны производителей устройств. В то же время пользователям необходимо понимать эти ограничения.
Последующие шаги
Связанные темы
Примеры, которые можно запускать на телефоне:
- Пример отслеживания изображений ImageTracking_Targets, позволяющий понять ожидаемые характеристики работы функции отслеживания изображений
- Пример плотного пространственного картирования SpatialMap_Dense_BallGame, позволяющий понять ожидаемые характеристики работы функции плотного пространственного картирования
- Пример слияния движения ImageTracking_MotionFusion, позволяющий понять ожидаемые характеристики работы функции слияния движения
- Пример с Mega MegaBlock_Basic, позволяющий понять ожидаемые характеристики работы функции Mega