KR20230122157A - 주기적 파라미터 추정 시각적 관성 추적 시스템 - Google Patents

주기적 파라미터 추정 시각적 관성 추적 시스템 Download PDF

Info

Publication number
KR20230122157A
KR20230122157A KR1020237025816A KR20237025816A KR20230122157A KR 20230122157 A KR20230122157 A KR 20230122157A KR 1020237025816 A KR1020237025816 A KR 1020237025816A KR 20237025816 A KR20237025816 A KR 20237025816A KR 20230122157 A KR20230122157 A KR 20230122157A
Authority
KR
South Korea
Prior art keywords
tracking system
parameter value
visual inertial
calibration parameter
virtual object
Prior art date
Application number
KR1020237025816A
Other languages
English (en)
Inventor
게오르그 할메트쉴라거-푸넥
마티아스 칼크그루버
다니엘 울프
제이콥 질너
Original Assignee
스냅 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/301,655 external-priority patent/US11662805B2/en
Application filed by 스냅 인코포레이티드 filed Critical 스냅 인코포레이티드
Publication of KR20230122157A publication Critical patent/KR20230122157A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0383Remote input, i.e. interface arrangements in which the signals generated by a pointing device are transmitted to a PC at a remote location, e.g. to a PC in a LAN

Abstract

시각적 관성 추적 시스템을 교정하기 위한 방법이 설명된다. 디바이스는 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 수신하지 않고서 시각적 관성 추적 시스템을 동작시킨다. 시각적 관성 추적 시스템을 동작시킨 것에 응답하여, 디바이스는 디바이스에서의 센서들로부터의 센서 데이터에 액세스한다. 디바이스는, 센서 데이터에 기초하여, 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별하고 제1 교정 파라미터 값을 저장한다. 시스템은 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출한다. 추적 요청에 응답하여, 시스템은 제1 교정 파라미터 값에 액세스하고, 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정한다.

Description

