Table of Contents

Обнаружение объектов и отслеживание движения в сочетании

В этой статье описывается интеграция отслеживания 3D-объектов с функцией отслеживания движения устройства для повышения стабильности отслеживания и улучшения пользовательского опыта в сложных сценах. Рассматриваются основные принципы, ожидаемые результаты и анализ потенциальных проблем.

Основные принципы

Слияние данных о движении (Motion Fusion) объединяет данные о позиции и ориентации от отслеживания 3D-объектов и отслеживания движения устройства для получения более надежной оценки позиции. Основной процесс включает:

Синхронизация и дополнение данных

  • Визуальное отслеживание: Расчет позиции (положение + вращение) текущего кадра через сопоставление особенностей изображения. Уязвимо к окклюзиям, размытости или быстрому движению.
  • Отслеживание движения: Использует высокочастотные данные IMU-датчиков и визуальный поток. Подвержено накоплению дрейфовой погрешности.
  • Механизм слияния:
    • Согласование систем координат визуального отслеживания и отслеживания движения.
    • При четкой видимости цели и стабильном движении: Приоритет визуальному отслеживанию. Постоянная коррекция данных слияния для снижения системного дрейфа.
    • При потере цели, малом размере в кадре или быстром движении: Приоритет отслеживанию движения. Прогнозирование позиции на основе текущих данных IMU.

Ключевые технические аспекты

  • Синхронизация временных меток: Совмещение временных меток визуальных кадров и данных движения для устранения дрожания.
  • Согласование систем координат: Выравнивание траекторий визуального отслеживания и данных движения.
  • Перелокализация: При повторном появлении цели визуальное отслеживание быстро корректирует накопившуюся погрешность, "возвращая" виртуальный объект в правильное положение.

Применимые сценарии и ограничения

Слияние данных о движении подходит не для всех ситуаций. Не применяйте функцию в случаях:

  • Устройство не поддерживает отслеживание движения (ARCore/ARKit и т.д.). Список совместимых устройств: Поддержка устройств.
  • Целевой объект динамичен (например, игрушка в руках, фигурка).

В остальных сценариях слияние значительно улучшит пользовательский опыт, включая:

  • Быстрое движение: Размытие изображения при быстром перемещении устройства.
  • Исчезновение цели: Выход объекта из кадра или временная окклюзия (например, человеком).
  • Удаление от цели: Уменьшение объекта в кадре при отдалении.
  • Слабое освещение: Снижение эффективности визуального отслеживания.

Результаты и ожидаемые эффекты

При соблюдении условий слияние обеспечит более стабильный и плавный опыт, чем чистое 3D-отслеживание объектов.

Идеальный результат

  • Стабильность: Виртуальный объект не дрожит и не скачет.
  • Плавные переходы: Естественное изменение позиции при потере визуального контакта.
  • Устойчивость к помехам: Объект сохраняет привязку при окклюзиях, быстром движении или потере цели.

Нежелательные явления и решения

Явление Причина Восприятие пользователя Решение
Задержка инициализации Требуется время для запуска отслеживания движения Исчезновение контента на старте UI-подсказки о завершении инициализации
Заметный дрейф Накопление системной погрешности без визуальной коррекции Смещение виртуального объекта Сокращение времени окклюзий, подсказки для перелокализации
Снижение производительности Длительная параллельная работа двух модулей Падение FPS, подтормаживания Штатная ситуация, отключение слияния через API

Метод проверки

Тестирование на совместимом устройстве в реальных условиях:

  1. Наведение на цель: Убедиться в стабильности объекта.
  2. Закрытие объекта рукой на 2 секунды с перемещением: Проверить плавность движения виртуального объекта.
  3. Открытие объекта: Убедиться в быстром и бесшовном возврате на место.

Итоги и рекомендации

Слияние данных о движении значительно повышает надежность 3D-отслеживания, но требует аппаратной поддержки и достаточной производительности. Разработчикам следует включать функцию выборочно и предусматривать упрощенные режимы для слабых устройств.

API для управления слиянием в реальном времени: