KR20230028532A - 가상 현실 경험들을 위한 지상 실측값 데이터세트들의 생성 - Google Patents

가상 현실 경험들을 위한 지상 실측값 데이터세트들의 생성 Download PDF

Info

Publication number
KR20230028532A
KR20230028532A KR1020237003101A KR20237003101A KR20230028532A KR 20230028532 A KR20230028532 A KR 20230028532A KR 1020237003101 A KR1020237003101 A KR 1020237003101A KR 20237003101 A KR20237003101 A KR 20237003101A KR 20230028532 A KR20230028532 A KR 20230028532A
Authority
KR
South Korea
Prior art keywords
virtual
trajectory
simulated
generating
headset
Prior art date
Application number
KR1020237003101A
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
Application filed by 스냅 인코포레이티드 filed Critical 스냅 인코포레이티드
Publication of KR20230028532A publication Critical patent/KR20230028532A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/003Navigation within 3D models or images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30241Trajectory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/41Medical

Abstract

가상 현실(VR) 경험들을 생성하고, 시뮬레이팅된 센서 구성들을 테스트하며, 기계 학습 알고리즘들을 트레이닝하기 위한 지상 실측값 데이터세트들을 생성하는 시스템들 및 방법들. 일 예에서, 하나 이상의 카메라들과 하나 이상의 관성 측정 유닛들을 구비하는 기록 디바이스는 물리적 환경을 통과하는 실제 경로를 따라 이미지들과 모션 데이터를 포착한다. SLAM 애플리케이션은 포착된 데이터를 사용하여 기록 디바이스의 궤적을 계산한다. 다항식 보간 모듈은 체비쇼프 다항식들을 사용하여 연속 시간 궤적(CTT) 함수를 생성한다. 본 방법은 가상 환경을 인식하고, VR 헤드셋과 같은 시뮬레이팅된 센서 구성을 어셈블링하는 것을 포함한다. CTT 함수를 사용하면, 본 방법은, 가상 환경을 통과하는 가상 경로를 따르는 모션에서, 시뮬레이팅된 센서 구성을 나타내는 지상 실측값 출력 데이터세트를 생성하는 단계를 포함한다. 가상 경로는, 기록 디바이스에 의해 포착된 바와 같이, 실제 경로를 따르는 모션과 밀접하게 상관된다. 따라서, 출력 데이터세트는 사실적이고 실제와 같은 VR 경험을 생성한다. 더욱이, 기술된 방법은 다양한 샘플 레이트들에서 다수의 출력 데이터세트들을 생성하기 위해 사용될 수 있으며, 이는 많은 VR 시스템들의 일부인 기계 학습 알고리즘들을 트레이닝하는데 유용하다.

Description