주기적 파라미터 추정 시각적 관성 추적 시스템
[상호 참조]
본 출원은 2021년 4월 9일자로 출원된 미국 특허 출원 제17/301,655호의 계속 출원이며, 이 출원은 2020년 12월 30일자로 출원된 미국 가특허 출원 제63/131,981호에 대한 우선권의 이익을 주장하며, 이들 두 개의 출원의 내용은 그 전체가 본 명세서에 참고로 포함된다.
[기술 분야]
본 명세서에 개시되는 주제는 일반적으로 시각적 추적 시스템에 관한 것이다. 구체적으로는, 본 개시내용은 시각적 관성 추적 시스템(visual-inertial tracking system)을 교정하기 위한 시스템 및 방법을 다룬다.
AR(augmented reality) 디바이스는 사용자가 장면을 관찰하면서 동시에 디바이스의 시야 내의 아이템, 이미지, 객체, 또는 환경에 정렬될 수 있는 관련 가상 콘텐츠를 볼 수 있게 한다. VR(virtual reality) 디바이스는 AR 디바이스보다 더 몰입적인 경험을 제공한다. VR 디바이스는 VR 디바이스의 위치 및 오리엔테이션에 기초하여 디스플레이되는 가상 콘텐츠로 사용자의 시야를 차단한다.
AR 및 VR 디바이스들 모두는 디바이스의 자세(예를 들어, 오리엔테이션, 위치, 로케이션)를 추적하는 모션 추적 시스템에 의존한다. 모션 추적 시스템은 통상적으로 (카메라들과 다른 센서들 사이의 미리 정의된/알려진 상대적 위치들에 기초하여) 공장 교정되어, 그의 환경에 대한 원하는 로케이션에 가상 콘텐츠를 정확하게 디스플레이한다. 그러나, 공장 교정 파라미터들은 AR/VR 디바이스에서의 기계적 응력 및 온도 변화로 인해 사용자가 AR/VR 디바이스를 착용함에 따라 시간이 지나면서 표류할 수 있다.
임의의 특정 요소 또는 동작의 논의를 쉽게 식별하기 위해, 참조 번호의 최상위 숫자 또는 숫자들은 그 요소가 처음 도입되는 도면 번호를 가리킨다.
도 1은 일 예시적인 실시예에 따른 AR/VR 디스플레이 디바이스를 동작시키기 위한 환경을 예시하는 블록도이다.
도 2는 일 예시적인 실시예에 따른 AR/VR 디스플레이 디바이스를 예시하는 블록도이다.
도 3은 일 예시적인 실시예에 따른 시각적 관성 추적 시스템을 예시하는 블록도이다.
도 4는 일 예시적인 실시예에 따른 추적 교정 모듈을 예시하는 블록도이다.
도 5는 일 예시적인 실시예에 따른 파라미터 추정 동작을 예시하는 흐름도이다.
도 6은 일 예시적인 실시예에 따른 프로세스를 예시하는 블록도이다.
도 7은 일 예시적인 실시예에 따른 최근의 추정된 파라미터 값을 저장하기 위한 방법을 예시하는 흐름도이다.
도 8은 일 예시적인 실시예에 따른 시각적 관성 추적 시스템을 교정하기 위한 방법을 예시하는 흐름도이다.
도 9는 일 예시적인 실시예에 따른 시각적 내부 추적 시스템을 트리거하기 위한 방법을 예시하는 흐름도이다.
도 10은 일 예시적인 실시예에 따른 시각적 관성 추적 시스템을 교정하기 위한 방법을 예시하는 흐름도이다.
도 11은 예시적인 실시예에 따른, 본 개시내용이 구현될 수 있는 소프트웨어 아키텍처를 도시하는 블록도이다.
도 12는 일 예시적인 실시예에 따른, 머신으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 야기하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템 형태의 머신의 도식적 표현이다.
이하의 설명은 본 주제의 예시적인 실시예들을 예시하는 시스템들, 방법들, 기법들, 명령어 시퀀스들, 및 컴퓨팅 머신 프로그램 제품들을 설명한다. 이하의 설명에서는, 설명의 목적으로, 본 주제의 다양한 실시예들의 이해를 제공하기 위해 수많은 특정 상세사항들이 제시된다. 그러나, 본 기술분야의 통상의 기술자들에게는, 본 주제의 실시예들이 이러한 특정 상세사항들 중 일부 또는 다른 것이 없어도 실시될 수 있다는 것이 명백할 것이다. 예들은 가능한 변형들만을 대표한다. 명시적으로 달리 언급되지 않는 한, 구조들(예를 들어, 모듈들과 같은 구조적 컴포넌트들)은 선택적이고, 조합되거나 세분될 수 있으며, (예를 들어, 절차, 알고리즘, 또는 다른 기능에서의) 동작들은 시퀀스가 변하거나 조합되거나 세분될 수 있다.
AR 및 VR 애플리케이션들 둘 다는 사용자가 AR/VR 디스플레이 디바이스(디스플레이 디바이스라고도 지칭됨)의 디스플레이에 렌더링되는 가상 콘텐츠의 형태와 같은 정보에 액세스하도록 허용한다. 가상 콘텐츠의 렌더링은, 가상 콘텐츠가 디스플레이에서 정확하게 나타나도록 물리적 객체에 대한 또는 (디스플레이 디바이스 외부의) 기준 프레임에 대한 디스플레이 디바이스의 위치에 기초할 수 있다. AR의 경우, 가상 콘텐츠는 AR 디스플레이 디바이스의 카메라 및 사용자에 의해 인지되는 물리적 객체와 정렬되어 나타난다. 가상 콘텐츠는 물리적 세계(예를 들어, 물리적 관심대상 객체)에 첨부되는 것으로 보인다. 이를 행하기 위해, AR 디스플레이 디바이스는 물리적 객체를 검출하고, 물리적 객체의 위치에 대한 AR 디스플레이 디바이스의 자세를 추적한다. 자세는 기준 프레임에 대한 또는 또 다른 객체에 대한 디스플레이 디바이스의 위치 및 오리엔테이션을 식별한다. VR의 경우, 가상 객체는 VR 디스플레이 디바이스의 자세에 기초한 로케이션에 나타난다. 따라서, 가상 콘텐츠는 디바이스의 최근 자세에 기초하여 리프레시된다.
디스플레이 디바이스에서의 추적 시스템(시각적 관성 추적 시스템(visual-inertial tracking system)이라고도 지칭함)은 디스플레이 디바이스의 최근 위치 또는 자세를 결정한다. 추적 시스템의 예는 다수의 센서(예를 들어, 깊이 카메라, 관성 센서)로부터 취득된 데이터에 의존하는 시각적 관성 추적 시스템(시각적 주행 거리 측정(odometry) 시스템이라고도 지칭함)을 포함한다. 추적 시스템은 디스플레이 디바이스의 자세를 정확하게 결정하기 위해 센서들을 교정한다. 교정된 파라미터들은 외인성 파라미터들(예를 들어, 센서들 사이의 상대적 오리엔테이션들 및 위치들), 및 내인성 파라미터들(예를 들어, 내부 카메라 또는 렌즈 파라미터들)을 포함한다.
디스플레이 디바이스의 추적 시스템이 공장 교정되어 있지만, 이들 (외인성/내인성) 파라미터들은 시간이 지남에 따라 (예를 들어, 기계적 응력, 온도 변화로 인해) 변화할 수 있다. 추적 시스템은 AR/VR 애플리케이션의 실행 시간 동안 파라미터 값들을 점진적으로 업데이트함으로써 변화들을 완화시킨다. 그러나, 파라미터 값들이 공장 교정으로부터 더 많이 벗어날수록, 추적 시스템이 "따라잡고" 파라미터 값들의 정확한 새로운 추정을 획득하는 데에 더 오래 걸린다(예를 들어, 수렴 시간이 더 길어진다). 이러한 수렴 시간을 짧게 유지하는 것이 중요한데, 그 이유는 추정치들이 부정확하는 한, 추적 성능이 부정적인 영향을 받기 때문이다. 게다가, 파라미터 값들은 추적 시스템 이외의 컴포넌트들에 의해 이용될 수 있다. 이러한 컴포넌트들(예를 들어, VR/AR 시스템들)에 의존하는 애플리케이션들에 대해, 추적 시스템이 시작부터(예를 들어, AR/VR 애플리케이션이 시작되거나 온라인일 때) 바로 정확하게 동작하는 것이 중요하다.
본 출원은 추적 시스템의 시작에서 온라인 파라미터 추정을 위한 수렴 시간을 감소시키는 방법을 설명한다. AR/VR 애플리케이션에 의해 요청될 때마다 단지 추적 시스템을 동작시키는 대신에, 추적 시스템은 주기적으로 시작되고 짧은 시간 동안(예를 들어, 새로운 파라미터 추정이 획득될 바로 그 때까지만) 실행된다. 그 후, 이러한 새로운 파라미터 값 추정은 저장되고, 나중에 더 최신의 값(예로서, 파라미터 추정을 위한 새로운 시작 값)으로서 재사용된다. 따라서, 마지막의 최신 파라미터 값은 일반적으로 추적 시스템이 다음 번에 시작될 때 파라미터 추정을 위한 보다 정확한 시작 포인트가 된다. 마지막의 최신 파라미터 값으로부터 시작하는 것은 감소된 수렴 시간 및 추적 시스템의 시작 직후에서의 더 높아진 추적 정확도를 이끌어낸다.
일 예시적 실시예에서, 본 출원은 시각적 관성 추적 시스템을 교정하기 위한 방법을 설명하며, 방법은: 가상 객체 디스플레이 애플리케이션으로부터 추적 요청을 수신하지 않고서 디바이스에서 시각적 관성 추적 시스템을 동작시키는 단계; 시각적 관성 추적 시스템을 동작시키는 것에 응답하여, 디바이스의 복수의 센서로부터의 센서 데이터에 액세스하는 단계; 센서 데이터에 기초하여, 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별하는 단계; 제1 교정 파라미터 값을 저장하는 단계; 가상 객체 디스플레이 애플리케이션으로부터 시각적 관성 추적 시스템으로의 추적 요청을 검출하는 단계; 및 추적 요청을 검출한 것에 응답하여, 제1 교정 파라미터 값에 액세스하고 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정하는 단계를 포함한다.
그 결과, 본 명세서에 기술된 방법론들 중 하나 이상은 파라미터 값을 결정하기 위해 추적 시스템을 주기적으로 동작시키고, 최근의 파라미터 값을 저장하며, 애플리케이션에 의해 추적 시스템이 요청되는 다음 번에 마지막 파라미터 값을 시작 포인트로서 사용함으로써 전력 소비 절감 및 효율적인 교정이라는 기술적 문제를 해결하는 것을 용이하게 해준다. 본 기술된 방법은 전력 소비 감소 및 가장 빠른 교정 계산을 제공함으로써 컴퓨터의 기능의 동작에 대한 개선을 제공한다. 이와 같이, 본 명세서에 기술된 방법론들 중 하나 이상은 특정의 노력 또는 컴퓨팅 자원에 대한 필요성을 제거할 수 있다. 이러한 컴퓨팅 자원의 예는 프로세서 사이클, 네트워크 트래픽, 메모리 사용, 데이터 저장 용량, 전력 소비, 네트워크 대역폭, 및 냉각 용량을 포함한다.
도 1은, 일부 예시적인 실시예에 따른, AR/VR 디스플레이 디바이스(106)를 동작시키기에 적합한 환경(100)을 예시하는 네트워크도이다. 환경(100)은 사용자(102), AR/VR 디스플레이 디바이스(106), 및 물리적 객체(104)를 포함한다. 사용자(102)가 AR/VR 디스플레이 디바이스(106)를 동작시킨다. 사용자(102)는 인간 사용자(예를 들어, 인간), 머신 사용자(예를 들어, AR/VR 디스플레이 디바이스(106)와 상호작용하도록 소프트웨어 프로그램에 의해 구성된 컴퓨터), 또는 이들의 임의의 적절한 조합(예를 들어, 머신에 의해 보조되는 인간 또는 인간에 의해 감독되는 머신)일 수 있다. 사용자(102)는 AR/VR 디스플레이 디바이스(106)와 연관된다.
AR/VR 디스플레이 디바이스(106)는 스마트폰, 태블릿 컴퓨터, 또는 웨어러블 컴퓨팅 디바이스(예를 들어, 시계 또는 안경)와 같은 디스플레이를 갖는 컴퓨팅 디바이스일 수 있다. 컴퓨팅 디바이스는 핸드헬드일 수 있거나 또는 사용자(102)의 머리에 착탈식으로 장착될 수 있다. 일 예에서, 디스플레이는 AR/VR 디스플레이 디바이스(106)의 카메라로 캡처된 이미지들을 디스플레이하는 스크린을 포함한다. 또 다른 예에서, 디바이스의 디스플레이는 웨어러블 컴퓨팅 안경의 렌즈들에서와 같이 투명할 수 있다. 다른 예들에서, 디스플레이는 불투명하고, 부분적으로 투명하고, 부분적으로 불투명할 수 있다. 또 다른 예들에서, 디스플레이는 사용자(102)의 시야를 커버하기 위해 사용자(102)에 의해 착용가능할 수 있다.
AR/VR 디스플레이 디바이스(106)는 AR/VR 디스플레이 디바이스(106)의 카메라로 검출된 이미지들에 기초하여 가상 콘텐츠를 생성하는 AR 애플리케이션을 포함한다. 예를 들어, 사용자(102)는 물리적 객체(104)의 이미지를 캡처하도록 AR/VR 디스플레이 디바이스(106)의 카메라를 포인팅할 수 있다. AR 애플리케이션은 이미지에서 식별된 객체(예를 들어, 물리적 객체(104))에 대응하는 가상 콘텐츠를 생성하고, AR/VR 디스플레이 디바이스(106)의 디스플레이에 가상 콘텐츠를 제시한다.
AR/VR 디스플레이 디바이스(106)는 시각적 관성 추적 시스템(108)을 포함한다. 시각적 관성 추적 시스템(108)은, 예를 들어, 광학 센서들(예를 들어, 깊이 인에이블 3D 카메라, 이미지 카메라), 관성 센서들(예를 들어, 자이로스코프, 가속도계), 무선 센서들(블루투스, Wi-Fi), GPS 센서, 및 오디오 센서를 사용하여 실세계 환경(110)에 대한 AR/VR 디스플레이 디바이스(106)의 자세(예를 들어, 위치 및 오리엔테이션)를 추적한다. 일 예에서, AR/VR 디스플레이 디바이스(106)는 실세계 환경(110) 및/또는 물리적 객체(104)에 대한 AR/VR 디스플레이 디바이스(106)의 자세에 기초하여 가상 콘텐츠를 디스플레이한다. 
도 1에 도시된 머신들, 데이터베이스들, 또는 디바이스들 중 임의의 것이 해당 머신, 데이터베이스, 또는 디바이스에 대해 본 명세서에 설명된 기능들 중 하나 이상을 수행하기 위해 특수 목적 컴퓨터가 되도록 소프트웨어에 의해 수정된(예를 들어, 구성되거나 프로그래밍된) 범용 컴퓨터에서 구현될 수 있다. 예를 들어, 본 명세서에 설명된 방법론들 중 임의의 하나 이상을 구현할 수 있는 컴퓨터 시스템은 도 7 내지 도 10과 관련하여 아래에 논의된다. 본 명세서에 사용된 바와 같이, "데이터베이스"는 데이터 저장 자원이고 텍스트 파일, 테이블, 스프레드시트, 관계형 데이터베이스(예를 들어, 객체 관계형 데이터베이스), 트리플 스토어, 계층적 데이터 스토어, 또는 이들의 임의의 적합한 조합으로서 구조화된 데이터를 저장할 수 있다. 게다가, 도 1에 예시된 머신들, 데이터베이스들, 또는 디바이스들 중 임의의 2개 이상은 단일 머신이 되도록 조합될 수 있고, 임의의 단일 머신, 데이터베이스, 또는 디바이스에 대해 본 명세서에 설명된 기능들은 다수의 머신, 데이터베이스들, 또는 디바이스들 중에서 세분될 수 있다.
AR/VR 디스플레이 디바이스(106)는 컴퓨터 네트워크를 통해 동작할 수 있다. 컴퓨터 네트워크는 머신들, 데이터베이스들, 및 디바이스들 사이에서 또는 이들 중에서 통신을 가능하게 하는 임의의 네트워크일 수 있다. 따라서, 컴퓨터 네트워크는 유선 네트워크, 무선 네트워크(예를 들어, 모바일 또는 셀룰러 네트워크), 또는 이들의 임의의 적절한 조합일 수 있다. 컴퓨터 네트워크는, 사설 네트워크, 공용 네트워크(예를 들어, 인터넷), 또는 이들의 임의의 적절한 조합을 구성하는 하나 이상의 부분을 포함할 수 있다.
도 2는 일부 예시적인 실시예들에 따른, AR/VR 디스플레이 디바이스(106)의 모듈들(예를 들어, 컴포넌트들)을 예시하는 블록도이다. AR/VR 디스플레이 디바이스(106)는 센서들(202), 디스플레이(204), 프로세서(208), 및 저장 디바이스(206)를 포함한다. AR/VR 디스플레이 디바이스(106)의 예들은 웨어러블 컴퓨팅 디바이스, 모바일 컴퓨팅 디바이스, 내비게이션 디바이스, 휴대용 미디어 디바이스, 또는 스마트폰을 포함한다.
센서들(202)은, 예를 들어, 광학 센서(212)(예를 들어, 컬러 카메라, 열 카메라, 깊이 센서 및 하나 또는 다수의 그레이스케일, 글로벌/롤링 셔터 추적 카메라들과 같은 카메라) 및 관성 센서(214)(예를 들어, 자이로스코프, 가속도계)를 포함한다. 센서들(202)의 다른 예들은 근접 또는 로케이션 센서(예를 들어, 근접장 통신, GPS, 블루투스, Wi-Fi), 오디오 센서(예를 들어, 마이크로폰), 또는 이들의 임의의 적절한 조합을 포함한다. 본 명세서에 설명된 센서들(202)은 예시 목적을 위한 것이고, 따라서 센서들(202)은 전술한 것들로만 제한되지 않는다는 점에 유의한다.
디스플레이(204)는 프로세서(208)에 의해 생성된 이미지들을 디스플레이하도록 구성된 스크린 또는 모니터를 포함한다. 일 예시적인 실시예에서, 디스플레이(204)는 사용자(102)가 (AR 사용 사례에서) 디스플레이(204)를 통해 볼 수 있도록 투명하거나 반-불투명(semi-opaque)할 수 있다. 또 다른 예시적인 실시예에서, 디스플레이(204)는 사용자(102)의 눈들을 커버하고, (VR 사용 사례에서) 사용자(102)의 전체 시야를 차단한다. 또 다른 예에서, 디스플레이(204)는 터치스크린 디스플레이 상의 접촉을 통해 사용자 입력을 수신하도록 구성된 터치스크린 디스플레이를 포함한다.
프로세서(208)는 AR/VR 애플리케이션(210), 시각적 관성 추적 시스템(108), 및 추적 교정 모듈(216)을 포함한다. AR/VR 애플리케이션(210)은 컴퓨터 비전을 사용하여 물리적 환경 또는 물리적 객체(104)를 검출하고 식별한다. AR/VR 애플리케이션(210)은 식별된 물리적 객체(104) 또는 물리적 환경에 기초하여 가상 콘텐츠(예를 들어, 3D 객체 모델)를 검색한다. AR/VR 애플리케이션(210)은 디스플레이(204)에 가상 객체를 렌더링한다. 일 예시적인 실시예에서, AR/VR 애플리케이션(210)은 광학 센서(212)에 의해 캡처된 물리적 객체(104)의 이미지 상에 오버레이된(예를 들어, 중첩된, 또는 다른 방식으로 동시에 디스플레이된) 가상 콘텐츠의 시각화를 생성하는 로컬 렌더링 엔진을 포함한다. 가상 콘텐츠의 시각화는 광학 센서(212)에 대한 물리적 객체(104)의 위치(예를 들어, 물리적 로케이션, 오리엔테이션, 또는 둘 모두)를 조정함으로써 조작될 수 있다. 유사하게, 가상 콘텐츠의 시각화는 물리적 객체(104)에 대한 AR/VR 디스플레이 디바이스(106)의 자세를 조정함으로써 조작될 수 있다. VR 애플리케이션에 대해, AR/VR 애플리케이션(210)은 AR/VR 디스플레이 디바이스(106)의 자세에 기초하여 결정된 로케이션에서(디스플레이(204)에서) 디스플레이(204)에 가상 콘텐츠를 디스플레이한다.
시각적 관성 추적 시스템(108)은 AR/VR 디스플레이 디바이스(106)의 자세를 추정한다. 예를 들어, 시각적 관성 추적 시스템(108)은 광학 센서(212) 및 관성 센서(214)로부터의 이미지 데이터 및 대응하는 관성 데이터를 사용하여 기준 프레임(예를 들어, 실세계 환경(110))에 대한 AR/VR 디스플레이 디바이스(106)의 로케이션 및 자세를 추적한다. 일 예시적인 실시예에서, 시각적 관성 추적 시스템(108)은 AR/VR 애플리케이션(210)과는 독립적으로 그리고 비동기적으로 동작한다. 예를 들어, 시각적 관성 추적 시스템(108)은 AR/VR 애플리케이션(210)으로부터 어떠한 추적 요청도 수신하지 않고서 오프라인으로 동작한다. 또 다른 예에서, 시각적 관성 추적 시스템(108)은 AR/VR 애플리케이션(210)이 AR/VR 디스플레이 디바이스(106)에서 실행 중인지에 관계없이 주기적으로 (예를 들어, n초마다, m분마다) 동작한다.
추적 교정 모듈(216)은 디폴트 교정 파라미터 값들(예를 들어, 공장 교정)에 기초하여 시각적 관성 추적 시스템(108)의 내부 시각적 주행 거리 측정 시스템(예를 들어, 광학 센서(212), 관성 센서(214))을 초기에 교정한다. AR/VR 애플리케이션(210)이 동작할 때, 시각적 관성 추적 시스템(108)은 온라인이라고 지칭될 수 있다. AR/VR 애플리케이션(210)이 동작을 중단할 때, 시각적 관성 추적 시스템(108)은 오프라인이라고 지칭될 수 있다.
일 예시적인 실시예에서, AR/VR 애플리케이션(210)에 의해 요청될 때마다 시각적 관성 추적 시스템(108)을 실행하는 것 대신에, 추적 교정 모듈(216)은 새로운 파라미터 추정이 획득될 때까지 시각적 관성 추적 시스템(108)에게 주기적으로 시작하고 짧은 시간 기간 동안 실행하도록 지시한다. 추적 교정 모듈(216)은 새로운 추정을 저장 디바이스(206)에 저장한다. 추적 교정 모듈(216)은, 시각적 관성 추적 시스템(108)이 다음 번에 시작될 때 또 다른 파라미터 추정을 위한 더 최신의 시작 포인트로서 새로운 추정을 재사용한다. 새로운 추정을 또 다른 파라미터 추정을 위한 시작 포인트로서 이용하는 것은, 시각적 관성 추적 시스템(108)의 시작 직후에 감소된 수렴 시간 및 더 높은 추적 정확도를 이끌어 낸다.
저장 디바이스(206)는 가상 콘텐츠(218) 및 저장된 온라인 추정된 파라미터들(220)을 저장한다. 가상 콘텐츠(218)는, 예를 들어, 시각적 기준들(예를 들어, 물리적 객체들의 이미지들) 및 대응하는 경험들(예를 들어, 3차원 가상 객체 모델들)의 데이터베이스를 포함한다. 저장된 온라인 추정된 파라미터들(220)은, 예를 들어, 시각적 관성 추적 시스템(108)에 대한 최근의 추정된 파라미터 값들을 포함한다. 일 예에서, 저장된 온라인 추정된 파라미터들(220)은 시각적 관성 추적 시스템(108)의 주기적 동작에 의해 결정된 최근의 추정된 파라미터 값에 기초하여 최근의 추정된 파라미터 값을 업데이트한다.
본 명세서에 설명된 모듈들 중 임의의 하나 이상은 하드웨어(예를 들어, 머신의 프로세서) 또는 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다. 예를 들어, 본 명세서에 설명된 임의의 모듈은 그 모듈에 대해 본 명세서에 설명된 동작들을 수행하도록 프로세서를 구성할 수 있다. 더욱이, 이들 모듈들 중 임의의 2개 이상은 단일 모듈이 되도록 조합될 수 있고, 단일 모듈에 대해 본 명세서에서 설명된 기능들은 복수의 모듈 중에서 세분될 수 있다. 게다가, 다양한 예시적인 실시예들에 따르면, 단일 머신, 데이터베이스, 또는 디바이스 내에 구현되는 것으로서 본 명세서에 설명된 모듈들은 다수의 머신, 데이터베이스들, 또는 디바이스들에 걸쳐 분산될 수 있다.
도 3은 일 예시적인 실시예에 따른 시각적 관성 추적 시스템(108)을 도시한다. 시각적 관성 추적 시스템(108)은, 예를 들어, 관성 센서 모듈(302), 광학 센서 모듈(304), 및 자세 추정 모듈(306)을 포함한다. 관성 센서 모듈(302)은 관성 센서(214)로부터의 관성 센서 데이터에 액세스한다. 광학 센서 모듈(304)은 광학 센서(212)로부터의 광학 센서 데이터에 액세스한다.
자세 추정 모듈(306)은 기준 프레임(예를 들어, 실세계 환경(110))에 대한 AR/VR 디스플레이 디바이스(106)의 자세(예를 들어, 로케이션, 위치, 오리엔테이션)를 결정한다. 일 예시적인 실시예에서, 자세 추정 모듈(306)은 광학 센서(212)로 캡처된 이미지들로부터의 특징 포인트들의 3D 맵들 및 관성 센서(214)로 캡처된 관성 센서 데이터에 기초하여 AR/VR 디스플레이 디바이스(106)의 자세를 추정하는 시각적 주행 거리 측정 시스템을 포함한다. 광학 센서 모듈(304)은 광학 센서(212)로부터의 이미지 데이터에 액세스한다.
일 예시적인 실시예에서, 자세 추정 모듈(306)은 AR/VR 디스플레이 디바이스(106)의 위치 및 오리엔테이션을 계산한다. AR/VR 디스플레이 디바이스(106)는 하나 이상의 관성 센서(214)를 갖는 강성 플랫폼(AR/VR 디스플레이 디바이스(106)의 프레임) 상에 장착된 하나 이상의 광학 센서(212)를 포함한다. 광학 센서(212)는 비중첩(분산된 개구) 또는 중첩(스테레오 또는 그 이상) 시야를 갖도록 장착될 수 있다.
일부 예시적인 실시예들에서, 자세 추정 모듈(306)은 강성 플랫폼(예를 들어, AR/VR 디스플레이 디바이스(106)) 또는 리그(rig)에 결합되는 관성 센서(214)로부터의 관성 정보와 광학 센서(212)로부터의 이미지 정보를 조합하는 알고리즘을 포함한다. 일 실시예에서, 리그는 관성 내비게이션 유닛(예컨대, 관성 센서(214))을 갖는 강성 플랫폼 상에 장착된 다수의 카메라로 이루어져 있을 수 있다. 따라서, 리그는 적어도 하나의 관성 내비게이션 유닛 및 적어도 하나의 카메라를 가질 수 있다.
도 4는 일 예시적인 실시예에 따른 추적 교정 모듈(216)을 도시하는 블록도이다. 추적 교정 모듈(216)은 온라인 파라미터 추정 컴포넌트(402) 및 주기적 파라미터 추정 컴포넌트(404)를 포함한다.
온라인 파라미터 추정 컴포넌트(402)는 AR/VR 애플리케이션(210)이 추적 동작을 요청하고 있다는 것을 검출한 것에 응답하여 시각적 관성 추적 시스템(108)을 동작시킨다. 일 예시적인 실시예에서, 온라인 파라미터 추정 컴포넌트(402)는 저장된 온라인 추정된 파라미터들(220)에 저장된 최근의 추정된 교정 파라미터 값들에 액세스한다. 온라인 파라미터 추정 컴포넌트(402)는 업데이트된 교정 파라미터 값들을 계산하기 위해 최근의 추정된 파라미터 값들을 사용한다.
주기적 파라미터 추정 컴포넌트(404)는 시각적 관성 추적 시스템(108)을 주기적으로 동작시켜 최근 교정 파라미터 값들을 계산한다. 일 예에서, 주기적 파라미터 추정 컴포넌트(404)는 매 n초마다 시각적 관성 추적 시스템(108)을 주기적으로 동작시킨다. 또 다른 예에서, 주기적 파라미터 추정 컴포넌트(404)는, 트리거 이벤트(예를 들어, 온도 센서는 큰 변화를 나타내고, 가속도계는 큰 변화를 검출함(예를 들어, 디바이스가 바닥에 떨어짐), "착용"-검출기 트리거들(예를 들어, 사용자가 AR 안경을 취하고/착용하고, 이는 프레임에 기계적 응력을 야기함), 낮은 배터리 전력)을 검출한 것에 응답하여 시각적 관성 추적 시스템(108)을 동작시킨다. 주기적 파라미터 추정 컴포넌트(404)는, 최근의 최신의 추정된 파라미터 값이 이용가능하게 된 후에 시각적 관성 추적 시스템(108)을 중단시킨다. 주기적 파라미터 추정 컴포넌트(404)는 최신의 추정된 파라미터 값을 최근에 저장된 온라인 추정된 파라미터들(220)로서 저장 디바이스(206)에 저장한다.
도 5는 일 예시적인 실시예에 따른 파라미터 추정 동작(516)을 예시하는 흐름도이다. 파라미터 추정 동작(516)에서의 동작들은, 도 2 및 도 3에 관하여 전술된 컴포넌트들(예를 들어, 모듈들, 엔진들)을 이용하여, 시각적 관성 추적 시스템(108)에 의해 수행될 수 있다. 따라서, 파라미터 추정 동작(516)은 시각적 관성 추적 시스템(108) 및 추적 교정 모듈(216)을 참조하여 예를 들어 설명된다. 그러나, 동작들 중 적어도 일부는 다양한 다른 하드웨어 구성에 배치되거나 또는 다른 곳에 존재하는 유사한 컴포넌트들에 의해 수행될 수 있다는 것을 알아야 한다. 예를 들어, 동작들 중 일부는 AR/VR 애플리케이션(210)에서 수행될 수 있다.
판정 블록(502)에서, 추적 교정 모듈(216)은 AR/VR 애플리케이션(210)이 시각적 관성 추적 시스템(108)으로부터 추적 동작을 요청하고 있는지를 결정한다. 추적 교정 모듈(216)이 AR/VR 애플리케이션(210)이 시각적 관성 추적 시스템(108)으로부터 추적 동작들을 요청하고 있다고 결정하는 경우, 프로세스는 블록(510), 블록(512), 및 판정 블록(514)으로 진행한다.
블록(510)에서, 추적 교정 모듈(216)은 저장 디바이스(206)로부터 최근의 추정된 파라미터 값을 로드하거나 검색한다. 블록(512)에서, 추적 교정 모듈(216)은 검색된 추정된 파라미터 값으로부터 시작하여 업데이트된 최근의 교정 파라미터 값을 계산한다. 판정 블록(514)에서, 추적 교정 모듈(216)은 AR/VR 애플리케이션(210)이 여전히 시각적 관성 추적 시스템(108)으로부터 추적 동작들을 요구하는지를 결정한다. AR/VR 애플리케이션(210)이 시각적 관성 추적 시스템(108)으로부터 어떠한 추가 추적 동작들도 필요로 하지 않는 경우, 프로세스는 판정 블록(502)으로 되돌아간다.
추적 교정 모듈(216)이 AR/VR 애플리케이션(210)이 시각적 관성 추적 시스템(108)으로부터 추적 동작들을 요청하고 있지 않다고 결정하는 경우, 프로세스는 판정 블록(504), 블록(506), 및 블록(508)으로 계속된다. 판정 블록(504)에서, 추적 교정 모듈(216)은 AR/VR 애플리케이션(210)의 마지막 동작에 기초하여 최근의 파라미터 값을 재추정할지를 결정한다. 블록(506)에서, 추적 교정 모듈(216)은 (예를 들어, AR/VR 애플리케이션(210)을 실행하지 않고서) 시각적 관성 추적 시스템(108)을 오프라인으로 동작시킨다. 블록(508)에서, 추적 교정 모듈(216)은 최근의 추정된 파라미터 값을 저장하고 시각적 관성 추적 시스템(108)의 추적 동작을 중단한다.
도 6은 예시적인 일 실시예에 따른 예시적인 프로세스를 도시하는 블록도이다. 시각적 관성 추적 시스템(108)은 AR/VR 디스플레이 디바이스(106)의 자세를 결정하기 위해 센서들(202)로부터 센서 데이터를 수신한다. 추적 교정 모듈(216)은 최근의 파라미터 추정된 값들(예를 들어, 카메라들과 IMU 사이의 공간적 관계들, IMU 바이어스들, AR/VR 디스플레이 디바이스(106) 내의 미리 정의된 로케이션들에 배치된 센서들의 변위를 초래하는 프레임의 구부림, 자동 노출)에 기초하여 센서 데이터를 교정한다. 추적 교정 모듈(216)은 최근의 추정된 파라미터 값들(예컨대, 저장된 온라인 추정된 파라미터들(220))을 저장 디바이스(206)에서 저장한다.
교정된 공간적 관계 데이터는 시각적 관성 추적 시스템(108)의 모델(602)에 제공된다. 모델(602)은 초기에 공장 교정(604) 및 시각적 관성 추적 시스템(108)으로부터의 데이터에 의해 결정된다. 일 예시적 실시예에서, 모델(602)은 시각적 관성 추적 시스템(108)으로부터의 데이터 및 저장된 온라인 추정된 파라미터(220)에 기초하여 결정된다. 모델(602)은 AR/VR 디스플레이 디바이스(106)의 기하학적 모델을 AR/VR 애플리케이션(210)에 제공한다.
AR/VR 애플리케이션(210)은 저장 디바이스(206)로부터 가상 콘텐츠(218)를 검색하고, AR/VR 디스플레이 디바이스(106)의 기하학적 모델에 기초한 로케이션에서 가상 콘텐츠(218)가 디스플레이되게 야기한다.
도 7은 일 예시적인 실시예에 따른 AR 디스플레이 디바이스의 시각적 주행 거리 측정을 업데이트하기 위한 루틴(700)을 도시하는 흐름도이다. 루틴(700)에서의 동작들은 도 2와 관련하여 위에서 설명된 컴포넌트들(예를 들어, 모듈들, 엔진들)을 이용하여 시각적 관성 추적 시스템(108)에 의해 수행될 수 있다. 따라서, 루틴(700)은 추적 교정 모듈(216)을 참조하여 예를 들어 설명된다. 그러나, 루틴(700)의 동작들 중 적어도 일부는 다양한 다른 하드웨어 구성들 상에 배치될 수 있거나 또는 다른 곳에 존재하는 유사한 컴포넌트들에 의해 수행될 수 있다는 것을 알 것이다.
블록(702)에서, 주기적 파라미터 추정 컴포넌트(404)가 시각적 관성 추적 시스템(108)을 주기적으로 동작시킨다. 블록(704)에서, 시각적 관성 추적 시스템(108)은 최근의 추정된 파라미터 값을 결정한다. 블록(706)에서, 주기적 파라미터 추정 컴포넌트(404)는 최근의 추정된 파라미터 값을 저장한다.
유의할 점은, 다른 실시예들이 유사한 기능들을 달성하기 위해 상이한 시퀀싱, 부가의 또는 보다 적은 동작들, 및 상이한 명명법 또는 용어법을 사용할 수 있다는 것이다. 일부 실시예들에서, 다양한 동작들이, 동기식 또는 비동기식 방식으로, 다른 동작들과 병렬로 수행될 수 있다. 본 명세서에 기술된 동작들은 동작들의 일부 원리들을 간략화된 형태로 예시하기 위해 선택되었다.
도 8은 일 예시적인 실시예에 따라 AR 디스플레이 디바이스의 시각적 주행 거리 측정을 업데이트하기 위한 루틴(800)을 예시하는 흐름도이다. 루틴(800)에서의 동작들은 도 2와 관련하여 위에서 설명된 컴포넌트들(예를 들어, 모듈들, 엔진들)을 사용하여 추적 교정 모듈(216)에 의해 수행될 수 있다. 따라서, 루틴(800)은 추적 교정 모듈(216)을 참조하여 예를 들어 설명된다. 그러나, 루틴(800)의 동작들 중 적어도 일부는 다양한 다른 하드웨어 구성들 상에 배치될 수 있거나 또는 다른 곳에 존재하는 유사한 컴포넌트들에 의해 수행될 수 있다는 점을 알 것이다.
블록(802)에서, 온라인 파라미터 추정 컴포넌트(402)는 시각적 관성 추적 시스템(108)을 요청하는 애플리케이션을 검출한다. 블록(804)에서, 온라인 파라미터 추정 컴포넌트(402)는 저장 디바이스(206)로부터 최근의 추정된 파라미터 값을 검색한다. 블록(806)에서, 온라인 파라미터 추정 컴포넌트(402)는 최근의 추정된 파라미터 값 및 공장 교정에 기초하여 시각적 관성 추적 시스템(108)을 교정한다.
도 9는 일 예시적인 실시예에 따라 AR 디스플레이 디바이스의 시각적 주행 거리 측정을 업데이트하기 위한 루틴(900)을 예시하는 흐름도이다. 루틴(900)에서의 동작들은 도 3과 관련하여 위에서 설명된 컴포넌트들(예를 들어, 모듈들, 엔진들)을 사용하여 추적 교정 모듈(216)에 의해 수행될 수 있다. 따라서, 루틴(900)은 추적 교정 모듈(216)을 참조하여 예를 들어 설명된다. 그러나, 루틴(900)의 동작들 중 적어도 일부는 다양한 다른 하드웨어 구성들 상에 배치될 수 있거나 또는 다른 곳에 존재하는 유사한 컴포넌트들에 의해 수행될 수 있다는 점을 알 것이다.
블록(902)에서, 주기적 파라미터 추정 컴포넌트(404)가 트리거 이벤트를 검출한다. 블록(904)에서, 주기적 파라미터 추정 컴포넌트(404)는 트리거 이벤트에 응답하여 시각적 관성 추적 시스템(108)을 시작한다. 블록(906)에서, 주기적 파라미터 추정 컴포넌트(404)는 최근의 추정된 파라미터 값을 결정한다. 블록(908)에서, 주기적 파라미터 추정 컴포넌트(404)는 최근의 추정된 파라미터 값을 저장 디바이스(206)에 저장한다. 블록(910)에서, 주기적 파라미터 추정 컴포넌트(404)는 시각적 관성 추적 시스템(108)을 턴 오프한다.
도 10은 일 실시예에 따른 시각적 관성 추적 시스템을 교정하기 위한 방법을 예시하는 흐름도이다. 블록(1002)에서, 루틴(1000)은, 디바이스에서, 가상 객체 디스플레이 애플리케이션으로부터 추적 요청을 수신하지 않고서 시각적 관성 추적 시스템을 동작시킨다. 블록(1004)에서, 루틴(1000)은 시각적 관성 추적 시스템을 동작시키는 것에 응답하여, 디바이스의 복수의 센서로부터의 센서 데이터에 액세스한다. 블록(1006)에서, 루틴(1000)은 센서 데이터에 기초하여, 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별한다. 블록(1008)에서, 루틴(1000)은 제1 교정 파라미터 값을 저장한다. 블록(1010)에서, 루틴(1000)은 가상 객체 디스플레이 애플리케이션으로부터 시각적 관성 추적 시스템으로의 추적 요청을 검출한다. 블록(1012)에서, 루틴(1000)은 추적 요청을 검출한 것에 응답하여, 제1 교정 파라미터 값에 액세스하고 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정한다.
도 11은 본 명세서에 설명된 디바이스들 중 임의의 하나 이상에 설치될 수 있는 소프트웨어 아키텍처(1104)를 예시하는 블록도(1100)이다. 소프트웨어 아키텍처(1104)는 프로세서들(1120), 메모리(1126), 및 I/O 컴포넌트들(1138)을 포함하는 머신(1102)과 같은 하드웨어에 의해 지원된다. 이 예에서, 소프트웨어 아키텍처(1104)는 계층들의 스택으로서 개념화될 수 있으며, 여기서 각각의 계층은 특정 기능성을 제공한다. 소프트웨어 아키텍처(1104)는 운영 체제(1112), 라이브러리들(1110), 프레임워크들(1108), 및 애플리케이션들(1106)과 같은 계층들을 포함한다. 동작상, 애플리케이션들(1106)은 소프트웨어 스택을 통해 API 호출들(1150)을 기동하고 API 호출들(1150)에 응답하여 메시지들(1152)을 수신한다.
운영 체제(1112)는 하드웨어 자원들을 관리하고 공통 서비스들을 제공한다. 운영 체제(1112)는, 예를 들어, 커널(1114), 서비스들(1116), 및 드라이버들(1122)을 포함한다. 커널(1114)은 하드웨어와 다른 소프트웨어 계층들 사이의 추상화 계층으로서 작용한다. 예를 들어, 커널(1114)은, 특히, 메모리 관리, 프로세서 관리(예를 들어, 스케줄링), 컴포넌트 관리, 네트워킹, 및 보안 설정을 제공한다. 서비스들(1116)은 다른 소프트웨어 계층들에 대한 다른 공통 서비스들을 제공할 수 있다. 드라이버들(1122)은 그 아래에 있는 하드웨어를 제어하거나 그와 인터페이스하는 것을 담당한다. 예를 들어, 드라이버(1122)는, 디스플레이 드라이버, 카메라 드라이버, BLUETOOTH® 또는 BLUETOOTH® Low Energy 드라이버, 플래시 메모리 드라이버, 직렬 통신 드라이버(예를 들어, USB(Universal Serial Bus) 드라이버), WI-FI® 드라이버, 오디오 드라이버, 전력 관리 드라이버 등을 포함할 수 있다.
라이브러리들(1110)은 애플리케이션들(1106)에 의해 사용되는 로우 레벨 공통 인프라스트럭처를 제공한다. 라이브러리들(1110)은 메모리 할당 기능, 스트링 조작 기능, 수학 기능, 및 그와 유사한 것과 같은 기능을 제공하는 시스템 라이브러리(1118)(예를 들어, C 표준 라이브러리)를 포함할 수 있다. 또한, 라이브러리들(1110)은 미디어 라이브러리(예를 들어, MPEG4(Moving Picture Experts Group-4), H.264 또는 AVC(Advanced Video Coding), MP3(Moving Picture Experts Group Layer-3), AAC(Advanced Audio Coding), AMR(Adaptive Multi-Rate) 오디오 코덱, JPEG 또는 JPG(Joint Photographic Experts Group), PNG(Portable Network Graphics)가 같은 다양한 미디어 포맷의 프레젠테이션과 조작을 지원하는 라이브러리들), 그래픽 라이브러리(예를 들어, 그래픽 콘텐츠를 디스플레이 상에서 2차원(2D) 및 3차원(3D)으로 렌더링하는데 이용되는 OpenGL 프레임워크), 데이터베이스 라이브러리(예를 들어, 다양한 관계형 데이터베이스 기능을 제공하는 SQLite), 웹 라이브러리(예를 들어, 웹 브라우징 기능을 제공하는 WebKit), 및 그와 유사한 것과 같은 API 라이브러리들(1124)을 포함할 수 있다. 라이브러리들(1110)은 또한, 많은 다른 API들을 애플리케이션들(1106)에 제공하는 매우 다양한 다른 라이브러리들(1128)을 포함할 수 있다.
프레임워크들(1108)은 애플리케이션들(1106)에 의해 사용되는 하이 레벨 공통 인프라스트럭처를 제공한다. 예를 들어, 프레임워크들(1108)은 다양한 GUI(graphical user interface) 기능, 하이 레벨 자원 관리, 및 하이 레벨 로케이션 서비스를 제공한다. 프레임워크들(1108)은 애플리케이션(1106)에 의해 이용될 수 있는 광범위한 스펙트럼의 다른 API들을 제공할 수 있고, 그 중 일부는 특정한 운영 체제 또는 플랫폼에 특유일 수 있다.
예시적인 실시예에서, 애플리케이션들(1106)은 홈 애플리케이션(1136), 연락처 애플리케이션(1130), 브라우저 애플리케이션(1132), 북 리더 애플리케이션(1134), 로케이션 애플리케이션(1142), 미디어 애플리케이션(1144), 메시징 애플리케이션(1146), 게임 애플리케이션(1148), 및 제3자 애플리케이션(1140)과 같은 광범위한 다른 애플리케이션들을 포함할 수 있다. 애플리케이션들(1106)은 프로그램들에서 정의된 기능들을 실행하는 프로그램들이다. 객체 지향형 프로그래밍 언어(예를 들어, Objective-C, Java, 또는 C++) 또는 절차형 프로그래밍 언어(예를 들어, C 또는 어셈블리 언어)와 같은 다양한 방식으로 구조화된 다양한 프로그래밍 언어가 애플리케이션들(1106) 중 하나 이상을 생성하기 위해 이용될 수 있다. 특정한 예에서, 제3자 애플리케이션(1140)(예를 들어, 특정한 플랫폼의 벤더 이외의 엔티티에 의해 ANDROID™ 또는 IOS™ SDK(software development kit)를 이용하여 개발된 애플리케이션)은, IOS™, ANDROID™, WINDOWS® Phone, 또는 또 다른 모바일 운영 체제와 같은 모바일 운영 체제 상에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제3자 애플리케이션(1140)은 본 명세서에서 설명된 기능성을 용이하게 하기 위해 운영 체제(1112)에 의해 제공되는 API 호출들(1150)을 기동할 수 있다.
도 12는, 머신(1200)으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 야기하기 위한 명령어들(1208)(예를 들어, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱, 또는 기타 실행가능한 코드)이 실행될 수 있는 머신(1200)의 도식적 표현이다. 예를 들어, 명령어들(1208)은 머신(1200)으로 하여금 본 명세서에서 설명된 방법들 중 임의의 하나 이상을 실행하게 야기할 수 있다. 명령어들(1208)은, 일반적인 비프로그래밍된 머신(1200)을, 설명되고 예시된 기능들을 설명된 방식으로 실행하도록 프로그래밍된 특정한 머신(1200)으로 변환한다. 머신(1200)은 독립형 디바이스로서 동작하거나 다른 머신들에 결합(예를 들어, 네트워킹)될 수 있다. 네트워킹된 배치에서, 머신(1200)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신의 자격으로, 또는 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신(1200)은, 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 셋탑 박스(STB), PDA, 엔터테인먼트 미디어 시스템, 셀룰러 전화, 스마트 폰, 모바일 디바이스, 웨어러블 디바이스(예를 들어, 스마트 시계), 스마트 홈 디바이스(예를 들어, 스마트 어플라이언스), 다른 스마트 디바이스, 웹 어플라이언스, 네트워크 라우터, 네트워크 스위치, 네트워크 브릿지, 또는 머신(1200)에 의해 취해질 동작들을 지정하는 명령어들(1208)을 순차적으로 또는 기타 방식으로 실행할 수 있는 임의의 머신을 포함할 수 있지만, 이것들로만 제한되는 것은 아니다. 또한, 하나의 머신(1200)만이 예시되어 있지만, 용어 "머신"은 또한, 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들(1208)을 개별적으로 또는 공동으로 실행하는 머신들의 컬렉션을 포함하는 것으로 간주되어야 한다.
머신(1200)은 버스(1244)를 통해 서로 통신하도록 구성될 수 있는 프로세서들(1202), 메모리(1204), 및 I/O 컴포넌트들(1242)을 포함할 수 있다. 예시적인 실시예에서, 프로세서들(1202)(예를 들어, CPU(Central Processing Unit), RISC(Reduced Instruction Set Computing) 프로세서, CISC(Complex Instruction Set Computing) 프로세서, GPU(Graphics Processing Unit), DSP(Digital Signal Processor), ASIC, RFIC(Radio-Frequency Integrated Circuit), 다른 프로세서, 또는 이들의 임의의 적합한 조합)은, 예를 들어, 명령어들(1208)을 실행하는 프로세서(1206) 및 프로세서(1210)를 포함할 수 있다. "프로세서"라는 용어는 명령어들을 동시에 실행할 수 있는 2개 이상의 독립적 프로세서(때때로 "코어들"이라고 지칭됨)을 포함할 수 있는 멀티-코어 프로세서들을 포함하도록 의도된다. 도 12는 다수의 프로세서(1202)를 도시하지만, 머신(1200)은 단일 코어를 갖는 단일 프로세서, 다수의 코어를 갖는 단일 프로세서(예를 들어, 멀티-코어 프로세서), 단일 코어를 갖는 다수의 프로세서, 다수의 코어를 갖는 다수의 프로세서, 또는 이들의 임의의 조합을 포함할 수 있다.
메모리(1204)는 버스(1244)를 통해 프로세서들(1202)에 액세스가능한 메인 메모리(1212), 정적 메모리(1214), 및 저장 유닛(1216) 모두를 포함한다. 메인 메모리(1204), 정적 메모리(1214), 및 저장 유닛(1216)은 본 명세서에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 명령어들(1208)을 저장한다. 명령어들(1208)은 또한, 머신(1200)에 의한 그의 실행 동안, 완전히 또는 부분적으로, 메인 메모리(1212) 내에, 정적 메모리(1214) 내에, 저장 유닛(1216) 내의 머신 판독가능 매체(1218) 내에, 프로세서들(1202) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 이들의 임의의 적합한 조합으로 존재할 수 있다.
I/O 컴포넌트들(1242)은 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 전송하고, 정보를 교환하고, 측정들을 캡처하는 등을 위한 매우 다양한 컴포넌트들을 포함할 수 있다. 특정 머신에 포함되는 특정 I/O 컴포넌트들(1242)은 머신의 타입에 의존할 것이다. 예를 들어, 모바일 폰들과 같은 휴대용 머신들은 터치 입력 디바이스 또는 다른 그러한 입력 메커니즘들을 포함할 수 있는 반면, 헤드리스 서버 머신(headless server machine)은 그러한 터치 입력 디바이스를 포함하지 않을 가능성이 크다. I/O 컴포넌트들(1242)은 도 12에 도시되지 않은 많은 다른 컴포넌트들을 포함할 수 있다는 것을 알 것이다. 다양한 예시적인 실시예들에서, I/O 컴포넌트들(1242)은 출력 컴포넌트들(1228) 및 입력 컴포넌트들(1230)을 포함할 수 있다. 출력 컴포넌트들(1228)은 시각적 컴포넌트들(예를 들어, 플라즈마 디스플레이 패널(PDP), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터, 또는 음극선관(CRT)과 같은 디스플레이), 음향 컴포넌트들(예를 들어, 스피커들), 햅틱 컴포넌트들(예를 들어, 진동 모터, 저항 메커니즘들), 다른 신호 생성기들 등을 포함할 수 있다. 입력 컴포넌트들(1230)은 영숫자 입력 컴포넌트들(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 포토-광학 키보드, 또는 다른 영숫자 입력 컴포넌트들), 포인트 기반 입력 컴포넌트들(예를 들어, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서, 또는 다른 포인팅 기구), 촉각 입력 컴포넌트들(예를 들어, 물리적 버튼, 터치들 또는 터치 제스처들의 로케이션 및/또는 힘을 제공하는 터치 스크린, 또는 다른 촉각 입력 컴포넌트들), 오디오 입력 컴포넌트들(예를 들어, 마이크로폰), 및 그와 유사한 것을 포함할 수 있다.
추가의 예시적인 실시예들에서, 무엇보다도 특히, I/O 컴포넌트들(1242)은 바이오메트릭 컴포넌트들(1232), 모션 컴포넌트들(1234), 환경 컴포넌트들(1236), 또는 위치 컴포넌트들(1238)을 포함할 수 있다. 예를 들어, 바이오메트릭 컴포넌트들(1232)은 표현들(예를 들어, 손 표현, 얼굴 표정, 음성 표현, 신체 제스처, 또는 눈 추적)을 검출하고, 생체신호들(예를 들어, 혈압, 심박수, 체온, 땀, 또는 뇌파)을 측정하고, 사람을 식별(예를 들어, 음성 식별, 망막 식별, 얼굴 식별, 지문 식별, 또는 뇌파계 기반 식별)하고, 및 그와 유사한 것을 하는 컴포넌트들을 포함한다. 모션 컴포넌트들(1234)은 가속도 센서 컴포넌트들(예를 들어, 가속도계), 중력 센서 컴포넌트들, 회전 센서 컴포넌트들(예를 들어, 자이로스코프) 등을 포함한다. 환경 컴포넌트들(1236)은, 예를 들어, 조명 센서 컴포넌트들(예를 들어, 광도계), 온도 센서 컴포넌트들(예를 들어, 주변 온도를 검출하는 하나 이상의 온도계), 습도 센서 컴포넌트들, 압력 센서 컴포넌트들(예를 들어, 기압계), 음향 센서 컴포넌트들(예를 들어, 배경 잡음을 검출하는 하나 이상의 마이크로폰), 근접 센서 컴포넌트들(예를 들어, 인근 물체들을 검출하는 적외선 센서들), 가스 센서들(예를 들어, 안전을 위해 유해성 가스들의 농도들을 검출하거나 대기 내의 오염물질들을 측정하는 가스 검출 센서들), 또는 주변 물리적 환경에 대응하는 표시들, 측정들, 또는 신호들을 제공할 수 있는 다른 컴포넌트들을 포함한다. 위치 컴포넌트들(1238)은 로케이션 센서 컴포넌트들(예를 들어, GPS 수신기 컴포넌트), 고도 센서 컴포넌트들(예를 들어, 고도가 도출될 수 있는 기압을 검출하는 고도계들 또는 기압계들), 오리엔테이션 센서 컴포넌트들(예를 들어, 자력계들), 및 그와 유사한 것을 포함한다.
통신은 다양한 기술을 이용하여 구현될 수 있다. I/O 컴포넌트(1242)는, 제각기 결합(1224) 및 결합(1226)을 통해 머신(1200)을 네트워크(1220) 또는 디바이스(1222)에 결합하도록 동작가능한 통신 컴포넌트(1240)를 추가로 포함한다. 예를 들어, 통신 컴포넌트(1240)는 네트워크 인터페이스 컴포넌트 또는 네트워크(1220)와 인터페이스하는 또 다른 적절한 디바이스를 포함할 수 있다. 추가 예에서, 통신 컴포넌트(1240)는, 유선 통신 컴포넌트, 무선 통신 컴포넌트, 셀룰러 통신 컴포넌트, NFC(Near Field Communication) 컴포넌트, Bluetooth® 컴포넌트(예를 들어, Bluetooth® Low Energy), Wi-Fi® 컴포넌트, 및 다른 양태를 통해 통신을 제공하는 기타의 통신 컴포넌트를 포함할 수 있다. 디바이스(1222)는 또 다른 머신 또는 다양한 주변 디바이스들 중 임의의 것(예를 들어, USB를 통해 결합된 주변 디바이스)일 수 있다.
더욱이, 통신 컴포넌트들(1240)은 식별자들을 검출할 수 있거나 식별자들을 검출하도록 동작가능한 컴포넌트들을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(1240)은 RFID(Radio Frequency Identification) 태그 판독기 컴포넌트들, NFC 스마트 태그 검출 컴포넌트들, 광학 판독기 컴포넌트들(예를 들어, UPC(Universal Product Code) 바코드와 같은 1차원 바코드들, QR(Quick Response) 코드, Aztec 코드, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D 바코드와 같은 다차원 바코드들, 및 다른 광학 코드들을 검출하는 광학 센서), 또는 음향 검출 컴포넌트들(예를 들어, 태깅된 오디오 신호들을 식별하는 마이크로폰들)을 포함할 수 있다. 또한, 인터넷 프로토콜(IP) 지오로케이션을 통한 로케이션, Wi-Fi® 신호 삼각측량을 통한 로케이션, 특정 로케이션을 나타낼 수 있는 NFC 비컨 신호를 검출하는 것을 통한 로케이션 등과 같은 다양한 정보가 통신 컴포넌트들(1240)을 통해 도출될 수 있다.
다양한 메모리들(예를 들어, 메모리(1204), 메인 메모리(1212), 정적 메모리(1214), 및/또는 프로세서들(1202)의 메모리) 및/또는 저장 유닛(1216)은 본 명세서에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구체화하거나 그에 의해 사용되는 명령어들 및 데이터 구조들(예를 들어, 소프트웨어)의 하나 이상의 세트를 저장할 수 있다. 이러한 명령어들(예를 들어, 명령어들(1208))은, 프로세서들(1202)에 의해 실행될 때, 다양한 동작들이 개시된 실시예들을 구현하게 야기한다.
명령어들(1208)은 네트워크 인터페이스 디바이스(예를 들어, 통신 컴포넌트들(1240)에 포함된 네트워크 인터페이스 컴포넌트)를 통해, 그리고 다수의 널리 공지된 전송 프로토콜들(예를 들어, HTTP(hypertext transfer protocol)) 중 어느 하나를 사용하여, 송신 매체를 사용하여 네트워크(1220)를 통해 송신 또는 수신될 수 있다. 유사하게, 명령어들(1208)은 디바이스들(1222)에 대한 결합(1226)(예를 들어, 피어-투-피어 결합)을 통해 송신 매체를 사용하여 송신 또는 수신될 수 있다.
실시예가 특정 예시적인 실시예들을 참조하여 설명되었지만, 다양한 수정들 및 변경들이 본 개시내용의 더 넓은 범위로부터 벗어나지 않고서 이들 실시예들에 대해 이루어질 수 있다는 것이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미라기보다는 예시적인 의미로 간주되어야 한다. 본 명세서의 일부를 형성하는 첨부 도면들은, 제한이 아닌 예시로서, 주제가 실시될 수 있는 특정 실시예들을 도시한다. 예시된 실시예들은 본 기술분야의 통상의 기술자들이 본 명세서에 개시된 교시들을 실시할 수 있도록 충분히 상세하게 설명된다. 다른 실시예들이 이용될 수 있고 그로부터 도출될 수 있어서, 본 개시내용의 범위를 벗어나지 않고서 구조적 및 논리적 치환들 및 변경들이 이루어질 수 있도록 한다. 따라서, 이 상세한 설명은 제한적인 의미로 취해져서는 안 되며, 다양한 실시예들의 범위는 첨부된 청구항들과 함께, 그러한 청구항들에 부여되는 등가물들의 전체 범위에 의해서만 정의된다.
본 발명의 주제의 이러한 실시예들은, 단지 편의를 위해 그리고 실제로 하나보다 많은 것이 개시되었다면 본 출원의 범위를 임의의 단일 발명 또는 발명의 개념으로 자발적으로 제한하려는 의도 없이 "발명"이라는 용어에 의해 개별적으로 및/또는 집합적으로 본 명세서에서 지칭될 수 있다. 따라서, 특정 실시예들이 본 명세서에 예시되고 기술되었지만, 동일한 목적을 달성하기 위해 계산된 임의의 배열이 도시된 특정 실시예들을 대체할 수 있다는 점을 알 것이다. 본 개시내용은 다양한 실시예들의 임의의 그리고 모든 적응들 또는 변형들을 커버하도록 의도된다. 상기 실시예들의 조합들, 및 본 명세서에 구체적으로 설명되지 않은 다른 실시예들이 상기 설명을 검토하면 본 기술분야의 통상의 기술자들에게 명백할 것이다.
본 개시내용의 요약서는 독자가 기술적 개시내용의 본질을 신속하게 확인할 수 있게 하기 위해 제공된다. 그것은 청구항들의 범위 또는 의미를 해석하거나 제한하기 위해 사용되지 않을 것이라는 이해 하에 제출된다. 또한, 전술한 상세한 설명에서, 본 개시내용을 간소화할 목적으로 다양한 특징들이 단일 실시예에서 함께 그룹화되는 것을 알 수 있다. 이러한 개시 방법은 청구되는 실시예들이 각각의 청구항에 명시적으로 기재된 것보다 더 많은 특징들을 요구한다는 의도를 반영하는 것으로 해석하지 말아야 한다. 오히려, 이하의 청구항들이 반영하는 바와 같이, 본 발명의 주제는 단일의 개시된 실시예의 모든 특징들보다 적은 것에 있다. 따라서, 이하의 청구항들은 이로써 상세한 설명에 포함되며, 각각의 청구항은 개별 실시예로서 그 자체로 성립한다.
예들
예 1은 시각적 관성 추적 시스템을 교정하기 위한 방법으로서: 디바이스에서, 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 수신하지 않고서 시각적 관성 추적 시스템을 동작시키는 단계; 시각적 관성 추적 시스템을 동작시키는 것에 응답하여, 디바이스의 복수의 센서로부터의 센서 데이터에 액세스하는 단계; 센서 데이터에 기초하여, 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별하는 단계; 제1 교정 파라미터 값을 저장하는 단계; 가상 객체 디스플레이 애플리케이션으로부터 시각적 관성 추적 시스템으로의 추적 요청을 검출하는 단계; 및 추적 요청을 검출한 것에 응답하여, 제1 교정 파라미터 값에 액세스하고 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정하는 단계를 포함한다.
예 2는 예 1을 포함하고, 여기서 시각적 관성 추적 시스템을 동작시키는 단계는: 복수의 센서로부터의 센서 데이터에 주기적으로 액세스하는 단계를 추가로 포함하고, 여기서 시각적 관성 추적 시스템은 가상 객체 디스플레이 애플리케이션과 독립적으로 동작한다.
예 3은 예 1을 포함하고, 디바이스에서 교정 트리거 이벤트를 검출하는 단계를 추가로 포함하고, 여기서 시각적 관성 추적 시스템을 동작시키는 단계는 교정 트리거 이벤트를 검출한 것에 응답한 것이다.
예 4는 예 3을 포함하고, 여기서 트리거 이벤트는 온도 임계값을 초과하는 온도 변화, 가속도계 임계값을 초과하는 가속도계 센서 값, 배터리 임계값을 초과하는 디바이스의 배터리 레벨, 디바이스의 사용자 활성화, 또는 디바이스가 사용자에 의해 착용되었다는 검출 중 적어도 하나를 포함한다.
예 5는 예 1을 포함하고, 여기서 제1 교정 파라미터 값을 식별하는 단계는 제1 가상 객체 데이터 포인트 로케이션과 제2 가상 객체 데이터 포인트 로케이션 사이의 수렴에 기초하고, 제1 가상 객체 데이터 포인트 로케이션은 제1 파라미터 값에 의해 조정되는 센서 데이터에 기초하여 결정되고, 제2 가상 객체 데이터 포인트 로케이션은 디바이스의 디폴트 교정 파라미터 값에 의해 조정되는 센서 데이터에 기초하여 결정된다.
예 6은 예 1을 포함하고, 제1 교정 파라미터 값을 저장한 후에 시각적 관성 추적 시스템을 턴 오프하는 단계를 추가로 포함한다.
예 7은 예 1을 포함하고, 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출하기 전에 제1 교정 파라미터 값으로 시각적 관성 추적 시스템을 교정하는 단계를 추가로 포함한다.
예 8은 예 1을 포함하고, 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출한 후에 제2 교정 파라미터 값으로 시각적 관성 추적 시스템을 교정하는 단계를 추가로 포함한다.
예 9는 예 1을 포함하고, 여기서 제2 교정 파라미터 값을 결정하는 단계는: 디폴트 교정 값을 포함하는 시작 값을 제1 교정 파라미터 값으로 대체하는 단계; 및 시작 값으로 시작하여 시각적 관성 추적 시스템의 교정을 수행하는 단계를 추가로 포함한다.
예 10은 예 1을 포함하고, 여기서 제1 교정 파라미터 값을 저장하는 단계는: 제1 교정 값을 디바이스의 저장 디바이스에 또는 서버에 저장하는 단계를 추가로 포함한다.
예 11은 컴퓨팅 장치로서: 프로세서; 명령어들을 저장하는 메모리를 포함하고, 명령어들은, 프로세서에 의해 실행될 때, 장치가 동작들을 수행하도록 구성하고, 동작들은: 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 수신하지 않고서 디바이스에서 시각적 관성 추적 시스템을 동작시키는 동작; 시각적 관성 추적 시스템을 동작시킨 것에 응답하여, 디바이스의 복수의 센서로부터의 센서 데이터에 액세스하는 동작; 센서 데이터에 기초하여, 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별하는 동작; 제1 교정 파라미터 값을 저장하는 동작; 가상 객체 디스플레이 애플리케이션으로부터 시각적 관성 추적 시스템으로의 추적 요청을 검출하는 동작; 및 추적 요청을 검출한 것에 응답하여, 제1 교정 파라미터 값에 액세스하고 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정하는 동작을 포함한다.
예 12는 예 11을 포함하고, 여기서 시각적 관성 추적 시스템을 동작시키는 동작은: 복수의 센서로부터의 센서 데이터에 주기적으로 액세스하는 동작을 추가로 포함하고, 여기서 시각적 관성 추적 시스템은 가상 객체 디스플레이 애플리케이션과 독립적으로 동작한다.
예 13은 예 11을 포함하고, 여기서 명령어들은 장치가 디바이스에서 교정 트리거 이벤트를 검출하도록 추가로 구성하고, 여기서 시각적 관성 추적 시스템을 동작시키는 동작은 교정 트리거 이벤트를 검출한 것에 응답한 것이다.
예 14는 예 13을 포함하고, 여기서 트리거 이벤트는 온도 임계값을 초과하는 온도 변화, 가속도계 임계값을 초과하는 가속도계 센서 값, 배터리 임계값을 초과하는 디바이스의 배터리 레벨, 디바이스의 사용자 활성화, 또는 디바이스가 사용자에 의해 착용되었다는 검출 중 적어도 하나를 포함한다.
예 15는 예 11을 포함하고, 여기서 제1 교정 파라미터 값을 식별하는 동작은 제1 가상 객체 데이터 포인트 로케이션과 제2 가상 객체 데이터 포인트 로케이션 사이의 수렴에 기초하고, 제1 가상 객체 데이터 포인트 로케이셩은 제1 파라미터 값에 의해 조정되는 센서 데이터에 기초하여 결정되고, 제2 가상 객체 데이터 포인트 로케이션은 디바이스의 디폴트 교정 파라미터 값에 의해 조정되는 센서 데이터에 기초하여 결정된다.
예 16은 예 11을 포함하고, 여기서 명령어들은 장치가 제1 교정 파라미터 값을 저장한 후에 시각적 관성 추적 시스템을 턴 오프하도록 추가로 구성한다.
예 17은 예 11을 포함하고, 여기서 명령어들은 장치가 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출하기 전에 제1 교정 파라미터 값으로 시각적 관성 추적 시스템을 교정하도록 추가로 구성한다.
예 18은 예 11을 포함하고, 여기서 명령어들은 장치가 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출한 후에 제2 교정 파라미터 값으로 시각적 관성 추적 시스템을 교정하도록 추가로 구성한다.
예 19는 예 11을 포함하고, 여기서 제2 교정 파라미터 값을 결정하는 동작은 디폴트 교정 값을 포함하는 시작 값을 제1 교정 파라미터 값으로 대체하는 동작; 및 시작 값부터 시작하여 시각적 관성 추적 시스템의 교정을 수행하는 동작을 추가로 포함한다.
예 20은 비일시적 컴퓨터 판독가능 저장 매체를 포함하고, 컴퓨터 판독가능 저장 매체는 명령어들을 포함하고, 명령어들은, 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금 동작들을 수행하도록 야기하고, 동작들은: 가상 객체 디스플레이 애플리케이션으로부터 추적 요청을 수신하지 않고서 디바이스에서, 시각적 관성 추적 시스템을 동작시키는 동작; 시각적 관성 추적 시스템을 동작시킨 것에 응답하여, 디바이스의 복수의 센서로부터의 센서 데이터에 액세스하는 동작; 센서 데이터에 기초하여, 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별하는 동작; 제1 교정 파라미터 값을 저장하는 동작; 가상 객체 디스플레이 애플리케이션으로부터 시각적 관성 추적 시스템으로의 추적 요청을 검출하는 동작; 및 추적 요청을 검출한 것에 응답하여, 제1 교정 파라미터 값에 액세스하고 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정하는 동작을 포함한다.

