Table of Contents

애플리케이션에서 콘텐츠 흔들림과 드리프트 문제 진단 및 수정

"가상 콘텐츠가 떠다닌다", "오브젝트가 흔들린다", "위치가 불안정하다"는 AR 애플리케이션에서 개발자가 자주 만나는 문제입니다. 콘텐츠가 불안정하면 몰입감이 크게 떨어지고, 사용자 경험이 나빠질 수도 있습니다.

이 문서는 콘텐츠 흔들림과 드리프트의 원인을 이해하고, 체계적인 troubleshooting 및 최적화 방법을 제공합니다.

"정상 흔들림"과 "비정상 드리프트" 구분

먼저 합리적인 기대치를 세워야 합니다. 모바일 디바이스에서 고정밀 AR tracking 을 구현하는 것은 그 자체로 어렵습니다. 다음 상황은 정상 범위에 속합니다. 완전히 제거할 수는 없지만 최적화할 수는 있습니다.

  • 미세한 고주파 흔들림:

    • 증상: 가상 오브젝트가 밀리미터 수준으로 미세하게 흔들립니다.
    • 원인: 디바이스 센서의 물리적 노이즈, visual tracking 알고리즘의 정밀도 한계, 손으로 디바이스를 들 때 발생하는 미세한 흔들림이 함께 작용해 발생합니다.
    • : 가까운 거리에서 관찰할 때, 예를 들어 가상 오브젝트를 책상 위에 놓고 가까이 다가가 보는 경우 이런 미세한 흔들림은 정상입니다.
  • 짧은 드리프트:

    • 증상: 사용자가 디바이스를 빠르게 이동하거나 회전할 때, 가상 오브젝트가 짧은 시간(0.5-1초) 동안 위치 오프셋을 보이다가 회복됩니다.
    • 원인: 빠르게 움직일 때 디바이스 SLAM 시스템의 IMU(관성 측정 장치) 누적 오차와 visual localization 지연이 짧은 position drift 를 일으킬 수 있습니다.
    • : 동적인 scene 에서는 허용 가능한 현상입니다. 오브젝트가 빠르게 올바른 위치로 "되돌아온다면" 시스템이 효과적으로 동작하고 있다는 뜻입니다.

반면 다음 상황은 troubleshooting 과 수정이 필요한 비정상 문제입니다.

  • 지속적이고 큰 위치 드리프트: 가상 오브젝트가 있어야 할 위치에서 천천히, 지속적으로 벗어나며 회복되지 않거나 한참 뒤에야 회복됩니다.
  • 심한 점프 또는 깜박임: 가상 오브젝트가 화면에서 크게 튀거나 나타났다 사라집니다.
  • 실제 오브젝트와의 상대 위치 불일치: 가상 오브젝트가 실제 오브젝트에 안정적으로 "고정"되지 않습니다.
참고

또한 주의해야 할 중요한 점이 있습니다.
0DoF, 3DoF 또는 5DoF 모드로 동작하는 디바이스는 "맞물림"과 "현실감"이 본질적으로 6DoF 디바이스보다 약합니다. 사용자가 빠르게 이동하거나, 방향을 틀거나, 계단을 오르내릴 때 가상 오브젝트가 완벽히 따라갈 수 없습니다.
따라서 이러한 모드에서 콘텐츠가 "공중에 떠 있는" 듯하거나 "위치가 오프셋" 되는 현상은 디바이스 능력의 근본적인 한계이며, 이 문서에서 다루는 "콘텐츠 흔들림 또는 드리프트" fault 가 아닙니다.
서로 다른 xDoF 모드의 경험 차이는 Navigation best practices의 소개를 참고하십시오.

체계적인 troubleshooting 절차

다음 순서에 따라 가장 가능성이 높은 원인부터 troubleshooting 하십시오.

1단계: 외부 환경 및 하드웨어 요인(코드 수정 불필요)

  1. 물리 환경 확인:

    • 텍스처 풍부도
      테스트 환경이 너무 단조롭지는 않습니까? 넓은 흰 벽, 매끄러운 바닥, 유리 표면은 모두 visual localization 실패나 오류를 유발할 수 있습니다.
    • 동적 오브젝트
      환경에 사람 무리나 이동 중인 차량처럼 움직이는 오브젝트가 많이 있습니까? 동적 오브젝트는 visual localization 을 방해하지만, 이런 문제는 대개 일시적입니다.
    • Scene 혼동
      서로 다른 입구의 엘리베이터 홀처럼 매우 혼동되기 쉬운 scene 이 있습니까? 시각적으로 비슷한 영역은 localization 에 영향을 주며, localization result 가 유사한 영역 사이에서 앞뒤로 점프하게 만들 수 있습니다. 이런 문제는 사전에 적절한 prior information 을 설정하여 피할 수 있습니다.
  2. 디바이스 하드웨어 확인:

    • 디바이스 발열
      장시간 실행 후 디바이스가 심하게 뜨거워집니까? 과열은 CPU/GPU throttling 을 유발하고 디바이스 자체 SLAM 시스템의 tracking performance 에 영향을 줍니다. 이는 지속적인 드리프트의 가장 흔한 원인입니다.
    • 디바이스 성능
      일부 오래된 디바이스는 하드웨어 성능과 부품 정밀도의 제한으로 scale drift 가 더 쉽게 발생하며, 가상 콘텐츠도 함께 드리프트할 수 있습니다. 다른 디바이스로 비교 테스트하여 문제가 디바이스 자체의 한계 때문인지 판단할 수 있습니다.

