Проверка запуска (bring-up) расширения для гарнитур
Чтобы EasyAR работал на устройстве, самая важная и одновременно самая сложная задача - убедиться в корректности входных данных. При первом запуске EasyAR на новом устройстве более 90% проблем вызваны ошибочными данными.
Если возможно, рекомендуется до подключения EasyAR напрямую проверить корректность данных тестовыми методами, используя только устройство и его интерфейсы. В этой статье описаны практические методы проверки данных с помощью функций EasyAR. Такой процесс помогает понять данные внешнего входного кадра, но из-за того, что сам EasyAR тоже вносит погрешности, проверка корректности данных на такой связанной системе не является оптимальным выбором.
Перед началом
- Завершите разработку поддержки EasyAR для гарнитуры.
- Прочитайте быстрый старт, чтобы узнать, как использовать EasyAR Sense Unity Plugin.
- Узнайте, как использовать примеры для гарнитур.
- Ознакомьтесь с настройкой Android-проекта.
Запуск примеров базовых функций
При первой проверке EasyAR на устройстве необходимо последовательно запустить эти функции. Особенно не стоит спешить с запуском Mega, потому что Mega обладает некоторой отказоустойчивостью, и при коротком запуске или в одной реальной сцене проблему трудно заметить.
Посмотрите на отображаемую перед глазами информацию session, убедитесь, что не происходит ничего неожиданного, и что frame count продолжает расти.
Запустите
Image, то есть функцию отслеживания изображений, и сравните результат с запуском на телефоне (рекомендуется брать iPhone за эталон). Обратите внимание на состояние отслеживания и отображение наложения на цель.Если motion fusion не включен, у отслеживания изображений будет заметное ощущение задержки, и это ожидаемо. Достаточно, чтобы движение было корректным, а позиция совмещалась, когда устройство останавливается.
Запустите
Dense, то есть функцию плотной пространственной карты, и сравните результат с запуском на телефоне (рекомендуется брать iPhone за эталон). Обратите внимание на положение сетки, скорость генерации и качество.Если частота входных кадров низкая, генерация сетки замедлится, но качество заметно не ухудшится.
Эта функция не может работать на некоторых Android-устройствах, а качество сетки также зависит от устройства.
Важно
Входное расширение, используемое пакетом расширения для гарнитур, является реализацией пользовательской камеры.
При использовании пробных продуктов на пользовательской камере или гарнитуре (license Personal Edition, пробная XR license или пробная служба Mega и т. п.) EasyAR Sense перестает отвечать через 100 секунд после каждого запуска (пользователи Mega могут изменить длительность через EasyAR Business после утверждения). В платной версии EasyAR Sense и платной службе EasyAR Mega этого ограничения нет.
Если Image и Dense работают так же, как на телефоне, или лучше, то большая часть функций EasyAR уже сможет нормально работать на устройстве, и можно начинать тестировать Mega.
Решение аномалий при запуске: разбор проблемы
Если не удается воспроизвести такой же результат, как на телефоне, ниже приведен подробный процесс разбиения проблемы, который можно использовать для поиска первопричины. Рекомендуется всегда внимательно следить за системными логами.
Шаг ноль: понять системные ошибки самой гарнитуры
Помните требования к отслеживанию движения и отображению, описанные в разделе Подготовка устройства для AR/MR?
Важно
Ошибки отслеживания движения/VIO всегда будут по-разному влиять на стабильность алгоритмов EasyAR.
Важно
Ошибки системы отображения могут привести к тому, что виртуальные объекты и реальные объекты не смогут идеально совместиться.
В ситуациях с относительно большими ошибками виртуальный объект может выглядеть так, будто он парит над реальным объектом или под ним, а затем (визуально) постоянно дрейфует. Это явление можно наблюдать на Pico 4E, даже если не использовать EasyAR, а включить только собственный VST устройства.
Шаг первый: проверить состояние работы session
В состоянии session из UI-сообщений должны нормально отображаться следующие функции или данные:
доступностьExternalFrameSourceвиртуальная камераExternalFrameSource
Если информация о состоянии session не отображается, попробуйте изменить параметр на Log, а затем прочитать в системном логе состояние session и имя используемого frame source.
Можно попробовать удалить все остальные frame source под узлом ARSession, а затем посмотреть, изменится ли что-нибудь.
Шаг второй: подтвердить счетчик кадров камеры, полученных EasyAR
Должны нормально работать следующие функции или данные:
- путь
данных кадра камерыиз ExternalFrameSource на уровне кода Unity (без учета корректности данных и пути данных к нативному уровню)
Это значение должно расти со временем, иначе через несколько секунд появится предупреждение.
Если обнаружено, что это значение не растет, сначала нужно решить именно эту проблему.
Шаг третий: записать EIF на устройстве, затем воспроизвести его в Unity Editor
Должны нормально работать следующие функции или данные:
- путь ввода
данных кадра камерыиз ExternalFrameSource на нативный уровень (без учета корректности данных)raw camera image dataвданных кадра камерыtimestampвданных кадра камеры(без учета момента времени и синхронизации данных)
Нажмите EIF, чтобы начать запись, и нажмите еще раз, чтобы остановить.
Совет
Запись необходимо остановить корректно, чтобы получить EIF-файл с произвольным доступом по индексу.
При запуске EIF-данных в Unity Editor лучше использовать чистую сцену EasyAR или пример EasyAR, чтобы избежать неправильных настроек в сцене.
В Unity Editor можно увидеть воспроизведение данных кадра камеры. Данные изображения не являются побайтно идентичными, потому что во всем процессе присутствует сжатие с потерями.
EasyAR использует параметры дисторсии в вычислениях, но при отображении не выполняет устранение дисторсии изображения. Поэтому если такие данные были переданы, при воспроизведении EIF-файла в Unity будут видны данные без устранения дисторсии, и это ожидаемо.
Совет
Измените соотношение сторон окна Unity game так, чтобы оно совпадало с входными данными, иначе данные будут отображаться с обрезкой.
Если данные воспроизводятся слишком быстро или слишком медленно, нужно проверить входной timestamp.
Примечание
С помощью EIF можно делать многое. В Unity Editor можно запускать отслеживание изображений и плотную пространственную карту с EIF. Обратите внимание, что при запуске на устройстве отображение может отличаться.
Шаг четвертый: запустить отслеживание изображений с EIF
Должны нормально работать следующие функции или данные:
raw camera image dataвданных кадра камерыintrinsicsвданных кадра камеры(корректность данных не может быть полностью гарантирована, потому что алгоритм допускает некоторую ошибку)
Чтобы в Unity Editor запустить пример отслеживания изображений ImageTracking_Targets с EIF, нужно записать EIF, в котором изображение может быть отслежено.
Примечание
Для отслеживания изображений требуется, чтобы отслеживаемая цель занимала определенную долю всего изображения. Если изображение не отслеживается, попробуйте подвинуть голову ближе к изображению.
Если отслеживание постоянно завершается неудачей или виртуальный объект отображается на изображении далеко от цели, весьма вероятно, что проблема в intrinsics.
Если данные изображения имеют дисторсию, можно увидеть, что виртуальный объект не идеально накрывает отслеживаемую цель на изображении. Это ожидаемо. Когда отслеживаемая цель находится у края изображения, этот эффект будет заметнее.
Шаг пятый: запустить отслеживание изображений на устройстве
Должны нормально работать следующие функции или данные:
- собственная система отображения устройства
raw camera image dataвданных кадра камерыintrinsicsвданных кадра камеры(корректность данных не может быть полностью гарантирована, потому что алгоритм допускает некоторую ошибку)extrinsicsвданных кадра камеры- согласованность координат
device poseвданных кадра камерыиданных кадра рендеринга- разница во времени
device poseвданных кадра камерыиданных кадра рендеринга
Примечание
Для отслеживания изображений требуется, чтобы отслеживаемая цель занимала определенную долю всего изображения. Если изображение не отслеживается, попробуйте подвинуть голову ближе к изображению.
Для отслеживания изображений требуется, чтобы горизонтальная сторона изображения соответствовала размеру объекта в реальном мире. В примере нужно отслеживать изображение, горизонтальная сторона которого заполняет длинную сторону горизонтально расположенного листа A4. Поэтому не отслеживайте изображение, показанное на экране компьютера, если только вы не используете линейку и не подгоняете горизонтальную сторону изображения под размер A4.
Если при использовании EIF отслеживание изображения идеально, а на устройстве отличается, эту проблему нужно решить до перехода к другим тестам. На последующих шагах разобраться с ней будет гораздо сложнее.
Если виртуальный объект отображается где-то далеко от реального объекта и висит там даже когда человек не двигается, весьма вероятно, что intrinsics или extrinsics некорректны, либо device pose в данных кадра камеры и данных кадра рендеринга находятся не в одной системе координат, либо эту ошибку создала система отображения.
Если при движении головы виртуальный объект продолжает смещаться и выглядит так, будто есть задержка, с большой вероятностью device pose недостаточно исправен. Это часто происходит в нескольких ситуациях (нельзя исключать и другие проблемы):
- время данных
device poseиraw camera image dataне синхронизировано - в
данных кадра камерыиданных кадра рендерингаиспользуется один и тот же pose
Шаг шестой: использовать EIF и запустить плотную пространственную карту на устройстве
Должны нормально работать следующие функции или данные:
- собственная система отображения устройства
raw camera image dataвданных кадра камерыintrinsicsвданных кадра камеры(корректность данных не может быть полностью гарантирована, потому что алгоритм допускает некоторую ошибку)extrinsicsвданных кадра камерыdevice poseвданных кадра камеры
Если генерация сетки очень медленная и/или реконструкция пола получается бугристой, очень вероятно, что проблема в device pose. Также возможно, что система координат pose некорректна или момент времени pose неверен.
Совет
Если частота входных кадров низкая, скорость генерации сетки тоже снизится, но качество заметно не ухудшится. Это ожидаемо.
Обычно точно различить положение сетки не очень просто, поэтому при использовании плотной пространственной карты ошибку системы отображения не всегда можно заметить.
Запуск примера Mega
Прочитайте следующие материалы, чтобы узнать, как использовать Mega в Unity. Если сервис Mega у вас еще не подключен, нужно связаться с отделом продаж EasyAR, чтобы получить пробный доступ.
- Введение в EasyAR Mega
- Готова ли моя функция локализации? Убедитесь, что база локализации создана правильно и карта добавлена.
- Быстрый старт с примером EasyAR Mega Unity
Затем запустите Mega на устройстве и сравните результат с телефоном (рекомендуется брать iPhone за эталон). Обратите внимание на следующее:
- правильно ли отображается положение объектов
- правильно ли отображаются положение и размер дальних объектов (10 м и дальше)
- правильно ли отображаются положение и размер объектов вне центра взгляда
- правильно ли отображаются положение и размер объектов при повороте головы
Решение аномалий при запуске
Должны нормально работать следующие функции или данные:
- собственная система отображения устройства
- все данные в
данных кадра камерыиданных кадра рендеринга
После проверки двух функций, отслеживания изображений и плотной пространственной карты, EasyAR Mega теоретически уже должен поддерживаться. Если на гарнитуре результат заметно хуже, чем на телефоне, обратите внимание на следующее:
- данные pose и timestamp в
данных кадра камерыиданных кадра рендеринга - вывод системы отслеживания движения/VIO. Панда под
XR Originбудет хорошим ориентиром
Кроме того, нужно особенно внимательно смотреть на собственную систему отображения устройства, особенно на отображение объектов вдали, вне центра взгляда и при повороте головы. Такие сценарии часто игнорируются при самостоятельном тестировании устройства, но обычно проблема все равно вызвана собственной системой отображения устройства. Вам нужно объяснить EasyAR эти проблемы и их возможное влияние, а также дать разработчикам разумные ожидания от результата.
Важно
Пользователи будут очень внимательно относиться к таким проблемам отображения, и многие устройства действительно не могут обеспечить полностью идеальный эффект отображения в крупномасштабных сценах. EasyAR не может решить проблемы отображения самого устройства; это должно быть исправлено итерациями производителя устройства. При этом пользователям также нужно понимать эти проблемы.
Следующие шаги
Связанные темы
Примеры, которые можно запускать на телефоне:
- пример отслеживания изображений ImageTracking_Targets, с его помощью можно понять ожидаемый эффект работы функции отслеживания изображений
- пример плотной пространственной карты SpatialMap_Dense_BallGame, с его помощью можно понять ожидаемый эффект работы функции плотной пространственной карты
- пример motion fusion ImageTracking_MotionFusion, с его помощью можно понять ожидаемый эффект работы функции motion fusion
- пример Mega MegaBlock_Basic, с его помощью можно понять ожидаемый эффект работы функции Mega