Claims (20)

  1. 시각적 관성 추적 시스템을 교정하기 위한 방법으로서:
    디바이스에서, 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 수신하지 않고서 상기 시각적 관성 추적 시스템을 동작시키는 단계;
    상기 시각적 관성 추적 시스템을 동작시키는 것에 응답하여, 상기 디바이스의 복수의 센서로부터의 센서 데이터에 액세스하는 단계;
    상기 센서 데이터에 기초하여, 상기 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별하는 단계;
    상기 제1 교정 파라미터 값을 저장하는 단계;
    상기 가상 객체 디스플레이 애플리케이션으로부터 상기 시각적 관성 추적 시스템으로의 추적 요청을 검출하는 단계; 및
    상기 추적 요청을 검출한 것에 응답하여, 상기 제1 교정 파라미터 값에 액세스하고 상기 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 시각적 관성 추적 시스템을 동작시키는 단계는:
    상기 복수의 센서로부터의 센서 데이터에 주기적으로 액세스하는 단계를 추가로 포함하고,
    상기 시각적 관성 추적 시스템은 상기 가상 객체 디스플레이 애플리케이션과 독립적으로 동작하는 방법.
  3. 제1항에 있어서,
    상기 디바이스에서 교정 트리거 이벤트를 검출하는 단계를 추가로 포함하고,
    상기 시각적 관성 추적 시스템을 동작시키는 단계는 상기 교정 트리거 이벤트를 검출한 것에 응답한 것인 방법.
  4. 제3항에 있어서, 상기 트리거 이벤트는 온도 임계값을 초과하는 온도 변화, 가속도계 임계값을 초과하는 가속도계 센서 값, 배터리 임계값을 초과하는 상기 디바이스의 배터리 레벨, 상기 디바이스의 사용자 활성화, 또는 상기 디바이스가 사용자에 의해 착용되었다는 검출 중 적어도 하나를 포함하는 방법.
  5. 제1항에 있어서, 상기 제1 교정 파라미터 값을 식별하는 단계는 제1 가상 객체 데이터 포인트 로케이션과 제2 가상 객체 데이터 포인트 로케이션 사이의 수렴에 기초하고, 상기 제1 가상 객체 데이터 포인트 로케이션은 상기 제1 파라미터 값에 의해 조정되는 상기 센서 데이터에 기초하여 결정되고, 상기 제2 가상 객체 데이터 포인트 로케이션은 상기 디바이스의 디폴트 교정 파라미터 값에 의해 조정되는 상기 센서 데이터에 기초하여 결정되는 방법.
  6. 제1항에 있어서,
    상기 제1 교정 파라미터 값을 저장한 후에 상기 시각적 관성 추적 시스템을 턴 오프하는 단계를 추가로 포함하는 방법.
  7. 제1항에 있어서,
    상기 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출하기 전에 상기 제1 교정 파라미터 값으로 상기 시각적 관성 추적 시스템을 교정하는 단계를 추가로 포함하는 방법.
  8. 제1항에 있어서,
    상기 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출한 후에 상기 제2 교정 파라미터 값으로 상기 시각적 관성 추적 시스템을 교정하는 단계를 추가로 포함하는 방법.
  9. 제1항에 있어서, 상기 제2 교정 파라미터 값을 결정하는 단계는:
    디폴트 교정 값을 포함하는 시작 값을 상기 제1 교정 파라미터 값으로 대체하는 단계; 및
    상기 시작 값으로 시작하여 상기 시각적 관성 추적 시스템의 교정을 수행하는 단계를 추가로 포함하는 방법.
  10. 제1항에 있어서, 상기 제1 교정 파라미터 값을 저장하는 단계는:
    상기 제1 교정 값을 상기 디바이스의 저장 디바이스에 또는 서버에 저장하는 단계를 추가로 포함하는 방법.
  11. 컴퓨팅 장치로서:
    프로세서; 및
    명령어들을 저장하는 메모리를 포함하고, 상기 명령어들은, 상기 프로세서에 의해 실행될 때, 상기 장치가 동작들을 수행하도록 구성하고, 상기 동작들은:
    디바이스에서, 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 수신하지 않고서 시각적 관성 추적 시스템을 동작시키는 동작;
    상기 시각적 관성 추적 시스템을 동작시킨 것에 응답하여, 상기 디바이스의 복수의 센서로부터의 센서 데이터에 액세스하는 동작;
    상기 센서 데이터에 기초하여, 상기 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별하는 동작;
    상기 제1 교정 파라미터 값을 저장하는 동작;
    상기 가상 객체 디스플레이 애플리케이션으로부터 상기 시각적 관성 추적 시스템으로의 추적 요청을 검출하는 동작; 및
    상기 추적 요청을 검출한 것에 응답하여, 상기 제1 교정 파라미터 값에 액세스하고 상기 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정하는 동작을 포함하는 컴퓨팅 장치.
  12. 제11항에 있어서, 상기 시각적 관성 추적 시스템을 동작시키는 동작은:
    상기 복수의 센서로부터의 센서 데이터에 주기적으로 액세스하는 동작을 추가로 포함하고,
    상기 시각적 관성 추적 시스템은 상기 가상 객체 디스플레이 애플리케이션과 독립적으로 동작하는 컴퓨팅 장치.
  13. 제11항에 있어서, 상기 명령어들은 상기 장치가:
    상기 디바이스에서 교정 트리거 이벤트를 검출하도록 추가로 구성하고,
    상기 시각적 관성 추적 시스템을 동작시키는 동작은 상기 교정 트리거 이벤트를 검출한 것에 응답한 것인 컴퓨팅 장치.
  14. 제13항에 있어서, 상기 트리거 이벤트는 온도 임계값을 초과하는 온도 변화, 가속도계 임계값을 초과하는 가속도계 센서 값, 배터리 임계값을 초과하는 상기 디바이스의 배터리 레벨, 상기 디바이스의 사용자 활성화, 또는 상기 디바이스가 사용자에 의해 착용되었다는 검출 중 적어도 하나를 포함하는 컴퓨팅 장치.
  15. 제11항에 있어서, 상기 제1 교정 파라미터 값을 식별하는 동작은 제1 가상 객체 데이터 포인트 로케이션과 제2 가상 객체 데이터 포인트 로케이션 사이의 수렴에 기초하고, 상기 제1 가상 객체 데이터 포인트 로케이션은 상기 제1 파라미터 값에 의해 조정되는 상기 센서 데이터에 기초하여 결정되고, 상기 제2 가상 객체 데이터 포인트 로케이션은 상기 디바이스의 디폴트 교정 파라미터 값에 의해 조정되는 상기 센서 데이터에 기초하여 결정되는 컴퓨팅 장치.
  16. 제11항에 있어서, 상기 명령어들은 상기 장치가:
    상기 제1 교정 파라미터 값을 저장한 후에 상기 시각적 관성 추적 시스템을 턴 오프하도록 추가로 구성하는 컴퓨팅 장치.
  17. 제11항에 있어서, 상기 명령어들은 상기 장치가:
    상기 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출하기 전에 상기 제1 교정 파라미터 값으로 상기 시각적 관성 추적 시스템을 교정하도록 추가로 구성하는 컴퓨팅 장치.
  18. 제11항에 있어서, 상기 명령어들은 상기 장치가:
    상기 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 검출한 후에 상기 제2 교정 파라미터 값으로 상기 시각적 관성 추적 시스템을 교정하도록 추가로 구성하는 컴퓨팅 장치.
  19. 제11항에 있어서, 상기 제2 교정 파라미터 값을 결정하는 동작은:
    디폴트 교정 값을 포함하는 시작 값을 상기 제1 교정 파라미터 값으로 대체하는 동작; 및
    상기 시작 값으로 시작하여 상기 시각적 관성 추적 시스템의 교정을 수행하는 동작을 추가로 포함하는 컴퓨팅 장치.
  20. 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 판독가능 저장 매체는 명령어들을 포함하고, 상기 명령어들은, 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 동작들을 수행하게 야기하고, 상기 동작들은:
    디바이스에서, 가상 객체 디스플레이 애플리케이션으로부터의 추적 요청을 수신하지 않고서 시각적 관성 추적 시스템을 동작시키는 동작;
    상기 시각적 관성 추적 시스템을 동작시킨 것에 응답하여, 상기 디바이스의 복수의 센서로부터의 센서 데이터에 액세스하는 동작;
    상기 센서 데이터에 기초하여, 상기 시각적 관성 추적 시스템의 제1 교정 파라미터 값을 식별하는 동작;
    상기 제1 교정 파라미터 값을 저장하는 동작;
    상기 가상 객체 디스플레이 애플리케이션으로부터 상기 시각적 관성 추적 시스템으로의 추적 요청을 검출하는 동작; 및
    상기 추적 요청을 검출한 것에 응답하여, 상기 제1 교정 파라미터 값에 액세스하고 상기 제1 교정 파라미터 값으로부터 제2 교정 파라미터 값을 결정하는 동작을 포함하는 비일시적 컴퓨터 판독가능 저장 매체.