2단계: Map 및 localization 품질 분석(외부 도구 사용)

  1. Mega Toolbox 사용:

    • 같은 위치에서 Mega Toolbox 를 실행하고 localization 안정성을 관찰합니다.
    • Toolbox localization 도 드리프트/점프하는 경우: 문제는 map 자체 또는 현재 환경이 localization 에 적합하지 않음에 있습니다.
    • Toolbox localization 이 안정적인 경우: 문제는 사용자의 애플리케이션에 있습니다. 3단계로 계속 진행하십시오.
  2. PC simulation 에서 EIF data 실행:

    • 현장에서 녹화한 EIF data 를 재생합니다.
    • 재생에서도 드리프트/점프하는 경우: scene 자체가 localization 에 적합하지 않거나, map 자체에 문제가 있거나, EIF 를 녹화한 디바이스 자체의 motion tracking 에 scale drift 가 있음을 의미합니다.
    • 재생이 안정적인 경우: scene 자체는 localization 에 친화적이며, 문제는 사용자의 애플리케이션이 실시간 실행 중일 때의 디바이스 발열, throttling 등의 요인에서 비롯될 수 있습니다.

3단계: 애플리케이션 내부 로직 확인

  1. Pose 업데이트:

    • pose data 에 과도한 Lerp 또는 SmoothDamp 같은 불필요한 추가 smoothing 을 적용하고 있지는 않은지 확인하십시오. 이는 오히려 지연과 드리프트 느낌을 유발할 수 있습니다.
    • 대부분의 경우 Mega 가 반환한 원본 Pose 를 직접 사용하는 것이 가장 안정적입니다.
  2. Coordinate system 매칭:

    • 가상 오브젝트, scene camera, MegaTracker 등의 node 관계가 올바른지 확인하고, MegaBlocks 아래 각 node 자체의 local transform 값을 수정하지 않았는지 확인하십시오.
    • node 설정이 잘못되면 coordinate system 변환이 올바르지 않아 콘텐츠 rendering 에 예측할 수 없는 동작이 발생할 수 있습니다.

특별 알림: OST 헤드셋 디바이스의 visual overlay 문제

localization 및 rendering logic 점검을 마친 후, OST(optical see-through) 헤드셋 디바이스를 사용하는 경우에는 특수한 상황도 고려해야 합니다.

디바이스 자체가 우수한 6DoF motion tracking 능력을 갖추고 있더라도, 가상 오브젝트와 physical space 가 겹쳐 보일 때 "맞물림" 느낌이 좋지 않을 수 있습니다. 이는 일반적으로 Mega localization service 의 fault 가 아니라, optical alignment error 또는 eye calibration 차이 같은 OST 디바이스의 광학 원리로 인한 고유한 현상입니다.

이 유형의 문제에 대한 자세한 설명과 판단 방법은 OST 디바이스 특별 설명을 참고하십시오.

요약 및 best practices

앞의 troubleshooting 을 거치면 콘텐츠 흔들림 또는 드리프트의 근본 원인을 파악했을 것입니다. 빠르게 되짚고 조치할 수 있도록, 아래 표에는 일반적인 문제 증상, 가능한 원인, best practices 를 정리했습니다. troubleshooting 결과에 따라 표에서 해당 해결책을 찾으십시오.

문제 유형 가능한 원인 Best practice
미세한 흔들림 센서 노이즈, 알고리즘 한계 이런 미세한 흔들림은 정상 현상이며 일반적으로 크게 신경 쓸 필요가 없습니다
빠른 이동 후 드리프트 SLAM 지연, 알고리즘 보정 사용자가 디바이스를 부드럽게 움직이도록 안내할 수 있습니다. 빠르게 회복되지 않으면 추가 확인이 필요합니다
지속적인 대규모 드리프트 SLAM fault, 디바이스 차이 다른 디바이스로 cross-validation 을 수행합니다
심한 점프/깜박임 혼동 scene, localization 에 적합하지 않은 환경 auxiliary prior information 을 설정하거나 사용자를 안내합니다
실제 오브젝트와의 상대 위치 불일치 localization/map 오류, code logic 오류 여러 viewpoints 에서 테스트하고 virtual object 위치를 관찰하여 가능한 코드 오류를 수정합니다

위 troubleshooting 과 수정 후에도 문제가 계속되면 화면 녹화, EIF data recording, 상세 로그를 함께 첨부하여 Issue reporting 을 통해 자세한 보고서를 제출하십시오.