가상 현실 경험들을 위한 지상 실측값 데이터세트들의 생성
[0001] 본 출원은 2020년 6월 30일에 출원된 미국 가출원 일련 번호 제63/046,150호의 우선권을 주장하며, 그 내용들은 참조로서 본 명세서에 완전히 통합된다.
[0002] 본 개시내용에 제시된 실시예들은 가상 현실(VR: virtual reality) 분야에 관한 것이다. 더 구체적으로, 한정하는 것은 아니지만, 본 개시내용은 디바이스들의 연구 및 개발, 기계 학습 및 컴퓨터 비전 알고리즘들의 트레이닝, 및 VR 경험들의 생성에 유용한 지상 실측값 데이터세트들을 생성하는 시스템들 및 방법들을 설명한다.
[0003] 모바일 디바이스들(예컨대, 스마트폰들, 태블릿들 및 랩톱들), 및 웨어러블 디바이스들(예컨대, 스마트 안경, 디지털 아이웨어, 헤드웨어, 헤드기어 및 헤드 마운티드 디스플레이들)과 같이, 오늘날 이용할 수 있는 많은 유형의 컴퓨터들 및 전자 디바이스들은 다양한 카메라들, 센서들, 무선 트랜시버들, 입력 시스템들(예컨대, 터치 감응형 표면들, 포인터들), 주변 디바이스들, 디스플레이들, 및 사용자가 디스플레이된 콘텐츠와 상호 작용할 수 있는 그래픽 사용자 인터페이스(GUI: graphical user interface)들을 포함한다.
[0004] 가상 현실(VR) 기술은 때로는 VR 헤드셋이나 다른 헤드 마운티드 디스플레이 상에 표시되는 사실적인 이미지들을 포함하여 완전한 가상 환경을 생성한다. VR 경험들은 사용자가 가상 환경을 통해 이동하고 가상 객체들과 상호 작용하게 할 수 있다. 증강 현실(AR: Augmented Reality)은 물리적 환경에서의 실제 객체들과 가상 객체들을 결합하고 사용자에게 그 결합을 표시하는 VR 기술의 한 유형이다. 결합된 디스플레이는, 특히, 가상 객체들이 실제 객체들처럼 나타나고 동작할 때, 가상 객체들이 그 환경에서 실제로 존재한다는 인상을 준다. 교차 현실(XR: cross reality)은 일반적으로 AR, VR 및 MR(혼합 현실(mixed reality)) 시스템들의 요소들을 포함하거나 결합하는 시스템들을 지칭하는 포괄적인 용어로 이해된다.
[0005] 컴퓨터 비전 및 객체 추적과 같은 고급 VR 기술들은 지각적으로 풍부하고 몰입감 있는 경험을 생성하는 데 사용될 수 있다. 컴퓨터 비전 알고리즘들은 디지털 이미지들이나 비디오에 포착된 데이터로부터 물리적 세계에 대한 3차원 데이터를 추출한다. 객체 인식 및 추적 알고리즘들은 디지털 이미지 또는 비디오에서 객체를 검출하고, 그것의 방위 또는 포즈를 추정하며, 시간 경과에 따른 그것의 움직임을 추적하는 데 사용될 수 있다.
[0006] 서비스형 소프트웨어(SaaS: Software-as-a-Service)는 소프트웨어, 애플리케이션들, 데이터, 서비스들 및 다른 시스템들이 원격 서버에서 호스팅되는 소프트웨어 액세스 및 전달 모델이다. 인증된 사용자들은 일반적으로 웹 브라우저를 통해 소프트웨어에 액세스한다. SaaS 플랫폼은 사용자들이 애플리케이션들을 환경설정, 실행, 테스트 및 관리하게 할 수 있다. SaaS 플랫폼의 공급자는 서버들, 스토리지, 운영 체제들, 미들웨어, 데이터베이스들, 데이터세트들에 대한 액세스 및 호스팅된 애플리케이션들과 관련된 다른 서비스들을 제공할 수 있다.
[0007] 기술된 다양한 실시예들의 피처들은 다음의 상세한 설명으로부터 쉽게 이해될 것이며, 여기서, 도면들에 대한 참조가 이루어진다. 참조 번호는 상세한 설명에서 그리고 도면의 여러 뷰들에 걸친 각각의 요소에 사용된다. 유사한 요소들이 복수 존재하는 경우, 단일 참조 번호가 유사한 요소들에 할당되고, 특정 요소를 의미하는 소문자가 함께 추가될 수 있다.
[0008] 도면들에 도시된 다양한 요소들은 달리 표시되지 않는 한 축척에 맞게 그려지지 않았다. 다양한 요소들의 치수들은 명확성의 관점에서 확대되거나 축소될 수 있다. 몇몇 도면들은 하나 이상의 구현예들을 묘사하고, 단지 예시로서 제시되며, 한정하는 것으로 해석되어서는 안 된다. 도면에는 다음과 같은 도면들이 포함된다.
[0009] 도 1a는 지상 실측값 데이터세트 생성 시스템에 사용하기에 적합한 아이웨어 디바이스(eyewear device)의 예시적인 하드웨어 구성의 측면도(우측)이다.
[0010] 도 1b는 우측 가시광 카메라 및 회로 기판을 묘사하는 도 1a의 아이웨어 디바이스의 우측 모서리의 부분 사시 단면도이다.
[0011] 도 1c는 좌측 가시광 카메라를 도시하는 도 1a의 아이웨어 디바이스의 예시적인 하드웨어 구성의 측면도(좌측)이다.
[0012] 도 1d는 좌측 가시광 카메라 및 회로 기판을 묘사하는 도 1c의 아이웨어 디바이스의 좌측 모서리의 부분 사시 단면도이다.
[0013] 도 2a 및 도 2b는 지상 실측값 데이터세트 생성 시스템에서 활용되는 아이웨어 디바이스의 예시적인 하드웨어 구성들의 배면도들이다.
[0014] 도 3은 3차원 장면, 좌측 가시광 카메라에 의해 포착된 좌측 원본 이미지, 및 우측 가시광 카메라에 의해 포착된 우측 원본 이미지의 도식적인 묘사이다.
[0015] 도 4는 웨어러블 디바이스(예컨대, VR 헤드셋, 아이웨어 디바이스), 클라이언트 디바이스 및 다양한 네트워크들을 통해 연결된 서버 시스템을 포함하는 예시적인 지상 실측값 데이터세트 생성 시스템의 기능적인 블록도이다.
[0016] 도 5는 도 4의 지상 실측값 데이터세트 생성 시스템의 클라이언트 디바이스에 대한 예시적인 하드웨어 구성의 개략적 표현이다.
[0017] 도 6은 동시 현지화(simultaneous localization) 및 매핑을 설명하는 데 사용하기 위한 예시적인 환경에서의 사용자의 개략적인 예시이다.
[0018] 도 7은 도 4의 지상 실측값 데이터세트 생성 시스템과 함께 사용하기에 적합한 선택 가능한 컴포넌트들을 갖는 예시적인 사용자 인터페이스의 개략적인 예시이다.
[0019] 도 7a는 도 7의 사용자 인터페이스의 예시적인 환경 컴포넌트의 예시이다.
[0020] 도 7b는 도 7의 사용자 인터페이스의 예시적인 센서 컴포넌트의 예시이다.
[0021] 도 7c는 도 7의 사용자 인터페이스의 예시적인 궤적 컴포넌트의 예시이다.
[0022] 도 7d는 도 7의 사용자 인터페이스의 예시적인 오프셋, 환경설정들 및 제출의 컴포넌트들의 예시이다.
[0023] 도 8a는 도 4의 지상 실측값 데이터세트 생성 시스템과 함께 사용하기에 적합한, 디스플레이 상의 예시적인 물리적 환경의 예시이다.
[0024] 도 8b는 도 4의 지상 실측값 데이터세트 생성 시스템과 함께 사용하기에 적합한, 디스플레이 상의 예시적인 가상 환경의 예시이다.
[0025] 도 8c는 도 4의 지상 실측값 데이터세트 생성 시스템과 함께 사용하기에 적합한, 도 8a의 물리적 환경에 대한 오버레이로 제시된 도 8b의 가상 환경의 일부분을 포함하는 디스플레이 상의 예시적인 합성 뷰의 예시이다.
[0026] 도 9는 도 4의 지상 실측값 데이터세트 생성 시스템과 함께 사용하기에 적합한, 가상 환경과 연관된 예시적인 맵 뷰에 대한 오버레이로서 투영된 예시적인 트레이스의 예시이다.
[0027] 도 10a는 예시적인 가상 경로, 웨이포인트들 및 시선 뷰 방향들의 개략적 예시이다.
[0028] 도 10b는 예시적인 복수의 웨이포인트 시선 뷰들 및 참조용 맵 뷰 상에 디스플레이되는 범위 아이콘의 예시이다.
[0029] 도 11은 병렬화 유틸리티(parallelization utility)의 예시적인 애플리케이션의 개략적인 예시이다.
[0030] 도 12는 예시적인 서버의 도식적 표현이다.
[0031] 도 13은 센서 어레이 모델을 표시하는 예시적인 방법을 묘사하는 흐름도이다.
[0032] 도 14는 지상 실측값 데이터세트를 생성하는 예시적인 방법을 묘사하는 흐름도이다.
[0033] 도 15는 가상 경로와 연관된 프리뷰들을 제시하는 예시적인 방법을 묘사하는 흐름도이다.
[0034] 도 16은 도 4의 예시적인 지상 실측값 데이터세트 생성 시스템과 함께 사용하기에 적합한, 예시적인 다항식의 보간 모듈의 개략적인 예시이다.
[0035] 다양한 구현예들 및 세부 사항들은 AR, VR 및 XR 경험들 또는 이들의 결합들을 위한 헤드셋들 및 관련 컴포넌트들을 어셈블링, 구성, 테스트 및 개발하기 위한 지상 실측값 데이터세트들을 생성하기 위한 실시예들을 참조하여 기술된다. 예를 들어, 하나 이상의 카메라들과 하나 이상의 관성 측정 유닛들을 구비한 제1 기록 디바이스는 물리적 환경을 통과하는 경로를 따라 이미지들과 실제 모션 데이터를 기록한다. SLAM 애플리케이션은, 기록된 데이터에 기초하여, 헤드셋 궤적을 계산한다. 다항식 보간 모듈은 연속 시간 궤적(CTT: continuous time trajectory) 함수를 생성한다. 시뮬레이팅된 센서들의 세트는 가상 환경에서 사용하기 위해 어셈블링된다. CTT 함수는 가상 환경을 통과하는 모션에서 시뮬레이팅된 센서들의 어셈블링된 세트를 나타내는 지상 실측값 출력 데이터세트를 생성하는 데 사용된다. CTT 함수가 실제 모션 데이터를 사용하여 생성되었기 때문에, 출력 데이터세트는 사실적이고 실제와 같은 VR 경험을 생성한다. 또한, 이러한 접근 방식은, 다양한 샘플 레이트들에서, 다수의 출력 데이터세트들을 생성하는 데 사용될 수 있고, 이는 시뮬레이팅된 센서들의 새롭거나 상이한 세트들(예컨대, 새롭거나 상이한 VR 헤드셋들에 구성된 것과 같음)의 다양성을 테스트하는 데 유용하다.
[0036] 예시적인 방법은 하나 이상의 카메라들 및 적어도 하나의 관성 측정 유닛(IMU: inertial measurement unit)을 포함하는 제1 기록 디바이스를 구성하는 단계를 포함한다. 다음으로, 이 방법은 물리적 환경을 통과하는 경로를 가로지르는 모션에서 제1 기록 디바이스에 의해 포착되는 것과 같이, 기본 참조 세트를 기록하는 단계를 포함한다. 기본 참조 세트에는 카메라에 의해 포착된 일련의 실제 이미지들 및 IMU에 의해 포착된 일련의 실제 모션 데이터가 포함된다. SLAM 애플리케이션은 기본 참조 세트를 사용하여 카메라 포즈들의 시퀀스를 포함하는 헤드셋 궤적을 계산한다. 다항식 보간 모듈은 계산된 헤드셋 궤적과 일련의 실제 모션 데이터를 근사화하는 연속 시간 궤적(CTT: continuous time trajectory) 함수를 생성한다. 일부 구현예들에서, CTT 함수는 하나 이상의 피팅 계수들을 갖는 체비쇼프 다항식 함수(Chebyshev polynomial function)이다.
[0037] 이 방법은 제1 가상 환경을 인식하고 시뮬레이팅된 센서 구성(예컨대, 시뮬레이팅된 VR 헤드셋)을 어셈블링하는 단계를 포함하고, 여기에는 하나 이상의 시뮬레이팅된 카메라들 및 하나 이상의 시뮬레이팅된 IMU 센서들이 포함된다. CTT 함수(실제 모션 데이터에 적합하도록 생성됨)을 사용하면, 이 방법은 제1 가상 환경을 통과하는 가상 경로를 따르는 모션에서 시뮬레이팅된 센서 구성을 나타내는 지상 실측값 출력 데이터세트를 생성하는 단계를 포함한다. 가상 경로는 제1 기록 디바이스에 의해 포착된 바와 같이, 실제 경로를 따르는 모션과 밀접하게 상관된다.
[0038] 지상 실측값 출력 데이터세트에는 일련의 가상 이미지들(CTT 함수를 사용하여 계산된 포즈들에 기초하는 제1 가상 환경의 가상 이미지들) 및 일련의 시뮬레이팅된 IMU 데이터(또한 CTT 함수를 사용하여 계산됨)가 포함된다. CTT 함수는 실제 모션 데이터에 적합하게 생성되었기 때문에, 시뮬레이팅된 센서 구성에 대한 출력 데이터세트는 제1 기록 디바이스에 의해 포착된 실제 모션 데이터와 밀접하게 상관된다.
[0039] 다음의 상세한 설명에는 본 개시내용에 제시된 실시예들을 예시하는 시스템들, 방법들, 기술들, 명령어 시퀀스들, 및 컴퓨팅 머신 프로그램 제품들이 포함된다. 개시된 주제 및 그에 대한 관련 교시들의 완전한 이해를 제공하기 위한 목적으로 다수의 세부 사항들 및 실시예들이 포함된다. 그러나, 당업자는 이와 같은 세부 사항들 없이도 관련 교시들을 적용하는 방법을 이해할 수 있다. 관련 교시들이 다양한 방식들로 적용되거나 실시될 수 있기 때문에, 개시된 주제의 양태들은 기술된 특정 디바이스들, 시스템들 및 방법으로 한정되는 것은 아니다. 본 명세서에 사용되는 용어 및 명명법은 특정 양태들만을 기술하기 위한 것일 뿐, 이것들로 한정하려고 의도하는 것은 아니다. 일반적으로, 잘 알려진 명령어 인스턴스들, 프로토콜들, 구조들 및 기술들은 반드시 상세하게 도시되는 것은 아니다.
[0040] 본 명세서에서 사용되는 "커플링된(coupled)" 또는 "연결된(connected)"이라는 용어들은 하나의 시스템 요소에 의해 생성되거나 공급되는 전기적 또는 자기적 신호들이 다른 커플링되거나 연결된 시스템 요소에 부여되는 링크 등을 포함하는 임의의 논리적, 광학적, 물리적 또는 전기적 연결을 의미한다. 달리 설명하지 않는 한, 커플링되거나 연결된 요소들 또는 디바이스들은 서로 직접 연결될 필요는 없으며, 중간 컴포넌트들, 요소들 또는 통신 매체에 의해 분리될 수 있으며, 이들 중 하나 이상은 전기 신호들을 수정, 조작 또는 전달할 수 있다. "위(on)"라는 용어는 요소에 의해 직접 지지되거나, 요소에 통합되거나 요소에 의해 지지되는 다른 요소를 거쳐 요소에 의해 간접적으로 지지되는 것을 의미한다.
[0041] "근위(proximal)"라는 용어는 객체나 사람의 근처나, 인접하거나 옆에 위치되거나, 또는 "원위(distal)"로 설명될 수 있는 아이템의 다른 부분들에 비해 상대적으로 더 가까운 아이템이나 아이템의 일부를 기술하는 데 사용된다. 예를 들어, 객체에 가장 가까운 아이템의 단부는 근위단이라고 지칭될 수 있는 반면, 일반적으로 대향하는 단부는 원위단이라고 지칭될 수 있다.
[0042] 웨어러블 또는 아이웨어 디바이스, 클라이언트 또는 모바일 디바이스, 연관 컴포넌트들, 및 카메라, 관성 측정 유닛(IMU) 또는 이들 둘 모두를 포함하는 임의의 다른 디바이스들의 방위들은, 도면들 중 임의의 도면에 도시된 것과 같이, 설명 및 논의 목적으로 예로서만 주어진다. 작동 시, 아이웨어 디바이스는 아이웨어 디바이스의 특정 애플리케이션에 적합한 임의의 다른 방향, 예를 들어, 위(up), 아래(down), 옆으로(saidways) 또는 임의의 다른 방위로 지향될 수 있다. 또한, 본 명세서에서 사용된 범위 내에서, 전방(front), 후방(rear), 내측(inward), 외측(outward), 향하여(toward), 좌측(left), 우측(right), 횡방향(lateral), 종방향(longitudinal), 위(up), 아래(down), 더 위(upper), 더 아래(lower), 상부(top), 하부(bottom), 측면(side), 수평(horizontal), 수직(vertical), 및 대각선(diagonal)과 같은 임의의 방향성 용어는 예로서만 사용되며, 본 명세서에 구성되거나 달리 기술된 대로 임의의 카메라나 관성 측정 유닛(IMU)의 방향(direction)이나 방위(orientation)가 한정되는 것은 아니다.
[0043] 본 개시내용의 맥락에서, 가상 현실(VR)은 임의의 환경에서 가상 객체들로 시뮬레이팅된 경험을 생성하는 모든 유형의 시스템들을 지칭하고 이 시스템들을 포함한다. 예를 들어, 몰입형 VR 경험의 일부로 가상 환경이 생성된다. 증강 현실(AR) 경험은 실제 물리적 환경에서 제시된 가상 객체들을 포함한다. 이의 일반적인 의미에 따르면, 본 명세서에 사용된 바와 같은 가상 현실(VR)은 VR 및 AR 경험들을 모두 포함한다. 따라서, VR 및 AR이라는 용어들은 본 명세서에서 상호 교환적으로 사용될 수 있고, 문맥상 달리 표시되지 않는 한, 두 용어 중 하나의 사용은 다른 용어를 포함한다.
[0044] 일반적으로, 지상 실측값의 개념은 목표의 실측값에 최대한 가까운 정보를 의미한다. 이러한 개시내용과 관련하여, 지상 실측값 데이터세트에는 VR 경험을 생성하는 데 필요한 데이터가 포함된다. 예를 들어, 지상 실측값 데이터세트에는, 이미지들, 객체 로케이션들, 사운드들, 감촉들 및 환경과 연관된 다른 데이터가 해당 환경 내에서의 사용자의 움직임들, 궤적들, 포지션들 및 시각적 방위들과 함께 포함된다.
[0045] 현실 기반의 실제 지상 실측값 데이터는 더욱 생생하고 설득력 있는 VR 경험을 생성한다. 일부 VR 시스템들은 특정 헤드셋을 착용하고 몇 개의 제한된 궤적들을 따라 특정 환경을 거쳐 이동하는 사용자에 맞게 조정된 데이터세트를 사용한다. 궤적은 환경을 통한 사용자의 가현 운동(apparent movement)을 기술하고, 사용자가 취한 경로와 사용자의 가현 모션(apparent motion)을 모두 포함한다. 일부 시스템들에서, 사용자의 가현 모션은 때때로 모션 프리미티브(motion primitive)들이라고 지칭되는 단순한 선형 및 각도 모션들의 작은 세트로 한정될 수 있다. 그 결과는, 일부 경우들에서, 경로를 따라 부드럽게 움직이는 가상 카메라처럼 보이는데, 이는 걷거나 달리는 사람이라기보다는 날아가는 비행기나 드론처럼 보인다. 많은 VR 시스템들에서, 가현 모션은 궤적이 인위적으로 부드럽기 때문에 합성된 것처럼 보인다.
[0046] 실시예들의 추가적인 목적들, 이점들 및 신규한 피처들은 다음의 상세한 설명에서 부분적으로 설명될 것이며, 부분적으로는 다음 및 첨부 도면들을 검토함으로써 당업자에게 명백해지거나, 또는 실시예들의 생성이나 작동에 의해 학습될 수 있다. 본 주제의 목적들 및 이점들은, 특히, 첨부된 청구항들에서 적시된 방법론들, 수단들 및 조합들에 의해 실현 및 달성될 수 있다.
[0047] 이제 첨부된 도면들에 예시되고 이하에 논의되는 실시예들을 상세하게 참조한다.
[0048] 도 4는 인터넷과 같은 네트워크(495)를 통해 연결된 웨어러블 디바이스(101), 클라이언트 디바이스(410) 및 서버(498)를 포함하는 예시적인 지상 실측값 데이터세트 생성 시스템(1000)의 기능적 블록도이다. 클라이언트 디바이스(401)는 데스크톱 컴퓨터 또는 휴대폰과 같은 임의의 컴퓨팅 디바이스일 수 있다. 본 명세서에서 사용되는 바와 같이, 웨어러블 디바이스(101)는 헤드 마운티드 디스플레이들, VR 헤드셋들 및 본 명세서에 기술된 아이웨어 디바이스(100)와 같은 VR 시스템들과 함께 사용하기 위한 디스플레이를 갖는 다양한 디바이스들 중 임의의 디바이스를 포함한다. 웨어러블 디바이스(101)의 피처들 및 기능들이 아이웨어 디바이스(100)를 참조하여 본 명세서에 기술되지만, 이와 같은 피처들 및 기능들은 VR 시스템들과 함께 사용하기에 적합한 임의 유형의 웨어러블 디바이스(101)에 존재될 수 있다.
[0049] 도 1a는 터치 감지 입력 디바이스 또는 터치패드(181)를 포함하는 아이웨어 디바이스(100) 형태의 웨어러블 디바이스(101)의 예시적인 하드웨어 구성의 측면도(우측)이다. 도시된 바와 같이, 터치패드(181)는 감지하기 힘들고 쉽게 눈에 띄지 않는 경계를 가질 수 있고, 대안적으로, 경계는 분명히 보이거나, 터치패드(181)의 로케이션 및 경계에 대해 사용자에게 피드백을 제공하는 상승 에지나 이와는 다른 촉각 에지를 포함할 수 있다. 다른 구현예들에서, 아이웨어 디바이스(100)는 좌측에 터치패드를 포함할 수 있다.
[0050] 터치패드(181)의 표면은, 사용자가 직관적인 방식으로 메뉴 옵션들을 탐색하고 선택할 수 있게 하도록, 이미지 디스플레이 상에서 아이웨어 디바이스에 의해 디스플레이되는 GUI와 함께 사용하기 위해 손가락 터치들, 태핑들 및 제스처들(예컨대, 이동 터치들)을 검출하도록 구성되고, 이는 사용자 경험을 향상시키고 단순화한다.
[0051] 터치패드(181) 상의 손가락 입력들의 검출은 여러 기능들을 가능하게 할 수 있다. 예를 들어, 터치패드(181) 상의 아무 곳이나 터치하면, GUI로 하여금, 이미지 디스플레이 상에 아이템을 디스플레이하거나 강조 표시하게 할 수 있으며, 이는 광학 조립체들(180A, 180B) 중 적어도 하나에 투영될 수 있다. 터치패드(181) 상에 더블 태핑하면, 아이템이나 아이콘을 선택할 수 있다. 손가락을 특정 방향(예컨대, 앞에서 뒤, 뒤에서 앞, 위에서 아래 또는 아래에서 위)으로 슬라이딩하거나 스와이핑하면, 아이템들이나 아이콘들로 하여금, 특정 방향, 예를 들어, 다음의 아이템, 아이콘, 비디오, 이미지, 페이지 또는 슬라이드로 이동하도록 슬라이딩하거나 스크롤링되게 할 수 있다. 손가락을 다른 방향으로 슬라이딩하면, 반대 방향, 예를 들어, 이전의 아이템, 아이콘, 비디오, 이미지, 페이지 또는 슬라이드로 이동하도록 슬라이딩하거나 스크롤링하게 할 수 있다. 터치패드(181)는 아이웨어 디바이스(100)의 사실상 어디에나 있을 수 있다.
[0052] 일 실시예에서, 터치패드(181) 상의 단일 태핑의 인식된 손가락 제스처는 광학 조립체(180A, 180B)의 이미지 디스플레이 상에 제시된 이미지에서 그래픽 사용자 인터페이스 요소의 선택이나 누름을 개시한다. 인식된 손가락 제스처에 기초한 광학 조립체(180A, 180B)의 이미지 디스플레이 상에 제시된 이미지에 대한 조정은 추가 디스플레이 또는 추가 실행을 위해 광학 조립체(180A, 180B)의 이미지 디스플레이 상의 그래픽 사용자 인터페이스 요소를 선택하거나 제출하는 기본 동작일 수 있다.
[0053] 도시된 바와 같이, 아이웨어 디바이스(100)는 우측 가시광 카메라(114B)를 포함한다. 본 명세서에서 추가로 기술되는 바와 같이, 2개의 카메라들(114A, 114B)은 2개의 별개의 뷰포인트들로부터 장면에 대한 이미지 정보를 포착한다. 2개의 포착된 이미지들은 3D 안경으로 보기 위해 이미지 디스플레이 상에 3차원 디스플레이를 투영하는 데 사용될 수 있다.
[0054] 아이웨어 디바이스(100)는 깊이 이미지들과 같은 이미지들을 제시하기 위한 이미지 디스플레이를 갖는 우측 광학 조립체(180B)를 포함한다. 도 1a 및 도 1b에 도시된 바와 같이, 아이웨어 디바이스(100)는 우측 가시광 카메라(114B)를 포함한다. 아이웨어 디바이스(100)는 스테레오 카메라와 같은 수동 유형의 3차원 카메라를 형성하는 다수의 가시광 카메라들(114A, 114B)을 포함할 수 있으며, 그 중 우측 가시광 카메라(114B)는 우측 모서리(110B)에 로케이팅된다. 도 1c 및 도 1d에 도시된 바와 같이, 아이웨어 디바이스(100)는 좌측 가시광 카메라(114A)도 포함한다.
[0055] 좌우 가시광 카메라들(114A, 114B)은 가시광 범위 파장에 민감하다. 가시광 카메라들(114A, 114B) 각각은 3차원 깊이 이미지들의 생성을 가능하게 하기 위해 중첩되는 서로 다른 전방 지향 시야를 가지며, 예를 들어, 우측 가시광 카메라(114B)는 우측 시야(111B)를 묘사한다. 일반적으로, "시야"는 공간의 특정 포지션 및 방위에서 카메라를 통해 볼 수 있는 장면의 일부이다. 시야들(111A, 111B)은 중첩하는 시야(304)(도 3)를 갖는다. 가시광 카메라가 이미지를 포착할 때, 시야(111A, 111B) 밖의 객체들 또는 객체 피처들은 원본 이미지(예컨대, 사진 또는 그림)에 기록되지 않는다. 시야는 가시광 카메라(114A, 114B)의 이미지 센서가 주어진 장면의 포착된 이미지에서 주어진 장면의 전자기 방사선을 픽업하는 각도 범위나 각도 크기를 기술한다. 시야는 뷰 콘(view cone), 즉, 화각(angle of view)의 각도 크기로 표현될 수 있다. 화각은 수평, 수직 또는 대각선으로 측정될 수 있다.
[0056] 예시적인 구성에서, 하나 또는 둘 모두의 가시광 카메라들(114A, 114B)은 100°의 시야 및 480 × 480 픽셀들의 해상도를 갖는다. "촬영각(angle of coverage)"은 가시광 카메라들(114A, 114B) 또는 적외선 카메라(410)(도 2a 참조)의 렌즈가 효과적으로 이미징할 수 있는 각도 범위를 설명한다. 일반적으로, 카메라 렌즈는 카메라의 필름이나 센서를 완전히 덮을 만큼 충분히 큰 이미지 서클을 생성하며, 약간의 비네팅(vignetting)(예컨대, 중심과 비교할 때 가장자리로 갈수록 이미지가 어두워짐)을 포함할 수 있다. 카메라 렌즈의 촬영각이 센서를 채우지 않으면, 이미지 서클은 일반적으로 가장자리를 향한 강한 비네팅과 함께 보일 것이고, 유효 화각은 촬영각으로 한정될 것이다.
[0057] 이와 같은 가시광 카메라들(114A, 114B)의 실시예들에는 고해상도 CMOS(complementary metal-oxide-semiconductor) 이미지 센서 및 640p(예컨대, 총 0.3 메가픽셀들의 경우, 640 × 480 픽셀들), 720p 또는 1080p의 해상도들이 가능한 디지털 VGA 카메라(비디오 그래픽 어레이)가 포함된다. 가시광 카메라들(114A, 114B)의 다른 실시예들은 고화질(HD: high-definition) 정지 이미지들을 포착하고 이들을 1642 × 1642 픽셀들(또는 그 이상)의 해상도로 저장할 수 있거나, 또는 고화질 비디오를 높은 프레임 레이트(예컨대, 초당 30~60프레임들 이상)로 기록하고 그 기록을 1216 × 1216 픽셀들(또는 그 이상)의 해상도로 저장할 수 있다.
[0058] 아이웨어 디바이스(100)는 메모리에 저장하기 위해 이미지 프로세서에 의해 디지털화된 지오로케이션 데이터(geolocation data)와 함께 가시광 카메라들(114A, 114B)로부터 이미지 센서 데이터를 포착할 수 있다. 가시광 카메라들(114A, 114B)은 수평 포지션에 대한 X축 및 수직 포지션에 대한 Y축을 포함하는 2차원 좌표계 상에서 픽셀들의 매트릭스를 구성하는 2차원 공간 도메인에서 개개의 좌우 원본 이미지들을 포착한다. 각각의 픽셀에는 색상 속성값(예컨대, 적색 픽셀 광값, 녹색 픽셀 광값 또는 청색 픽셀 광값) 및 포지션 속성(예컨대, X축 좌표와 Y축 좌표)이 포함된다.
[0059] 나중에 3차원 프로젝션으로 디스플레이하기 위한 스테레오 이미지들을 포착하기 위해, 이미지 프로세서(412)(도 4에 도시됨)는 가시광 카메라들(114A, 114B)에 커플링되어, 시각적 이미지 정보를 수신 및 저장할 수 있다. 이미지 프로세서(412) 또는 다른 프로세서는 가시광 카메라들(114A, 114B)의 동작을 제어하여 인간의 양안시(binocular vision)를 시뮬레이팅하는 스테레오 카메라의 역할을 하고, 각각의 이미지에 타임스탬프를 추가할 수 있다. 이미지들의 쌍 각각에 대한 타임스탬프를 사용하면, 3차원 프로젝션의 일부로서 이미지들을 함께 디스플레이할 수 있다. 3차원 프로젝션들은 가상 현실(VR) 경험들 및 비디오 게이밍을 포함하여, 다양한 상황들에서 바람직한 몰입형의 실제와 같은 경험을 생성한다.
[0060] 도 1b는 카메라 시스템의 우측 가시광 카메라(114B) 및 회로 기판을 묘사하는 도 1a의 아이웨어 디바이스(100)의 우측 모서리(110B)의 사시 단면도이다. 도 1c는 도 1a의 아이웨어 디바이스(100)의 예시적인 하드웨어 구성의 측면도(좌측)이고, 이는 카메라 시스템의 좌측 가시광 카메라(114A)를 도시한다. 도 1d는 3차원 카메라의 좌측 가시광 카메라(114A) 및 회로 기판을 묘사하는 도 1c의 아이웨어 디바이스의 좌측 모서리(110A)의 사시 단면도이다.
[0061] 좌측 가시광 카메라(114A)의 구성 및 배치는 연결들 및 커플링이 좌측 횡방향 측면(170A)에 있다는 점을 제외하고, 우측 가시광 카메라(114B)와 실질적으로 유사하다. 도 1b의 실시예에 도시된 바와 같이, 아이웨어 디바이스(100)는 우측 가시광 카메라(114B) 및 회로 기판(140B)을 포함하고, 이 회로 기판은 가요성 인쇄 회로 기판(PCB: printed circuit board)일 수 있다. 우측 힌지(126B)는 우측 모서리(110B)를 아이웨어 디바이스(100)의 우측 템플(125B)에 연결한다. 일부 실시예들에서, 우측 가시광 카메라(114B), 가요성 PCB(140B), 또는 다른 전기 커넥터들이나 접점들의 컴포넌트들은 우측 템플(125B) 또는 우측 힌지(126B)에 로케이팅될 수 있다.
[0062] 우측 모서리(110B)에는 모서리 바디(190)와 모서리 캡이 포함되며, 모서리 캡은 도 1b의 단면에서 생략되어 있다. 우측 모서리(110B) 내부에는 우측 가시광 카메라(114B), 마이크로폰(들), 저전력 무선 회로(예컨대, Bluetooth™를 통한 무선 근거리 네트워크 통신용), 고속 무선 회로(예컨대, Wi-Fi를 통한 무선 로컬 영역 네트워크 통신용)를 위한 컨트롤러 회로들을 포함하는, PCB들 또는 가요성 PCB들과 같은 다양한 상호연결된 회로 기판들이 배치된다.
[0063] 우측 가시광 카메라(114B)는 가요성 PCB(140B)에 커플링되거나 그 위에 배치되고, 프레임(105) 내에 형성된 개구(들)를 통해 조준되는 가시광 카메라 커버 렌즈에 의해 커버된다. 예를 들어, 도 2a에 도시된 프레임(105)의 우측 림(rim)(107B)은 우측 모서리(110B)에 연결되고, 가시광 카메라 커버 렌즈용 개구(들)를 포함한다. 프레임(105)은 사용자의 눈으로부터 멀어지고 바깥쪽을 향하도록 구성된 전면(front side)을 포함한다. 가시광 카메라 커버 렌즈용 개구는 프레임(105)의 전면 또는 외향 측면(outward-facing side)을 관통하여 형성된다. 본 실시예에서, 우측 가시광 카메라(114B)는 아이웨어 디바이스(100)의 사용자의 우측 눈과 상관되는 시선이나 시각(perspective)을 갖는 외향 시야(111B)(도 3에 도시됨)를 갖는다. 가시광 카메라 커버 렌즈는 개구가 외향 촬영각으로 형성된 우측 모서리(110B)의 전면 또는 외향면에 부착될 수도 있지만, 외향 방향은 서로 다를 수 있다. 커플링은 또한 중간 컴포넌트들을 통해 간접적일 수 있다.
[0064] 도 1b에 도시된 바와 같이, 가요성 PCB(140B)는 우측 모서리(110B) 내부에 배치되고, 우측 모서리(110B)에 수용된 하나 이상의 다른 컴포넌트들에 커플링된다. 우측 모서리(110B)의 회로 기판들에 형성되는 것으로 도시되어 있지만, 우측 가시광 카메라(114B)는 좌측 모서리(110A), 템플들(125A, 125B) 또는 프레임(105)의 회로 기판들 상에 형성될 수 있다.
[0065] 도 2a 및 도 2b는 2개의 상이한 유형의 이미지 디스플레이들을 포함하는 아이웨어 디바이스(100)의 예시적인 하드웨어 구성들의 후방 사시도들이다. 아이웨어 디바이스(100)는 사용자가 착용할 수 있도록 구성된 형태로 크기 및 형상이 정해져 있으며, 안경의 형태는 실시예에 도시되어 있다. 아이웨어 디바이스(100)는 다른 형태들을 취할 수 있고, VR 헤드셋이나 헬멧, 헤드 마운티드 디스플레이, 또는 VR 시스템들과 함께 사용하기에 적합한 다른 디바이스와 같은 임의의 다른 웨어러블 디바이스(101)에 통합될 수 있다.
[0066] 안경 실시예에서, 아이웨어 디바이스(100)는 사용자의 코에 의해 지지되도록 적응된 브리지(106)를 통해 우측 림(107B)에 연결된 좌측 림(107A)을 포함하는 프레임(105)을 포함한다. 좌측 및 우측 림들(107A, 107B)은 렌즈 및 디스플레이 디바이스와 같은 개개의 광학 요소(180A, 180B)를 유지하는 개개의 애퍼처(aperture)들(175A, 175B)을 포함한다. 본 명세서에서 사용되는 바와 같이, "렌즈"라는 용어는 광을 수렴/발산시키거나, 수렴이나 발산을 거의 또는 전혀 일으키지 않는 곡면 또는 편평한 표면을 갖는 투명하거나 반투명한 유리 또는 플라스틱 피스들을 포함하는 것을 의미한다.
[0067] 2개의 광학 요소들(180A, 180B)을 갖는 것으로 도시되어 있지만, 아이웨어 디바이스(100)는, 아이웨어 디바이스(100)의 애플리케이션 또는 의도된 사용자에 따라, 단일 광학 요소와 같은 다른 배열체들을 포함할 수 있다(또는 임의의 광학 요소(180A, 180B)를 포함하지 않을 수 있음). 추가로 도시된 바와 같이, 아이웨어 디바이스(100)는 프레임(105)의 좌측 횡방향 측면(170A)에 인접한 좌측 모서리(110A) 및 프레임(105)의 우측 횡방향 측면(170B)에 인접한 우측 모서리(110B)를 포함한다. 모서리들(110A, 110B)은 개개의 측면들(170A, 170B) 상에서 프레임(105)에 통합되거나(예시된 바와 같음), 개개의 측면들(170A, 170B) 상에서 프레임(105)에 부착된 개별 컴포넌트들로 구현될 수 있다. 대안적으로, 모서리들(110A, 110B)은 프레임(105)에 부착된 템플들(도시되지 않음)에 통합될 수 있다.
[0068] 일 실시예에서, 광학 조립체(180A, 180B)의 이미지 디스플레이는 통합 이미지 디스플레이를 포함한다. 도 2a에 도시된 바와 같이, 각각의 광학 조립체(180A, 180B)는 액정 디스플레이(LCD), 유기 발광 다이오드(OLED) 디스플레이 또는 임의의 다른 이러한 디스플레이와 같은 적절한 디스플레이 매트릭스(177)를 포함한다. 각각의 광학 조립체(180A, 180B)는 또한 광학층 또는 광학층들(176)을 포함하고, 이는 렌즈들, 광학 코팅들, 프리즘들, 거울들, 도파관들, 광학 스트립들 및 임의의 조합의 다른 광학 컴포넌트들을 포함할 수 있다. 광학층들(176A, 176B, …, 176N)(도 2a 및 본 명세서에서는 176A~176N으로 도시됨)은 적절한 크기 및 구성을 갖고, 디스플레이 매트릭스로부터 광을 수신하기 위한 제1 표면 및 사용자의 눈으로 광을 방출하기 위한 제2 표면을 포함하는 프리즘을 포함할 수 있다. 광학층들(176A~176N)의 프리즘은 좌측 및 우측 림들(107A, 107B)에 형성된 개개의 애퍼처들(175A, 175B)의 전체 또는 적어도 일부 위로 연장되어, 사용자의 눈이 대응하는 좌측 및 우측 림들(107A, 107B)을 통해 보고 있을 때, 사용자가 프리즘의 제2 표면을 볼 수 있게 한다. 광학층들(176A~176N)의 프리즘의 제1 표면은 프레임(105)으로부터 위쪽을 향하고, 디스플레이 매트릭스(177)는 디스플레이 매트릭스(177)에 의해 방출된 광자들 및 광이 제1 표면에 충돌하도록 프리즘 위에 놓인다. 프리즘은 광이 프리즘 내에서 굴절되고 광학층들(176A~176N)의 프리즘의 제2 표면에 의해 사용자의 눈을 향해 지향되도록 크기 및 형상이 정해진다. 이와 관련하여, 광학층들(176A~176N)의 프리즘의 제2 표면은 광을 눈의 중심을 향해 지향시키도록 볼록형일 수 있다. 프리즘은 디스플레이 매트릭스(177)에 의해 투영된 이미지를 확대하기 위해 선택적으로 크기 및 형상이 정해질 수 있고, 제2 표면에서 본 이미지가 디스플레이 매트릭스(177)로부터 방출된 이미지보다 하나 이상의 차원들에서 더 크도록 광이 프리즘을 통해 이동한다.
[0069] 일 실시예에서, 광학층들(176A~176N)은 층을 불투명하게 만드는(렌즈를 닫거나 차단하는) 전압이 인가되지 않는 한 그리고 인가될 때까지 투명한(렌즈를 개방된 상태로 유지하는) LCD 층을 포함할 수 있다. 아이웨어 디바이스(100) 상의 이미지 프로세서(412)는 액티브 셔터 시스템을 생성하기 위해 LCD 층에 전압을 인가하는 프로그래밍을 실행하여, 아이웨어 디바이스(100)가 3차원 프로젝션으로 디스플레이될 때, 시각적 콘텐츠를 보는 데 적합하도록 만들 수 있다. LCD 이외의 기술들은 전압 또는 다른 유형의 입력에 반응하는 다른 유형의 반응성 층들을 포함하여 액티브 셔터 모드에 사용될 수 있다.
[0070] 다른 실시예에서, 광학 조립체(180A, 180B)의 이미지 디스플레이 디바이스는, 도 2b에 도시된 바와 같이, 프로젝션 이미지 디스플레이를 포함한다. 각각의 광학 조립체(180A, 180B)는 스캐닝 미러 또는 갈바노미터를 사용하는 3색 레이저 프로젝터인 레이저 프로젝터(150)를 포함한다. 동작 동안에, 레이저 프로젝터(150)와 같은 광원은 아이웨어 디바이스(100)의 템플들(125A, 125B) 중 하나의 내부나 위에 배치된다. 본 실시예에서, 광학 조립체(180B)는 각각의 광학 조립체(180A, 180B)의 렌즈의 폭 또는 렌즈의 전면과 후면 사이의 렌즈 깊이를 가로질러 이격되어 있는 하나 이상의 광학 스트립들(155A, 155B, …, 155N)(도 2b에서 155A~155N으로 도시됨)을 포함한다.
[0071] 레이저 프로젝터(150)에 의해 투영된 광자들이 각각의 광학 조립체(180A, 180B)의 렌즈를 가로질러 이동함에 따라, 광자들은 광학 스트립들(155A~155N)과 충돌한다. 특정 광자가 특정 광학 스트립과 충돌할 때, 광자는 사용자의 눈을 향해 재지향되거나 다음의 광학 스트립으로 전달된다. 레이저 프로젝터(150)의 변조와 광학 스트립들의 변조의 조합은 특정 광자들 또는 광빔들을 제어할 수 있다. 일 실시예에서, 프로세서는 기계적, 음향적 또는 전자기적 신호들을 시작함으로써 광학 스트립들(155A~155N)을 제어한다. 2개의 광학 조립체들(180A, 180B)을 갖는 것으로 도시되어 있지만, 아이웨어 디바이스(100)는 단일 또는 3개의 광학 조립체들과 같은 다른 배열체들을 포함할 수 있거나, 각각의 광학 조립체(180A, 180B)는 아이웨어 디바이스(100)의 애플리케이션 또는 의도된 사용자에 따라 상이한 배열체가 배열될 수 있다.
[0072] 도 2a 및 도 2b에 추가로 도시된 바와 같이, 아이웨어 디바이스(100)는 프레임(105)의 좌측 횡방향 측면(170A)에 인접한 좌측 모서리(110A) 및 프레임(105)의 우측 횡방향 측면(170B)에 인접한 우측 모서리(110B)를 포함한다. 모서리들(110A, 110B)은 개개의 횡방향 측면들(170A, 170B) 상에서 프레임(105)에 통합되거나(예시된 바와 같음), 개개의 측면들(170A, 170B) 상에서 프레임(105)에 부착된 개별 컴포넌트들로 구현될 수 있다. 대안적으로, 모서리들(110A, 110B)은 프레임(105)에 부착된 템플들(125A, 125B)에 통합될 수 있다.
[0073] 다른 실시예에서, 도 2b에 도시된 아이웨어 디바이스(100)는 2개의 프로젝터들, 즉, 좌측 프로젝터(150A)(도시하지 않음) 및 우측 프로젝터(150B)(프로젝터(150)로 도시됨)를 포함할 수 있다. 좌측 광학 조립체(180A)는 좌측 디스플레이 매트릭스(177A)(도시하지 않음) 또는 광학 스트립들의 좌측 세트(155'A, 155'B, …, 155'N)(155 프라임, A 내지 N, 도시하지 않음)를 포함할 수 있으며, 이는 좌측 프로젝터(150A)로부터의 광과 상호작용하도록 구성된다. 유사하게, 우측 광학 조립체(180B)는 우측 디스플레이 매트릭스(177B)(도시하지 않음) 또는 광학 스트립들의 우측 세트(155"A, 155"B, …, 155"N)(155 더블 프라임, A 내지 N, 도시하지 않음)를 포함할 수 있고, 이는 우측 프로젝터(150B)로부터의 광과 상호작용하도록 구성된다. 본 실시예에서, 아이웨어 디바이스(100)는 좌측 디스플레이 및 우측 디스플레이를 포함한다.
[0074] 도 3은 3차원 장면(306), 좌측 가시광 카메라(114A)에 의해 포착된 좌측 원본 이미지(302A) 및 우측 가시광 카메라(114B)에 의해 포착된 우측 원본 이미지(302B)의 도식적인 묘사이다. 도시된 바와 같이, 좌측 시야(111A)는 우측 시야(111B)와 중첩될 수 있다. 중첩 시야(304)는 양 카메라들(114A, 114B) 모두에 의해 포착된 이미지의 부분을 나타낸다. 시야를 언급할 때, '중첩'이라는 용어는 생성된 원본 이미지들 내의 픽셀들의 매트릭스가 30% 이상 중첩하는 것을 의미한다. '상당히 중첩하는'은 생성된 원본 이미지들 내의 ― 또는 장면의 적외선 이미지 내의 ― 픽셀들의 매트릭스가 50% 이상 중첩하는 것을 의미한다. 본 명세서에 기술된 바와 같이, 2개의 원본 이미지들(302A, 302B)은 타임스탬프를 포함하도록 처리될 수 있으며, 이는 이미지들이 3차원 프로젝션의 일부로서 함께 디스플레이될 수 있도록 한다.
[0075] 스테레오 이미지들의 포착을 위해, 도 3에 예시된 바와 같이, 원본의 적색, 녹색 및 청색(RGB) 이미지들의 쌍은 주어진 순간에 실제 장면(306)을 포착하고, 이는 좌측 카메라(114A)에 의해 포착된 좌측 원본 이미지(302A) 및 우측 카메라(114B)에 의해 포착된 우측 원본 이미지(302B)이다. 원본 이미지들의 쌍(302A, 302B)이 처리될 때(예컨대, 이미지 프로세서(412)에 의함), 깊이 이미지들이 생성된다. 생성된 깊이 이미지들은 아이웨어 디바이스의 광학 조립체(180A, 180B), 다른 디스플레이(예컨대, 클라이언트 디바이스(401) 상의 이미지 디스플레이(580)), 또는 스크린 상에서 볼 수 있다.
[0076] 생성된 깊이 이미지들은 3차원 공간 도메인 내에 있으며, 수평 포지션(예컨대, 길이)에 대한 X축, 수직 포지션(예컨대, 높이)에 대한 Y축 및 깊이(예컨대, 거리)에 대한 Z축을 포함하는 3차원 로케이션 좌표계 상의 정점들의 행렬을 포함할 수 있다. 각각의 정점은 색상 속성(예컨대, 적색 픽셀 광값, 녹색 픽셀 광값 또는 청색 픽셀 광값); 포지션 속성(예컨대, X 로케이션 좌표, Y 로케이션 좌표 및 Z 로케이션 좌표); 텍스처 속성; 반사율 속성; 또는 이들의 조합을 포함할 수 있다. 텍스처 속성은 깊이 이미지의 정점들의 영역에서 색상 또는 강도들의 공간적 배열과 같은 깊이 이미지의 인식된 텍스처를 정량화한다.
[0077] 일 실시예에서, 지상 실측값 데이터세트 생성 시스템(1000)(도 4)은 본 명세서에 기술된 아이웨어 디바이스(100)와 같은 웨어러블 디바이스(101)를 포함하고, 이는 프레임(105)과 프레임(105)의 좌측 횡방향 측면(170A)으로부터 연장되는 좌측 템플(110A) 및 프레임(105)의 우측 횡방향 측면(170B)으로부터 연장되는 우측 템플(125B)을 포함한다. 아이웨어 디바이스(100)는 중첩 시야를 갖는 적어도 2개의 가시광 카메라들(114A, 114B)을 더 포함할 수 있다. 일 실시예에서, 아이웨어 디바이스(100)는, 도 3에 예시된 바와 같이, 좌측 시야(111A)를 갖는 좌측 가시광 카메라(114A)를 포함한다. 좌측 카메라(114A)는 프레임(105) 또는 좌측 템플(110A)에 연결되어, 장면(306)의 좌측면으로부터 좌측 원본 이미지(302A)를 포착한다. 아이웨어 디바이스(100)는 우측 시야(111B)를 갖는 우측 가시광 카메라(114B)를 더 포함한다. 우측 카메라(114B)는 프레임(105) 또는 우측 템플(125B)에 연결되어, 장면(306)의 우측면으로부터 우측 원본 이미지(302B)를 포착한다.
[0078] 도 4는 웨어러블 디바이스(101)(예컨대, AR 헤드셋 또는 아이웨어 디바이스(100)), 클라이언트 디바이스(401)(예컨대, 데스크톱 컴퓨터 또는 휴대폰), 및 인터넷과 같은 다양한 네트워크들(495)을 통해 연결된 서버 시스템(498)을 포함하는 예시적인 지상 실측값 데이터세트 생성 시스템(1000)의 기능적 블록도이다. 지상 실측값 데이터세트 생성 시스템(1000)은 아이웨어 디바이스(100)와 클라이언트 디바이스(401) 사이의 저전력 무선 연결(425) 및 고속 무선 연결(437)을 포함한다. 클라이언트 디바이스(401)는 데스크톱 컴퓨터 또는 휴대폰과 같은 임의의 컴퓨팅 디바이스일 수 있다. 본 명세서에서 사용되는 바와 같이, 웨어러블 디바이스(101)는 헤드 마운티드 디스플레이들, VR 헤드셋들 및 본 명세서에 기술된 아이웨어 디바이스(100)와 같은 VR 시스템들과 함께 사용하기 위한 디스플레이를 갖는 다양한 디바이스들 중 임의의 디바이스를 포함한다. 웨어러블 디바이스(101)의 피처들 및 기능들이 아이웨어 디바이스(100)를 참조하여 본 명세서에 설명되지만, 이와 같은 피처들 및 기능들은 VR 시스템들과 함께 사용하기에 적합한 임의 유형의 웨어러블 디바이스(101)에 존재될 수 있다.
[0079] 도 4에 도시된 바와 같이, 아이웨어 디바이스(100)는, 본 명세서에 기술된 바와 같이, 정지 이미지들, 비디오 이미지들 또는 정지 및 비디오 이미지들 모두를 포착하는 하나 이상의 가시광 카메라들(114A, 114B)을 포함한다. 카메라들(114A, 114B)은 고속 회로(430)에 대한 직접 메모리 액세스(DMA)를 가질 수 있고 스테레오 카메라로서 기능할 수 있다. 카메라들(114A, 114B)은 적색, 녹색 및 청색(RGB)의 이미징된 장면의 텍스처 매핑된 이미지들인 3차원(3D) 모델들로 렌더링될 수 있는 초기 깊이 이미지들을 포착하는 데 사용될 수 있다. 디바이스(100)는 또한 디바이스(100)에 대한 객체들의 포지션을 추정하기 위해 적외선 신호들을 사용하는 깊이 센서(213)를 포함할 수 있다. 일부 실시예들에서, 깊이 센서(213)는 하나 이상의 적외선 이미터(들)(215) 및 적외선 카메라(들)(410)를 포함한다.
[0080] 아이웨어 디바이스(100)는 각각의 광학 조립체(180A, 180B)의 2개의 이미지 디스플레이들(하나는 좌측면(170A)에 관련되고 다른 하나는 우측면(170B)에 관련됨)을 더 포함한다. 아이웨어 디바이스(100)는 또한 이미지 디스플레이 드라이버(442), 이미지 프로세서(412), 저전력 회로(420) 및 고속 회로(430)를 포함한다. 각각의 광학 조립체(180A, 180B)의 이미지 디스플레이들은 정지 이미지들, 비디오 이미지들 또는 정지 및 비디오 이미지들을 포함하는 이미지들을 제시하기 위한 것이다. 이미지 디스플레이 드라이버(442)는 이미지들의 디스플레이를 제어하기 위해 각각의 광학 조립체(180A, 180B)의 이미지 디스플레이들에 커플링된다.
[0081] 아이웨어 디바이스(100)는 하나 이상의 스피커들(440)(예컨대, 하나는 아이웨어 디바이스의 좌측면과 연관되고, 다른 하나는 아이웨어 디바이스의 우측면과 연관됨)을 추가적으로 포함한다. 스피커들(440)은 아이웨어 디바이스(100)의 프레임(105), 템플들(125) 또는 모서리들(110)에 통합될 수 있다. 하나 이상의 스피커들(440)은 저전력 회로(420), 고속 회로(430) 또는 둘 모두의 제어 하에 오디오 프로세서(443)에 의해 구동된다. 스피커들(440)은, 예를 들어, 비트 트랙(beat track)을 포함하는 오디오 신호들을 제시하기 위한 것이다. 오디오 프로세서(443)는 사운드의 표현을 제어하기 위해 스피커들(440)에 커플링된다.
[0082] 아이웨어 디바이스(100)에 대해 도 4에 도시된 컴포넌트들은 림들 또는 템플들에 로케이팅된 하나 이상의 회로 기판들, 예를 들어, 인쇄 회로 기판(PCB) 또는 가요성 인쇄 회로(FPC) 상에 로케이팅된다. 대안적으로 또는 추가적으로, 묘사된 컴포넌트들은 아이웨어 디바이스(100)의 모서리들, 프레임들, 힌지들 또는 브리지 내에 로케이팅될 수 있다. 좌측 및 우측 가시광 카메라들(114A, 114B)은 CMOS(complementary metal-oxide-semiconductor) 이미지 센서, 전하 커플링된 디바이스, 렌즈, 또는 알 수 없는 객체들을 갖는 장면들의 정지 이미지들 또는 비디오를 포함하여, 데이터를 포착하는 데 사용될 수 있는 임의의 다른 개개의 가시성 또는 광 포착 요소들과 같은 디지털 카메라 요소들을 포함할 수 있다.
[0083] 도 4에 도시된 바와 같이, 고속 회로(430)는 고속 프로세서(432), 메모리(434) 및 고속 무선 회로(436)를 포함한다. 본 실시예에서, 이미지 디스플레이 드라이버(442)는 각각의 광학 조립체(180A, 180B)의 좌측 및 우측 이미지 디스플레이들을 구동하기 위해 고속 회로(430)에 커플링되고, 고속 프로세서(432)에 의해 작동된다. 고속 프로세서(432)는 아이웨어 디바이스(100)에 필요한 임의의 일반적인 컴퓨팅 시스템의 동작 및 고속 통신을 관리할 수 있는 임의의 프로세서일 수 있다. 고속 프로세서(432)는 고속 무선 회로(436)를 사용하여 무선 근거리 통신망(WLAN)으로의 고속 무선 연결(437)에서 고속 데이터 전송들을 관리하는 데 필요한 처리 리소스들을 포함한다.
[0084] 일부 실시예들에서, 고속 프로세서(432)는 LINUX 운영 체제 또는 아이웨어 디바이스(100)의 상이한 운영 체제와 같은 운영 체제를 실행하고 운영 체제는 실행을 위해 메모리(434)에 저장된다. 임의의 다른 책임들에 추가하여, 고속 프로세서(432)는 고속 무선 회로(436)로의 데이터 전송들을 관리하는 데 사용되는 아이웨어 디바이스(100)용 소프트웨어 아키텍처를 실행한다. 일부 실시예들에서, 고속 무선 회로(436)는 본 명세서에서 Wi-Fi라고도 지칭되는 IEEE(Institute of Electrical and Electronic Engineers) 802.11 통신 표준들을 구현하도록 구성된다. 다른 실시예들에서, 다른 고속 통신 표준들은 고속 무선 회로(436)에 의해 구현될 수 있다.
[0085] 저전력 회로(420)는 저전력 프로세서(422) 및 저전력 무선 회로(424)를 포함한다. 아이웨어 디바이스(100)의 저전력 무선 회로(424) 및 고속 무선 회로(436)는 단거리 트랜시버(Bluetooth™ 또는 BLE(Bluetooth Low-Energy)) 및 무선 와이드, 로컬 또는 광역(wide-area) 네트워크 트랜시버들(예컨대, 셀룰러 또는 Wi-Fi)을 포함할 수 있다. 저전력 무선 연결(425) 및 고속 무선 연결(437)을 통해 통신하는 트랜시버를 포함하는 클라이언트 디바이스(401)는 네트워크(495)의 다른 요소들과 마찬가지로 아이웨어 디바이스(100)의 아키텍처의 세부 사항을 사용하여 구현될 수 있다.
[0086] 메모리(434)는, 특히, 좌측 및 우측 가시광 카메라들(114A, 114B), 적외선 카메라(들)(410), 이미지 프로세서(412)에 의해 생성된 카메라 데이터, 및 각각의 광학 조립체(180A, 180B)의 이미지 디스플레이 상에 이미지 디스플레이 드라이버(442)에 의해 디스플레이용으로 생성된 이미지들을 포함하는 다양한 데이터 및 애플리케이션들을 저장할 수 있는 임의의 저장 디바이스를 포함한다. 메모리(434)가 고속 회로(430)와 통합된 것으로 도시되어 있지만, 다른 실시예들에서 메모리(434)는 아이웨어 디바이스(100)의 독립적인 독립형 요소일 수 있다. 특정의 그와 같은 실시예들에서, 전기적 라우팅 라인들은 이미지 프로세서(412) 또는 저전력 프로세서(422)로부터 메모리(434)로의 고속 프로세서(432)를 포함하는 칩을 통한 연결을 제공할 수 있다. 다른 실시예들에서, 고속 프로세서(432)는, 저전력 프로세서(422)가 메모리(434)와 관련된 판독 또는 기록 동작이 필요할 때마다 고속 프로세서(432)를 부팅하도록, 메모리(434)의 어드레싱을 관리할 수 있다.
[0087] 도 4에 도시된 바와 같이, 아이웨어 디바이스(100)의 고속 프로세서(432)는 카메라 시스템(가시광 카메라들(114A, 114B)), 이미지 디스플레이 드라이버(442), 사용자 입력 디바이스(491) 및 메모리(434)에 커플링될 수 있다. 도 5에 도시된 바와 같이, 클라이언트 디바이스(401)의 CPU(530)는 카메라 시스템(570), 모바일 디스플레이 드라이버(582), 사용자 입력층(591) 및 메모리(540A)에 커플링될 수 있다.
[0088] 서버 시스템(498)은 서비스 또는 네트워크 컴퓨팅 시스템의 일부로서 하나 이상의 컴퓨팅 디바이스들일 수 있으며, 예를 들어, 클라이언트 디바이스 및 본 명세서에 기술된 아이웨어 디바이스(100)와 같은, 웨어러블 디바이스(101)와 네트워크(495)를 통해 통신하는 프로세서, 메모리 및 네트워크 통신 인터페이스를 포함한다.
[0089] 아이웨어 디바이스(100)의 출력 컴포넌트들은, 도 2a 및 도 2b에 기술된 바와 같이, 각각의 렌즈 또는 광학 조립체(180A, 180B)와 연관된 좌측 및 우측 이미지 디스플레이들과 같은 시각적 요소들을 포함한다(예컨대, 액정 디스플레이(LCD), 플라즈마 디스플레이 패널(PDP), 발광 다이오드(LED) 디스플레이, 프로젝터, 또는 도파관과 같은 디스플레이). 아이웨어 디바이스(100)는 사용자향(user-facing) 표시기(예컨대, LED, 스피커 또는 진동 액추에이터) 또는 외향(outward-facing) 신호(예컨대, LED, 스피커)를 포함할 수 있다. 각각의 광학 조립체(180A, 180B)의 이미지 디스플레이들은 이미지 디스플레이 드라이버(442)에 의해 구동된다. 일부 예시적인 구성예들에서, 아이웨어 디바이스(100)의 출력 컴포넌트들은 가청 요소들(예컨대, 스피커들), 촉각 컴포넌트들(예컨대, 촉감 피드백을 생성하는 진동 모터와 같은 액추에이터) 및 다른 신호 생성기들과 같은 추가적인 표시기들을 더 포함한다. 예를 들어, 디바이스(100)는 사용자향 표시기들의 세트 및 외향 신호들의 세트를 포함할 수 있다. 사용자향 표시기들의 세트는 디바이스(100)의 사용자가 보거나 다른 방식으로 감지하도록 구성된다. 예를 들어, 디바이스(100)는 사용자가 볼 수 있도록 포지셔닝된 LED 디스플레이, 사용자가 들을 수 있는 사운드를 생성하도록 포지셔닝된 하나 이상의 스피커들, 또는 사용자가 느낄 수 있는 촉감 피드백을 제공하는 액추에이터를 포함할 수 있다. 외향 신호들의 세트는 디바이스(100) 근처의 관찰자가 보거나 다른 방식으로 감지하도록 구성된다. 유사하게, 디바이스(100)는 관찰자에 의해 감지되도록 구성 및 포지셔닝되는 LED, 스피커 또는 액추에이터를 포함할 수 있다.
[0090] 아이웨어 디바이스(100)의 입력 컴포넌트들은 영숫자 입력 컴포넌트들(예컨대, 영숫자 입력을 수신하도록 구성된 터치 스크린 또는 터치패드, 포토-옵티칼 키보드(photo-optical keyboard) 또는 다른 영숫자로 구성된 컴포넌트들), 포인터 기반 입력 컴포넌트들(예컨대, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서 또는 다른 포인팅 도구들), 촉각 입력 컴포넌트들(예컨대, 버튼 스위치, 터치 또는 터치 제스처의 로케이션, 힘이나 로케이션 및 힘, 또는 다른 촉각으로 구성된 요소들을 감지하는 터치 스크린 또는 터치패드) 및 오디오 입력 컴포넌트들(예컨대, 마이크) 등을 포함할 수 있다. 클라이언트 디바이스(401) 및 서버 시스템(498)은 영숫자, 포인터 기반, 촉각, 오디오 및 다른 입력 컴포넌트들을 포함할 수 있다.
[0091] 일부 실시예들에서, 아이웨어 디바이스(100)는 관성 측정 유닛(IMU)(472)이라고 지칭되는 모션 감지 컴포넌트들의 집합을 포함한다. 모션 감지 컴포넌트들은 종종 마이크로칩의 일부로 될 정도로 작은 미세한 이동 파트들을 가진 MEMS(Micro-Electro-Mechanical System)일 수 있다. 일부 예시적인 구성들에서, 관성 측정 유닛(IMU)(472)은 가속도계, 자이로스코프 및 자력계를 포함한다. 가속도계는 3개의 직교 축들(x, y, z)에 대한 디바이스(100)의 선형 가속도(중력으로 인한 가속도를 포함함)를 감지한다. 자이로스코프는 3개의 회전축들(피치(pitch), 롤(roll), 요(yaw))에 대한 디바이스(100)의 각속도를 감지한다. 가속도계와 자이로스코프는 함께 6개의 축들(x, y, z, 피치, 롤, 요)에 관한 디바이스에 대한 포지션, 방위 및 모션 데이터를 제공할 수 있다. 자력계는, 존재하는 경우, 자북(magnetic north)에 대한 디바이스(100)의 진로(heading)를 감지한다. 디바이스(100)의 포지션은 GPS 유닛(473), 상대적인 포지션 좌표들을 생성하는 하나 이상의 트랜시버들, 고도 센서들 또는 기압계들, 및 다른 방위 센서들과 같은 로케이션 센서들에 의해 결정될 수 있다. 이와 같은 포지셔닝 시스템 좌표들은 또한 저전력 무선 회로(424) 또는 고속 무선 회로(436)를 거쳐 클라이언트 디바이스(401)로부터 무선 연결들(425, 437)을 통해 수신될 수 있다.
[0092] IMU(472)는 컴포넌트들로부터 원본 데이터를 수집하고 디바이스(100)의 포지션, 방위 및 모션에 대한 다수의 유용한 값을 계산하는 디지털 모션 프로세서 또는 프로그래밍을 포함하거나 이와 협력할 수 있다. 예를 들어, 가속도계에서 수집된 가속도 데이터는 각 축(x, y, z)에 상대적인 속도를 얻기 위해 통합될 수 있으며, 디바이스(100)의 포지션(선형 좌표들, x, y 및 z에서)을 얻기 위해 다시 통합될 수 있다. 자이로스코프로부터의 각속도 데이터는 디바이스(100)의 포지션(구면 좌표들에서)을 얻기 위해 통합될 수 있다. 이들 유용한 값들을 계산하기 위한 프로그래밍은 메모리(434)에 저장될 수 있고, 아이웨어 디바이스(100)의 고속 프로세서(432)에 의해 실행될 수 있다.
[0093] 아이웨어 디바이스(100)는 생체 인식 센서들, 특수 센서들, 또는 아이웨어 디바이스(100)와 통합된 디스플레이 요소들과 같은 추가적인 주변 센서들을 선택적으로 포함할 수 있다. 예를 들어, 주변 디바이스 요소들은 출력 컴포넌트들, 모션 컴포넌트들, 포지션 컴포넌트들 또는 본 명세서에 기술된 임의의 다른 그와 같은 요소들을 포함하는 임의의 I/O 컴포넌트들을 포함할 수 있다. 예를 들어, 생체 인식 센서들은 표현들(예컨대, 손 표현들, 얼굴 표현들, 보컬 표현들, 몸짓들, 또는 시선 추적)을 검출하거나, 생체 신호들(예컨대, 혈압, 심박수, 체온, 땀 또는 뇌파들)을 측정하거나, 또는 사람을 인식(예컨대, 음성, 망막, 안면 특징들, 지문들 또는 뇌파 데이터와 같은 전기적 생체 신호들에 기반한 인식)하는 등을 위한 컴포넌트들을 포함할 수 있다.
[0094] 클라이언트 디바이스(401)는 데스크탑 컴퓨터, 랩톱 컴퓨터, 모바일 디바이스, 스마트폰, 태블릿, 랩톱 컴퓨터, 액세스 포인트, 또는 저전력 무선 연결(425) 및 고속 무선 연결(437) 모두를 사용하여 아이웨어 디바이스(100)와 연결할 수 있는 임의의 다른 이러한 디바이스일 수 있다. 클라이언트 디바이스(401)는 서버 시스템(498) 및 네트워크(495)에 연결된다. 네트워크(495)는 유선 및 무선 연결들의 임의의 조합을 포함할 수 있다.
[0095] 지상 실측값 데이터세트 생성 시스템(1000)은, 도 4에 도시된 바와 같이, 네트워크(495)를 거쳐 웨어러블 디바이스(101)에 커플링된 데스크탑 컴퓨터 또는 모바일 디바이스와 같은 클라이언트 디바이스(401)를 포함한다. 지상 실측값 데이터세트 생성 시스템(1000)은 명령어들을 저장하기 위한 다수의 메모리 요소들 및 이러한 명령어들을 실행하기 위한 프로세서 요소들을 포함한다. 프로세서(432)에 의한 지상 실측값 데이터세트 생성 시스템(1000)과 연관된 명령어들의 실행은 웨어러블 디바이스(101)(예컨대, 아이웨어 디바이스(100))가 클라이언트 디바이스(401)와 협력하도록 구성한다. 지상 실측값 데이터세트 생성 시스템(1000)은 아이웨어 디바이스(100)의 메모리(434) 또는 클라이언트 디바이스(401)의 메모리 요소들(540A, 540B, 540C)을 활용할 수 있다(도 5). 또한, 지상 실측값 데이터세트 생성 시스템(1000)은 웨어러블 또는 아이웨어 디바이스(100)의 프로세서 요소들(432, 422) 또는 클라이언트 디바이스(401)의 중앙 처리 유닛(CPU)(530)을 활용할 수 있다(도 5). 또한, 지상 실측값 데이터세트 생성 시스템(1000)은, 본 명세서에 기술된 바와 같이, 서버 시스템(498)의 메모리 및 프로세서 요소들을 더 활용할 수 있다. 이러한 양태에서, 지상 실측값 데이터세트 생성 시스템(1000)의 메모리 및 처리 기능들은 웨어러블 디바이스(101) 또는 아이웨어 디바이스(100), 클라이언트 디바이스(401) 및 서버 시스템(498)에 걸쳐 공유되거나 분산될 수 있다.
[0096] 도 12는 서버 시스템(498)이 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들(1208)(예컨대, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱, 또는 다른 실행 가능한 코드)이 실행될 수 있는 예시적인 서버 시스템(498)의 도식적인 표현이다. 예를 들어, 명령어들(1208)은, 서버 시스템(498)으로 하여금, 본 명세서에 기술된 방법들 중 임의의 하나 이상을 실행하게 할 수 있다. 명령어들(1208)은 프로그래밍되지 않은 일반 서버 시스템(498)을, 기술된 방식으로 설명되고 예시된 기능들을 수행하도록 프로그래밍된 특정 서버 시스템(498)으로 변환한다. 서버 시스템(498)은 독립형 디바이스로서 작동될 수 있거나 다른 머신들에 커플링(예컨대, 네트워킹)될 수 있다. 네트워킹된 배치에서, 서버 시스템(498)은 서버-클라이언트 네트워크 환경에서, 서버 머신이나 클라이언트 머신의 용량으로 동작할 수 있거나, 피어 투 피어(또는 분산) 네트워크 환경에서, 피어 머신(peer machine)으로서 동작할 수 있다. 서버 시스템(498)은 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 셋톱 박스(STB), PDA, 엔터테인먼트 미디어 시스템, 휴대폰, 스마트폰, 모바일 디바이스, 웨어러블 디바이스(예컨대, 스마트 워치), 스마트 홈 디바이스(예컨대, 스마트 기기), 다른 스마트 디바이스들, 웹 기기, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 서버 시스템(498)에 의해 취해질 동작을 지정하는 명령어들(1208)을 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신을 포함할 수 있지만, 이것들로 한정되는 것은 아니다. 추가로, 단일 서버 시스템(498)만이 예시되어 있지만, "서버"라는 용어는 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들(1208)을 개별적으로 또는 공동으로 실행하는 머신의 집합을 포함하는 것으로 간주해야 한다.
[0097] 서버 시스템(498)은 버스(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개 이상의 독립적인 프로세서들(때로는 "코어들"이라고도 지칭됨)을 포함할 수 있는 멀티 코어 프로세서들을 포함하도록 의도된다. 도 5는 다수의 프로세서들(1202)을 도시하지만, 서버 시스템(498)은 단일 코어를 갖는 단일 프로세서, 다수의 코어들을 갖는 단일 프로세서(예컨대, 멀티 코어 프로세서), 단일 코어를 갖는 다수의 프로세서들, 다수 코어들을 갖는 다수의 프로세서들 또는 이들의 임의 조합을 포함할 수 있다.
[0098] 서버 메모리(1204)는 메인 메모리(1212), 정적 메모리(1214) 및 저장 유닛(1216)을 포함하며, 이들 모두 버스(1244)를 통해 프로세서(1202)에 액세스할 수 있다. 메인 서버 메모리(1204), 정적 메모리(1214) 및 저장 유닛(1216)은 본 명세서에 기술된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 명령어들(1208)을 저장한다. 또한, 명령어들(1208)은, 서버 시스템(498)에 의해 이들이 실행되는 동안, 메인 메모리(1212) 내에, 정적 메모리(1214) 내에, 기계 판독 가능 매체(1218)(예컨대, 비일시적 기계 판독 가능 저장 매체) 내에, 저장 유닛(1216) 내에, 프로세서들(1202) 중 적어도 하나 내에(예컨대, 프로세서의 캐시 메모리 내에), 또는 이들의 임의의 적절한 조합 내에 전체적 또는 부분적으로 상주할 수 있다.
[0099] 더욱이, 기계 판독 가능 매체(1218)는 전파 신호(propagating signal)를 구현하지 않는다는 점에서 비일시적(즉, 임의의 일시적인 신호들을 갖지 않음)이다. 그러나, 기계 판독 가능 매체(1218)를 "비일시적(non-transitory)"이라고 라벨링하는 것은 매체가 이동될 수 없다는 의미로 해석되어서는 안되고, 매체는 하나의 물리적 로케이션에서 다른 물리적 로케이션으로 이동될 수 있는 것으로 간주되어야 한다. 추가적으로, 기계 판독 가능 매체(1218)는 유형적(tangible)이기 때문에, 매체는 기계 판독 가능 디바이스일 수 있다.
[0100] I/O 컴포넌트들(1242)은 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 전송하고, 정보를 교환하고, 측정값들을 포착하는 등을 하기 위한 다양한 컴포넌트들을 포함할 수 있다. 특정 머신에 포함된 특정 I/O 컴포넌트들(1242)은 머신의 유형에 따라 다를 것이다. 예를 들어, 휴대폰들과 같은 휴대용 머신들은 터치 입력 디바이스 또는 서로 다른 그와 같은 입력 메커니즘들을 포함할 수 있는 반면, 헤드리스 서버 머신(headless server machine)은 그와 같은 터치 입력 디바이스를 포함하지 않을 가능성이 높다. I/O 컴포넌트들(1242)은 도 5에 도시되지 않은 많은 다른 컴포넌트들을 포함할 수 있음을 이해할 것이다. 다양한 실시예들에서, I/O 컴포넌트들(1242)은 출력 컴포넌트들(1228) 및 입력 컴포넌트들(1230)을 포함할 수 있다. 출력 컴포넌트들(1228)은 시각적 컴포넌트들(예컨대, 플라즈마 디스플레이 패널(PDP), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터 또는 음극선관(CRT)과 같은 디스플레이), 음향 컴포넌트들(예컨대, 스피커들), 촉각 컴포넌트들(예컨대, 진동 모터, 저항 피드백 메커니즘), 다른 신호 발생기 등을 포함할 수 있다. 입력 컴포넌트들(1230)은 영숫자 입력 컴포넌트들(예컨대, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 포토-옵틱 키보드 또는 다른 영숫자 입력 컴포넌트들), 포인팅 기반 입력 컴포넌트들(예컨대, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서 또는 또 다른 포인팅 기구), 촉각 입력 컴포넌트들(예컨대, 물리적 버튼, 로케이션을 제공하는 터치 스크린, 터치들 또는 터치 제스처들의 힘 또는 다른 촉각 입력 컴포넌트들), 오디오 입력 컴포넌트들(예컨대, 마이크) 등을 포함할 수 있다.
[0101] 추가 실시예들에서, I/O 컴포넌트들(1242)은 다양한 다른 컴포넌트들 중에서 생체 인식 컴포넌트들(1232), 모션 컴포넌트들(1234), 환경 컴포넌트들(1236) 또는 포지션 컴포넌트들(1238)을 포함할 수 있다. 예를 들어, 생체 인식 컴포넌트들(1232)은 표현들(예컨대, 손 표현들, 안면 표현들, 음성 표현들, 몸짓 또는 시선 추적)을 검출하고, 생체 신호들(예컨대, 혈압, 심박수, 체온, 땀 또는 뇌파)을 측정하고, 사람 인식(예컨대, 음성 인식, 망막 인식, 안면 인식, 지문 인식 또는 뇌파 기반 인식) 등을 하기 위한 컴포넌트들을 포함한다. 모션 컴포넌트들(1234)은 가속도 센서 컴포넌트들(예컨대, 가속도계), 중력 센서 컴포넌트들, 회전 센서 컴포넌트들(예컨대, 자이로스코프) 등을 포함한다. 환경 컴포넌트들(1236)은, 예를 들어, 조명 센서 컴포넌트들(예컨대, 광도계), 온도 센서 컴포넌트들(예컨대, 주변 온도를 검출하는 하나 이상의 온도계들), 습도 센서 컴포넌트들, 압력 센서 컴포넌트들(예컨대, 기압계), 음향 센서 컴포넌트들(예컨대, 배경 소음을 검출하는 하나 이상의 마이크들), 근접 센서 컴포넌트들(예컨대, 근처 객체들을 검출하는 적외선 센서들), 가스 센서들(예컨대, 안전을 위해 유해 가스들의 농도를 검출하거나 대기 내의 오염 물질들을 측정하기 위한 가스 검출 센서들) 또는 주변 물리적 환경에 대응하는 표시들, 측정값들 또는 신호들을 제공할 수 있는 다른 컴포넌트들을 포함한다. 포지션 컴포넌트들(1238)은 로케이션 센서 컴포넌트들(예컨대, GPS 수신기 컴포넌트), 고도 센서 컴포넌트들(예컨대, 고도가 도출될 수 있는 대기압을 검출하는 고도계들 또는 기압계들), 방위 센서 컴포넌트들(예컨대, 자력계들) 등을 포함한다.
[0102] 통신은 다양한 기술들을 사용하여 구현될 수 있다. I/O 컴포넌트들(1242)은 커플링(1224)을 통해 서버 시스템(498)을 네트워크(495)에 커플링하거나 커플링(1226)을 통해 하나 이상의 원격 디바이스들(1222)에 커플링하도록 동작 가능한 통신 컴포넌트들(1240)을 더 포함한다. 예를 들어, 통신 컴포넌트들(1240)은 네트워크 인터페이스 컴포넌트 또는 네트워크(495)와 인터페이싱하기 위한 또 다른 적절한 디바이스를 포함할 수 있다. 추가 실시예들에서, 통신 컴포넌트들(1240)은 유선 통신 컴포넌트들, 무선 통신 컴포넌트들, 셀룰러 통신 컴포넌트들, NFC(Near-Field Communication) 컴포넌트들, Bluetooth® 컴포넌트들(예컨대, Bluetooth® Low Energy), Wi-Fi® 컴포넌트들 및 다른 양식들을 통해 통신을 제공하기 위한 다른 통신 컴포넌트들을 포함할 수 있다. 디바이스들(1222)은 본 명세서에 기술된 클라이언트 디바이스(401)와 같은 또 다른 머신이거나, 다양한 주변 디바이스들(예컨대, USB를 통해 커플링된 주변 디바이스) 중 임의의 디바이스일 수 있다.
[0103] 더욱이, 통신 컴포넌트들(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)을 통해 도출될 수 있다.
[0104] 다양한 메모리들(예컨대, 서버 메모리(1204), 메인 메모리(1212), 정적 메모리(1214), 프로세서들(1202)의 메모리), 저장 유닛(1216)은 본 명세서에 기술된 방법론들 또는 기능들 중 임의의 하나 이상에 의해 구현되거나 사용되는 명령어들의 하나 이상의 세트들 및 데이터 구조들(예컨대, 소프트웨어)을 저장할 수 있다. 이들 명령어들(예컨대, 명령어들(1208))은, 프로세서(1202)에 의해 실행될 때, 다양한 동작들로 하여금, 개시된 실시예들을 구현하게 한다.
[0105] 명령어들(1208)은 네트워크 인터페이스 디바이스(예컨대, 통신 컴포넌트들(1240)에 포함된 네트워크 인터페이스 컴포넌트들)를 통해 전송 매체, 및 다수의 잘 알려진 전송 프로토콜들(예컨대, HTTP(hypertext transfer protocol)) 중 어느 하나를 사용하여, 네트워크(495)를 거쳐 전송되거나 수신될 수 있다. 유사하게, 명령어들(1208)은 커플링(1226)(예컨대, 피어-투-피어(peer-to-peer) 커플링)을 통해 전송 매체를 사용하여 디바이스들(1222)에 전송되거나 수신될 수 있다.
[0106] 도 4에 예시된 바와 같이, 일부 예시적인 구현예들에서, 서버 시스템(498)의 서버 메모리(1204)는 가상 환경 데이터베이스(450), 헤드셋 데이터베이스(452), 궤적 데이터베이스(454) 및 AR 데이터세트 저장소(456)를 포함하는 하나 이상의 데이터베이스들에 커플링된다. 일부 구현예들에서, 이들 데이터베이스들은, 본 명세서에 기술된 바와 같이, 웨어러블 디바이스(101)(예컨대, 아이웨어 디바이스(100)) 및/또는 클라이언트 디바이스(401)에 의해 액세스 가능하고 때로는 이들에 국부적으로 저장되기도 한다.
[0107] 가상 환경 데이터베이스(450)는 다양한 가상 환경들에 대한 데이터를 저장하며, 이들 중 다수는 가상 환경 마켓플레이스로 알려진 웹사이트를 통해 사용 가능하고 액세스 가능하다. 헤드셋 데이터베이스(452)는 이와 같은 웨어러블 디바이스(101)에 통합되거나 다른 방식으로 제공되는 센서들(즉, 고유 센서들)의 어레이에 대한 데이터와 함께, VR 시스템들과 사용하기에 적합한 상업적으로 이용할 수 있는 다양한 웨어러블 디바이스들(101)에 대한 데이터를 저장한다. 일부 구현예들에서, 헤드셋 데이터베이스(452)는 또한 비고유(non-intrinsic) 또는 추가 센서들, 카메라들, 관성 측정 유닛(IMU)들 및, 선택되는 경우, 이와 같은 웨어러블 디바이스들(101)과 함께 사용될 수 있는 다른 센서들(즉, 외부 센서들)에 대한 개별 데이터 파일들을 포함한다. 궤적 데이터베이스(454)는 AR 시스템들과 사용하기에 적합한 다양한 사전 기록된 궤적들에 대한 데이터를 저장한다.
[0108] 일부 구현예들에서, 지상 실측값 데이터세트 생성 시스템(1000)은 애플리케이션들, 데이터 및 완료될 작업들을 분배하기 위한 다수의 가상 머신(VM)들을 포함한다. 시스템(1000)은 특정 작업들을 완료하기 위해 할당된 다수의 관리된 에이전트들 및 스케줄러들을 생성, 액세스 및 제어할 수 있다. 결과들은 하나 이상의 가상 버킷들 또는 사용자가 액세스할 수 있는 폴더들에 수집 및 저장될 수 있다. 사용자는 이들의 특정 용도에 가장 적합한 출력 형식 유형을 지정할 수 있다. 완료된 AR 데이터세트들은 AR 데이터세트 저장소(456)에 저장된다.
[0109] 서버(498)는 궤적 기록 애플리케이션(460), 다항식 보간 모듈(461), SLAM 애플리케이션(462), 이미지 렌더링 애플리케이션(464), 병렬화 유틸리티(466) 및 롤링 셔터 시뮬레이션 엔진(468)을 포함하는 하나 이상의 애플리케이션들에 커플링된다. 일부 구현예들에서, 이들 애플리케이션들은, 본 명세서에 기술된 바와 같이, 클라이언트 디바이스(401) 또는 웨어러블 디바이스(101)에 의해 액세스 가능하고 때로는 이들에 국부적으로 저장된다.
[0110] 궤적 기록 애플리케이션(460)은, 사용자가, 예를 들어, 제1 기록 디바이스(726)(예컨대, 본 명세서에 기술된 바와 같은 아이웨어 디바이스(100))를 착용하고 물리적 환경을 통해 이동함으로써, 그들 자신의 궤적을 기록할 수 있게 하는 반면, 제1 기록 디바이스(726)는 본 명세서에 기술된 데이터세트 생성 시스템(1000)과 함께 사용하기 위해 궤적 데이터를 생성하는 데 필요한 데이터를 포착한다.
[0111] 일부 구현예들에서, 다항식 보간 모듈(461)은, 본 명세서에 기술된 바와 같이, 궤적 데이터를 보간하기 위해 연속 시간 궤적(CTT: continuous time trajectory) 함수(640)를 생성한다. CTT 함수는 헤드셋 궤적과 제1 기록 디바이스(726)에 의해 포착된 실제 모션 데이터를 근사화하는 단일 곡선을 생성한다.
[0112] SLAM 애플리케이션(462)은 궤적 기록 애플리케이션(460)에 의해 포착된 원본 데이터를 처리한다. 이미지 렌더링 애플리케이션(464)은, 일부 예시적인 구현예들에서, 디스플레이 상에 표현하기 위해 시각적 이미지들을 선택하고 처리한다. 이용 가능한 시각적 이미지들은 일반적으로 가상 환경 데이터베이스(450)에 저장되는 가상 환경 파일의 일부이다. 병렬화 유틸리티(466)는 처리 시간을 감소시키기 위해 병렬로 처리되는 스플릿(split)들이라고 하는 서브세트들로 데이터를 파싱한다. 일부 구현예들에서, 롤링 셔터 시뮬레이션 엔진(468)은 하나 이상의 이미지들을 처리하여, 선택되는 경우, 비디오 이미지들의 시퀀스들에 적용되는 롤링 셔터 효과를 시뮬레이팅한다.
[0113] 도 5는 예시적인 클라이언트 디바이스(401)의 하이레벨 기능 블록도이다. 클라이언트 디바이스(401)는 본 명세서에 기술된 기능들의 전체 또는 서브세트를 수행하기 위해 CPU(530)에 의해 실행될 프로그래밍을 저장하는 플래시 메모리(540A)를 포함한다. 일부 구현예들에서, 클라이언트 디바이스(401)는 스마트폰과 같은 모바일 디바이스이다.
[0114] 클라이언트 디바이스(401)는 적어도 2개의 가시광 카메라들(중첩 시야를 갖는 제1 및 제2 가시광 카메라들)이나, 실질적으로 중첩 시야를 갖는 적어도 하나의 가시광 카메라 및 깊이 센서로 구성되는 카메라(570)를 포함할 수 있다. 플래시 메모리(540A)는 카메라(570)에 의해 포착된 것과 같은 저장된 이미지들 및 비디오를 더 포함할 수 있다.
[0115] 도시된 바와 같이, 클라이언트 디바이스(401)는 이미지 디스플레이(580), 그 이미지 디스플레이(580)를 제어하는 모바일 디스플레이 드라이버(582) 및 디스플레이 컨트롤러(584)를 포함한다. 도 5의 실시예에서, 이미지 디스플레이(580)는 그 이미지 디스플레이(580)에 의해 사용되는 화면의 상부에 적층되거나 다른 방식으로 화면에 통합되는 사용자 입력층(591)(예컨대, 터치스크린)을 포함한다.
[0116] 임의 유형의 클라이언트 디바이스(401)는 터치스크린을 포함할 수 있다. 터치스크린형 디바이스들의 구조 및 동작은 실시예로서 제공되고, 본 명세서에 기술된 바와 같은 주제 기술은 이것으로 한정되는 것을 의도하지 않는다. 따라서, 이 논의의 목적들을 위해, 도 5는 (터치, 다중 터치 또는 제스처 등에 의하거나, 손, 스타일러스 또는 다른 도구에 의한) 입력을 수신하기 위한 터치스크린 입력층(891), 및 콘텐츠를 표시하기 위한 이미지 디스플레이(580)를 포함하는 사용자 인터페이스를 갖는 예시적인 클라이언트 디바이스(401)의 블록도 예시를 제공한다.
[0117] 도 5에 도시된 바와 같이, 클라이언트 디바이스(401)는, 광역 무선 이동 통신 네트워크를 통한 디지털 무선 통신을 위해, WWAN XCVR들로 도시된 적어도 하나의 디지털 트랜시버(XCVR)(510)를 포함한다. 클라이언트 디바이스(401)는 또한 NFC, VLC, DECT, ZigBee, Bluetooth™ 또는 Wi-Fi를 통한 것과 같은 단거리 네트워크 통신을 위한 단거리 트랜시버(XCVR)들(520)과 같은 추가적인 디지털 또는 아날로그 트랜시버들을 포함한다. 예를 들어, 단거리 XCVR들(520)은 IEEE 802.11에 따른 Wi-Fi 표준 중 하나와 같은 무선 근거리 네트워크들에서 구현되는 하나 이상의 표준 통신 프로토콜들과 호환되는 유형의 임의의 이용 가능한 양방향 WLAN(wireless local area network) 트랜시버의 형태를 취할 수 있다.
[0118] 클라이언트 디바이스(401)의 포지셔닝을 위한 로케이션 좌표들을 생성하기 위해, 클라이언트 디바이스(401)는 GPS(global positioning system) 수신기를 포함할 수 있다. 대안적으로 또는 추가적으로, 클라이언트 디바이스(401)는 포지셔닝을 위한 로케이션 좌표들을 생성하기 위해 단거리 XCVR들(520) 및 WWAN XCVR들(510) 중 하나 또는 모두를 활용할 수 있다. 예를 들어, 셀룰러 네트워크, Wi-Fi 또는 Bluetooth™ 기반 포지셔닝 시스템들은, 특히 조합하여 사용될 때, 매우 정확한 로케이션 좌표들을 생성할 수 있다. 이와 같은 로케이션 좌표들은 XCVR들(510, 520)을 통해 하나 이상의 네트워크 연결들을 거쳐 아이웨어 디바이스(100)로 전송될 수 있다.
[0119] 일부 실시예들에서, 클라이언트 디바이스(401)는 클라이언트 디바이스(401)의 포지션, 방위 및 모션을 감지하기 위한 관성 측정 유닛(IMU)(572)이라고 지칭되는 모션 감지 컴포넌트들의 집합을 포함한다. 모션 감지 컴포넌트들은 미세한 이동 파트들을 가진 MEMS(Micro-Electro-Mechanical System)일 수 있으며, 종종 마이크로칩의 일부로 될 정도로 작다. 일부 예시적인 구성들에서, 관성 측정 유닛(IMU)(572)은 가속도계, 자이로스코프 및 자력계를 포함한다. 가속도계는 3개의 직교축들(x, y, z)에 대한 클라이언트 디바이스(401)의 선형 가속도(중력으로 인한 가속도를 포함함)를 감지한다. 자이로스코프는 3개의 회전축들(피치, 롤, 요)에 대한 클라이언트 디바이스(401)의 각속도를 감지한다. 가속도계와 자이로스코프는 함께 6개의 축들(x, y, z, 피치, 롤, 요)에 관한 디바이스에 대한 포지션, 방위 및 모션 데이터를 제공할 수 있다. 자력계는, 존재하는 경우, 자북(magnetic north)에 대한 클라이언트 디바이스(401)의 진로(heading)를 감지한다.
[0120] IMU(572)는 컴포넌트들로부터 원본 데이터를 수집하고 클라이언트 디바이스(401)의 포지션, 방위 및 모션에 대한 다수의 유용한 값을 계산하는 디지털 모션 프로세서 또는 프로그래밍을 포함하거나 이와 협력할 수 있다. 예를 들어, 가속도계에서 수집된 가속도 데이터는 각 축(x, y, z)에 상대적인 속도를 얻기 위해 통합될 수 있으며, 클라이언트 디바이스(401)의 포지션(선형 좌표들, x, y 및 z에서)을 얻기 위해 다시 통합될 수 있다. 자이로스코프로부터의 각속도 데이터는 클라이언트 디바이스(401)의 포지션(구면 좌표들에서)을 얻기 위해 통합될 수 있다. 이들 유용한 값들을 계산하기 위한 프로그래밍은 하나 이상의 메모리 요소들(540A, 540B, 540C)에 저장되고 클라이언트 디바이스(401)의 CPU(540)에 의해 실행될 수 있다.
[0121] 트랜시버들(510, 520)(즉, 네트워크 통신 인터페이스)은 현대 모바일 네트워크들에서 활용되는 다양한 디지털 무선 통신 표준들 중 하나 이상을 준수한다. WWAN 트랜시버(510)의 실시예들은 CDMA(Code Division Multiple Access) 및 3GPP(3rd Generation Partnership Project) 네트워크 기술들에 따라 작동되도록 구성된 트랜시버들을 포함하며(이것들로 한정되는 것은 아님), 예를 들어, 제한 없이, 때때로 "4G"로 지칭되는 3GPP 타입 2(또는 3GPP2) 및 LTE를 포함한다. 예를 들어, 트랜시버들(510, 520)은 디지털화된 오디오 신호들, 정지 이미지 및 비디오 신호들, 디스플레이용 웹 페이지 정보 및 웹 관련 입력들, 및 클라이언트 디바이스(401)와의 다양한 유형의 메시지 통신들을 포함하는 정보의 양방향 무선 통신을 제공한다.
[0122] 클라이언트 디바이스(401)는 중앙 처리 유닛(CPU)으로서 기능하는 마이크로프로세서를 더 포함하고, 도 4에서 CPU(530)로 도시된다. 프로세서는 하나 이상의 처리 기능들, 일반적으로 다양한 데이터 처리 기능들을 수행하도록 구조화되고 배열된 요소들을 갖는 회로이다. 이산 논리 컴포넌트들이 사용될 수 있지만, 실시예들은 프로그래밍 가능한 CPU를 형성하는 컴포넌트들을 활용한다. 예를 들어, 마이크로프로세서는 CPU의 기능들을 수행하기 위해 전자 소자들을 통합하는 하나 이상의 집적 회로(IC) 칩들을 포함한다. 예를 들어, CPU(530)는 오늘날 모바일 디바이스들 및 다른 휴대용 전자 디바이스들에서 일반적으로 사용되는 ARM 아키텍처를 사용하는 RISC(Reduced Instruction Set Computing)와 같은 임의의 알려지거나 이용 가능한 마이크로프로세서 아키텍처에 기반할 수 있다. 물론, 프로세서 회로의 다른 배열체들이 스마트폰, 랩톱 컴퓨터 및 태블릿 내에 CPU(530) 또는 프로세서 하드웨어를 형성하는데 사용될 수 있다.
[0123] CPU(530)는, 예를 들어, CPU(530)에 의해 실행 가능한 명령어들 또는 프로그래밍에 따라 다양한 동작들을 수행하도록 클라이언트 디바이스(401)를 구성함으로써, 클라이언트 디바이스(401)를 위한 프로그래밍 가능한 호스트 컨트롤러로서의 역할을 한다. 예를 들어, 이와 같은 동작들에는 클라이언트 디바이스의 다양한 일반적인 동작들뿐만 아니라, 디바이스의 애플리케이션들에 대한 프로그래밍과 관련된 동작들이 포함될 수 있다. 프로세서가 하드와이어드 로직(hardwired logic)을 사용하여 구성될 수 있지만, 클라이언트 디바이스들의 일반적인 프로세서들은 프로그래밍의 실행에 의해 구성되는 일반적인 처리 회로들이다.
[0124] 클라이언트 디바이스(401)는 프로그래밍 및 데이터를 저장하기 위한 메모리 또는 저장 시스템을 포함한다. 본 실시예에서, 메모리 시스템은 필요에 따라 플래시 메모리(540A), RAM(random-access memory)(540B) 및 다른 메모리 컴포넌트들(540C)을 포함할 수 있다. RAM(540B)은 CPU(530)에 의해 처리되는 명령어들 및 데이터를 위한 단기 저장소, 예컨대, 작업 데이터 처리 메모리로서의 역할을 한다. 플래시 메모리(540A)는 일반적으로 장기 저장소를 제공한다.
[0125] 따라서, 클라이언트 디바이스(401)의 실시예에서, 플래시 메모리(540A)는 CPU(530)에 의해 실행하기 위한 프로그래밍 또는 명령어들을 저장하는데 사용된다. 디바이스의 유형에 따라, 클라이언트 디바이스(401)는 특정 애플리케이션들이 실행되는 모바일 운영 체제를 구동할 수 있다. 모바일 운영 체제들의 예들로는 Google Android, Apple iOS(iPhone 또는 iPad 디바이스들용), Windows Mobile, Amazon Fire OS, RIM BlackBerry OS 등이 포함된다.
[0126] 아이웨어 디바이스(100) 내의 프로세서(432)는 아이웨어 디바이스(100)를 둘러싼 환경의 맵을 구성하고, 매핑된 환경 내에서 아이웨어 디바이스의 로케이션을 결정하고, 매핑된 환경 내에서 하나 이상의 객체들에 대한 아이웨어 디바이스의 상대적 포지션을 결정할 수 있다. 프로세서(432)는 하나 이상의 센서들로부터 수신된 데이터에 적용된 SLAM(simultaneous localization and mapping) 알고리즘을 사용하여 맵을 구성하고 로케이션 및 포지션 정보를 결정할 수 있다. VR 및 AR 시스템들의 맥락에서, SLAM 알고리즘은 환경의 맵을 구성하고 업데이팅하는 동시에, 매핑된 환경 내에서 디바이스(또는 사용자)의 로케이션을 추적하고 업데이팅하는 데 사용된다. 수학적 솔루션은 입자 필터들, 칼만 필터들, 확장된 칼만 필터들 및 공분산 교차와 같은 다양한 통계 방법들을 사용하여 근사화될 수 있다.
[0127] 센서 데이터는 카메라들(114A, 114B) 중 하나 또는 둘 모두로부터 수신된 이미지들, 레이저 거리 측정기(laser range finder)로부터 수신된 거리(들), GPS 유닛(473)으로부터 수신된 포지션 정보, 또는 이와 같은 센서 데이터 중 둘 이상의 조합, 또는 포지션 정보를 결정하는 데 유용한 데이터를 제공하는 다른 센서들로부터 수신된 센서 데이터를 포함한다.
[0128] 도 6은, 본 명세서에 기술된 바와 같이, SLAM 애플리케이션(462) 및 다른 추적 애플리케이션들(예컨대, NFT(natural feature tracking))을 사용할 때 유용한 요소들과 함께 예시적인 물리적 환경(600)을 묘사한다. 본 명세서에 기술된 아이웨어 디바이스(100)와 같은 웨어러블 디바이스(101)의 사용자(602)는 예시적인 물리적 환경(600)(도 6에서는 실내임) 내에 존재한다. 아이웨어 디바이스(100)의 프로세서(432)는 포착된 이미지들을 사용하여 환경(600) 내에 하나 이상의 객체들(604)에 대한 자신의 포지션을 결정하고, 환경(600)에 대한 좌표계(x, y, z)를 사용하여 환경(600)의 맵을 구성하며, 좌표계 내에서 자신의 포지션을 결정한다. 추가적으로, 프로세서(432)는 단일 객체(604a)와 연관된 2개 이상의 로케이션 지점들(예컨대, 3개의 로케이션 지점들(606a, 606b, 606c)) 또는 2개 이상의 객체들(604a, 604b, 604c)과 연관된 하나 이상의 로케이션 지점들(606)을 사용하여 환경 내에서 아이웨어 디바이스(100)의 헤드 포즈(head pose)(롤, 피치 및 요)를 결정한다. 아이웨어 디바이스(100)의 프로세서(432)는, 증강 현실(AR) 경험 동안, 보기 위해 가상 객체(도 6에 도시된 열쇠(608) 등)를 물리적 환경(600) 내에 포지셔닝 및 디스플레이할 수 있다. 유사하게, 아이웨어 디바이스(100)의 프로세서(432)는, 몰입형 VR 경험 동안, 보기 위해 사용자에게 상대적인 가상 환경에 가상 객체를 포지셔닝 및 디스플레이할 수 있다.
[0129] 도 7은 본 명세서에 기술된 지상 실측값 데이터세트 생성 시스템(1000)과 함께 사용하기에 적합한 다수의 선택 가능한 컴포넌트들을 포함하는 예시적인 사용자 인터페이스(700)의 개략적인 예시이다. 일부 구현예들에서, 사용자 인터페이스(700)는 서버(498)에 액세싱하는 사용자의 클라이언트 디바이스(401)의 디스플레이(580) 상에 표시된다. 이러한 양태에서, 시스템(1000)은 SaaS 모델을 사용하여 액세싱 및 전달될 수 있다. 도시된 바와 같이, 사용자 인터페이스(700)는 환경 컴포넌트(710), 센서 컴포넌트(720), 궤적 컴포넌트(730), 오프셋 컴포넌트(740), 환경설정들 컴포넌트(750) 및 제출 컴포넌트(790)를 포함한다.
[0130] 본 명세서에 기술된 지상 실측값 데이터세트 생성 시스템(1000)의 경우, 가상 환경, 헤드셋, 센서 구성 및 궤적의 선택은 다른 선택들과 독립적이다. 즉, 선택들은 영구적이고, 하나의 선택을 변경하여도 다른 선택들은 변경되지 않을 것이다. 선택들의 임의 조합은 처리를 위해 제출될 수 있다. 이러한 양태에서, 선택들의 조합에 따라 설정된 지상 실측값 데이터세트는 임의의 특정 선택으로부터 디커플링된다. 본 명세서에서 사용되는 바와 같은 선택이라는 용어는 승인된 사용자와 같은 사람에 의하거나, 또는 선택을 실행하도록 구성된 설명된 시스템의 임의의 요소에 의해 수행될 수 있는 선택, 구성, 인식, 어셈블링 등의 처리를 지칭하고 포함한다. 따라서, 예시적인 처리를 설명하기 위해 선택이라는 용어를 사용하는 것은 사람에 의한 행동을 포함하거나 포함하지 않을 수 있다.
[0131] 도 7a는 본 명세서에 기술된 가상 환경 데이터베이스(450)에 저장된 가상 환경들의 리스트(711)로부터 사용자가 가상 환경(715)을 선택할 수 있는 인터페이스를 제공하는 예시적인 환경 컴포넌트(710)의 예시이다. 리스트(711)는 일반적으로 메뉴 인터페이스들과 함께 제공되는 슬라이더 및 다른 관련 피처들을 포함하는, 도시된 바와 같은 드롭다운 메뉴로 표현될 수 있다. 일부 예시적인 구현예들에서, 환경 컴포넌트(710)는 선택된 가상 환경(715)으로부터의 대표적인 장면을 포함하는 샘플 이미지(712)를 표시한다.
[0132] 본 개시내용의 맥락에서, 컴포넌트(예컨대, 가상 환경, 헤드셋, 센서, 센서 구성, 궤적)를 선택하는 것은 선택된 컴포넌트와 연관된 하나 이상의 파일들, 레코드들, 데이터 저장소들, 애플리케이션들, 서브루틴들 또는 다른 요소들을 선택하는 것을 포함하는 것을 의미한다.
[0133] 도 7b는 사용자가 메뉴(721)로부터 하나 이상의 센서 컴포넌트들을 선택할 수 있는 인터페이스를 제공하는 사용자 인터페이스(700)의 예시적인 센서 컴포넌트(720)의 예시이다. 일부 구현예들에서, 메뉴(721)는, 본 명세서에 기술된 바와 같이, 헤드셋 데이터베이스(452)에 저장되고, 이용 가능한 헤드셋들 및 센서 컴포넌트들의 리스트를 포함한다. 메뉴(721)는, 도시된 바와 같이, 드롭다운 메뉴로 표현될 수 있고, 일반적으로 메뉴 인터페이스와 함께 제공되는 슬라이더 및 다른 관련 피처들을 포함할 수 있다.
[0134] 일부 구현예들에서, 메뉴(721)는 사전 결정된 센서 컴포넌트들의 세트를 포함하는 하나 이상의 사용 가능한 헤드셋들 또는 헤드셋 구성들(예컨대, 도시된 바와 같은 Alpha, Beta, Gamma)의 리스트를 포함한다. 예를 들어, Beta를 선택하면, Beta 헤드셋 구성과 연관된 센서 컴포넌트들의 전부 또는 대부분이 포함된다. 본 명세서에 기술된 웨어러블 디바이스(101)는 사용 가능한 헤드셋들의 메뉴(721)에 리스팅될 수 있다.
[0135] 도시된 바와 같이, 메뉴(721)는 또한 임의의 헤드셋과는 별도로, 개별적으로 선택될 수 있는 하나 이상의 개별 센서 컴포넌트들 또는 센서 컴포넌트들의 세트들(예컨대, Alpha Global Shutter, Beta RGB + Depth, Gamma design option 2)의 리스트를 포함한다. 예를 들어, Alpha Global Shutter를 선택하면, Alpha 헤드셋과 연관된 다른 센서 컴포넌트들은 포함되지 않는다.
[0136] 일부 구현예들에서, 센서 컴포넌트(720)는, 도시된 바와 같이, 업로드 유틸리티(722)를 포함하며, 이를 통해 사용자는 특정 배열에서 하나 이상의 센서 컴포넌트들 또는 센서 컴포넌트들의 세트들에 대한 데이터를 포함하는 파일을 업로드할 수 있다. 파일에는 JSON 포맷으로 이용될 수 있는 보정 파일이 포함될 수 있다. 파일은 기존 헤드셋 파일의 신규 버전 또는 개발 중인 헤드셋의 가상 버전을 나타낼 수 있다.
[0137] 일부 구현예들에서, 센서 컴포넌트(720)는, 도시된 바와 같이, 선택 창에 후보 센서 컴포넌트(725)를 표시한다. 컴포넌트들이 선택됨에 따라, 센서 컴포넌트(720)는 선택된 센서 요소들(765)을 함께 적층하여, 본 명세서에 기술된 바와 같이, 시뮬레이팅된 센서 구성(760)을 어셈블링한다. 센서 컴포넌트(720)는 선택된 센서 요소들(765)을, 도시된 바와 같이, 그래픽 센서 어레이 모델(760-M)의 형태로 디스플레이 상에 함께 나타낸다.
[0138] 특정의 시뮬레이팅된 센서 구성(760)에 대한 선택된 센서 요소들(765)은 본 명세서에 기술된 카메라 시스템들 및 배열체들과 같은 하나 이상의 시뮬레이팅된 카메라들을 포함할 수 있고, 본 명세서에 기술된 관성 측정 유닛(IMU)들과 같은 하나 이상의 시뮬레이팅된 모션 센서들을 더 포함할 수 있다.
[0139] 시뮬레이팅된 센서 구성(760)은 가상적이거나, 개발 중이거나, 그렇지 않으면 상업적으로 이용 가능한 VR 헤드셋과 같이 단일 제품에 함께 이용할 수 없는 특정 배열체에 하나 이상의 센서 요소를 포함할 수 있기 때문에 "시뮬레이팅된"으로 기술된다. 이러한 양태에서, 센서 컴포넌트(720)는 물리적 센서 컴포넌트들로 물리적 프로토타입 헤드셋을 반드시 구축하지 않고도 연구, 개발, 테스트, 제품 시험 및 유사한 노력에 사용하기 위한 시뮬레이팅된 센서 구성(760)의 어셈블링을 용이하게 한다.
[0140] 다시 도 7b를 참조하면, 센서 어레이 모델(760-M)은 대표적인 그래픽 배열체에 함께 디스플레이된, 선택된 센서 요소들(765)을 포함한다. 일부 구현예들에서, 센서 어레이 모델(760-M)은, 흐름도(1300)(도 13)에 기술된 바와 같이, 하나 이상의 센서 요소들(765)의 선택을 가능하게 하는 대화형이다. 도 7b에 도시된 커서(761)와 같은 선택 요소는 특정 센서 요소(765)를 선택하는데 사용될 수 있다. 이에 응답하여, 센서 컴포넌트(720)는 선택된 센서 요소(765)에 대한 디스플레이 정보를 메뉴 프레임(763)에 나타낸다. 도시된 바와 같이, 정보는 센서명(766) 및 하나 이상의 파라미터들(767)의 리스트를 포함한다. 또한, 커서(761)는 가상 앵커(762)로서의 역할을 하는 모델(760) 부근의 포인트를 선택하는데 사용될 수 있다. 커서(761)를 핸들로 사용하면, 센서 어레이 모델(760)은 디스플레이 상에서 회전될 수 있다.
[0141] 도 13은 센서 어레이 모델(760-M)을 표시하는 방법을 묘사하는 흐름도(1300)이다. 도시되고 기술된 단계들 중 하나 이상은 도시되고 기술된 순서가 아닌 순서로, 또는 추가적인 단계들과 함께 동시에, 연속적으로 수행될 수 있다. 일부 단계들은 생략되거나, 일부 애플리케이션들에서 반복될 수 있다.
[0142] 블록 1302에서, 센서 컴포넌트(720)는 디스플레이 상에 센서 어레이 모델(760-M)을 나타낸다. 일부 구현예들에서, 센서 어레이 모델(760-M)은, 선택된 센서 요소들(765)이 구성 및 배열됨에 따라, 이들을 치수적으로 대표하는 방식으로 나타낸다. 예를 들어, 도 7b에 도시된 센서 어레이 모델(760-M)은 상위 쌍 및 하위 쌍으로 배열된 4개의 선택된 센서 요소들(765)을 도시하는 3차원 와이어프레임 모델(wireframe model)이다. 센서 어레이 모델(760-M)은 시뮬레이팅된 센서 구성(760)의 일부로 되도록 선택된, 해당 선택된 센서 요소들(765)의 상대적인 포지션들에 대략적으로 대응한다.
[0143] 블록 1304에서, 커서(761)는 센서 어레이 모델(760-M) 근처의 포인트를 선택할 수 있고, 이에 응답하여, 센서 컴포넌트(720)는, 도 7b에 도시된 바와 같이, 과도 앵커(762)를 표시한다.
[0144] 블록 1306에서, 센서 컴포넌트(720)는 커서(761)를 핸들로 사용하여 과도 앵커(762)의 움직임에 응답하여 센서 어레이 모델(760-M)을 회전시킨다. 이러한 양태에서, 센서 어레이 모델(760-M)을 회전시키는 것은 하나 이상의 선택 가능한 센서들(765) 및 이들의 상대적인 포지션들을 쉽게 볼 수 있게 한다.
[0145] 블록 1308에서, 커서(761)는 센서 어레이 모델(760-M)에 예시된 특정 센서를 선택할 수 있고, 이와 같은 선택에 응답하여 센서 컴포넌트(720)는 선택된 센서 요소(765)를 강조 표시한다.
[0146] 블록 1310에서, 센서 컴포넌트(720)는 선택된 센서 요소(765)에 대한 디스플레이 정보를 메뉴 프레임(763)에 나타낸다. 이 정보는, 도 7b에 도시된 바와 같이, 하나 이상의 파라미터들(767)의 리스트와 함께 센서명(766)을 포함한다.
[0147] 도 7c는, 본 명세서에 기술된 바와 같이, 사용자가 궤적 데이터베이스(454)에서 이용 가능한 궤적들의 집합(731)으로부터 궤적(735)을 선택할 수 있는 인터페이스를 제공하는 예시적인 궤적 컴포넌트(730)의 예시이다. 일부 구현예들에서, 궤적 컴포넌트(730)는 사용자가 ZIP 파일로 사용할 수 있는 대체 궤적 파일을 업로딩할 수 있는 궤적 업로드 옵션(723)을 디스플레이 상에 나타낸다. 예를 들어, 사용자는, 본 명세서에 기술된 바와 같이, 기본 참조 세트(610)를 기록하고 이를 메모리 및/또는 궤적 데이터베이스(454)에 저장할 수 있다. 업로드 옵션(732)은 기록된 기본 참조 세트(610)를 검색하는 데 사용될 수 있다.
[0148] 사전 정의된 궤적(735)은 일반적으로, 예를 들어, 정의된 코스를 따라 각각의 포지션에서의 포지션들, 방위들, 움직임들(예컨대, 각각의 포즈에 대한 관성 포즈 벡터들)을 포함하여, 정의된 코스를 따르는 완전한 데이터를 포함한다. 사전 정의된 궤적(735)의 경우, SLAM 애플리케이션은 일반적으로 헤드셋 궤적을 생성하기 위해, 본 명세서에 기술된 바와 같이, 카메라 이미지들 또는 IMU 데이터로부터 데이터를 추출할 필요가 없다.
[0149] 도 7d는 예시적인 오프셋 컴포넌트(740), 예시적인 환경설정들 컴포넌트(750) 및 예시적인 제출 컴포넌트(790)의 예시이다. 일부 구현예들에서, 오프셋 컴포넌트(740)는 사용자가 병진 좌표들(741), 회전 좌표들(742) 또는 이들의 조합을 포함하는 초기 오프셋을 입력할 수 있는 인터페이스를 제공한다.
[0150] 출력 데이터세트(990)를 생성할 때, 선택된 궤적 파일(또는 기록된 기본 참조 세트(610))과 연관된 시작점은 초기 오프셋 좌표들(741, 742)에 따라 조정될 것이다. 예를 들어, 궤적 또는 경로는 원점(0, 0, 0) 및 회전 좌표들에 상대적인 레벨 방위로 시작할 수 있다. 초기 오프셋 좌표들(741, 742)은 오프셋 병진 좌표들(741)(x, y, z) 및 오프셋 회전 좌표들(742)(롤, 피치, 요)에 따라 처리가 시작되도록 시작점을 조정한다.
[0151] 일부 구현예들에서, 환경설정들 컴포넌트(750)는 사용자가, 도시된 바와 같이, 각각이 선택기와 슬라이더로 구성된 모션 블러 설정(751) 및 시간 오프셋 설정(752)을 입력할 수 있는 인터페이스를 제공한다. 이들 설정들(751, 752)은, 하나 이상의 이미지들이 설정들(751, 752)에 따라 렌더링되도록, 시스템(1000)이 지상 실측값 데이터세트를 생성할 때 적용된다. 모션 블러 설정(751)은 마이크로초(예컨대, 도시된 바와 같이, 50마이크로초)로 표현될 수 있고, 이미지 렌더링 동안, 이미지의 일부의 시뮬레이팅된 노광 시간을 조정하기 위해 적용될 수 있다. 시간 오프셋 설정(752)은 마이크로초(예컨대, 도시된 바와 같이, 음의 12마이크로초)로 표현될 수 있고, 이미지 렌더링 동안 적용될 카메라들 사이의 시간 오프셋을 나타낸다.
[0152] 일부 구현예들에서, 환경설정들 컴포넌트(750)는, 예를 들어, 날씨 조건들, 렌즈 효과들(예컨대, 플레어, 비네팅), 외부 조명 조건들(예컨대, 태양 방향, 강도, 움직임들), 실내 조명 조건들(예컨대, 램프들 및 비품들), 캐릭터 애니메이션들, 안면 랜드마크들(facial landmarks) 및 출력 포맷(예컨대, ZIP, 원본 데이터, VIO 지원(VIO-ready))을 포함하는 다양한 다른 환경 설정들을 사용자가 입력할 수 있는 인터페이스를 제공한다.
[0153] 일부 구현예들에서, 제출 컴포넌트(790)는, 도시된 바와 같이, 간단한 버튼을 포함한다. 제출을 누르면, 선택들, 업로드들 또는 이들의 조합에 기초하여, 작업이, 본 명세서에 기술된 바와 같이, 지상 실측값 데이터세트를 생성하는 처리로 전송된다.
[0154] 도 14는 지상 실측값 출력 데이터세트(990)를 생성하는 예시적인 방법의 단계들을 묘사하는 흐름도(1400)이다. 당업자는 도시되고 기술된 단계들 중 하나 이상이 동시에, 연속적으로, 도시되고 기술되는 것 이외의 순서로, 또는 추가적인 단계들과 함께 수행될 수 있다는 것을 이해할 것이다. 일부 구현예들에서, 일부 단계들은 생략되거나 반복될 수 있다. 예를 들어, 흐름도(1400)에 기술된 처리들은, 본 명세서에 기술된 바와 같이, 출력 데이터세트(990)를 생성하고, 본 명세서에 기술된 바와 같이, 복수의 추가적인 또는 예시적인 출력 데이터세트들을 생성하기 위해 실행될 수 있다.
[0155] 블록 1402는 하나 이상의 카메라들(620) 및 하나 이상의 관성 측정 유닛(IMU) 센서들(672)에 커플링되는 제1 기록 디바이스(726)를 구성하는 예시적인 단계를 기술한다. 예를 들어, 본 명세서에 기술된 아이웨어 디바이스(100)는 제1 기록 디바이스(726)로서 동작할 수 있다. 다른 예들에서, 제1 기록 디바이스(726)는 휴대폰, 태블릿, VR 헤드셋, 또는 적어도 하나의 카메라(620) 및 IMU(672)를 포함하는 다른 휴대용 디바이스이다. 카메라(620)는 본 명세서에 기술된 것과 유사한 카메라들을 포함하는 다양한 카메라 시스템들 중 임의의 카메라 시스템을 포함할 수 있다. IMU 센서(672)는 본 명세서에 기술된 관성 측정 유닛(IMU)들(472, 572)과 유사한 센서를 포함하는 다양한 모션 센서들 중 임의의 센서를 포함할 수 있다. 일부 구현예들에서, 제1 기록 디바이스(726)는 물리적 환경(600)을 통해 이동하는 동안 사용자에 의해 착용된다.
[0156] 도 14의 블록 1404는 제1 기록 디바이스(726)를 사용하여 기본 참조 세트(610)를 기록하는 예시적인 단계를 기술한다. 일부 구현예들에서, 기본 참조 세트(610)는, 물리적 환경(600)을 통과하는 실제 경로(612)를 가로지르기 때문에, 모션에서 제1 기록 디바이스(726)에 의해 포착된다. 기본 참조 세트(610)에는, (a) 카메라(620)에 의해 포착된 일련의 실제 이미지들(912) 및 (b) IMU(672)에 의해 포착된 일련의 실제 모션 데이터(673)가 포함된다. 일부 구현예들에서, 제1 기록 디바이스(726)는 기록 처리를 용이하게 하기 위해 궤적 기록 애플리케이션(460)을 포함하거나 이에 커플링된다.
[0157] 일부 구현예들에서, 일련의 실제 이미지들(912)은 하나 이상의 고해상도 디지털 비디오 카메라들에 의해 포착되어, 이미지 샘플 레이트(624)(예컨대, 초당 30~60프레임 이상)로 이미지를 포착한다. 포착된 실제 이미지들(912)은 사진 값(photographic value)들뿐만 아니라, 이미지의 일부로 저장되는 다양한 데이터(예컨대, 깊이 데이터)를 포함한다. 예를 들어, 깊이 데이터가 있는 이미지는 3차원 매트릭스로 저장된다. 행렬의 각 정점에는 색 속성(예컨대, 각 픽셀에 대한), 포지션 속성(X, Y, Z 좌표들), 텍스처, 반사율 및 다른 속성들 또는 이들의 조합들이 포함된다. 포지션 속성들은 SLAM 애플리케이션(462)이 일련의 이미지들에 걸친 카메라의 상대적인 모션뿐만 아니라, 각 이미지와 연관된 카메라 로케이션 및 카메라 방위(즉, 카메라 포즈)와 같은, 각각의 디지털 이미지로부터의 값들을 결정하거나 추출하는 기능을 용이하게 한다.
[0158] 일부 구현예들에서, 일련의 실제 모션 데이터(673)는 관성 샘플 레이트(674)(예컨대, 초당 100개의 관성 샘플들(Hz), 1,000Hz 이상)로 IMU(672)에 포착된다. IMU(672)는 제1 기록 디바이스(726)를 착용한 사용자의 모션을 정교하게 포착한다. 환경을 통한 사용자의 모션에는 다양한 지형 위를 걷는 것과 같은 의도적이고 거시적인 움직임들뿐만 아니라, 머리 포지션의 미세한 변화들, 비자발적인 신체 움직임들, 및 호흡에 의해 발생하는 진동들과 같은 거의 인지할 수 없는 움직임들과 같은 미세한 움직임들도 포함된다.
[0159] 기록하는 동안, 일부 구현예들에서, 일련의 실제 이미지들(912)의 일부는 그것들이, 도 8c에 도시된 바와 같이, 실시간 포착되고 있는 동안, 디스플레이 상에 표시될 수 있다. 참고로, 도 8a는, 기록하는 동안, 제1 기록 디바이스(726)를 착용하거나 휴대하는 사용자의 시각으로부터 실제 물리적 환경(600)(예컨대, 사무실, 야외 공간)의 예시적인 뷰(801)를 예시한다. 도 8b는, 사용자가 그것을 볼 수 있었던 것처럼, 동일한 관점에서 예시적인 가상 환경(802)을 예시한다. 도 8c는 가상 환경(802)의 일부(803)가 물리적 환경(600)에 상대적인 오버레이로 제시되는 예시적인 합성 뷰(800)를 예시한다. 합성 뷰(800)는 사용자가 물리적 환경(600)을 통해 의도된 경로를 따라 안전하게 이동할 수 있게 하면서 가상 환경(802)의 프리뷰를 제공한다.
[0160] 일부 구현예들에서, 사전 정의된 궤적 파일(735)은 기본 참조 세트(610)를 기록하는 처리를 실행하는 대신, 도 7c에 도시된 예시적인 궤적 컴포넌트(730)를 사용하여 선택될 수 있다.
[0161] 도 14의 블록 1406은 기록된 기본 참조 세트(610)에 기초하여 헤드셋 궤적(910)을 계산하는 예시적인 단계를 기술한다. 계산된 헤드셋 궤적(910)에는 카메라 포즈들(630)의 시퀀스가 포함된다. 일부 구현예들에서, 헤드셋 궤적(910)은 일련의 실제 이미지들(912)로부터 값들을 결정하거나 추출하고, 각각의 실제 이미지(912)와 연관된 카메라 로케이션 및 카메라 방위를 모두 포함하는 일련의 카메라 포즈들(630)을 생성하기 위해, 본 명세서에 기술된 바와 같이, SLAM 애플리케이션(462)을 사용하여 계산된다. 이러한 양태에서, 카메라 포즈들(630)은 시간에 따른 일련의 이미지들(912)에 대한 카메라의 상대적인 모션을 나타낸다.
[0162] 도 16은 헤드셋 궤적(910) 및 카메라 포즈들(630)을 계산하는 데 사용되는 일련의 실제 이미지들(912) 및 일련의 실제 모션 데이터(673)를 포함하는 개략적인 예시이다. 위쪽 그래프에 도시된 바와 같이, 더 작은 데이터 포인트들(673C)은 시간에 따른 실제 모션 데이터(673)를 나타낸다. 더 큰 데이터 포인트들(630C)은 시간 경과에 따른 카메라 포즈들(630)을 나타낸다. 도시된 바와 같이, 카메라 포즈 데이터가 없는 시점들(즉, 더 큰 데이터 포인트들 사이의 공백 간격)이 있다. 유사하게, 모션 데이터가 없는 시점들(즉, 더 작은 데이터 포인트들 사이의 공백 간격)이 있다. 일부 구현예들에서, 헤드셋 궤적(910)을 계산하는 처리는 SLAM 애플리케이션(462)에 의해 수행된다.
[0163] 도 14의 블록 1408은 계산된 헤드셋 궤적(910)과 일련의 실제 모션 데이터(673)를 보간하기 위해 연속 시간 궤적(CTT) 함수(640)를 생성하는 예시적인 단계를 기술한다. 일부 구현예들에서, CTT 함수(640)는 다항식 보간 모듈(461)을 사용하여 생성된다.
[0164] 도 16에 예시된 바와 같이, 헤드셋 궤적(910)(카메라 포즈들(630)을 포함함) 및 실제 모션 데이터(673)는 예시적인 다항식 보간 모듈(461)에 대한 입력 데이터를 나타낸다. 다시 위쪽 그래프를 참조하면, 작은 데이터 포인트들(673C)은 시간에 따른 실제 모션 데이터(673)를 나타낸다. 큰 데이터 포인트들(630C)은 시간 경과에 따른 카메라 포즈들(630)을 나타낸다. 도시된 바와 같이, 카메라 포즈 데이터가 없는 시점들(즉, 큰 데이터 포인트들 사이의 공백 간격)이 있다. 유사하게, 모션 데이터가 없는 시점들(즉, 작은 데이터 포인트들 사이의 공백 간격)이 있다. 일부 애플리케이션들은 누락 데이터를 추정하기 위해 뉴턴의 운동 법칙들을 적용하는 포인트들 사이에서(예컨대, 모든 공백 간격에서) 데이터를 보간할 수 있다. 실제로, 이러한 접근법은 너무 많은 시간과 컴퓨팅 자원들을 소비할 것이다. 더욱이, 이러한 접근법은, 입력 데이터의 일부에 노이즈나 다른 장애들이 포함되어 있기 때문에, 오류들을 발생시킬 수 있다. 관련된 양태에 있어서, 예시적인 방법의 블록 1406에서, SLAM 애플리케이션(462)이 헤드셋 궤적(910)을 계산하기 위해 사용될 때, 뉴턴의 운동 법칙들이 데이터에 적용되었다.
[0165] CTT 함수(640)는, 도시된 바와 같이, 시간 경과에 따라 단일 곡선(예컨대, 도시된 바와 같이, 제1 곡선(641), 후속 곡선(642) 등)을 생성하는 아래쪽 그래프에 예시된다. 임의의 시간 t 동안, CTT 함수(640)는 포지션, 방위, 속도, 각속도, 가속도, 각가속도를 포함하는 출력 데이터를 리턴(return)하고, 일부 구현예들에서는 이와 같은 출력 데이터를 계산하는 데 필요한 값들을 리턴한다.
[0166] 일부 구현예들에서, CTT 함수(640)는 하나 이상의 피팅 계수들을 포함하는 다항 방정식이다. 일 예에서, CTT 함수(640)는 하나 이상의 체비셰프 다항식 함수(Chebyshev polynomial function)들을 포함하고, 여기서, 시간 t에서의 x의 값은 다음과 같이 표현된다.
[0167]
Figure pct00001
[0168] 여기서, bk(t)는 k번째 기본 함수이고, ck는 기본 함수의 피팅 계수들이다. 이러한 예에서, 기본 함수 bk(t)는 (도 16에 도시된 하부 그래프의 x축에 도시된 바와 같이) 주어진 시간 t 동안 체비쇼프 다항식들을 포함한다. 체비쇼프 다항식들은 다음과 같이 재귀적으로 정의된다.
[0169]
Figure pct00002
[0170]
Figure pct00003
[0171]
Figure pct00004
[0172] 피팅 계수들 ck는 입력 데이터에 따라 달라진다. 예를 들어, 제1 시간 간격 동안의 입력 데이터의 경우, 피팅 계수들 ck는 제1 곡선(641)이 입력 데이터에 근접하도록 계산된다. 후속 시간 간격에 대해, 후속 곡선(642)이 후속 시간 간격 동안 입력 데이터에 매우 근접하도록 후속 피팅 계수들의 세트 ck가 계산된다.
[0173] 다시 도 16을 참조하면, 입력 데이터는 포착된 실제 모션 데이터(673)와 카메라 포즈들(630)의 계산된 시퀀스를 모두 포함한다. 도시된 바와 같이, 모션 데이터(673)는 두 번 사용되는데, 우선 헤드셋 궤적(910)을 계산하기 위한 입력 데이터로서 사용되고, 그리고 다시 CTT 함수(640)를 생성하기 위한 입력 데이터로서 사용된다. 위쪽 그래프에 도시된 바와 같이, 본 예에서 모션 데이터 포인트들(673C)은 일반적으로 카메라 포즈 데이터 포인트들(630C)보다 더 빈번하다. 이러한 양태에서, CTT 함수(640)를 생성하는 처리는 카메라 포즈 데이터 포인트들(630C) 사이의 공백 간격들 내에 속하는 데이터 포인트들의 보간을 수학적으로 제한하기 위해 체비쇼프 다항식들을 사용한다.
[0174] CTT 함수(640)는, 조합될 때, 전체 궤적(예컨대, 도 16의 아래쪽 그래프에 도시된 바와 같은 연속 곡선)을 생성하는 다수의 시간 간격들에 대한 값들을 리턴한다. 연속 곡선은 입력 데이터(예컨대, 실제 모션 데이터(673)를 나타내는 더 작은 데이터 포인트들(673C) 및 카메라 포즈들(630)을 나타내는 더 큰 데이터 포인트들(630C))에 매우 근접한다. 도시된 바와 같이, 제1 곡선(641)은 제1 시간 간격과 연관되고, 후속 곡선(642)은 후속 시간 간격과 연관되는 등이다.
[0175] CTT 함수(640)는, 도 16에 도시된 바와 같이, 연속 곡선을 생성하고, 이는, 임의의 시간 t 동안, CTT 함수(640)가 출력 데이터 값(예컨대, 포지션, 방위, 속도 등)을 수학적으로 리턴하는 것을 예시한다. 예를 들어, 헤드셋 궤적(910)에서 일련의 카메라 포즈들(630)이 상대적으로 낮은 빈도(예컨대, 초당 36회)로 계산되었더라도, CTT 함수(640)는 출력 데이터세트(990)에 대한 카메라 포즈들을 추정하는 데 사용될 수 있는 출력 데이터 값들을 더 많은(또는 더 적은) 빈도(예컨대, 초당 7백20회)로 리턴한다. 관련 양태에서, CTT 함수(640)는 또한 임의의 시간 동안 임의의 특정 또는 선택된 시간 간격(예컨대, 초당 10회, 100회, 1,000회)에서 일련의 출력 데이터 값들(예컨대, 포지션들, 방위들, 속도들 등)을 반환할 수 있다. 이러한 양태에서, 예를 들어, CTT 함수(640)(단일 헤드셋 궤적(910) 및 일련의 모션 데이터(673)와 연관됨)는 복수의 상이한 출력 데이터세트들(예컨대, 포지션들 및 각속도들, 3분 동안 초당 100개의 값들; 방위들 및 가속도들, 90초 동안 초당 50개의 값들; 등)을 생성하는데 사용될 수 있다.
[0176] 도 14의 블록 1410은 제1 가상 환경(900)을 인식하는 예시적인 단계를 기술한다. 가상 환경(900)은 일반적으로 가상 이미지들, 이미지 자산들, 메타데이터, 아티팩트들, 감각 데이터 파일들, 깊이 맵들 및 VR 경험을 생성하기 위한 다른 데이터의 방대한 라이브러리 및 가상 맵(913)을 포함한다.
[0177] 일부 구현예들에서, 제1 가상 환경(900)을 인식하는 처리는 도 7a에 도시된 예시적인 환경 컴포넌트(710)와 같은 인터페이스를 통해 가상 환경들의 리스트(711)로부터의 선택을 수신하는 것을 포함한다.
[0178] 도 14의 블록 1412는 하나 이상의 시뮬레이팅된 카메라들(728) 및 하나 이상의 시뮬레이팅된 모션 센서들(729)을 포함하는 시뮬레이팅된 센서 구성(760)을 어셈블링하는 예시적인 단계를 기술한다. 시뮬레이팅된 카메라들(728)은 본 명세서에 기술된 것을 포함하여 다양한 카메라 시스템들 중 임의의 카메라 시스템을 포함할 수 있다. 시뮬레이팅된 모션 센서들(729)은 본 명세서에 기술된 관성 측정 유닛(IMU)들을 포함하는 다양한 모션 센서들 중 임의의 센서를 포함할 수 있다. 센서 구성(760)은, 그것을 어셈블링하는 처리가 시뮬레이팅된 센서 구성(760)의 선택된 요소들을 포함하거나 지지하는 디바이스(예컨대, 가상 VR 헤드셋)의 가상 모델을 생성하기 위한 하나 이상의 요소들(728, 729)의 가상 선택 및 어셈블링을 의미하고 포함하기 때문에 시뮬레이팅된 것으로 지칭된다.
[0179] 일부 구현예들에서, 시뮬레이팅된 센서 구성(760)을 어셈블링하는 처리는 도 7b에 도시된 예시적인 센서 컴포넌트(720)와 같은 인터페이스를 통해 센서 요소들(765)을 선택하는 것을 포함한다.
[0180] 일부 예시적인 구현예들에서, 시뮬레이팅된 센서 구성(760)을 선택하는 처리는 선택된 제1 가상 환경(900)과 연관된 가상 맵(913)에 대한 초기 오프셋 포지션(741) 및 초기 방위(742)를 선택하는 것을 포함한다. 도 7d는 병진 좌표들(741), 회전 좌표들(742) 또는 이들의 조합을 포함하는 초기 오프셋을 선택하고 입력하기 위한 인터페이스를 제공하는 예시적인 오프셋 컴포넌트(740)의 예시이다. 이러한 양태에서, 초기 오프셋 포지션(741) 및 초기 방위(742)의 설정들을 적용하는 것 및 CTT 함수(640)를 사용하는 것은 오프셋 출력 데이터세트라고 지칭되는 새롭거나 상이한 샘플 출력 데이터세트를 생성한다.
[0181] 도 14의 블록 1414는 선택된 시뮬레이팅된 센서 구성(760)에 대한 출력 데이터세트(990)를 생성하기 위해 CTT 함수(640)를 사용하는 예시적인 단계를 기술한다. 최종 출력 데이터세트(990)는, 시뮬레이팅된 센서 구성(760)이 인식된 제1 가상 환경(900)을 통해 가상 경로(960)를 따라 이동하고 있었던 것처럼, 선택된 시뮬레이팅된 센서 구성(760)(예컨대, 시뮬레이팅된 카메라들(728) 및 시뮬레이팅된 IMU 센서(729))과 연관된 출력 데이터를 나타낸다. CTT 함수(640)를 생성할 때, 경로(612)를 따라 제1 기록 디바이스(726)에 의해 수집된 데이터가 사용되었기 때문에, 가상 경로(960)는 실제 환경(600)을 통해 경로(612)와 밀접하게 상관된다.
[0182] 전술한 바와 같이, 블록 1408에서, CTT 함수(640)는 실제 환경에서 제1 기록 디바이스(726) 상의 센서에 의해 포착된 데이터에 기초하여 생성되었다. 이제, 블록 1414에서, CTT 함수(640)는 출력 데이터세트(990)를 생성하기 위해 사용되고 있는데, 이는 제1 기록 디바이스(726)의 센서 구성을 위한 것이 아니라, 가상 환경(900)과 관련된 시뮬레이팅된 센서 구성(760)을 위한 것이다.
[0183] 예를 들어, 제1 기록 디바이스(726)는, 해당 제1 기록 디바이스(726)가 실제 물리적 환경(600)에서 경로(612)를 따라 이동함에 따라, 초당 60 샘플들의 관성 샘플 레이트(674)로 실제 모션 데이터(673)를 포착하는 단일 IMU(672)를 포함할 수 있다. 예시적인 시뮬레이팅된 센서 구성(760)은 시뮬레이팅된 디바이스(예컨대, 가상 VR 헤드셋) 상의 특정 로케이션들에 포지셔닝된 4개의 시뮬레이팅된 IMU 센서들(729)를 포함할 수 있다. 사용 시, 시뮬레이팅된 센서 구성(760)이 인식된 제1 가상 환경(900)을 통해 가상 경로(960)를 따라 이동하는 것처럼 4개의 시뮬레이팅된 IMU 센서들(729) 각각에 대한 값들(예컨대, 포지션, 방위, 가속도)을 포함하는 출력 데이터세트(990)를 생성하기 위해 CTT 함수(640)를 사용할 수 있다. CTT 함수(640)가 실제 경로를 따라 포착된 실제 데이터를 사용하여 생성되었기 때문에, 시뮬레이팅된 센서 구성(760)에 대한 출력 데이터세트(990)는 사실적이고 실제와 같은 일련의 이미지들 및 움직임을 생성한다.
[0184] 일부 구현예들에서, 출력 데이터세트(990)를 생성하는 처리는 본 명세서에서 수정된 샘플 레이트로 지칭된 특정 샘플 레이트(예컨대, 초당 N 값들)를 선택 및 적용하는 것을 포함한다. 도 16에 도시된 바와 같이, CTT 함수(640)는 시간에 따른 연속 곡선을 생성한다. 수정된 샘플 레이트는, 출력 데이터세트(990)를 생성할 때, 선택되어 출력값(예컨대, 초당 N개의 포지션 좌표들, 초당 N개의 방위 벡터들, 초당 N개의 속도값들)의 일부 또는 모두에 적용될 수 있다. 이러한 양태에서, 수정된 샘플 레이트는 임의의 샘플 레이트, 즉, 다른 샘플 레이트(예컨대, 기본 참조 세트(610)와 연관된 샘플 레이트들)에 기초하지 않거나 관련되지 않은 속도일 수 있다.
[0185] 일부 구현예들에서, 수정된 샘플 레이트는 제1 기록 디바이스(726) 상의 카메라(620)의 이미지 샘플 레이트(624), 제1 기록 디바이스(726) 상의 IMU(672)의 관성 샘플 레이트(674), 이미지 샘플 레이트(624) 및 관성 샘플 레이트(674)의 제수(divisor), 또는 계산된 헤드셋 궤적(910)의 일부인 카메라 포즈들(630)의 시퀀스와 연관된 기본 샘플 레이트(634)와 동일할 수 있다. 일부 구현예들에서, 제수를 선택하는 것은 이미지 샘플 레이트(624)(예컨대, 초당 36 이미지 프레임들) 및 관성 샘플 레이트(674)(예컨대, 초당 720 IMU 샘플들)를 수학적으로 비교하여, 하나 이상의 제수들(예컨대, 72, 360)을 인식하는 것을 포함한다.
[0186] 관련된 양태에서, 수정된 샘플 레이트를 선택 및 적용하는 처리는 각각이 특정의 수정된 샘플 레이트에 의해 특징지어지는 복수의 샘플 출력 데이터세트들을 생성하는 데 사용될 수 있으며, 이들 모두는 동일한 CTT 함수(640)를 사용하여 생성된다.
[0187] 출력 데이터세트(990)를 생성하는 처리는 시뮬레이팅된 센서 구성(760)의 하나 이상의 시뮬레이팅된 카메라들(728) 각각에 대한 일련의 가상 이미지들(970)을 렌더링하는 것을 포함한다. 출력 데이터세트(990)를 생성하는 처리는 또한 시뮬레이팅된 센서 구성(760)의 하나 이상의 시뮬레이팅된 IMU 센서들(729) 각각에 대해 일련의 시뮬레이팅된 IMU 데이터(980)를 생성하는 것을 포함한다.
[0188] 일부 구현예들에서, 이미지 렌더링 애플리케이션(464)은 하나 이상의 시뮬레이팅된 카메라들(728) 각각에 대해 제1 환경(900)과 연관된 일련의 가상 이미지들(970)을 렌더링하는 처리를 용이하게 한다. 각각의 가상 이미지(970)는, 본 명세서에 기술된 바와 같이, 가상 경로(960)를 따라 가상 웨이포인트에 포지셔닝된 사용자의 시각으로부터 제1 환경(900)의 뷰를 포함한다. 가상 경로(960)는 생성된 연속 시간 궤적(640)의 시작점과 상관된 포지션에서 시작할 수 있거나, 선택된 초기 오프셋 포지션(741)에서 시작할 수 있다. 유사하게, 가상 경로(960)를 따른 사용자 방위는 생성된 연속 시간 궤적(640)의 시작 방위 데이터와 상관될 수 있거나, 선택된 초기 방위(742)에서 시작할 수 있다.
[0189] 출력 데이터세트(990)를 생성하는 처리는 또한 시뮬레이팅된 센서 구성(760)의 하나 이상의 시뮬레이팅된 IMU 센서들(729) 각각에 대해 일련의 시뮬레이팅된 IMU 데이터(980)를 생성하는 것을 포함한다. 이러한 양태에서, 일련의 시뮬레이팅된 IMU 데이터(980)는 일반적으로 일련의 카메라 포즈들(630)에 대응한다. CTT 함수(640)가 실제 모션 데이터(673)를 사용하여 생성되고 있었기 때문에, 출력 데이터세트(990)의 일련의 시뮬레이팅된 IMU 데이터(980)에 의해 기술된 것과 같은 모션은, 물리적 환경(600)에서 실제 경로를 가로지를 때, 제1 기록 디바이스(726)에 의해 포착된 모션과 매우 밀접하게 상관된다.
[0190] 도 9는 가상 환경(900)과 연관된 예시적인 맵 뷰(713)에 대한 오버레이로서 디스플레이 상에 제시된 예시적인 트레이스(930)의 예시이다. 일부 구현예들에서, 가상 환경(900)은 도 14에 도시된 예시적인 방법의 블록 1410에서 인식된다. 다른 구현예들에서, 가상 환경(900)은 도 7a에 도시된 예시적인 환경 컴포넌트(710)와 같은 인터페이스를 통해 리스트(711)로부터 선택된다. 선택된 가상 환경(900)과 연관된 데이터는 일반적으로 가상 맵(913)을 포함한다.
[0191] 도 14의 블록 1404를 다시 참조하면, 기본 참조 세트(610)는, 물리적 환경(600)을 통과하는 실제 경로(612)를 가로지르기 때문에, 모션에서 제1 기록 디바이스(726)에 의해 포착된다. 일부 구현예들에서, 기본 참조 세트(610)는 가상 환경(900)을 통한 가상 경로(960)를 계산하는 데 사용된다. 따라서, 가상 경로(960)는 실제 경로(612)와 밀접하게 상관된다. 관련된 양태에서, 도 9에 도시된 트레이스(930)는 가상 경로(960)의 적어도 일부에 대응한다.
[0192] 도 9의 맵 뷰(713)는 선택된 가상 환경(900)과 연관된 가상 맵(913)의 적어도 일부에 대응한다. 일부 구현예들에서, 맵 뷰(713)는 트레이스(930)의 크기 및 형상에 대응하도록 크기 및 형상이 지정된다. 도 9에 도시된 바와 같이, 트레이스(930)의 뷰는, 사용자가 추가 처리(예컨대, 본 명세서에 기술된 바와 같이, 출력 데이터세트(990)를 생성하는 것)를 위해 데이터를 제출하기 전에, 선택된 제1 가상 환경(900)에 대한 가상 경로(960)의 로케이션 및 형상의 프리뷰를 관찰할 수 있게 한다. 예를 들어, 사용자가 도 9에 도시된 트레이스(930)가 허용되지 않는 것(예컨대, 트레이스(930)가 벽 또는 구조체와 같은 고체 가상 객체를 통과함)을 관찰하면, 사용자는 다른 기본 참조 세트(610)를 기록하기 위해 제1 기록 디바이스(726)를 사용하도록 선택할 수 있다.
[0193] 도 15는 가상 경로(960)와 연관된 프리뷰들을 제시하는 예시적인 방법을 묘사하는 흐름도(1500)이다. 당업자는 도시되고 기술된 단계들 중 하나 이상이 동시에, 연속적으로, 도시되고 기술되는 것 이외의 순서로, 또는 추가적인 단계들과 함께 수행될 수 있다는 것을 이해할 것이다. 일부 구현예들에서, 일부 단계들은 생략되거나 반복될 수 있다.
[0194] 블록 1502는, 도 9에 도시된 바와 같이, 가상 환경(900)과 연관된 맵 뷰(713)에 대한 오버레이로서 디스플레이 상의 트레이스(930)를 제시하는 예시적인 단계를 기술한다. 일부 구현예들에서, 트레이스(930)를 제시하는 처리는 선택된 가상 환경(900)을 통해 가상 경로(960)를 계산하는 예비 단계를 포함하며, 여기서, 가상 경로(960)는 물리적 환경(600)을 가로지른(그리고 기본 참조 세트(610)에 저장된) 실제 경로(612)에 대한 데이터에 기초한다. 일부 구현예들에서, 가상 경로(960)를 계산하는 처리는 선택된 가상 환경(900)과 연관된 가상 맵(913) 상으로의 실제 경로(612)의 포인트 대 포인트(point-by-point) 프로젝션을 포함한다.
[0195] 일부 구현예들에서, 트레이스(930)를 제시하는 처리는 트레이스(930)가 제시될 맵 뷰(713)를 인식하는 것을 포함한다. 맵 뷰(713)는 선택된 가상 환경(900)과 연관된 가상 맵(913)의 일부이다. 일부 구현예들에서, 맵 뷰(713)를 인식하는 처리는 트레이스(930)의 크기 및 형상에 대응하는 크기 및 형상을 선택하는 것을 포함한다. 예를 들어, 도 9에 도시된 맵 뷰(713)는 트레이스(930)가 맵 뷰(713)의 전체 영역의 대략 1/3을 차지하도록 전체 영역에서 크기 및 형상이 정해진다. 맵 뷰(713)는 트레이스(930)가 맵 뷰(713)의 중심 부근에 대략적으로 제시되도록 경계들로 크기 및 형상이 정해진다.
[0196] 도 15의 블록 1504는 대안적인 예시 맵 뷰(713)에 대한 오버레이로서 디스플레이 상에 트레이스(930)를 제시하는 또 다른 예시적인 단계를 기술한다. 도 10b의 우상단 모서리에 도시된 예시적인 맵 뷰(713)는 도 9의 예시적인 맵 뷰(713)에 비해 상대적으로 더 작다. 블록 1504는, 보다 구체적으로, 맵 뷰(713) 상의 프리뷰 트레이스(930)를 따라 범위 아이콘(940)을 제시하는 예시적인 단계를 기술하고, 여기서, 범위 아이콘(940)은 계산된 가상 경로(960)를 따라 제1 가상 웨이포인트(962a)에 대응한다. 일부 구현예들에서, 범위 아이콘(940)은 북쪽 기본 방향(northerly cardinal direction)으로 지향되어, 인식 가능한 지도 기반 시각적 큐를 제공한다. 일부 구현예들에서, 범위 아이콘(940)은 제1 웨이포인트 시선 벡터(965a)에 대응하는 방향으로 지향되어, 제1 가상 웨이포인트(962a)와 연관된 시선 방향에 대한 시각적 큐를 제공한다. 웨이포인트들 및 시선 벡터들을 갖는 예시적인 가상 경로(960)가 도 10a에 도시되어 있다.
[0197] 도 10a는 선택된 가상 환경(900)과 연관된 가상 맵(913)의 일부에 관한 예시적인 가상 경로(960)의 개략적인 예시이다. 도시된 바와 같이, 복수의 셀들(902)을 포함하는 프레임워크(901)가 가상 맵(913)에 적용되었다. 가상 경로(960)는 제1 셀(902a)을 가로지르거나 근처를 통과한다. 제1 가상 웨이포인트(962a)는 제1 셀(902a) 내에 로케이팅된다. 상세도에 도시된 바와 같이, 제1 셀(920a)을 통과하는 가상 경로(960)의 일부는 제1 가상 웨이포인트(962a)로 지칭되는 세그먼트를 포함한다. 제1 웨이포인트 시선 벡터(965a)는 제1 가상 웨이포인트(962a)와 연관된다. 생성된 출력 데이터세트(990)에 따라, 제1 웨이포인트 시선 벡터(965a)는 가상 경로(960)를 따르는 모션에서 시뮬레이팅된 센서 구성(760)의 뷰 방향을 나타낸다.
[0198] 프레임워크(901) 내의 각각의 셀(902)은, 샘플 셀(902s)을 참조하여 도 10a에 도시된 바와 같이, 뷰 방향들의 세트(904) 및 뷰 높이들의 세트(906)에 의해 특징지어진다. 일부 구현예들에서, 뷰 방향들의 세트(904)는 8개의 방향들(예컨대, 도시된 바와 같이, 기본 방향(cardinal direction)들 및 오디널 방향(ordinal direction)들)을 포함한다. 일부 구현예들에서, 뷰 높이들의 세트(906)는 가상 환경(600)에서 지면 또는 다른 가상 표면 위의 하나 이상의 높이들에 의해 특징지어진다. 예를 들어, 제1 뷰 높이(906-1)는 3피트의 높이(예컨대, 무릎을 꿇거나 웅크리는 자세를 나타낼 수 있음)에 의해 특징지어질 수 있고, 제2 뷰 높이(906-2)는 6피트의 높이(예컨대, 서거나 걷는 것을 나타냄)에 의해 특징지어질 수 있다. 일부 구현예들에서, 각각의 뷰 높이에는 동일한 뷰 방향의 세트가 포함된다.
[0199] 도 15의 블록 1506은 가상 맵(913)에 도입된 프레임워크(901)와 연관된 복수의 셀들(902) 각각에 대한 시선 뷰들의 세트(719)를 저장하는 예시적인 단계를 기술하고, 각각의 시선 뷰(719)는 뷰 방향(904) 및 뷰 높이(906)에 의해 특징지어진다.
[0200] 일부 구현예들에서, 각각의 셀(902)에 대한 시선 뷰들의 세트(719)를 저장하는 처리는 각각의 뷰 방향(904) 및 각각의 뷰 높이(906)와 연관된 이미지를 선택하는 것을 포함한다. 예를 들어, 이미지들은 가상 환경 데이터베이스(450)에 저장된, 선택된 가상 환경(900)과 연관된 데이터로부터 선택될 수 있다. 다시 도 10a의 샘플 셀(902s)을 참조하면, 샘플(902s)에 대한 시선 뷰들의 세트(719)는 각각의 뷰 높이(906-1, 906-2)에 대한 8개의 이미지들의 세트를 포함하고, 여기서, 8개의 이미지들은 8개의 뷰 방향들(904) 중 하나와 연관된다. 일부 구현예들에서, 시선 뷰들의 세트들(719)은 상세한 렌더링과는 대조적으로 일반적인 프리뷰를 제공하도록 의도된다. 이러한 양태에서, 시선 뷰들의 세트들(719)은 (예컨대, 고해상도 렌더링된 이미지들에 비해) 상대적으로 낮은 해상도일 수 있고, 빠른 검색을 위해 캐시에 저장될 수 있다.
[0201] 도 10b는 우상단 모서리의 맵 뷰(713) 상의 프리뷰 트레이스(930)를 따라 제시된 범위 아이콘(940)과 함께 웨이포인트 시선 뷰들(719-1~719-8)의 예시적인 세트를 포함하는 예시적인 시선 프리뷰(950)의 예시이다.
[0202] 도 15의 블록 1508은 제1 가상 웨이포인트(962a)와 연관된 제1 셀(902a)을 식별하는 예시적인 단계를 기술한다. 일부 구현예들에서의 처리는 가상 경로(960)가 통과하는 셀들을 인식하는 것을 포함한다. 도 10a에 예시된 바와 같이, 가상 경로(960)는 제1 셀(902a)을 가로지르거나 통과한다. 상세 뷰에 도시된 바와 같이, 제1 가상 웨이포인트(962a)는 제1 셀(902a) 내에 로케이팅된다. 제1 가상 웨이포인트(962a)는, 도시된 바와 같이, 제1 웨이포인트 시선 벡터(965a)를 포함한다. 일부 구현예들에서, 제1 웨이포인트 시선 벡터(965a)는 생성된 출력 데이터세트(990)에 따라 가상 경로(960)를 따르는 모션에서 시뮬레이팅된 센서 구성(760)의 뷰 방향을 나타낸다. 제1 웨이포인트 시선 벡터(965a)는 제1 가상 웨이포인트(962a)에 대해 임의의 방향으로 지향될 수 있다. 예를 들어, 제1 웨이포인트 시선 벡터(965a)는, 본 실시예에 도시된 바와 같이, 제1 가상 웨이포인트(962a)의 평면에 반드시 수직일 필요는 없다.
[0203] 도 15의 블록 1510은 제1 웨이포인트 시선 벡터(965a)와 가장 가깝게 정렬되는 제1 뷰 방향(904a)을 선택하는 예시적인 단계를 기술한다. 각각의 셀(902)은 뷰 방향들의 세트(904)(예컨대, 샘플 셀(902s)을 참조하여 도시된 바와 같이, 8개 방향들)에 의해 특징지어진다는 것을 상기한다. 제1 뷰 방향(904a)을 선택하는 처리는 셀(902a)과 연관된 제1 웨이포인트 시선 벡터(965a)를 셀(902a)에 대한 뷰 방향들의 세트(904)와 비교하는 것을 포함한다. 예시된 예에서, 제1 뷰 방향(904a)(예컨대, 북동쪽)은 제1 웨이포인트 시선 벡터(965a)와 가장 가깝게 정렬된다.
[0204] 도 15의 블록 1512는 제1 뷰 방향(904a)과 연관된 제1 시선 뷰(719-1)를 디스플레이 상에 제시하는 예시적인 단계를 기술한다. 예를 들어, 도 10b에 도시된 바와 같이, 제1 시선 뷰(719-1)는 제1 가상 웨이포인트(962a)로부터 제1 뷰 방향(904a)의 방향(예컨대, 예시된 예에서는 북동쪽을 향함)을 바라보는 뷰를 나타낸다.
[0205] 일부 구현예들에서, 제1 뷰 방향(904a)과 연관된 제1 시선 뷰(719-1)를 제시하는 처리는 뷰 높이들(예컨대, 뷰 높이들(906-1, 906-2 등)) 중 하나의 시각으로부터 제1 시선 뷰(719-1)를 제시하는 것을 더 포함한다.
[0206] 도 15의 블록 1514는 하나 이상의 2차 시선 뷰들(719-2~719-8)을 디스플레이 상에 제시하는 예시적인 단계를 기술한다. 일부 구현예들에서, 2차 시선 뷰들은 뷰 방향들의 세트(904)에 따라 시계 방향으로 순서대로 제시된다. 예를 들어, 제1 시선 뷰(719-1)가 제1 뷰 방향(904a)(예컨대, 북동쪽을 향함)과 연관된 이미지를 포함하는 경우, 제2 시선 뷰(719-2)는 동쪽을 향하는 이미지를 포함하고, 제3 시선 뷰(719-3)는 남동쪽을 향하는 이미지를 포함하는 등이다. 이러한 양태에서, 제1 시선 뷰(719-1)는 2차 시선 뷰들을 제시할 때 시작 포인트 역할을 한다.
[0207] 일부 구현예들에서, 하나 이상의 2차 시선 뷰들을 제시하는 처리는 뷰 높이들(예컨대, 뷰 높이들(906-1, 906-2 등)) 중 하나의 시각으로부터 하나 이상의 2차 시선 뷰들을 제시하는 것을 더 포함한다.
[0208] 시선 뷰들을 제시하는 처리(예컨대, 제1 시선 뷰(719-1) 및 하나 이상의 2차 시선 뷰들(719-1~719-8; 집합적으로 719-n))는 가상 환경의 다른 피처들에 대해 제1 가상 웨이포인트(962a)에 대한 추가 컨텍스트를 제공한다. 디스플레이 상에서 시선 뷰들(719-n)을 보는 것은 가상 경로(960)를 따라 제1 가상 웨이포인트(962a) 근처에 로케이팅된 사용자의 시점에서 저해상도 프리뷰를 사용자에게 제공한다. 도 10a에 도시된 바와 같이, 제1 뷰 방향(904a)은 제1 웨이포인트 시선 벡터(965a)와 정확하게 정렬될 필요는 없다. 따라서, 대응하는 시선 뷰들은 제1 가상 웨이포인트(962a)로부터의 뷰의 대략적인 근사값을 나타낸다. 예를 들어, 사용자가 디스플레이 상에 제시된 시선 뷰들(719-n)을 허용할 수 없는 것으로 관찰하는 경우, 사용자는 다른 기본 참조 세트(610)를 기록하기 위해 제1 기록 디바이스(726)를 사용하도록 선택할 수 있다.
[0209] 관련된 양태에서, 디스플레이 상에 시선 뷰들(719-n)을 제시하는 처리는 선택된 가상 환경(900)에서 다양한 가상 객체의 저해상도 프리뷰를 사용자에게 제공한다. 일부 구현예들에서, 가상 경로(960)는 선택된 가상 환경(900)의 일부인 가상 객체들의 로케이션에 대한 깊이 정보를 포함한다. 예를 들어, 선택된 가상 환경(900)은 일반적으로 표면들, 구조체들, 차량들, 사람들, 장비, 자연적 피처들, 및 현실적이고 상상적이며, 정적이고 동적인 다른 유형의 객체들과 같은 다양한 가상 객체들을 포함한다. 각각의 가상 객체는 선택된 가상 환경(900)에 관한 좌표들로 표현되는 알려진 포지션들에 로케이팅될 수 있다. 가상 경로(960)를 생성하는 것은 가상 경로(960)에 관한 하나 이상의 가상 객체들의 가상 로케이션들을 포함하는 깊이 맵을 계산하는 것을 포함한다. 깊이 맵 상에 가상 객체들을 로케이팅하는 것은 가상 경로(960)를 가로지르는 사용자에 관한 가상 객체들의 정확한 렌더링 및 디스플레이를 용이하게 한다.
[0210] 관련된 양태에서, 일부 구현예들에서, 일련의 가상 이미지들(970)을 렌더링하는 처리는 헤드셋 상의 카메라(들)의 로케이션 및 방위에 관한 캐릭터 아이 로케이션(character eye location)을 추정하는 것을 포함한다. 가상 환경 데이터는 일반적으로 하나 이상의 헤드셋들과 관련된 캐릭터 아이 로케이션에 대한 데이터를 포함한다. 아이 로케이션은 캐릭터 자신의 팔들, 손들 및 다른 신체 부분들과 같이 캐릭터에 매우 가깝게 로케이팅된 객체들을 포함하는 가상 이미지들을 렌더링할 때 특히 유용하다. 이와 같은 클로즈업 객체들의 정확한 렌더링은 보다 사실적이고 실제와 같은 경험을 생성한다. 이러한 예시적인 구현예에서, 지상 실측값 데이터세트 생성 시스템(1000)은 카메라에 대한 캐릭터 아이 로케이션을 추정하며, 이는 각각의 포즈가 추정된 아이 로케이션과 지속적으로 연관되는 일련의 계산된 포즈들을 생성한다. 각각의 포즈를 추정된 아이 로케이션과 상관시킴으로써, 신체 부분 이미지들은 추정된 캐릭터 아이 로케이션과 가깝고 지속적으로 연관된 포지션들에 렌더링되어, 사용자의 시각(즉, 자기 중심적)과 가깝게 상관된 신체 부분들의 가상 이미지들을 생성한다. 본 예에서, 일련의 가상 이미지들(970)을 렌더링하는 처리는 추정된 캐릭터 아이 로케이션과 지속적으로 연관되는 일련의 캐릭터 신체 부분 이미지들을 렌더링하는 것을 포함한다.
[0211] 일련의 가상 이미지들(970)을 렌더링하는 처리는 많은 컴퓨팅 리소스들과 시간을 소비한다. 예를 들어, 300 프레임들의 고품질 AR 비디오(초당 30 프레임으로 10초의 비디오를 생성할 것임)를 렌더링하는 것은 기존 시스템이 완료하는 데 최대 24시간이 걸릴 수 있다. 상대적으로 더 긴 궤적들을 따라, 깊이 이미지들 및 다수의 카메라 뷰들을 포함하여 사용자 지정 구성(custom configuration)들을 사용하는 추가 처리는 기존 시스템이 완료되는 데 최대 20일이 걸릴 수 있다.
[0212] 도 11은 가상 경로(960)에 관한 병렬화 유틸리티(466)를 예시하는 개념도(1100)이다. 일부 구현예들에서, 이미지 렌더링 애플리케이션(464)은 병렬로 처리될 스플릿이라 불리는 서브세트들로 데이터를 파싱하여 처리 시간을 줄이는 병렬화 유틸리티(466)를 활용한다. 예를 들어, 병렬화 유틸리티(466)는 최적의 스플릿들의 수(예컨대, 가상 경로(960)에 기초하여, 도시된 바와 같이, 스플릿 0 내지 스플릿 n)를 결정한다. 각각의 스플릿은 가상 경로(960)의 서브세트를 처리하여 렌더링된 일련의 가상 이미지들(970)의 일부를 생성한다. 각각의 스플릿은 고유한 타임스탬프를 갖고, 이는 처리 후의 각각의 스플릿으로부터의 결과들을 순서대로 어셈블링할 수 있다.
[0213] 일부 구현예들에서, 이미지 렌더링 애플리케이션(464)은 롤링 셔터 효과를 시뮬레이팅하기 위해 하나 이상의 이미지들을 처리하는 롤링 셔터 시뮬레이션 엔진(468)을 활용하며, 이는, 선택된 경우, 비디오 데이터의 프레임들의 시퀀스들에 적용된다. 롤링 셔터는, 프레임을 수직 또는 수평으로 빠르게 스캐닝함으로써, 비디오의 각각의 프레임이 포착되는 이미지 처리 방법이다. 신속한 스캐닝은 판독 시간(예컨대, 30 내지 100 마이크로초)이라 불리는 시간 간격에서 짧은 시간 주기에 걸쳐 수행된다. 롤링 셔터 방법을 사용하여 처리된 이미지는 일반적으로 몇 픽셀들 너비의 일련의 행들을 포함하며, 각각의 행은 서로 다른 시간에 스캐닝된다. 프레임의 행들은 서로 다른 시간에 기록되지만, 처리 후, 재생하는 동안에는 전체 프레임이 (단일 순간을 나타내는 것처럼) 동시에 디스플레이된다. 판독 시간이 길어지면, 눈에 띄는 모션 아티팩트들 및 왜곡이 발생될 수 있다. 피처 필름들용으로 처리된 이미지들은 일반적으로 더 짧은 판독 시간을 사용하여, 아티팩트들과 왜곡을 최소화한다.
[0214] 일부 구현예들에서, 롤링 셔터 시뮬레이션 엔진(468)은 렌더링된 일련의 가상 이미지들(970)로부터 선택된 가상 이미지들의 서브세트에서 픽셀들의 행들로 시뮬레이팅된 스캐닝을 포함한다. 롤링 셔터 시뮬레이션 엔진(468)은, 예를 들어, 제1 가상 이미지에 적용될 때, 일반적으로 너무 많은 왜곡을 갖는 하나 이상의 렌더링된 이미지들을 생성하여, 제1 가상 이미지로부터의 단일 픽셀이 렌더링된 이미지들 내의 다수의 픽셀 로케이션들에 로케이팅된다. 이러한 효과에 의해 야기된 왜곡을 최소화하기 위해, 일부 구현예들에서, 롤링 셔터 시뮬레이션 엔진(468)은 가상 이미지들의 서브세트 내에서 각각의 이미지에 대한 예상된 포즈를 계산한다. 예를 들어, 본 명세서에 기술된 카메라 포즈들(630)의 시퀀스는 경로(612)를 따라 각각의 포인트와 연관된 하나 이상의 벡터들을 포함한다. 출력 데이터세트(990)에서 일련의 가상 이미지들(970)에 대한 예상된 포즈를 계산하기 위해, 일부 구현예들에서, 롤링 셔터 시뮬레이션 엔진(468)은, 일련의 가상 이미지들(970)(예컨대, 선택된 제1 가상 이미지의 바로 전후의 이미지들을 포함함)에 적용된 바와 같이, 시간 경과에 따라 일련의 카메라 포스트들(630)을 보간한다. 후속 렌더링된 이미지들에 대한 예상된 포즈들은, 일부 예들에서, 제1 가상 이미지 내의 각각의 픽셀들의 행에 대한 예상된 포즈를 포함한다. 처리 속도를 높이기 위해, 일부 구현예들에서, 롤링 셔터 시뮬레이션 엔진(468)은 병렬화 유틸리티(466)에 액세스하고 적용한다.
[0215] 사용 사례들
[0216] 지상 실측값 데이터세트 생성 시스템(1000)에 대한 예시적인 사용 사례에 따르면, 출력 데이터세트(990)는, 모션에서, 가상 환경(900)을 통해 가상 경로(960)를 가로지르는 시뮬레이팅된 센서 구성을 나타낸다. 출력 데이터세트(990)는, 제1 기록 디바이스(726)가 실제 물리적 환경을 통해 이동할 때, 그것의 움직임들에 대한 데이터를 포착한 제1 기록 디바이스(726)와 매우 밀접하게 상관된다. 따라서, 출력 데이터세트(990)는, 특히, 제1 기록 디바이스(726) 상의 장비와 동일하거나 유사한 장비를 가진 헤드셋을 착용하고 있는 사용자에 대해 사실적이고 생동감 있는 VR 경험을 생성한다.
[0217] 지상 실측값 데이터세트 생성 시스템(1000)에 대한 다른 예시적인 사용 사례에 따르면, 출력 데이터세트(990)는 많은 VR 시스템들의 일부인 하나 이상의 기계 학습 알고리즘들을 트레이닝하는 데 유용하다.
[0218] 기계 학습은 경험을 통해 점진적으로 개선되는 알고리즘을 의미한다. 많은 수의 상이한 입력 데이터세트들을 처리함으로써, 기계 학습 알고리즘은 특정 데이터세트들에 대한 개선된 일반화들을 개발하고, 그런 다음 이러한 일반화들을 사용하여, 신규 데이터세트를 처리할 때, 정확한 출력 또는 솔루션을 생성할 수 있다. 넓게 말하면, 기계 학습 알고리즘은 새로운 경험들에 대응하여 조정되거나 변경될 하나 이상의 파라미터들이 포함되고, 따라서 알고리즘을 점진적으로 개선하며, 이는 학습과 유사한 과정이다.
[0219] 컴퓨터 비전 및 VR 시스템들의 맥락에서, 수학적 모델들은 이미지로부터 정보를 추출하고 이미지의 내용들에 대한 정확한 이해를 달성하기 위해 컴퓨터를 사용하는 것을 목표로 하여 인간의 시각적 시스템에 의해 수행된 작업을 모방하려고 시도한다. 컴퓨터 비전 알고리즘들은 인공지능, 자율주행 및 VR 시스템들을 포함하는 다양한 분야에서 개발되어, 디지털 이미지들 및 비디오에 포함된 데이터를 추출 및 분석한다.
[0220] 이러한 예시적인 사용 사례에 따르면, 출력 데이터세트(990)는 많은 VR 시스템들의 일부인 기계 학습 알고리즘들을 트레이닝하는 데 유용한 많은 수의 서로 다른 샘플 출력 데이터세트(995)들을 생성하는 데 사용된다. 예를 들어, 도 7d에 도시된 바와 같이, 시스템(1000)은 오프셋 컴포넌트(740) 및 환경설정들 컴포넌트(750)를 포함한다. 사용 시, 출력 데이터세트(990)는 0으로 설정된 오프셋 컴포넌트(740)의 병진 좌표들(741)로 생성될 수 있다. 즉, 기록된 궤적(910)은 원점(0, 0, 0)에서 시작한다. 그런 다음, 예를 들어, (2, 6, 6)과 같은 병진 좌표들(741)의 상이한 세트를 선택하는 것을 제외하고 동일한 선택된 컴포넌트들을 사용하면, 또 다른 샘플 출력 데이터세트(995)가 생성되며, 이는 궤적이 상이한 로케이션에서 시작한다는 점을 제외하고는 제1 데이터세트와 거의 모든 면에서 동일하다. 유사하게, 추가적인 선택들을 사용하여, 환경설정들 컴포넌트(750)의 임의의 또는 모든 상이한 컴포넌트들이 아마도 수백 회 변경될 수 있고, 따라서, 많은 수의 상이한 샘플 출력 데이터세트(995)들을 생성할 수 있다. 실제로, 단일 출력 데이터세트(990)는 관련되지만, 약간 상이한 샘플 출력 데이터세트들(995)을 거의 무제한으로 생성하는 데 사용될 수 있다. 다수의 샘플 출력 데이터세트들(995)의 생성은 긴 시간이 걸리기 때문에, 병렬화 유틸리티(466)는, 본 명세서에 기술된 바와 같이, 병렬 처리를 위해 데이터를 스플릿들로 파싱하는 데 사용될 수 있다. 하나 이상의 공통 속성들을 포함하는 다수의 샘플 출력 데이터세트들(995)을 사용하는 것(예컨대, 특정 헤드셋)은 ML 알고리즘들을 트레이닝하는데 특히 유용하다. 각각의 샘플 출력 데이터세트는 VR 시스템 전체의 작동을 개선하는 ML 알고리즘을 트레이닝하는데 사용될 수 있다. 예를 들어, 모두 제1 기록 디바이스(726)를 사용하여 생성된 샘플 출력 데이터세트들로 트레이닝된 ML 알고리즘은 제1 기록 디바이스(726) 상의 장비와 동일하거나 유사한 장비를 갖는 VR 헤드셋의 이후 사용자들을 위해 특히 강력하고 잘 트레이닝된 ML 알고리즘을 생성할 것이다.
[0221] 지상 실측값 데이터세트 생성 시스템(1000)에 대한 다른 예시적인 사용 사례에 따르면, 출력 데이터세트(990)는 다른 컴포넌트들과 조합하여 새롭거나 서로 다른 컴포넌트들을 테스트하는데 유용하다. 예를 들어, 시스템(1000)은, 본 명세서에 기술된 바와 같이, 시뮬레이팅된 센서 구성(760)을 갖는 가상의 헤드셋을 구성하는데 사용될 수 있으며, 이는 이후 출력 데이터세트(990)를 생성하는 데 사용된다. 처리 후, 사용자는 출력 데이터세트(990)를 사용하여 생성된 VR 경험을 볼 수 있고, 시뮬레이팅된 센서 구성(760)의 성능을 평가할 수 있다. 예를 들어, 시뮬레이팅된 센서 구성(760)은 불분명하거나, 불안정하거나, 달리 만족스럽지 못한 VR 경험을 생성할 수 있다. 후속하는 반복들에서, 시뮬레이팅된 센서 구성(760)은 변경될 수 있고, 사용자는 후속하는 최종 VR 경험을 보고 평가할 수 있다.
[0222] 다른 예시적인 사용 사례에 따르면, 지상 실측값 데이터세트 생성 시스템(1000)은, 처리 동안 수정된 샘플 레이트들을 선택하고 적용함으로써, 복수의 샘플 출력 데이터세트들(995)을 생성한다. 이러한 양태에서, 출력 데이터세트(990)를 생성하는 처리(블록 1414)는, 일부 구현예들에서, 수정된 샘플 레이트를 선택하고 적용하고, 그런 다음, 수정된 샘플 레이트에 기초하여, 하나 이상의 샘플 출력 데이터세트들(995)을 생성하는 것을 포함한다. 예를 들어, CTT 함수(640)는 제1 샘플 레이트(예컨대, 초당 36 샘플들)에 기초하는 데이터 포인트들을 포함하는 제1 출력 데이터세트를 생성할 수 있다. 제1 샘플 레이트는 수정된 샘플 레이트(예컨대, 초당 72 샘플들)로 변경할 수 있으므로 동일한 CTT 함수(640)를 사용하여 생성되는 신규 샘플 출력 데이터세트(995)를 생성할 수 있다. 이러한 애플리케이션에서, 서로 다른 수정된 샘플 레이트들을 선택 및 적용하는 처리는, 본 명세서에 기술된 ML 알고리즘들을 트레이닝하는데 특히 유용한 많은 추가적인 샘플 출력 데이터세트들(995)을 생성하는데 사용될 수 있으므로, VR 시스템들의 정확도 및 작동이 향상된다.
[0223] 다른 예시적인 사용 사례에 따르면, 지상 실측값 데이터세트 생성 시스템(1000)은 일련의 가상 이미지들을 렌더링하는 처리 동안 수정된 굽힘 각도(modified bending angle)를 적용하여 다른 샘플 출력 데이터세트(995)를 생성한다. 굽힘 각도는 이격된 2개의 카메라들을 포함하는 헤드셋들에 대해 제1 카메라 방향과 제2 카메라 방향 간의 각도 연관성을 기술한다. 헤드셋의 카메라 방향들이 일반적으로 평행하도록 의도되어 있지만(즉, 0의 굽힘 각도), 대부분의 헤드셋들은 사용 중에 벤딩되기 때문에 카메라 사이에 0이 아닌 굽힘 각도가 발생된다. 예를 들어, 궤적을 기록하는 동안, 미묘한 머리 모션들로 인해 측정 가능한 굽힘 각도가 발생될 수 있으며, 이는 결국 제2 카메라에 대한 제1 카메라에 의해 수집된 이미지들에 영향을 미칠 것이다. 헤드셋 궤적(910)의 일부로서 카메라 포즈들(630)의 시퀀스를 계산하는 처리 동안, 본 명세서에 기술된 바와 같이, 각각의 포즈 벡터는 각각의 이미지가 포착된 경로(612)를 따른 각각의 포인트에서의 카메라 방위에 기초한다. 2개의 카메라들이 있는 경우, 각각의 카메라 방위는 제1 카메라 방향, 제2 카메라 방향 및 굽힘 각도에 기초한다. 이러한 양태에서, 굽힘 각도는 일련의 포즈 벡터들 및 포즈들을 계산하는 처리에 영향을 미친다. 처리 동안, 지상 실측값 데이터세트 생성 시스템(1000)은 수정된 굽힘 각도(예컨대, 측정 또는 실제의 굽힘 각도와 상이함)를 선택 및 적용하여, 수정된 굽힘 각도에 기초하여, 하나 이상의 추가적인 샘플 출력 데이터세트들(995)을 생성하는데 사용될 수 있다. 다양한 수정된 굽힘 각도를 적용하는 것은, 본 명세서에 기술된 ML 알고리즘들을 트레이닝하는데 특히 유용한 많은 추가적인 샘플 출력 데이터세트들(995)을 생성하므로, VR 시스템들의 정확도 및 작동이 향상된다.
[0224] 웨어러블 또는 아이웨어 디바이스(100), 클라이언트 디바이스(401) 및 서버 시스템(498)에 대해 본 명세서에 기술된 기능 중 임의의 기능은, 본 명세서에 기술된 바와 같이, 하나 이상의 컴퓨터 소프트웨어 애플리케이션들 또는 프로그래밍 명령어들의 세트들로 구현될 수 있다. 일부 예들에 따르면, "기능", "기능들", "애플리케이션", "애플리케이션들", "명령어", "명령어들" 또는 "프로그래밍"은 프로그램들에 정의된 기능들을 실행하는 프로그램(들)이다.  객체 지향 프로그래밍 언어(예컨대, Objective-C, Java 또는 C++) 또는 절차적 프로그래밍 언어들(예컨대, C 또는 어셈블리 언어)와 같은 다양한 방식으로 구조화된 하나 이상의 애플리케이션들을 개발하기 위해, 다양한 프로그래밍 언어들이 사용될 수 있다. 특정 예에서, 제3의 애플리케이션(예컨대, 특정 플랫폼의 벤더가 아닌 엔티티에 의해 ANDROID™ 또는 IOS™ 소프트웨어 개발 키트(SDK)를 사용하여 개발된 애플리케이션)에는 IOS™, ANDROID™, WINDOWS® Phone, 또는 다른 모바일 운영 체제들과 같은 모바일 운영 체제에서 실행되는 모바일 소프트웨어가 포함될 수 있다. 본 예에서 제3의 애플리케이션은 본 명세서에 기술된 기능을 용이하게 하기 위해 운영 체제에 의해 제공되는 API 콜(API call)들을 호출할 수 있다.
[0225] 따라서, 기계 판독 가능 매체는 많은 형태의 유형의 저장 매체를 취할 수 있다. 비휘발성 저장 매체는, 예를 들어, 도면에 도시된 클라이언트 디바이스, 미디어 게이트웨이, 트랜스코더 등을 구현하는 데 사용될 수 있는 임의의 컴퓨터 디바이스들 등의 저장 디바이스들 중 임의의 저장 디바이스와 같은 광학 또는 자기 디스크들을 포함한다. 휘발성 저장매체는 이와 같은 컴퓨터 플랫폼의 메인 메모리와 같은 동적 메모리를 포함한다. 유형의 전송 매체는 동축 케이블, 즉, 컴퓨터 시스템 내의 버스를 구성하는 와이어들을 포함하는 구리선 및 광섬유를 포함한다. 반송파 전송 매체는 전기 또는 전자기 신호들, 또는 무선 주파수(RF) 및 적외선(IR) 데이터 통신 동안에 생성되는 것과 같은 음향 또는 광파들의 형태를 취할 수 있다. 따라서, 컴퓨터 판독 가능 매체의 일반적인 형태들로는, 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 임의의 다른 자기 매체, CD-ROM, DVD 또는 DVD-ROM, 임의의 다른 광학 매체, 펀치 카드 페이퍼 테이프, 구멍 패턴들을 가진 임의의 다른 물리적 저장 매체, RAM, PROM 및 EPROM, FLASH-EPROM, 임의의 다른 메모리 칩 또는 카트리지, 데이터 또는 명령어들을 전송하는 반송파, 이와 같은 반송파를 전송하는 케이블들 또는 링크들, 또는 컴퓨터가 프로그래밍 코드나 데이터를 판독할 수 있는 임의의 다른 매체 등이 포함된다. 이러한 형태들의 컴퓨터 판독 가능 매체 중 다수는 실행을 위해 하나 이상의 명령어들의 하나 이상의 시퀀스들을 프로세서로 전달하는 것과 관련될 수 있다.
[0226] 위에서 바로 언급한 것을 제외하고는, 명시되거나 예시된 어떠한 것도 청구항들에 인용되었는지 여부에 관계없이, 임의의 컴포넌트, 단계, 피처, 개체, 이익, 이점 또는 이에 상응하는 것을 대중에게 제공하도록 의도되거나 해석되어서는 안 된다.
[0227] 본 명세서에서 사용되는 용어들 및 표현들은 특정한 의미들이 본 명세서에서 달리 명시된 경우를 제외하고는 해당하는 개개의 탐구 및 연구 영역과 관련하여 이와 같은 용어들 및 표현들에 부여된 바와 같은 일반적인 의미를 갖는 것으로 이해될 것이다. 제1 및 제2 등과 같은 관계형 용어들은 엔티티 또는 행동 사이의 임의의 실제 관계나 순서를 반드시 요구하거나 암시하지 않고 하나의 그러한 엔티티 또는 행동을 다른 것과 구별하기 위해서만 사용될 수 있다. "구성한다", "구성하는", "포함한다", "포함하는" 또는 이들의 임의의 다른 변형어는 요소들 또는 단계들의 리스트를 구성하거나 포함하는 처리, 방법, 물품 또는 장치가 그러한 요소들 또는 단계들만을 포함하는 것이 아니라, 그와 같은 처리, 방법, 물품 또는 장치에 명시적으로 나열되지 않았거나 내재되지 않은 다른 요소들 또는 단계들을 포함할 수 있도록 비독점적인 포함을 포함하도록 의도된다. "a" 또는 "an"이 선행하는 요소는, 추가 제약들 없이, 요소를 구성하는 처리, 방법, 물품 또는 장치에서 추가적인 동일한 요소의 존재를 배제하지 않는다.
[0228] 달리 명시되지 않는 한, 다음의 청구항을 포함하여 본 명세서에 기재된 임의 및 모든 측정값들, 값들, 등급들, 포지션들, 크기들, 크기들 및 다른 사양들은 정확하지 않고, 근사값이다. 그와 같은 양은 그들이 관련되는 기능들 및 그들이 관련된 기술 분야에서 관습적인 것과 일치하는 합리적인 범위를 갖도록 의도된다. 예를 들어, 명시적으로 달리 언급하지 않는 한, 파라미터 값 등은 명시된 양 또는 범위에서 ±10%만큼 달라질 수 있다.
[0229] 또한, 전술한 상세한 설명에서, 본 개시의 효율화를 목적으로 다양한 피처들이 다양한 예들에서 함께 그룹화됨을 알 수 있다. 이러한 개시 방법은 청구된 실시예들이 각각의 청구항에 명시적으로 인용된 것보다 많은 피처들을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 보호되어야 하는 주제(subject matter)는 임의의 단일 개시된 예의 모든 피처들보다 적게 존재한다. 따라서, 이하의 청구항들은 상기의 상세한 설명에 통합되고, 각각의 청구항은 별도로 청구되는 주제로서 그 자체로 독립적이다.
[0230] 전술한 것이 최상의 모드로 간주되는 것 및 다른 예들을 기술하였지만, 다양한 변형들이 그 안에서 이루어질 수 있고, 본 명세서에 개시된 주제는 다양한 형태 및 예시들로 구현될 수 있으며, 그것들은 다수의 애플리케이션들에 적용될 수 있고, 이들 중 일부만이 본 명세서에 기술되었다는 것이 이해될 것이다. 다음의 청구항들은 본 개념들의 진정한 범주 내에 속하는 임의 및 모든 수정들 및 변경들을 청구하는 것으로 의도된다.

Claims (20)

  1. 지상 실측값 출력 데이터세트를 생성하는 방법으로서,
    카메라 및 관성 측정 유닛을 포함하는 제1 기록 디바이스를 구성하는 단계와,
    물리적 환경을 통과하는 경로를 가로지르는 모션에서, 상기 제1 기록 디바이스에 의해 포착된 기본 참조 세트를 기록하는 단계 ― 상기 기본 참조 세트는, 상기 카메라에 의해 포착된 일련의 실제 이미지들 및 상기 관성 측정 유닛에 의해 포착된 일련의 실제 모션 데이터를 포함함 ― 와,
    상기 기록된 기본 참조 세트에 기초하여, 헤드셋 궤적을 계산하는 단계 ― 상기 헤드셋 궤적은, 카메라 포즈들의 시퀀스를 포함함 ― 와,
    다항식 보간 모듈을 사용하여, 상기 계산된 헤드셋 궤적과 상기 일련의 실제 모션 데이터를 보간하기 위한 연속 시간 궤적 함수(continuous time trajectory function)를 생성하는 단계와,
    제1 가상 환경을 인식하는 단계와,
    하나 이상의 시뮬레이팅된 카메라들 및 하나 이상의 시뮬레이팅된 관성 측정 유닛 센서들을 포함하는 시뮬레이팅된 센서 구성을 어셈블링하는 단계, 및
    상기 생성된 연속 시간 궤적 함수에 따라 출력 데이터세트를 생성하는 단계 ― 상기 출력 데이터 세트를 생성하여, 상기 출력 데이터세트가, 상기 인식된 제1 가상 환경을 통과하는 가상 경로를 따르는 모션에서, 상기 어셈블링된 시뮬레이팅된 센서 구성을 나타내도록 함 ― 를 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  2. 제1항에 있어서,
    상기 출력 데이터세트를 생성하는 프로세스는,
    상기 하나 이상의 시뮬레이팅된 카메라들 각각에 대해, 상기 인식된 제1 가상 환경과 연관된 일련의 가상 이미지들을 렌더링하는 단계, 및
    상기 하나 이상의 시뮬레이팅된 관성 측정 유닛 센서들 각각에 대해, 일련의 시뮬레이팅된 관성 측정 유닛 데이터를 생성하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  3. 제1항에 있어서,
    상기 연속 시간 궤적 함수를 생성하는 프로세스는,
    기본 함수 및 하나 이상의 피팅 계수들을 포함하는 다항 방정식을 인식하는 단계 ― 상기 기본 함수는, 하나 이상의 체비쇼프 다항식(Chebyshev polynomial)들을 포함함 ― 와,
    제1 시간 간격 동안, 상기 하나 이상의 피팅 계수들에 대한 제1 세트의 값들을 계산하여, 상기 계산된 제1 세트의 값들을 갖는 다항 방정식이, 상기 제1 시간 간격 동안, 상기 계산된 헤드셋 궤적 및 상기 일련의 실제 모션 데이터 둘 모두에 근사하는 제1 곡선을 생성하도록 하는 단계, 및
    후속 시간 간격 동안, 상기 하나 이상의 피팅 계수들에 대한 후속 세트의 값들을 계산하여, 상기 계산된 후속 세트의 값들을 갖는 다항 방정식이, 상기 후속 시간 간격 동안, 상기 계산된 헤드셋 궤적 및 상기 일련의 실제 모션 데이터 둘 모두에 근사하는 후속 곡선을 생성하도록 하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  4. 제1항에 있어서,
    상기 제1 가상 환경과 연관된 가상 맵에 대한 초기 오프셋 포지션 및 초기 방위를 수신하는 단계, 및
    상기 생성된 연속 시간 궤적 함수를 사용하여, 상기 초기 오프셋 포지션 및 상기 초기 방위에 따라 오프셋 가상 경로를 따르는 모션에서 상기 시뮬레이팅된 센서 구성을 나타내는 오프셋 출력 데이터세트를 생성하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  5. 제1 항에 있어서,
    상기 생성된 가상 경로의 적어도 일부에 대응하는 트레이스를, 선택된 제1 가상 환경과 연관된 맵 뷰에 대한 오버레이로서, 디스플레이 상에 제시하는 단계 ― 상기 가상 경로는, 상기 카메라 포즈들의 시퀀스와 상관되는 하나 이상의 가상 웨이포인트들 및 웨이포인트 시선 벡터들에 의해 특징지어짐 ― 와,
    상기 가상 경로에 프레임워크를 적용하는 단계 ― 상기 프레임워크는, 가상 맵과 연관된 복수의 셀들을 포함함 ― 와,
    상기 복수의 셀들 각각에 대해, 시선 뷰들의 세트를 캐시에 저장하는 단계 ― 각각의 뷰는, 상기 제1 가상 환경에 대한 뷰 방향 및 뷰 높이에 의해 특징지어짐 ― 와,
    상기 가상 경로를 따라 제1 가상 웨이포인트를 선택하는 단계 ― 상기 제1 가상 웨이포인트는, 제1 웨이포인트 시선 벡터를 포함함 ― 와,
    제1 가상 웨이포인트에 가장 가까운 제1 셀을 인식하는 단계와,
    상기 제1 웨이포인트 시선 벡터와 가장 근접하게 정렬된 제1 뷰 방향을 선택하는 단계와,
    상기 캐시로부터 검색하고, 상기 제1 뷰 방향과 연관된 제1 시선 뷰를 상기 디스플레이 상에 제시하는 단계와,
    상기 가상 경로의 세그먼트 및 상기 제1 가상 웨이포인트에 따른 상기 세그먼트를 따라 포지셔닝된 범위 아이콘을 상기 디스플레이 상에 제시하는 단계, 및
    상기 제1 셀과 연관된 하나 이상의 2차 시선 뷰들을 제시하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  6. 제2항에 있어서,
    상기 일련의 가상 이미지들을 렌더링하는 프로세스는,
    상기 생성된 연속 시간 궤적 함수에 기초하여, 병렬 처리를 위한 최적의 스플릿들의 수를 결정하는 단계와,
    상기 스플릿들 각각을 병렬 작업으로 처리하는 단계 ― 상기 스플릿들 각각은, 상기 일련의 가상 이미지들 및 시뮬레이팅된 관성 측정 유닛 데이터의 일부분을 생성하고, 각각의 부분은, 고유한 타임스탬프를 가짐 ―, 및
    상기 고유한 타임스탬프에 따라 상기 생성된 부분들을 조합하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  7. 제1항에 있어서,
    상기 기본 참조 세트는, (a) 이미지 샘플 레이트로 상기 카메라에 의해 포착된 상기 일련의 실제 이미지들, 및 (b) 관성 샘플 레이트로 상기 관성 측정 유닛에 의해 포착된 상기 일련의 실제 모션 데이터를 포함하고,
    상기 계산된 헤드셋 궤적은, 기본 샘플 레이트에 따른 상기 카메라 포즈들의 시퀀스를 포함하고, 그리고
    상기 생성된 연속 시간 궤적 함수에 따라 출력 데이터세트를 생성하는 프로세스는,
    임의의 샘플 레이트, 상기 이미지 샘플 레이트, 상기 관성 샘플 레이트, 상기 이미지 샘플 레이트 및 상기 관성 샘플 레이트의 제수(divisor), 및 상기 기본 샘플 레이트로 이루어진 그룹으로부터 선택된 수정된 샘플 레이트를 적용하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  8. 제2항에 있어서,
    상기 일련의 가상 이미지들을 렌더링하는 프로세스는,
    모션 블러 설정에 따라 이미지들의 제1 서브세트에 대한 시뮬레이팅된 노광 시간을 조정하는 단계와,
    시간 오프셋 설정에 따라 이미지들의 제2 서브세트에 대해 상기 하나 이상의 시뮬레이팅된 카메라들 사이의 시간 오프셋을 조정하는 단계, 및
    하나 이상의 롤링 셔터 파라미터들에 따라 이미지들의 선택 서브세트에 대한 롤링 셔터 효과를 적용하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  9. 제2항에 있어서,
    상기 일련의 가상 이미지들을 렌더링하는 프로세스는,
    상기 하나 이상의 시뮬레이팅된 카메라들에 대한 캐릭터 아이 로케이션(character eye location)을 추정하는 단계, 및
    상기 추정된 캐릭터 아이 로케이션에 따라 일련의 캐릭터 신체 부분 이미지들을 렌더링하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  10. 제1항에 있어서,
    상기 인식된 제1 가상 환경은, 가상 맵에 대해 알려진 포지션들에 로케이팅된 하나 이상의 가상 객체들을 포함하고,
    상기 출력 데이터세트를 생성하는 프로세스는,
    상기 가상 경로에 대한 상기 하나 이상의 가상 객체들의 가상 로케이션들을 포함하는 깊이 맵을 계산하는 단계를 더 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  11. 제1항에 있어서,
    상기 시뮬레이팅된 센서 구성을 어셈블링하는 프로세스는,
    시뮬레이팅된 후보 센서 구성과 연관된 하나 이상의 선택 가능한 센서들의 배열체를 나타내는 센서 어레이 모델을 디스플레이 상에 제시하는 단계,
    커서에 의해 배치된 과도 앵커(transient anchor)를 상기 센서 어레이 모델에 대한 오버레이로서 상기 디스플레이 상에 제시하는 단계, 및
    상기 커서에 의한 상기 과도 앵커의 움직임에 반응하여, 상기 디스플레이 상에서 상기 센서 어레이 모델을 회전시키는 단계를 포함하는, 지상 실측값 출력 데이터세트를 생성하는 방법.
  12. 지상 실측값 데이터세트 생성 시스템으로서,
    카메라 및 관성 측정 유닛을 포함하는 제1 기록 디바이스와,
    물리적 환경을 통과하는 경로를 가로지르는 모션에서, 상기 제1 기록 디바이스에 기초하여, 기본 참조 세트를 생성하도록 구성된 궤적 기록 애플리케이션 ― 상기 기본 참조 세트는, 상기 카메라에 의해 포착된 일련의 실제 이미지들 및 상기 관성 측정 유닛에 의해 포착된 일련의 실제 모션 데이터를 포함함 ― 과,
    상기 기록된 기본 참조 세트에 기초하는 계산된 헤드셋 궤적 ― 상기 헤드셋 궤적은, 카메라 포즈들의 시퀀스를 포함함 ― 과,
    상기 계산된 헤드셋 궤적과 상기 일련의 실제 모션 데이터를 보간하기 위한 연속 시간 궤적 함수를 생성하도록 구성된 다항식 보간 모듈과,
    제1 가상 환경을 인식하도록 구성된 환경 컴포넌트와,
    하나 이상의 시뮬레이팅된 카메라들 및 하나 이상의 시뮬레이팅된 관성 측정 유닛 센서들을 포함하는 시뮬레이팅된 센서 구성을 어셈블링하도록 구성된 센서 컴포넌트, 및
    상기 생성된 연속 시간 궤적 함수에 따라 생성된 출력 데이터세트 - 상기 출력 데이터세트는, 상기 인식된 제1 가상 환경을 통과하는 가상 경로를 따른 모션에서 상기 어셈블링된 시뮬레이팅된 센서 구성을 나타냄 - 를 포함하는, 지상 실측값 데이터세트 생성 시스템.
  13. 제12항에 있어서,
    상기 하나 이상의 시뮬레이팅된 카메라들 각각에 대해, 상기 인식된 제1 가상 환경과 연관된 일련의 가상 이미지들을 렌더링하도록 구성된 이미지 렌더링 애플리케이션을 더 포함하는, 지상 실측값 데이터세트 생성 시스템.
  14. 제12항에 있어서,
    상기 출력 데이터세트는, (a) 임의의 샘플 레이트, (b) 상기 제1 기록 디바이스의 상기 카메라와 연관된 이미지 샘플 레이트, (c) 상기 제1 기록 디바이스의 상기 관성 측정 유닛과 연관된 관성 샘플 레이트, (d) 상기 이미지 샘플 레이트 및 상기 관성 샘플 레이트의 제수, 및 (e) 상기 계산된 헤드셋 궤적의 카메라 포즈들의 시퀀스와 연관된 기본 샘플 레이트로 이루어지는 그룹으로부터 선택된 수정된 샘플 레이트에 따라 생성되는, 지상 실측값 데이터세트 생성 시스템.
  15. 제12항에 있어서,
    상기 다항식 보간 모듈은,
    기본 함수 및 하나 이상의 피팅 계수들을 포함하는 다항 방정식을 인식하고 ― 상기 기본 함수는, 하나 이상의 체비쇼프 다항식(Chebyshev polynomial)들을 포함함 ― ,
    제1 시간 간격 동안, 상기 하나 이상의 피팅 계수들에 대한 제1 세트의 값들을 계산하여, 상기 계산된 제1 세트의 값들을 갖는 상기 다항 방정식이, 상기 제1 시간 간격 동안, 상기 계산된 헤드셋 궤적 및 상기 일련의 실제 모션 데이터 둘 모두에 근사하는 제1 곡선을 생성하도록 하고, 그리고
    후속 시간 간격 동안, 상기 하나 이상의 피팅 계수들에 대한 후속 세트의 값들을 계산하여, 상기 계산된 후속 세트의 값들을 갖는 상기 다항 방정식이, 상기 후속 시간 간격 동안, 상기 계산된 헤드셋 궤적 및 상기 일련의 실제 모션 데이터 둘 모두에 근사하는 후속 곡선을 생성하도록 추가로 구성되는, 지상 실측값 데이터세트 생성 시스템.
  16. 제12항에 있어서,
    상기 센서 컴포넌트는,
    상기 생성된 가상 경로의 적어도 일부분에 대응하는 트레이스를, 선택된 제1 가상 환경과 연관된 맵 뷰에 대한 오버레이로서, 디스플레이 상에 제시하고 ― 상기 가상 경로는, 상기 카메라 포즈들의 시퀀스와 상관되는 하나 이상의 가상 웨이포인트들 및 웨이포인트 시선 벡터들에 의해 특징지어짐 ― ,
    상기 가상 경로에 프레임워크를 적용하고 ― 상기 프레임워크는, 가상 맵과 연관된 복수의 셀들을 포함함 ― ,
    상기 복수의 셀들 각각에 대해, 시선 뷰들의 세트를 캐시에 저장하고 ― 각각의 뷰는, 상기 제1 가상 환경에 대한 뷰 방향 및 뷰 높이에 의해 특징지어짐 ― ,
    상기 가상 경로를 따라 제1 가상 웨이포인트를 선택하고 ― 상기 제1 가상 웨이포인트는, 제1 웨이포인트 시선 벡터를 포함함 ― ,
    제1 가상 웨이포인트에 가장 가까운 제1 셀을 인식하고,
    상기 제1 웨이포인트 시선 벡터와 가장 근접하게 정렬된 제1 뷰 방향을 선택하고,
    상기 캐시로부터 검색하고, 상기 제1 뷰 방향과 연관된 제1 시선 뷰를 상기 디스플레이 상에 제시하고,
    상기 가상 경로의 세그먼트 및 상기 제1 가상 웨이포인트에 따른 상기 세그먼트를 따라 포지셔닝된 범위 아이콘을 상기 디스플레이 상에 제시하고, 그리고
    상기 제1 셀과 연관된 하나 이상의 2차 시선 뷰들을 제시하도록 추가 구성되는, 지상 실측값 데이터세트 생성 시스템.
  17. 제12항에 있어서,
    병렬화 유틸리티를 더 포함하며, 상기 병렬화 유틸리티는,
    상기 생성된 연속 시간 궤적 함수에 기초하여, 병렬 처리를 위한 최적의 스플릿들의 수를 결정하고,
    상기 스플릿들 각각을 병렬 작업으로 처리하고 ― 상기 스플릿들 각각은, 상기 일련의 가상 이미지들 및 시뮬레이팅된 관성 측정 유닛 데이터의 일부분을 생성하고, 각각의 부분은, 고유한 타임스탬프를 가짐 ― , 그리고
    상기 고유한 타임스탬프에 따라 상기 생성된 부분들을 조합하도록 구성되는, 지상 실측값 데이터세트 생성 시스템.
  18. 프로그램 코드를 저장하는 비일시적 컴퓨터 판독 가능 매체로서,
    상기 프로그램 코드는, 실행 시에, 전자 프로세서로 하여금,
    카메라 및 관성 측정 유닛을 포함하는 제1 기록 디바이스를 구성하는 단계와,
    물리적 환경을 통과하는 경로를 가로지르는 모션에서, 상기 제1 기록 디바이스에 의해 포착된 기본 참조 세트를 기록하는 단계 ― 상기 기본 참조 세트는, 상기 카메라에 의해 포착된 일련의 실제 이미지들 및 상기 관성 측정 유닛에 의해 포착된 일련의 실제 모션 데이터를 포함함 ― 와,
    상기 기록된 기본 참조 세트에 기초하여, 헤드셋 궤적을 계산하는 단계 ― 상기 헤드셋 궤적은, 카메라 포즈들의 시퀀스를 포함함 ― 와,
    다항식 보간 모듈을 사용하여, 상기 계산된 헤드셋 궤적과 상기 일련의 실제 모션 데이터를 보간하기 위한 연속 시간 궤적 함수(continuous time trajectory function)를 생성하는 단계와,
    제1 가상 환경을 인식하는 단계와,
    하나 이상의 시뮬레이팅된 카메라들 및 하나 이상의 시뮬레이팅된 관성 측정 유닛 센서들을 포함하는 시뮬레이팅된 센서 구성을 어셈블링하는 단계, 및
    상기 생성된 연속 시간 궤적 함수에 따라 출력 데이터세트를 생성하는 단계 ― 상기 출력 데이터 세트를 생성하여, 상기 출력 데이터세트가, 상기 인식된 제1 가상 환경을 통과하는 가상 경로를 따르는 모션에서, 상기 어셈블링된 시뮬레이팅된 센서 구성을 나타내도록 함 ― 를 수행하게 하도록 동작 가능한, 비일시적 컴퓨터 판독 가능 매체.
  19. 제18항에 있어서,
    상기 연속 시간 궤적 함수를 생성하는 프로세스는,
    기본 함수 및 하나 이상의 피팅 계수들을 포함하는 다항 방정식을 인식하는 단계 ― 상기 기본 함수는, 하나 이상의 체비쇼프 다항식(Chebyshev polynomial)들을 포함함 ― 와,
    제1 시간 간격 동안, 상기 하나 이상의 피팅 계수들에 대한 제1 세트의 값들을 계산하여, 상기 계산된 제1 세트의 값들을 갖는 다항 방정식이, 상기 제1 시간 간격 동안, 상기 계산된 헤드셋 궤적 및 상기 일련의 실제 모션 데이터 둘 모두에 근사하는 제1 곡선을 생성하도록 하는 단계, 및
    후속 시간 간격 동안, 상기 하나 이상의 피팅 계수들에 대한 후속 세트의 값들을 계산하여, 상기 계산된 후속 세트의 값들을 갖는 다항 방정식이, 상기 후속 시간 간격 동안, 상기 계산된 헤드셋 궤적 및 상기 일련의 실제 모션 데이터 둘 모두에 근사하는 후속 곡선을 생성하도록 하는 단계를 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  20. 제18항에 있어서,
    상기 프로그램 코드는, 실행 시에, 상기 전자 프로세서로 하여금,
    상기 생성된 가상 경로의 적어도 일부분에 대응하는 트레이스를, 선택된 제1 가상 환경과 연관된 맵 뷰에 대한 오버레이로서, 디스플레이 상에 제시하는 단계 ― 상기 가상 경로는, 상기 카메라 포즈들의 시퀀스와 상관되는 하나 이상의 가상 웨이포인트들 및 웨이포인트 시선 벡터들에 의해 특징지어짐 ― 와,
    상기 가상 경로에 프레임워크를 적용하는 단계 ― 상기 프레임워크는, 가상 맵과 연관된 복수의 셀들을 포함함 ― 와,
    상기 복수의 셀들 각각에 대해, 시선 뷰들의 세트를 캐시에 저장하는 단계 ― 각각의 뷰는, 상기 제1 가상 환경에 대한 뷰 방향 및 뷰 높이에 의해 특징지어짐 ― 와,
    상기 가상 경로를 따라 제1 가상 웨이포인트를 선택하는 단계 ― 상기 제1 가상 웨이포인트는, 제1 웨이포인트 시선 벡터를 포함함 ― 와,
    제1 가상 웨이포인트에 가장 가까운 제1 셀을 인식하는 단계와,
    상기 제1 웨이포인트 시선 벡터와 가장 근접하게 정렬된 제1 뷰 방향을 선택하는 단계와,
    상기 캐시로부터 검색하고, 상기 제1 뷰 방향과 연관된 제1 시선 뷰를 상기 디스플레이 상에 제시하는 단계와,
    상기 가상 경로의 세그먼트 및 상기 제1 가상 웨이포인트에 따른 상기 세그먼트를 따라 포지셔닝된 범위 아이콘을 상기 디스플레이 상에 제시하는 단계, 및
    상기 제1 셀과 연관된 하나 이상의 2차 시선 뷰들을 제시하는 단계를 추가로 수행하게 하도록 동작 가능한, 비일시적 컴퓨터 판독 가능 매체.
KR1020237003101A 2020-06-30 2021-06-09 가상 현실 경험들을 위한 지상 실측값 데이터세트들의 생성 KR20230028532A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063046150P 2020-06-30 2020-06-30
US63/046,150 2020-06-30
PCT/US2021/036555 WO2022005717A1 (en) 2020-06-30 2021-06-09 Generating ground truth datasets for virtual reality experiences

Publications (1)

Publication Number Publication Date
KR20230028532A true KR20230028532A (ko) 2023-02-28

Family

ID=76731070

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237003101A KR20230028532A (ko) 2020-06-30 2021-06-09 가상 현실 경험들을 위한 지상 실측값 데이터세트들의 생성

Country Status (5)

Country Link
US (2) US11417052B2 (ko)
EP (1) EP4172955A1 (ko)
KR (1) KR20230028532A (ko)
CN (1) CN115956259A (ko)
WO (1) WO2022005717A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3809186B1 (en) * 2019-10-18 2022-12-07 HTC Corporation Head-mounted display device and adjusting method
WO2022005717A1 (en) 2020-06-30 2022-01-06 Snap Inc. Generating ground truth datasets for virtual reality experiences
US11360733B2 (en) 2020-09-10 2022-06-14 Snap Inc. Colocated shared augmented reality without shared backend
US11949527B2 (en) 2022-04-25 2024-04-02 Snap Inc. Shared augmented reality experience in video chat
US20240071008A1 (en) * 2022-08-31 2024-02-29 Snap Inc. Generating immersive augmented reality experiences from existing images and videos
US20240071006A1 (en) * 2022-08-31 2024-02-29 Snap Inc. Mixing and matching volumetric contents for new augmented reality experiences
CN116563505B (zh) * 2023-05-09 2024-04-05 阿波罗智联(北京)科技有限公司 虚拟形象生成方法、装置、电子设备以及存储介质
CN116309850B (zh) * 2023-05-17 2023-08-08 中数元宇数字科技(上海)有限公司 一种虚拟触控识别方法、设备及存储介质
CN116502923B (zh) * 2023-06-27 2023-09-01 南昌菱形信息技术有限公司 虚拟仿真教学实训平台的仿真方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103576578B (zh) * 2013-11-05 2017-04-12 小米科技有限责任公司 一种采用耳机线对终端进行控制的方法、装置和设备
WO2016014233A1 (en) * 2014-07-25 2016-01-28 mindHIVE Inc. Real-time immersive mediated reality experiences
US9824498B2 (en) * 2014-12-30 2017-11-21 Sony Interactive Entertainment Inc. Scanning display system in head-mounted display for virtual reality
CN105488801B (zh) * 2015-12-01 2019-02-15 深圳华强数码电影有限公司 球幕电影实拍和三维虚拟场景结合的方法及系统
EP3443749B1 (en) * 2016-05-06 2021-09-15 SZ DJI Technology Co., Ltd. Systems and methods for video processing and display
CN110603573B (zh) * 2017-04-11 2022-12-09 株式会社马斯科图 虚拟现实提供系统、三维显示数据提供装置、虚拟空间提供系统和程序
WO2022005717A1 (en) 2020-06-30 2022-01-06 Snap Inc. Generating ground truth datasets for virtual reality experiences

Also Published As

Publication number Publication date
CN115956259A (zh) 2023-04-11
US20220366639A1 (en) 2022-11-17
US11887246B2 (en) 2024-01-30
US20210407178A1 (en) 2021-12-30
WO2022005717A1 (en) 2022-01-06
EP4172955A1 (en) 2023-05-03
US11417052B2 (en) 2022-08-16

Similar Documents

Publication Publication Date Title
US11531402B1 (en) Bimanual gestures for controlling virtual and graphical elements
US20220206588A1 (en) Micro hand gestures for controlling virtual and graphical elements
US11887246B2 (en) Generating ground truth datasets for virtual reality experiences
EP4342196A1 (en) Beacons for localization and content delivery to wearable devices
KR20230026505A (ko) 객체 조작을 사용한 증강 현실 경험들
EP4320502A1 (en) Bimanual interactions between mapped hand regions for controlling virtual and graphical elements
KR20230025914A (ko) 음성 및 텍스트 캡션들을 사용한 증강 현실 경험들
CN116324677A (zh) 响应于检测到的手势的非接触式照片捕获
US11520399B2 (en) Interactive augmented reality experiences using positional tracking
US11277597B1 (en) Marker-based guided AR experience
US11302077B2 (en) Augmented reality guidance that generates guidance markers
US20210405772A1 (en) Augmented reality eyewear 3d painting
KR20230029923A (ko) 롤링 셔터 카메라들을 사용하는 시각적 관성 추적
US20210405363A1 (en) Augmented reality experiences using social distancing
KR20230113374A (ko) 머리-관련 전달 함수
WO2021252242A2 (en) Augmented reality environment enhancement
KR20230025913A (ko) 기분 공유를 갖는 증강 현실 안경류
KR20230073336A (ko) 가상 아이웨어 빔들을 사용한 증강 현실 게이밍
CN115812189A (zh) 用于视觉惯性里程计系统的动态传感器选择
US20240077984A1 (en) Recording following behaviors between virtual objects and user avatars in ar experiences