KR1020237025816A 2020-12-30 2021-12-21 주기적 파라미터 추정 시각적 관성 추적 시스템 KR20230122157A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063131981P 2020-12-30 2020-12-30
US63/131,981 2020-12-30
US17/301,655 US11662805B2 (en) 2020-12-30 2021-04-09 Periodic parameter estimation for visual-inertial tracking systems
US17/301,655 2021-04-09
PCT/US2021/064608 WO2022146786A1 (en) 2020-12-30 2021-12-21 Periodic parameter estimation visual-inertial tracking systems

Publications (1)

Publication Number Publication Date
KR20230122157A true KR20230122157A (ko) 2023-08-22

Family

ID=79686715

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237025816A KR20230122157A (ko) 2020-12-30 2021-12-21 주기적 파라미터 추정 시각적 관성 추적 시스템

Country Status (4)

Country Link
US (1) US20230205311A1 (ko)
EP (1) EP4272053A1 (ko)
KR (1) KR20230122157A (ko)
WO (1) WO2022146786A1 (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9524580B2 (en) * 2014-01-06 2016-12-20 Oculus Vr, Llc Calibration of virtual reality systems
EP3252566B1 (en) * 2016-06-03 2021-01-06 Facebook Technologies, LLC Face and eye tracking and facial animation using facial sensors within a head-mounted display
US10334240B2 (en) * 2016-10-28 2019-06-25 Daqri, Llc Efficient augmented reality display calibration

Also Published As

Publication number Publication date
WO2022146786A1 (en) 2022-07-07
EP4272053A1 (en) 2023-11-08
US20230205311A1 (en) 2023-06-29

Similar Documents

Publication Publication Date Title
US10984547B2 (en) Systems and methods for simulatenous localization and mapping
US20240031678A1 (en) Pose tracking for rolling shutter camera
US11615506B2 (en) Dynamic over-rendering in late-warping
KR20240009993A (ko) 멀티레벨 특징 추적을 위한 직접 스케일 레벨 선택
US11662805B2 (en) Periodic parameter estimation for visual-inertial tracking systems
KR20240006669A (ko) 늦은-워핑에서의 동적 오버-렌더링
WO2022240933A1 (en) Depth-from- stereo bending correction
EP4341781A1 (en) Dynamic initialization of 3dof ar tracking system
US20230205311A1 (en) Periodic parameter estimation for visual-inertial tracking systems
CN116830067A (zh) 周期性参数估计视觉惯性跟踪系统
US20220207834A1 (en) Optimizing motion-to-photon latency in mobile augmented reality systems
US20240096026A1 (en) Low latency hand-tracking in augmented reality systems
KR20230122159A (ko) 모션-대-광자 레이턴시 증강 현실 시스템
US11941184B2 (en) Dynamic initialization of 3DOF AR tracking system
US20230421717A1 (en) Virtual selfie stick
US20240135555A1 (en) 3d space carving using hands for object capture
CN116745734A (zh) 运动到光子延迟增强现实系统
CN117321472A (zh) 进行后期扭曲以最小化移动对象的延迟
CN117321634A (zh) 立体深度弯曲校正
KR20240008370A (ko) 움직이는 객체들의 레이턴시를 최소화하기 위한 늦은 워핑
CN117337422A (zh) 三自由度增强现实跟踪系统的动态初始化
CN117321546A (zh) 增强现实引导的深度估计
CN117425869A (zh) 后期扭曲中的动态过度渲染
CN117321635A (zh) 用于多级别特征跟踪的直接尺度级别选择
CN117501208A (zh) 利用步态印迹模仿的ar数据模拟