KR20220119123A - 매핑 장치로부터의 로컬 지도 병합 - Google Patents

매핑 장치로부터의 로컬 지도 병합 Download PDF

Info

Publication number
KR20220119123A
KR20220119123A KR1020227025230A KR20227025230A KR20220119123A KR 20220119123 A KR20220119123 A KR 20220119123A KR 1020227025230 A KR1020227025230 A KR 1020227025230A KR 20227025230 A KR20227025230 A KR 20227025230A KR 20220119123 A KR20220119123 A KR 20220119123A
Authority
KR
South Korea
Prior art keywords
map
client device
image data
node
module
Prior art date
Application number
KR1020227025230A
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 KR20220119123A publication Critical patent/KR20220119123A/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/65Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/216Input arrangements for video game devices characterised by their sensors, purposes or types using geographical information, e.g. location of the game device or player using GPS
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/67Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor adaptively or by learning from player actions, e.g. skill level adjustment or by storing successful combat sequences for re-use
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/579Depth or shape recovery from multiple images from motion
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/53Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
    • A63F13/537Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen
    • A63F13/5378Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen for displaying an additional top view, e.g. radar screens or maps
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8082Virtual reality
    • 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/20072Graph-based image processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Computer Graphics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Optics & Photonics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)
  • Stacking Of Articles And Auxiliary Devices (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Instructional Devices (AREA)

Abstract

증강 현실 시스템은 클라이언트 장치 상에 컴퓨터 매개 현실을 생성한다. 클라이언트 장치는 환경의 이미지 데이터를 캡처하도록 구성된 카메라를 포함하는 센서를 갖는다. 증강 현실 시스템은 캡처된 이미지 데이터에 기초하여 클라이언트 장치 주변 환경의 제1 3D 지도를 생성한다. 서버는 환경의 제2 클라이언트 장치로부터 캡처한 이미지 데이터를 수신하고 환경의 제2 3D 지도를 생성한다. 서버는 제1 및 제2 3D 지도를 단일 3D 지도로 함께 연결한다. 단일 3D 지도는 클라이언트 장치에서 캡처된 이미지 데이터에 의해 생성된 3D 지도를 나타내는 노드 및 노드 간의 변환을 나타내는 에지를 사용하는 현실 세계의 그래픽 표현일 수 있다.

Description

매핑 장치로부터의 로컬 지도 병합
(관련 출원에 대한 상호 참조)
본 출원은 그 전체가 참고로서 통합된, 2019년 12월 20일에 출원된 미국 가출원 번호 제62/952,036호의 이익을 주장한다.
(본 발명의 분야)
본 발명은 컴퓨터 매개 현실 시스템(computer-mediated reality system)에 관한 것이며, 보다 상세하게는 클라이언트 장치에 의해 수집된 데이터로부터 생성된 3D 지도들을 단일 3D 지도로 연결하는 증강 현실(AR: augmented reality) 시스템에 관한 것이다.
병렬 현실 게임은 현실 세계의 적어도 일 부분과 평행한 공유 가상 세계를 제공할 수 있고, 한 커뮤니티의 플레이어들을 끌어들일 수 있는 다양한 상호작용을 호스팅할 수 있다. 현실 세계의 적어도 일 부분과 평행한 지형을 갖는 가상 세계를 제공하는 것은 플레이어가 현실 세계를 탐색함으로써 가상 세계를 탐색하는 것을 가능하게 해준다. 플레이하는 동안, 플레이어는 컴퓨터 매개 현실 기술을 사용하여 그들의 환경에 대한 플레이어의 시각적 또는 청각적 인식을 더하거나, 빼거나 또는 다른 방식으로 변경하는 휴대용 또는 웨어러블 장치를 통해 가상 세계를 볼 수 있다.
그러나, 환경에 대한 플레이어의 시각적 인식을 정확하게 변경하는 것은 일반적으로 현실 세계에서의 플레이어의 위치를 정확하게 파악하는 것을 수반한다. 전통적인 측위 장치(positioning device)가 플레이어의 위치를 상당한 오차 범위 없이 판정할 만큼 충분히 정확하지는 않기 때문에 위치를 확실하게 알아내는 것은 어려울 수 있다. 따라서, 미래에 모바일 장치의 위치를 판정하는데 도움을 주기 위해 플레이어의 모바일 장치의 카메라에 의해 캡처된 현실 세계를 매핑(mapping)하는 시스템이 요구된다.
위치 기반 병렬 현실 게임에서, 플레이어는 스마트폰과 같은 위치 인식 클라이언트 장치와 함께 현실 세계를 이동함으로써 가상 세계를 탐색한다. 많은 클라이언트 장치는 온-디바이스 카메라(들)에 의해 캡처된 이미지 데이터를 사용하여 플레이어의 환경을 매핑할 수 있는데, 이는 플레이어의 위치를 판정하고 캡처된 이미지 데이터 상에 오버레이할 증강 현실(AR) 이미지를 결정하기 위한 것일 수 있다. 이러한 지도들은 동일한 환경을 설명할 수도 있지만, 다양한 클라이언트 장치에서 캡처되기 때문에, 지도는 서로 다른 좌표 공간을 가질 수 있고 환경의 서로 다른 뷰(view)를 캡처할 수 있다. 환경의 단일 3D 지도를 생성하기 위해, 생성된 지도들이 이미지 데이터, 위치 데이터 및/또는 이러한 데이터를 캡처했던 클라이언트 장치에 기초하여 함께 연결될 수 있다.
특정 실시예에 따르면, 네트워크에 의해 복수의 클라이언트 장치에 연결된 시스템은 제1 클라이언트 장치에 통합된 카메라에 의해 캡처된 제1 이미지 데이터 세트를 수신한다. 제1 이미지 데이터 세트는 제1 클라이언트 장치 주변의 제1 영역에 대한 거의 실시간 뷰를 나타낸다. 이 시스템은 제1 이미지 데이터 세트에 기초하여 제1 3D 지도를 생성한다. 이 3D 지도는 제1 클라이언트 장치 주변의 제1 영역을 공간적으로 설명한다. 이 시스템은 제2 클라이언트 장치 주변의 제2 영역의 거의 실시간 뷰를 나타내는 제2 이미지 데이터 세트를 수신하고, 제2 이미지 데이터 세트에 기초하여 제2 3D 지도를 생성한다. 이 시스템은 제1 및 제2 3D 지도를 분석하여 공통 특징부를 식별하고 이 공통 특징부에 기초하여 제1 및 제2 3D 지도를 단일 3D 지도로 연결한다.
이 단일 3D 지도는 각각의 노드가 하나의 클라이언트 장치에서 캡처된 이미지 데이터에 의해 생성된 하나의 3D 지도를 나타내는 노드들의 그래프일 수 있다. 각각의 노드는 이미지 데이터를 캡처한 클라이언트 장치에 기초하여 서로 다른 좌표 공간과 연관될 수 있고, 그래프는 좌표 공간 사이의 변환을 나타내는 에지를 노드 사이에 포함할 수 있다. 이 시스템은 이러한 그래프를 사용하여 환경 내의 클라이언트 장치의 위치를 판정할 수 있다.
이들 및 다른 특징, 양태 및 이점은 아래의 설명 및 첨부된 청구범위를 참조하여 더 잘 이해될 수 있다. 첨부된 도면은 특정 실시예를 예시하고, 아래의 설명과 함께 다양한 원리를 설명하는 역할을 한다. 그러나, 이 도면들이 제한적인 것으로 간주되어서는 안 된다. 오히려, 보호 범위는 청구 범위로부터 판정되어야 한다.
도 1은 일 실시예에 따른, 증강 현실 데이터를 생성하고 디스플레이하기 위한 네트워크 컴퓨팅 환경을 도시한다.
도 2는 일 실시예에 따른 원 월드 매핑 모듈(120)의 블록도이다.
도 3은 일 실시예에 따른, 증강 현실 데이터를 생성 및 디스플레이하기 위해 AR 컴퓨팅 시스템에 의해 실행 가능한 프로세스를 도시하는 흐름도이다.
도 4는 일 실시예에 따른, 위치 기반 병렬 현실 게임의 플레이어를 위한 게임 보드로서 역할할 수 있는 현실 세계와 평행한 가상 세계의 개념도를 도시한다.
도 5는 일 실시예에 따른, 제1 3D 지도 및 제2 3D 지도를 환경의 단일 3D 지도로 함께 연결하는 것을 도시하는 흐름도이다.
도 6은 일 실시예에 따른, 동기화에 기초하여 환경의 단일 3D 지도를 생성하는 것을 도시하는 흐름도이다.
도 7은 일 실시예에 따른, 클라이언트 장치 또는 서버로서 사용하기에 적합한 예시적인 컴퓨터를 도시하는 하이레벨 블록도이다.
시스템 및 방법은 2개 이상의 로컬 지도를 단일 지도로 함께 연결한다. 이 단일 지도는 현실 세계와 평행한 가상 세계에서 증강 현실 상호작용을 가능하게 하기 위해 사용될 수 있다. 다양한 실시예에서, 로컬 지도는 포함된 공통 특징부, 로컬 지도를 생성했던 클라이언트 장치의 상대 위치를 나타내는 동기화 데이터, 또는 이 둘 모두에 기초하여 함께 스티치(stitch)된다.
일 실시예에서, 이 시스템은 3D 지도를 생성하기 위해 클라이언트 장치(예를 들어, 휴대용 또는 착용형 전자 장치) 상의 글로벌 측위 시스템(GPS: Global Positioning System) 좌표 및 이미지를 사용한다. 3D 지도는 카메라 레코딩 모듈 및 가속도계 또는 자이로스코프와 같은 관성 측정 장치(IMU)로 구성된다. 이미지 및 GPS 좌표는 서버로 전송된다. 서버 및 클라이언트 장치는 데이터를 함께 처리하여 객체 및 지오메트리(geometry)를 형성하고 뿐만 아니라 잠재적인 상호작용을 판정한다. 잠재적인 상호작용의 예는 가상 요소를 이동시키는 것과 같이, AR 애니메이션을 가지는 룸에서 이루어지는 상호작용을 포함한다.
이미지와 3D 지도를 함께 사용함으로써, 이 시스템은 신경망 또는 다른 유형의 모델을 사용하여 객체 탐지 및 지오메트리 추정을 달성할 수 있다. 신경망의 예는 연결된 단순 유닛(인공 뉴런)의 대규모 컬렉션(collection)을 사용하는 머신 러닝(machine learning)에 사용되는 계산 모델이다. 이 단순 유닛은 소프트웨어에서 함께 연결되며, 결합된 입력 신호가 충분히 큰 경우, 이 유닛들은 그들 자체의 출력 신호를 발생(fire)시킨다. 이 시스템은 AR 데이터를 맥락적으로 이해하기 위해 딥 러닝(예컨대, 다층 신경망)을 사용할 수 있다. 다른 유형의 모델은 다른 통계 모델 또는 다른 머신 러닝 모델을 포함할 수 있다.
이 시스템은 (예를 들어, 로컬 지도들을 함께 연결함으로써) 하나 이상의 글로벌 지도를 생성하기 위해 로컬 지도들을 종합한다. 종합된 지도는 서버 상의 단일 글로벌 지도로 함께 결합되어 환경 또는 "세계"의 디지털 지도를 제공한다. 예를 들어, 하나 이상의 장치에 의해 생성된 2개의 로컬 지도는 서로 다른 좌표 공간의 노드로 표현될 수 있다. 유사한 GPS 좌표의 임의의 조합에 대해, 사전 결정된 임계값 내에서 매칭하는 로컬 지도의 부분들을 포함하는 유사한 이미지 및 유사한 센서 데이터는 (예컨대, 공간에서 "오버랩하는") 공통 특징부를 포함하는 것으로 판정될 수 있다. 따라서, 이 시스템은 노드의 좌표 공간 간의 변환을 나타내는 에지를 통해 두 노드를 함께 연결할 수 있다. 연결된 노드들은 클라이언트 장치에 의해 촬영된 이미지를 사용하여 만들어진 다른 로컬 지도를 나타내는 노드들의 그래프에 포함될 수 있다. 이 그래프는 단일 글로벌 지도를 나타낼 수 있고 복수의 클라이언트 장치에 표현되는 가상 세계 간의 일관성을 유지하는데 도움을 줄 수 있다.
또한, 일부 실시예에서, 이 시스템은 로컬 지도 내에 포함된 에지 또는 공통 특징부에 기초하여 로컬 지도를 하나의 세계 지도로 함께 스티치할 수 있다. 이 세계 지도는 특정 GPS 좌표에 가상 세계에 대한 애니메이션을 저장할 수 있고, (예컨대, 1피트/30센티미터 정도의 해상도를 갖는) 3D 포인트 및 시각적 이미지를 통해 세계 내의 특정 장소에 이르기까지 추가로 인덱싱될 수 있다. 다른 예에서, 시스템은 클라이언트 장치가 환경을 횡단할 때 로컬 지도를 생성했던 클라이언트 장치의 상대 위치를 나타내는 동기화 데이터에 기초하여 로컬 지도를 함께 스티치할 수 있다.
예시적인 프로세스는 데이터를 클라우드에 매핑하고 클라우드로부터 데이터를 매핑한다. 일 실시예에서, 지도는 3D 픽셀과 유사한 방식으로 세계를 나타내는, 포인트 클라우드와 같은 공간 내의 3D 포인트의 컬렉션이다. 이미지 데이터는 사용 가능하고 유용할 때 3D 지도와 함께 전송된다. 특정 예는 이미지 데이터 없이 3D 지도 데이터를 전송한다.
다양한 실시예에서, 클라이언트 장치는 3D 지도를 생성하기 위해 프로세서에 의해 실행되는 3D 알고리즘을 사용한다. 클라이언트 장치는 이미지, 3D 지도, GPS 데이터 및 임의의 다른 센서 데이터(예컨대, IMU 데이터, 임의의 다른 위치 데이터)를 효율적인 방식으로 전송한다. 예를 들어, 이미지는 전송 또는 처리에 방해가 되지 않도록 선택적으로 전송될 수 있다. 일 예에서, 이미지는 그들이 환경의 새로운 관점(viewpoint)을 보여줄 때 선택적으로 전송되지만, 그들이 단지 환경 내에서 이전에 본 관점을 보여줄 때는 전송되지 않을 수 있다. 예를 들어, 이미지는 클라이언트 장치의 카메라의 시야가 과거 또는 최근 카메라 포즈로부터의 이전 이미지와 최소한의 오버랩을 가지는 경우, 또는 이미지 내의 관점이 물체의 예상되는 움직임에 따라 일정 시간 동안 관찰되지 않은 경우 시스템에 의해 전송되도록 지정된다. 다른 예로서, 현재(또는 실질적으로 중첩되는) 관점으로부터의 이전 이미지가 제공된 이후 임계 크기를 초과하는 시간이 경과된 경우 이미지가 제공될 수 있다. 이것은 지도와 연관된 저장된 이미지가 그 이미지에 의해 묘사된 현실 세계 위치의 보다 현재의(또는 적어도 최근의) 상태를 반영하도록 업데이트되게 할 수 있다.
다양한 실시예에서, 서버와 같은 클라우드측 장치는 3D 데이터 및 이미지를 사용하여 객체를 탐지하고 이미지 내에 묘사된 현실 세계 환경의 지오메트리를 추정하는 실시간 탐지 시스템을 포함한다. 예를 들어, 포토리얼리스틱(photorealistic) 하지 않은 방의 3D 지도(예컨대, 준밀도 및/또는 고밀도 3D 재구성)는 이미지들을 통해 확인 가능할 수 있다. 서버는 이미지와 3D 데이터를 탐지 시스템을 통해 함께 융합하여 세계의 일관되고 쉽게 인덱싱된 3D 지도 구축하거나 또는 GPS 데이터를 사용하여 현실 세계 지도를 합성한다. 저장된 후, 현실 세계 지도는 이전에 저장된 애니메이션 및 기타 가상 객체의 위치를 찾기 위해 검색될 수 있다.
다양한 실시예에서, 매핑 및 추적은 클라이언트 장치에서 수행된다. 클라이언트 장치는 현실 세계에 대한 클라이언트 장치의 카메라의 위치와 함께, (세계를 디지털화하는) 현실 세계의 희소 재구성(sparse reconstruction)을 수집한다. 매핑은 포인트 클라우드 또는 3D 포인트의 컬렉션을 생성하는 것을 포함한다. 클라이언트 장치는 포인트 클라우드 정보 및 GPS 데이터를 직렬화하고 전송함으로써, 희소 표현(sparse representation)을 서버로 다시 전송한다. 클라우드 프로세싱은 멀티플레이어 기능(실시간 또는 거의 실시간으로 독립된 클라이언트 장치들 간에 지도 데이터를 공유하는 것), 작동하는 물리적 메모리를 갖는 것(장치 상에 로컬로 저장되지 않은 미래 경험을 위한 지도 및 애니메이션 데이터를 저장하는 것) 및 객체 탐지를 가능하게 해준다.
서버는 지도 및 프레임의 데이터베이스를 포함한다. 각 프레임은 이미지를 형성하는 하나 이상의 픽셀과 같은 센서 데이터, 좌표 공간에 대한 포즈, 카메라 고유 특성(예컨대, 초점 거리와 같은 카메라 파라미터), 특징점 및/또는 특징 설명자 등을 포함한다. 서버는 GPS 데이터를 사용하여 현실 세계 지도가 현실 세계 위치에 대해 이전에 저장되었는지 판정한다. 위치가 확인되면, 서버는 저장된 지도를 클라이언트 장치로 전송할 수 있다.
증강 현실 컴퓨팅 시스템
도 1은 일 실시예에 따른, 네트워크(104)를 통해 액세스되는 요소와 협력하는 클라이언트 장치(102)를 포함하는 AR 컴퓨팅 시스템(100)의 블록도이다. 예를 들어, 이러한 요소는 AR 데이터를 생성하는 서버의 구성요소일 수 있다. 클라이언트 장치(102)는 일부 실시예에서 사용자가 병렬 현실 게임(예를 들어, 증강 현실 게임) 또는 다른 증강 현실 시스템에 액세스하기 위해 사용할 수 있는 컴퓨팅 장치이다. 클라이언트 장치는 온-디바이스 카메라를 통한 이미지 데이터(이미지라고도 함), 3D 데이터, 및 GPS 데이터 등을 캡처한다. 클라이언트 장치(102)는 예를 들어 게임 엔진(106)(예를 들어, 유니티(UNITY®) 게임 엔진 또는 다른 물리/렌더링 엔진) 및 AR 플랫폼(108)을 포함한다.
게임 엔진(106)은 클라이언트 장치(102)에서 병렬 현실 게임(또는 다른 AR 프로그램)을 용이하게 할 수 있다. 예를 들어, 게임 엔진(106)은 사용자가 클라이언트 장치(102)의 인터페이스를 통해 정보를 입력하는 것, 또는 사용자가 현실 세계에서 클라이언트 장치를 이동시키는 것과 같은, 클라이언트 장치(102)를 통한 사용자에 의해 이루어진 상호작용을 수신할 수 있다. 게임 엔진(106)은 이러한 상호작용에 기초하여 인터페이스를 통해 병렬 현실 게임에 대한 정보를 사용자에게 디스플레이할 수 있다. 게임 엔진(106)은 현실 세계 내의 위치에 대응하는 가상 세계 내의 가상 위치에서 이용 가능한 가상 요소를 포함하는, 병렬 현실 게임에 대한 정보를 로컬에 저장할 수 있다. 대안으로서, 게임 엔진(106)은 서버에서 가상 세계를 설명하는 게임 보드 정보에 액세스하고 클라이언트 장치(102)에서 병렬 현실 게임을 용이하게 하기 위해 서버와 지속적으로 통신할 수 있다. 병렬 현실 게임을 위한 가상 세계와 현실 세계 간의 병렬성은 도 4와 관련지어 더 설명된다.
AR 플랫폼(108)은 클라이언트 장치(102)에 의해 캡처된 데이터에 대한 세그먼트화(segmentation) 및 객체 인식을 실행할 수 있다. AR 플랫폼은 복합 비전 모듈(110), 동시 위치 파악 및 매핑 모듈(112), 지도 검색 모듈(114) 및 딥 러닝 모듈(116)을 포함한다. 일부 실시예에서, AR 플랫폼은 대안의 또는 추가적인 모듈을 포함한다.
복합 컴퓨터 비전 모듈(110)은 클라이언트 측 이미지 프로세싱을 실행한다. 복합 컴퓨터 비전 모듈(110)은 클라이언트 장치(102) 상의 카메라에 의해 캡처된 이미지 데이터를 수신하고 그 이미지 데이터에 대한 이미지 프로세싱을 수행한다. 이미지 프로세싱은 이미지 세그먼트화 및 로컬 3D 추정을 포함할 수 있다.
동시 위치 파악 및 매핑(예를 들어, SLAM) 모듈(112)은 클라이언트 장치(102)에 의해 캡처된 이미지 데이터 및 GPS 데이터에 기초하여 클라이언트 장치(102) 주변의 환경을 매핑한다. 특히, SLAM 모듈(112)은 클라이언트 장치(102)에 의해 캡처된 데이터에서 보여지는 현실 세계의 부분을 각각 나타내는 하나 이상의 로컬 지도를 생성한다. 또한, SLAM 모듈(112)은 일부 실시예에서 환경에서의 클라이언트 장치(102)의 위치를 판정할 수 있다. SLAM 모듈(112)은 점, 선 및 평면 지오메트리를 포함할 수 있는 로컬 지도를 생성하는 매핑 시스템을 포함한다. 또한, SLAM 모듈(112)은 포인트 클라우드를 구축하고 공간에서 카메라(예를 들어, 클라이언트 장치(102))의 위치를 찾기 위해 클라이언트 장치(102)에 의해 캡처된 추적 정보를 사용할 수 있다. 다른 실시예에서, SLAM 모듈은 이미지 데이터 및 추적 정보를 사용하여 지도를 구축할 수 있다. 또한, SLAM 모듈(112)은 클라이언트 장치(102)의 디스플레이를 통해 제공되는, 클라이언트 장치(102)에 의해 캡처된 이미지 데이터 상에 애니메이션 또는 증강 값을 오버레이함으로써 애니메이션 또는 증강 값을 가상 세계에서 다시 현실 세계로 재투영한다. 다른 실시예에서, SLAM 모듈(112)은 클라이언트 장치(102) 주변의 환경을 매핑하고 및/또는 그 환경에서의 클라이언트 장치(102)의 위치를 판정하기 위해 상이한 또는 추가적인 접근법을 사용할 수 있다.
일부 실시예에서, SLAM 모듈(112)은 환경의 로컬 지도를 생성하기 전에 클라이언트 장치(102)의 위치를 다른 클라이언트 장치와 동기화할 수 있다. 예를 들어, SLAM 모듈은 환경에서 기계 판독 가능 코드(예를 들어, QR 코드)의 이미지 데이터를 수신하고, 클라이언트 장치(102)의 위치를 동일한 기계 판독 가능 코드의 이미지를 캡처했던 다른 클라이언트 장치와 동기화할 수 있다. SLAM 모듈(112)은 이 정보를 환경의 위치를 나타내는 로컬 지도에 대한 동기화 데이터로서 저장할 수 있다. 다른 예에서, 이미지 데이터가 SLAM 모듈(112)이 이미지 데이터로부터 판정할 수 있고 또는 사용자가 클라이언트 장치(102)를 통해 나타낼 수 있는 다른 클라이언트 장치의 뷰를 포함하는 경우, SLAM 모듈(112)은 클라이언트 장치(102)가 다른 클라이언트 장치와 같은 위치에 있었음을 나타내는 로컬 지도에 대한 동기화 데이터를 저장할 수 있고, 그것의 로컬 지도를 참조할 수 있다.
지도 검색 모듈(114)은 SLAM 모듈(112)에 의해 생성된 지도를 검색한다. 지도 검색 모듈(114)은 아래에서 더 설명되는 지도 데이터베이스(124)로부터 (예를 들어, 네트워크(104)를 통해) 이전에 생성된 지도를 검색한다. 일부 실시예에서, 지도 검색 모듈(114)은 사용자의 집 위치에 대한 지도와 같은 일부 지도를 클라이언트 장치(102)에 로컬식으로 저장할 수 있다. 지도 검색 모듈(114)은 게임 엔진(106)으로부터의 통지에 기초하여 지도를 검색하고 병렬 현실 게임을 용이하게 하는데 사용하기 위해 게임 엔진(106)에 지도를 전송할 수 있다.
딥 러닝 모듈(116)은 지도에 대한 객체 인식을 위한 머신 러닝 모델을 적용한다. 딥 러닝 모듈(116)은 지도 검색 모듈(114)로부터 지도를 수신한다. 딥 러닝 모듈(116)은 객체 탐지 및 분류와 함께 (예를 들어, SIFT(scale-invariant feature transform) 또는 ORB(Oriented FAST and rotated BRIEF)를 사용하여) 관심 지점 또는 특징점 탐지를 수행하는 하나 이상의 머신 러닝 모델을 적용한다. 예를 들어, 딥 러닝 모듈(116)은 머신 러닝 모델을 지도에 적용하여 지도 내에 포함된 객체를 판정할 수 있다. 머신 러닝 모델은 분류기 및 회귀 모델 등일 수 있다. 딥 러닝 모듈(116)은 (예를 들어, 네트워크(104)를 통해) 외부 시스템 상에서 트레이닝한 후에 머신 러닝 모델을 획득할 수 있다. 일부 실시예에서, 딥 러닝 모듈(116)은 또한 추가 모델 트레이닝을 가능하게 하기 위해 객체 인식 및/또는 사용자 피드백의 결과를 제공할 수 있다.
AR 컴퓨팅 시스템(100)은 클라이언트 장치(102)가 네트워크(104)를 통해 액세스할 수 있는 요소들을 포함한다. 이러한 요소는 원격 서버에 위치할 수 있으며 원 월드 매핑 모듈(one world mapping module)(120), 객체 인식 모듈(122), 지도 데이터베이스(124), 객체 데이터베이스(126) 및 딥 러닝 트레이닝 모듈(128)과 통신하는 AR 백엔드 엔진(118)을 포함할 수 있다. 다른 실시예에서, 추가의 또는 상이한 구성요소가 포함될 수 있다. 또한, 이러한 기능들은 본 명세서에 설명된 것과 상이하게 분배될 수 있다. 예를 들어, 객체 인식 기능의 일부 또는 전부는 일부 실시예에서 클라이언트 장치(102)에서 수행될 수 있다.
원 월드 매핑 모듈(120)은 복합 현실 세계 지도(예를 들어, 현실 세계의 단일 3D 지도)를 생성하기 위해 다양한 로컬 지도들을 융합한다. 단일 3차원 지도는 에지에 의해 함께 연결된 노드들의 그래프로 표현될 수 있다. 각 노드는 도 1에 도시된 클라이언트 장치(102) 또는 병렬 현실 게임을 위해 서버에 연결된 다른 클라이언트 장치일 수 있는 클라이언트 장치(102)에 의해 생성된 지도를 나타낼 수 있다. 각각의 지도는 그 지도를 생성했던 클라이언트 장치(102)에 기초한 그 자체의 좌표 공간을 가질 수 있고, 또는 시간 경과에 따른 동일한 장치의 좌표 공간의 변화(예를 들어, GPS 드리프트 또는 변화하는 상태 등에 기인함)를 가질 수 있다. 노드들을 연결하는 에지는 노드의 좌표 공간 간의 변환을 나타낼 수 있다. 원 월드 매핑 모듈(120)은 네트워크(104)를 통해 클라이언트 장치(102)로부터 새로운 지도를 수신한 때 단일 3D 지도에 새로운 노드 및 에지를 추가할 수 있다. 원 월드 매핑 모듈(120)은 단일 3차원 지도를 지도 데이터베이스(124)에 저장한다.
예시적인 사용 사례 시나리오에서, 원 월드 매핑 모듈(120)은 로컬 지도들 사이에 갭이 존재하는 경우에도 로컬 지도들의 노드들 사이의 에지를 결정할 수 있다. 예를 들어, 원 월드 매핑 모듈(120)은 다른 두 부분을 연결하는 부분 없이 라인의 부분을 각각 포함하는 로컬 지도의 노드를 수신할 수 있다. 원 월드 매핑 모듈(120)은 로컬 지도에 표시된 것 이상으로 지정된 양(예를 들어, 10센티미터, 1미터 또는 무한대)만큼 라인의 각 부분을 잠정적으로 확장할 수 있다. (예를 들어, 앞서 설명된 바와 같이 공통 특징부를 식별하는 특징 분석 또는 위치 동기화에 기초하여) 로컬 지도의 상대 위치를 알고 있다고 가정하면, 원 월드 매핑 모듈(120)은 각각의 로컬 지도 내의 라인의 부분이 모두 동일한 라인의 일부인지 판정할 수 있다. 예를 들어, 한 라인의 투영이 그것으로 하여금 임계량(예를 들어, 1밀리미터, 1센티미터 등) 내에서 다른 라인과 겹치게 만드는 경우, 원 월드 매핑 모듈(120)은 두 부분이 동일한 라인의 일부라고 판정할 수 있다. 따라서, 원 월드 매핑 모듈(120)은 라인을 연결하는 누락 부분(missing portion)을 이용하여 노드들 사이의 에지를 판정하고, 이 누락 부분을 로컬 지도 중 하나 또는 둘 모두에 추가할 수 있다. 원 월드 매핑 모듈(120) 및 단일 3D 지도는 도 2와 관련지어 더 설명된다.
지도 데이터베이스(124)는 클라이언트 장치(102)에 의해 생성된 지도 데이터(즉, "지도")를 저장하도록 구성된 하나 이상의 컴퓨터 판독 가능 매체를 포함한다. 지도 데이터는 한 위치에서 클라이언트 장치(102)에 의해 수집된 이미지 및 다른 센서 데이터와 연관되어 저장된 3D 포인트 클라우드의 로컬 지도를 포함할 수 있다. 또한, 지도 데이터는 서로 다른 로컬 지도들과 현실 세계 또는 현실 세계 내의 특정 환경을 나타내는 단일 3D 지도 간의 지리적 관계를 나타내는 매핑 정보를 포함할 수 있다. 지도 데이터베이스(124)가 단일 엔티티로 도시되어 있지만, 이는 복수의 장치에 있는 복수의 저장 매체(예를 들어, 분산 데이터베이스)에 걸쳐 분산될 수 있다.
객체 인식 모듈(122)은 데이터 내에 표현된 현실 세계의 특징부를 식별하기 위해 클라이언트 장치(102)에 의해 캡처된 이미지 및 3D 데이터로부터의 객체 정보를 사용한다. 예를 들어, 객체 인식 모듈(122)은 의자가 환경 내의 3D 위치에 있다고 판정하고, 의자의 3D 위치를 설명하는 객체 정보를 객체 데이터베이스(126)에 추가할 수 있다. 객체 인식 모듈(122)은 지도 데이터베이스에 저장된 지도, 하나 이상의 클라이언트 장치(102)에 의해 캡처된 이미지 데이터, 또는 하나 이상의 클라이언트 장치(102)에 의해 생성된 지도에 대해 객체 인식을 수행할 수 있다. 객체 인식 모듈은 동일한 환경의 새로운 이미지 데이터에 대해 객체 인식을 수행한 후, 객체 데이터베이스(126)에 저장된 객체 정보를 추가로 업데이트할 수 있다. 객체 인식 모듈(122)은 객체 데이터베이스(126)에 추가하기 위해 다양한 클라이언트 장치(102)로부터 캡처된 이미지로부터 객체 정보를 지속적으로 수신할 수 있다.
일부 실시예에서, 객체 인식 모듈(122)은 탐지된 객체를 다양한 카테고리로 더 구별할 수 있다. 일 실시예에서, 객체 인식 모듈(122)은 캡처된 이미지에서 객체를 정지된 것 또는 순간적인 것으로 식별할 수 있다. 예를 들어, 객체 인식 모듈(122)은 나무를 정지된 객체로 판정할 수 있다. 후속 사례에서, 물체 인식 모듈(122)은 순간적인 것으로 판정될 수 있는 객체에 비해 정지된 객체를 덜 빈번하게 업데이트할 수 있다. 예를 들어, 객체 인식 모듈(122)은 캡처된 이미지 내의 동물을 순간적인 것으로 판정할 수 있고, 후속 이미지에서 그 환경 내에 더 이상 동물이 존재하지 않는 경우 그 객체를 제거할 수 있다.
객체 데이터베이스(126)는 인식된 객체에 대한 객체 정보를 저장하도록 구성된 하나 이상의 컴퓨터 판독 가능 매체를 포함한다. 예를 들어, 객체 데이터베이스(126)는 객체의 대응하는 위치 및 객체의 속성과 함께 기지의 객체의 목록(예를 들어, 의자, 책상, 나무, 건물 등)을 포함할 수 있다. 이 속성은 객체 유형에 일반적이거나 객체의 각 사례별로 특정하게 정의될 수 있다(예컨대, 모든 의자는 가구로 간주될 수 있지만 각 의자의 위치는 개별적으로 정의될 수 있다). 객체 데이터베이스(126)는 각 객체의 객체 유형에 기초하여 객체를 더 구별할 수 있다. 객체 유형은 유사한 특성에 기초하여 객체 데이터베이스(126) 내의 모든 객체를 그룹화할 수 있다. 예를 들어, 식물 객체 유형의 모든 객체는 객체 인식 모듈(122)에 의해 나무, 덤불, 풀, 덩굴 등과 같은 식물로 식별되는 객체일 수 있다. 일부 실시예에서, 이 시스템은 비교적 안정적인(예를 들어, 고정된) 특징부 및 더 동적인 특징부를 구별하기 위해 학습할 수 있다. 예를 들어, 의자는 다소 움직이는 경향이 있는 반면 테이블은 오랜 시간 동안 거의 동일한 위치에 머무르는 경향이 있다는 것을 이 시스템이 학습할 수 있다. 객체 데이터베이스(126)가 단일 엔티티로 도시되어 있지만, 이는 복수의 장치에 있는 복수의 저장 매체(예를 들어, 분산 데이터베이스)에 걸쳐 분산될 수 있다.
딥 러닝 모듈(128)은 지도 데이터와 객체 정보를 함께 융합한다. 특히, 딥 러닝 모듈(128)은 지도 데이터베이스(124) 또는 하나 이상의 클라이언트 장치(102)로부터 지도를 검색하고 객체 데이터베이스(126)로부터 객체 정보를 검색할 수 있다. 딥 러닝 모듈은 객체 정보로부터의 객체를 포함하는 대응하는 지도 데이터와 객체 정보를 연결할 수 있다. 딥 러닝 모듈(128)은 서버 상에서 훈련된 하나 이상의 머신 러닝 모델을 사용하여 그렇게 할 수 있다. 머신 러닝 모델은 분류기, 신경망, 및 회귀 모델 등을 포함할 수 있다. 딥 러닝 모듈(128)은 융합된 정보를 지도 데이터베이스(124) 또는 서버의 다른 데이터베이스에 저장할 수 있다.
도 2는 일 실시예에 따른 원 월드 매핑 모듈(120)의 블록도이다. 원 월드 매핑 모듈(120)은 지도 모듈(210), 그래프 모듈(210), 결합 모듈(220), 이미지 데이터베이스(230) 및 지도 데이터베이스(240)를 포함한다. 추가적인 또는 대안의 실시예에서, 원 월드 매핑 모듈(120)은 아래에서 논의되지 않은 추가적인 오퍼레이션을 수행하는 다른 모듈을 포함할 수도 있다.
지도 모듈(210)은 클라이언트 장치(102)에 의해 캡처된 데이터에 기초하여 환경의 지도를 결정한다. 이러한 데이터는 이미지 데이터, 센서 데이터, GPS 데이터 등을 포함할 수 있다. 지도 모듈(210)은 캡처된 데이터에 기초하여 포인트 클라우드를 구축할 수 있으며, 이는 환경의 지도로서 사용된다. 일부 실시예에서, 지도 모듈(210)은 클라이언트 장치(102)에 의해 캡처된 데이터에 기초하여 환경의 지도를 결정하기 위해 다른 기술을 사용할 수 있다. 그러나, 다른 실시예에서, 매핑은 지도 모듈(210)이 아니라 SLAM 모듈(112)에 의해 수행되고, 그 대신 지도 모듈(210)은 SLAM 모듈(112)로부터 클라이언트 장치(102)에서 생성된 로컬 지도를 검색한다. 일부 실시예에서, 하나 이상의 로컬 지도는 동일한 환경에서 복수의 클라이언트 장치(102)에 의해 캡처된 데이터를 사용하여 협력적으로 구축될 수 있다. 지도 모듈(210)은 지도 데이터베이스(124)에 로컬 지도를 저장할 수 있다. 지도 모듈(210)은 로컬 지도를 그래프 모듈(210)로 전송한다.
그래프 모듈(210)은 하나 이상의 로컬 지도의 그래픽 표현을 판정한다. 그래프 모듈(210)은 지도 모듈(210)로부터 로컬 지도를 수신한다. 또한, 그래프 모듈(210)은 각 로컬 지도를 설명하는 정보를 수신할 수 있다. 이러한 정보는 어떤 클라이언트 장치가 로컬 지도를 생성했는지 및/또는 로컬 지도를 생성하는데 사용되는 데이터를 캡처했는지, 로컬 지도를 생성하는데 사용된 데이터, 데이터가 캡처된 시기(예컨대, 날짜 및 시간) 등을 포함할 수 있다.
각각의 로컬 지도에 대해, 그래프 모듈(210)은 로컬 지도를 나타내는 노드를 생성한다. 일부 실시예에서, 각각의 클라이언트 장치(102) 및/또는 서버는 또한 그래프 모듈(210)에 의해 생성된 노드에 의해 표현된다. 각각의 노드는 그 노드가 나타내는 서버, 로컬 지도, 또는 클라이언트 장치를 설명하는 정보에 기초하여 그 자체의 독립 좌표계를 갖는다. 환경의 로컬 지도를 나타내는 노드는 환경의 공간적 커버리지 뿐만 아니라 시간적 커버리지(예컨대, 환경이 시간에 따라 얼마나 변하는지 정도)를 추가로 나타낼 수 있다. 그래프 모듈은 앞서 설명된 단일 3D 지도에 통합하기 위해 노드를 결합 모듈(220)로 전송한다. 다른 실시예에서, 상이한 시간(예를 들어, 아침, 오후, 저녁 및 밤 등과 같은 하루 내의 상이한 기간)에 대한 지도들은 상이한 노드에 저장되고, 이들 사이의 에지는 지도의 공간적 및 시간적 좌표 모두에서의 매핑을 나타낸다.
결합 모듈(220)은 특징 분석을 이용하여 로컬 지도를 현실 세계의 단일 3D 지도로 변환한다. 일부 실시예에서, 결합 모듈(220)은 로컬 지도를 하나의 단일 3D 지도로 결합할 수 있다. 다른 실시예에서, 결합 모듈은 로컬 지도를 사용하여 각 환경에 대한 3D 지도를 생성하고 이러한 3D 지도들을 단일 3D 지도로 링크한다.
결합 모듈(220)은 하나 이상의 로컬 지도를 나타내는 그래프 모듈(210)로부터 노드를 수신한다. 노드들의 각각의 쌍에 대해, 결합 모듈(220)은 에지를 결정할 수 있다. 에지는 노드의 좌표 공간 간의 변환을 나타낸다. 몇몇 경우에, 한 쌍의 노드는 그 사이에 에지를 가지지 않을 수 있다(예컨대, 노드들이 완전히 상이한 환경을 나타내는 경우). 그렇지 않으면, 이러한 노드 쌍은 그들과 관련된 하나 이상의 에지를 가질 수 있다. 일부 실시예에서, 결합 모듈(220)은 동일한 환경 내의 노드에 대한 에지만을 결정할 수 있으며, 이는 결합 모듈이 로컬 지도 간의 특징 매칭에 기초하여 결정할 수 있다. 일 실시예에서, 매핑 모듈(210)은 서로로부터 임계 거리 내에 있는 로컬 지도에 기초하여 단일 환경을 나타내고 있는 2개의 로컬 지도를 식별할 수 있고, 이는 결합 모듈(220)이 각각의 로컬 지도를 생성하기 위해 사용되는 GPS 데이터로부터 판정할 수 있다.
결합 모듈(220)은 복수의 클라이언트 장치(102)에 의해 캡처된 데이터에 기초하여 에지를 형성할 수 있다. 각각의 클라이언트 장치는 그것과 연관된 신뢰도 점수를 가질 수 있고, 이 신뢰도 점수는 에지의 신뢰도 점수를 판정하는데 사용될 수 있다. 에지의 신뢰도 점수는 에지가 제1 노드에서 제2 노드로 이동하는 것을 나타내는 변환을 사용하는 것이 제2 노드와 동일한 출력 노드를 야기할 가능성을 나타낸다. 에지를 결정하기 위해, 결합 모듈은 정보 추적(예컨대, 병렬 현실 게임의 동일한 세션 동안 동일한 클라이언트 장치에 의해 캡처된 로컬 지도의 노드들은 하나의 에지를 가질 가능성이 높음), 피처 기반 로컬라이제이션(feature-based localization)(예컨대, 점, 선 등과 같은 로컬 지도에 포함된 특징부에 기초하여 노드들의 2개의 로절 지도를 로컬라이징하는 것), 3D 클라우드 정렬(예컨대, ICP 알고리즘을 사용함), 동일한 클라이언트 장치(102)에 의해 생성된 인접한 로컬 지도 간의 강제 오버랩, 복수의 로컬 지도에 걸친 후처리 최적화, 및/또는 기계 판독 가능한 코드 기반 로컬라이제이션(machine-readable code-based localization)(예컨대, 동기화)를 사용할 수 있다.
예를 들어, 일 실시예에서, 결합 모듈(220)은 2개의 노드에 대한 에지를 결정하기 위해 특징 분석을 수행할 수 있다. 결합 모듈(220)은 2개의 로컬 지도 각각에 대해 객체 데이터베이스(126)로부터 정보를 검색하고 각각의 로컬 지도에 대한 특징 분석을 수행하여 두 로컬 지도 모두가 공통 특징부를 포함하는지 여부를 이러한 정보를 사용하여 판정한다. 결합 모듈(220)이 각각의 지도가 동일한 공통 특징부를 포함한다고 판정하면, 결합 모듈(220)은 공통 특징부에 기초하여 에지를 생성한다.
다른 예에서, 결합 모듈(220)은 클라이언트 장치(102)에 의해 수행된 동기화에 기초하여 노드들 사이의 에지를 결정할 수 있다. 결합 모듈(220)은 클라이언트 장치(102)가 동일한 환경 내에 같이 위치했었음을 나타내는 각각의 로컬 지도에 대한 동기화 데이터를 검색한다. 이 동기화 데이터는 클라이언트 장치(102)가 서로를 포인팅할 때 또는 각 클라이언트 장치(102)가 환경에서 기계 판독 가능 코드(예를 들어, QR 코드) 또는 기타 인식 가능한 특징부의 이미지를 캡처했을 때 결정될 수 있다. 동기화 데이터에 기초하여, 결합 모듈(220)은 로컬 지도의 노드에 대한 에지를 결정한다.
각각의 노드 쌍에 대해, 결합 모듈(220)은 지도 데이터베이스(124)로부터 현실 세계의 단일 3D 지도에 액세스한다. 단일 3D 지도는 서버에 연결된 복수의 클라이언트 장치(102)에 의해 캡처된 다수의 노드를 포함하고 현실 세계의 레이아웃을 나타낸다. 노드 중 하나 또는 둘 모두가 이미 단일 3D 지도에 있지 않는 경우, 결합 모듈(220)은 이러한 누락 노드 또는 노드들을 단일 3D 지도에 추가한다. 또한, 결합 모듈(220)이 노드 쌍에 대한 에지를 결정했다면, 결합 모듈(220)은 단일 3D 지도에서 에지들을 함께 연결하고, 본질적으로 로컬 지도들을 하나의 더 큰 지도(예를 들어, 단일 3D 지도)로 연결한다. 일부 실시예에서, 결합 모듈(220)은 추가적으로 에지에 기초하여 로컬 지도를 함께 스티치하여 두 로컬 지도의 적어도 일부를 포함하는 단일 지도를 형성할 수 있다.
또한, 결합 모듈(220)은 단일 3D 지도 내의 기존 노드들 사이에 에지를 추가할 수 있다. 일부 실시예에서, 결합 모듈(220)은 새로운 에지가 결정된 때 노드 쌍 사이의 복수의 에지들을 단일 에지로 결합할 수 있다. 다른 실시예에서, 결합 모듈(220)은 단일 3D 지도에서 노드 쌍 사이의 모든 에지를 유지할 수 있고, 어떤 에지가 모든 에지 중 가장 최신인지를 표시하여, 필요할 때 클라이언트 장치가 로컬 지도 간의 변환을 위해 최신 에지를 사용할 수 있다.
서버에 연결된 클라이언트 장치(102)는 단일 3D 지도를 사용하여 환경 내에서 자신의 위치를 확인하고 병렬 현실 게임을 위해 한 위치에서 가상 세계에 대한 정보를 검색할 수 있다. 또한, 이러한 노드 및 에지 시스템은 단일 3D 지도에서 드리프트(drift) 및 이상값(utlier)을 줄이기 위해 사용될 수 있다. 예를 들어, 결합 모듈(220)은 노드가 임계 크기의 시간 동안 단일 3D 지도 내에 있은 후 에지들에 의해 다른 노드에 연결되지 않은 노드를 제거할 수 있다.
예시적인 데이터 흐름
도 3은 일 실시예에 따른, AR 데이터를 생성 및 디스플레이하기 위해 클라이언트 장치(102) 및 서버에 의해 실행되는 프로세스를 도시하는 흐름도이다. 클라이언트 장치(102) 및 서버는 도 1에 도시된 것과 유사할 수 있다. 점선은 클라이언트 장치(102)와 서버 사이의 데이터 통신을 나타내는 반면, 실선은 단일 장치 내(예를 들어, 클라이언트 장치(102) 내 또는 서버 내)의 데이터 통신을 나타낸다. 다른 실시예에서, 이러한 기능들은 장치 사이에 상이하게 분배될 수 있고 및/또는 상이한 장치가 사용될 수도 있다.
(302)에서, 하나 이상의 센서에 의해 클라이언트 장치(102)에서 미가공 데이터(raw data)가 수집된다. 일 실시예에서, 미가공 데이터는 이미지 데이터, 관성 측정 데이터, 및 위치 데이터를 포함한다. 이미지 데이터는 물리적으로 또는 무선으로 클라이언트 장치(102)에 연결된 하나 이상의 카메라에 의해 캡처될 수 있다. 관성 측정 데이터는 자이로스코프, 가속도계 또는 이들의 조합을 사용하여 수집될 수 있으며, 최대 6자유도(즉, 3 자유도의 병진 운동 및 3 자유도의 회전 운동)까지의 관성 측정 데이터를 포함할 수 있다. 위치 데이터는 글로벌 측위 시스템(GPS: Global Position System) 수신기로 수집될 수 있다. 압력 수준, 조명 수준, 습도 수준, 고도 수준, 사운드 수준, 오디오 데이터 등과 같은, 추가적인 미가공 데이터가 다양한 다른 센서에 의해 수집될 수 있다. 미가공 데이터는 클라이언트 장치(102)에서 클라이언트 장치(102)의 다양한 센서에 의해 역사적으로(historically) 취해진 미가공 데이터를 기록할 수 있는 하나 이상의 저장 모듈 내에 저장될 수 있다.
클라이언트 장치(102)는 로컬 지도 저장소(304)를 유지할 수 있다. 로컬 지도 저장소는 로컬 포인트 클라우드 데이터를 포함한다. 포인트 클라우드 데이터는 구축될 수 있는 메쉬 면을 형성하는 공간 내 위치들을 포함한다. 로컬 지도 저장소(304)는 클라이언트 장치(102)에 의한 사용을 위해 용이한 검색을 위한 로컬 포인트 클라우드 데이터의 계층적 캐시를 포함할 수 있다. 로컬 지도 저장소(304)는 로컬 포인트 클라우드 데이터에 융합된 객체 정보를 추가로 포함할 수 있다. 객체 정보는 로컬 포인트 클라우드 데이터에서 다양한 객체를 지정할 수 있다.
미가공 데이터가 (302)에서 수집되면, 클라이언트 장치(102)는 (306)에서 지도가 초기화되는지 여부를 체크한다. (306)에서 지도가 초기화되어 있다면, (308)에서 클라이언트 장치(102)는 SLAM 기능을 개시할 수 있다. SLAM 기능은 포인트 클라우드를 구축하는 매핑 시스템 및 초기화된 지도 상의 공간에서 카메라의 위치를 찾기 위한 추적을 포함한다. 이 예의 SLAM 프로세스는 또한 애니메이션 또는 증강된 값을 현실 세계로 다시 투영한다. (310)에서 지도가 초기화되어 있지 않다면, 클라이언트 장치(102)는 로컬에 저장된 지도에 대해 로컬 지도 저장소(304)를 검색할 수 있다. 지도가 로컬 지도 저장소(304)에서 발견되면, 클라이언트 장치(102)는 SLAM 기능들에 의해 사용하기 위해 해당 지도를 검색할 수 있다. (310)에서 지도가 발견되지 않으면, (312)에서 클라이언트 장치(102)는 새로운 지도를 생성하기 위해 초기화 모듈을 사용할 수 있다.
새로운 지도가 생성되면, 초기화 모듈은 새로 생성된 지도를 로컬 지도 저장소(304)에 저장할 수 있다. 클라이언트 장치(102)는 로컬 지도 저장소(304) 내의 지도 데이터를 서버 측 상의 클라우드 지도 저장소(320)와 일상적으로(routinely) 동기화할 수 있다. 지도 데이터를 동기화할 때, 클라이언트 장치(102) 상의 로컬 지도 저장소(304)는 임의의 새로 생성된 지도를 서버에 전송할 수 있다. 서버 측은 (326)에서 클라우드 지도 저장소(320)를 체크하여 클라이언트 장치(102)로부터 수신된 지도가 클라우드 지도 저장소(320)에 이전에 저장되었는지 여부를 확인한다. 그렇지 않다면, 서버 측은 (328)에서 클라우드 지도 저장소(320)에 저장할 새로운 지도를 생성한다. 대안으로서, 서버는 (328)에서 새로운 지도를 클라우드 지도 저장소(320) 내의 기존 지도에 덧붙일 수 있다.
클라이언트 측으로 돌아가서, 클라이언트 장치(102)는 (314)에서 새로운 관점이 탐지되는지 여부를 판정한다. 일부 실시예에서, 클라이언트 장치(102)는 캡처된 이미지들의 스트림 내의 각각의 관점이 클라이언트 장치(102)에 저장된 기존 관점들과 임계치 미만의 오버랩을 갖는지 여부를 판정한다(예를 들어, 로컬 지도 저장소(304)는 클라이언트 장치(102)에 의해 취해진 또는 클라우드 지도 저장소(320)로부터 검색된 관점들을 저장할 수 있다). 다른 실시예에서, 클라이언트 장치(102)는 다단계 판정에서 새로운 관점이 탐지(314)되는지 여부를 판정한다. 높은 레벨에서, 클라이언트 장치(102)는 클라이언트 장치(102)의 지리적 위치의 로컬 반경 내의 임의의 기존 관점을 검색할 수 있다. 기존 관점으로부터, 클라이언트 장치(102)는 기존 관점과 비교하여 해당 관점에서 유사한 객체 또는 특징부를 식별하기 시작할 수 있다. 예를 들어, 클라이언트 장치(102)는 해당 관점에서 나무를 식별하고, 볼 수 있는 나무를 갖는 모든 기존 관점을 로컬 반경 내의 기존 관점으로부터 더 감소시킬 수 있다. 클라이언트 장치(102)는 해당 관점을 기존 관점들의 필터링된 세트와 매칭시키는데 더 강력한 추가 필터링 층을 사용할 수 있다. 일례에서, 클라이언트 장치(102)는 해당 관점이 필터링된 세트 내의 다른 관점과 매칭하는지(즉, 해당 관점이 기존 관점과 매칭하기 때문에 그것이 신규하지 않은 것인지)를 판정하기 위해 머신 러닝 모델을 사용한다. 새로운 관점이 탐지되면(314), 클라이언트 장치(102)는 로컬 환경 추론부에 의해 수집된 데이터를 (316)에서 기록한다. 예를 들어, 클라이언트 장치(102)가 현재 새로운 관점을 갖고 있다고 판정하면, 새로운 관점으로 캡처된 이미지가 서버(예를 들어, 서버 측의 지도/이미지 데이터베이스(318)로)로 전송될 수 있다. 새로운 관점 탐지기 모듈이 3D 데이터를 갖는 이미지를 전송하는 시기 및 방법을 결정하기 위해 사용될 수 있다. 로컬 환경 추론부는 로컬 매핑 시스템에 대한 업데이트된 키 프레임 및 직렬화된 이미지 및/또는 지도 데이터를 포함할 수 있다. 로컬 환경 추론부는 지도 내의 주어진 위치에서의 다른 관점에 대해 새로운 관점을 맞추기 위해 서버에 의해 사용될 수 있다.
서버 측에서, 새로운 관점 데이터(예를 들어, 상단에 메쉬 데이터가 있는 포인트 클라우드 정보를 포함함)는 서버 측의 지도/이미지 데이터베이스(318)에 저장될 수 있다. 서버는 저장된 클라우드 지도 저장소(320) 및 객체 데이터베이스(322)로부터 현실 세계 지도의 다양한 부분들을 추가할 수 있다. (추가된 컴포넌트 데이터를 포함하는) 클라우드 환경 추론부(324)는 클라이언트 장치로 다시 전송될 수 있다. 추가된 데이터는 로컬 지도 저장소(304)에 저장될 의미 레이블(예컨대, 벽 또는 침대)을 갖는 점 및 메쉬 및 객체 데이터를 포함할 수 있다.
가상 세계의 개념도
도 4는 일 실시예에 따른, 위치 기반 병렬 현실 게임의 플레이어를 위한 게임 보드로서 역할할 수 있는 현실 세계(400)와 평행한 가상 세계(410)의 개념도를 도시한다. 도 1의 클라이언트 장치(102)는 도 4에 도시된 바와 같이 현실 세계(400)에 대응하는 가상 세계(410)와 함께 병렬 현실 게임(또는 다른 위치 기반 게임)을 호스팅할 수 있다.
도시된 바와 같이, 가상 세계(410)는 현실 세계(400)의 지형과 평행한 지형을 포함할 수 있다. 특히, 현실 세계(400)에서 지리적 영역 또는 공간을 정의하는 좌표 범위는 가상 세계(410)에서 가상 공간을 정의하는 좌표의 대응 범위에 매핑된다. 현실 세계(400)의 좌표 범위는 마을, 이웃, 도시, 캠퍼스, 로케일(locale), 국가, 대륙, 지구 전체 또는 다른 지리적 영역과 연관될 수 있다. 지리 좌표 범위 내의 각 지리 좌표는 가상 세계 내의 가상 공간에 있는 대응하는 좌표에 매핑된다.
가상 세계(410)에서의 플레이어의 위치는 현실 세계(400)에서의 플레이어의 위치에 대응한다. 예를 들어, 현실 세계(400)에서 위치(412)에 위치한 플레이어 A는 가상 세계(410) 내의 대응하는 위치(422)를 갖는다. 이와 유사하게, 현실 세계에서 위치(414)에 위치한 플레이어 B는 가상 세계 내의 대응하는 위치(424)를 갖는다. 플레이어들이 현실 세계(400)에서 지리 좌표의 범위 내에 이동할 때, 플레이어는 가상 세계(410)에서 가상 공간을 정의하는 좌표 범위 내에서도 이동한다. 특히, 플레이어가 휴대한 클라이언트 장치(102)와 연관된 측위 시스템(예컨대, GPS 시스템 또는 위치 파악 및 매핑 모듈(112)에 의해 사용되는 다른 시스템)은 플레이어가 현실 세계에서 지리적 좌표 범위를 탐색할 때 플레이어의 위치를 추적하는데 사용될 수 있다. 현실 세계(400)에서의 플레이어의 위치와 관련된 데이터는 가상 세계(410)에서의 가상 공간을 정의하는 대응하는 좌표 범위에서 플레이어의 위치를 업데이트하는데 사용된다. 이러한 방식으로, 플레이어는 현실 세계(400) 내의 특정 개별 위치에서 위치 정보를 확인하거나 주기적으로 업데이트할 필요 없이 현실 세계(400) 내의 지리적 좌표 범위 사이를 단순히 이동함으로써, 가상 세계(410) 내의 가상 공간을 정의하는 대응하는 좌표 범위에서 연속 트랙을 탐색할 수 있다.
병렬 현실 게임은 가상 세계(410)의 다양한 가상 위치에 흩어져 있는 다양한 가상 요소 및/또는 가상 객체로 이동하고 및/또는 그것과 상호작용할 것을 플레이어에게 요구하는 복수의 게임 목표를 포함할 수 있다. 플레이어는 현실 세계(400)에서 가상 요소 또는 객체의 대응하는 위치로 이동함으로써 이러한 가상 위치로 이동할 수 있다. 예를 들어, 클라이언트 장치(102)의 측위 시스템은 플레이어가 현실 세계(400)를 지속적으로 탐색함에 따라 플레이어가 또한 평행 가상 세계(410)를 지속적으로 탐색하도록, 플레이어의 위치를 지속적으로 추적할 수 있다. 그 다음, 플레이어는 특정 위치에 있는 다양한 가상 요소 및/또는 객체와 상호 작용하여 하나 이상의 게임 목표를 달성하거나 수행할 수 있다.
예를 들어, 도 4를 참조하면, 게임 목표는 플레이어가 가상 세계(410) 내의 다양한 가상 위치에 위치한 가상 요소(430)를 캡처하거나 소유권을 주장하도록 요구할 수 있다. 이러한 가상 요소(430)는 현실 세계(400)의 랜드마크, 지리적 위치 또는 객체(440)에 연결될 수 있다. 현실 세계의 랜드마크 또는 객체(440)는 예술 작품, 기념물, 건물, 기업, 도서관, 박물관, 또는 다른 적절한 현실 세계의 랜드마크 또는 객체일 수 있다. 이러한 가상 요소(430)를 캡처하기 위해, 플레이어는 현실 세계 내의 가상 요소(430)에 연결된 랜드마크, 지리적 위치 또는 객체(440)로 이동해야 하고 가상 세계(410) 내의 가상 요소(430)와 임의의 필요한 상호작용을 수행해야 한다. 예를 들어, 도 4의 플레이어 A는 클라이언트 장치(102)를 통해 특정 랜드마크(440)와 연결된 가상 요소(430)와 상호작용하거나 그것을 캡처하기 위해 현실 세계(400)에서 랜드마크(440)로 이동해야 한다. 가상 요소(430)와의 상호 작용은 사진 촬영 및/또는 가상 요소(430)와 연관된 랜드마크 또는 객체(440)에 대한 다른 정보를 확인, 획득 또는 캡처하는 것과 같은, 현실 세계(400)에서의 액션을 요구할 수 있다.
게임 목표는 플레이어가 병렬 현실 게임에서 플레이어에 의해 수집된 하나 이상의 가상 아이템을 사용하도록 요구할 수 있다. 예를 들어, 플레이어는 게임 목표를 달성하는데 유용할 수 있는 가상 아이템(예를 들어, 무기 또는 다른 아이템)을 찾기 위해 가상 세계(410)로 이동해야 할 수 있다. 이러한 가상 아이템은 현실 세계(400)의 다양한 위치로 이동함으로써 또는 가상 세계(410) 또는 현실 세계(400)에서 다양한 액션을 완료함으로써 발견되거나 수집될 수 있다. 도 4에 도시된 예에서, 플레이어는 하나 이상의 가상 요소(430)를 캡처하기 위해 가상 아이템(432)을 사용한다. 특히, 플레이어는 가상 요소(430) 부근의 가상 세계(410) 내의 위치에 가상 아이템(432)을 배치할 수 있다. 가상 요소(430) 부근에 하나 이상의 가상 아이템(432)을 배치하는 것은 특정 플레이어 또는 특정 플레이어의 팀 및/또는 진영에 대한 가상 요소(430)의 캡처를 초래할 수 있다.
하나의 특정 구현예에서, 플레이어는 병렬 현실 게임의 일부로서 가상 에너지를 수집해야 할 수 있다. 도 4에 도시된 바와 같이, 가상 에너지(450)는 가상 세계(410) 내의 다양한 위치에 흩어져 있을 수 있다. 플레이어는 현실 세계(400)에서 가상 에너지(450)의 대응하는 위치로 이동하여 가상 에너지(450)를 수집할 수 있다. 가상 에너지(450)는 가상 아이템에 파워를 공급하고 및/또는 병렬 현실 게임에서 다양한 게임 목표를 수행하기 위해 사용될 수 있다. 모든 가상 에너지(450)를 잃은 플레이어는 병렬 현실 게임에서 연결 해제될 수 있다.
본 발명의 양태에 따르면, 병렬 현실 게임은 병렬 현실 게임 내의 모든 참가자가 동일한 가상 세계를 공유하는 대규모 다중 플레이어 위치 기반 게임일 수 있다. 플레이어들은 개별 팀 또는 진영으로 나누어질 수 있으며 가상 요소(430)의 소유권을 획득하거나 주장하는 것과 같은, 하나 이상의 게임 목표를 달성하기 위해 함께 협업할 수 있다. 이러한 방식으로, 병렬 현실 게임은 본질적으로 병렬 현실 게임 내에서 플레이어 간의 협력을 장려하는 소셜 게임일 수 있다. 상대 팀의 플레이어는 병렬 현실 게임에서 서로 대항하여 작업할 수 있다. 플레이어는 가상 아이템(432)을 사용하여 상대 팀의 플레이어를 공격하거나 진행을 방해할 수 있다.
병렬 현실 게임은 병렬 현실 게임 내에서 게임 플레이를 향상시키고 장려하기 위해 다양한 특징을 가질 수 있다. 예를 들어, 플레이어는 병렬 현실 게임 전반에 걸쳐 사용할 수 있는 가상 화폐 또는 기타 가상 보상을 축적할 수 있다. 플레이어는 플레이어가 하나 이상의 게임 목표를 달성하고 병렬 현실 게임 내에서 경험을 쌓으면서 다양한 레벨을 거쳐 발전할 수 있다. 플레이어는 병렬 현실 게임에서 제공되는 하나 이상의 통신 인터페이스를 통해 서로 통신할 수 있다. 또한, 플레이어는 병렬 현실 게임 내에서 게임 목표를 달성하는데 사용될 수 있는 향상된 "파워" 또는 가상 아이템(432)을 얻을 수 있다. 본 명세서에 제공된 개시내용을 사용하여, 당업자는 다양한 다른 게임 특징이 본 개시내용의 범위를 벗어나지 않고 병렬 현실 게임에 포함될 수 있음을 이해해야 한다.
예시적인 방법
도 5는 일 실시예에 따른, 제1 3D 지도 및 제2 3D 지도를 환경의 단일 3D 지도로 함께 연결하기 위한 프로세스(500)를 도시하는 흐름도이다. 일부 실시예에서, 프로세스(500)는 서버 측 대신 클라이언트 측에서 수행되도록 변경될 수 있다. 이 실시예에서, 서버는 제1 클라이언트 장치(102)의 카메라에 의해 캡처된 제1 이미지 데이터 세트를 수신한다(510). 이미지 데이터는 환경에서 제1 클라이언트 장치(102) 주변의 제1 영역의 거의 실시간 뷰를 나타낸다. 서버는 제1 이미지 데이터 세트 및 일부 경우에 제1 클라이언트 장치(102)에 의해 캡처된 위치 데이터에 기초하여 제1 3D 지도를 생성한다(520). 3D 지도는 제1 클라이언트 장치(102) 주변의 제1 영역을 공간적으로 설명한다.
서버는 환경 내의 제2 클라이언트 장치(102)로부터 캡처된 제2 이미지 데이터 세트를 수신한다. 제2 이미지 데이터 세트는 제2 클라이언트 장치(102) 주변의 제2 영역을 설명하고, 서버는 제2 이미지 데이터 세트에 기초하여 제2 3D 지도를 생성한다(530). 서버는 두 3D 지도 모두에 위치한 공통 특징부에 대해 제1 3D 지도 및 제2 3D 지도를 분석한다(540). 서버가 제1 3D 지도 및 제2 3D 지도에서 공통 특징부를 찾은 것에 응답하여, 서버는 제1 3D 지도 및 제2 3D 지도를 환경을 설명하는 단일 3D 지도로 연결한다(550). 다른 실시예에서, 클라이언트 장치(102)는 제1 및 제2 3D 지도를 생성하고 이들을 함께 연결할지 여부 및 그 방법을 결정하는 서버로 전송한다.
일부 실시예에서, 제1 및 제2 3D 지도는 노드들의 그래프와 연관될 수 있다. 특히, 제1 및 제2 3D 지도는 그래프에서 에지에 의해 연결되는 노드들에 의해 표현될 수 있다. 각각의 노드는 3D 지도를 생성하기 위해 사용된 이미지 데이터를 캡처했던 클라이언트 장치(102) 또는 이미지 데이터가 각각의 클라이언트 장치에 의해 캡처된 시간을 나타내는 각각의 좌표 공간과 연관된다. 에지는 연결된 노드들의 서로 다른 좌표 공간 간의 변환을 포함한다. 서버는 세션 정보, 포인트 피처 기반 로컬라이제이션(point feature-based localization), 라인 피처 기반 로컬라이제이션(line feature-based localization), 3D 클라우드 정렬, 강제 오버랩(forced overlap), 최적화, 또는 QR 코드 기반 로컬라이제이션(QR code-based localization) 중 하나 이상을 포함할 수 있는 분석(540)에 기초하여 에지를 판정할 수 있다.
도 6은 일 실시예에 따른, 동기화에 기초하여 환경의 단일 3D 지도를 생성하기 위한 프로세스(600)를 도시하는 흐름도이다. 일부 실시예에서, 프로세스(600)는 클라이언트 측에서 수행되도록 변경될 수 있다. 이 실시예에서, 서버는 제1 클라이언트 장치(102)의 카메라에 의해 캡처된 이미지 데이터를 수신한다(610). 이미지 데이터는 환경 내의 제1 클라이언트 장치 주변의 제1 영역의 거의 실시간 뷰를 나타낸다. 서버는 제1 클라이언트 장치(102)와 제2 클라이언트 장치(102) 사이의 위치를 동기화한다(620). 일부 실시예에서, 서버는 QR 코드와 같은 특징부의 각 클라이언트 장치(102) 또는 다른 클라이언트 장치로부터의 이미지 데이터를 수신함으로써 위치를 동기화한다.
서버는 이미지 데이터에 기초하여 제1 클라이언트 장치로부터 제1 3D 지도를 생성한다(630). 대안으로서, 이미지 데이터가 아니라 제1 3D 지도가 클라이언트 장치(102)에 의해 생성되어 서버로 전송될 수 있다. 제1 3D 지도는 제1 클라이언트 장치(102) 주변의 제1 영역을 공간적으로 설명한다. 제1 3D 지도는 제1 클라이언트 장치(102)에 의해 생성된 미가공 이미지 또는 포인트 클라우드일 수 있다. 서버는 환경 내의 제2 클라이언트 장치(102)로부터 캡처된 이미지 데이터를 수신한다. 이미지 데이터는 제2 클라이언트 장치(102) 주변의 제2 영역을 설명하고, 서버는 이미지 데이터에 기초하여 제2 클라이언트 장치로부터 제2 3D 지도를 생성한다(640). 서버는 동기화에 기초하여 제1 3D 지도 및 제2 3D 지도로부터 단일 3D 지도를 생성한다(650). 장치의 위치가 환경 내에서 동기화되어 있기 때문에, 지도가 오버랩하지 않더라도 제1 및 제2 3D 지도 내 특징부들의 상대적 위치가 판정될 수 있다.
컴퓨팅 기계 아키텍처
도 7은 클라이언트 장치(102) 또는 서버로서 사용하기에 적합한 예시적인 컴퓨터(700)를 도시하는 하이레벨 블록도이다. 예시적인 컴퓨터(700)는 칩셋(704)에 연결된 적어도 하나의 프로세서(702)를 포함한다. 칩셋(704)은 메모리 컨트롤러 허브(720) 및 입/출력(I/O) 컨트롤러 허브(722)를 포함한다. 메모리(706) 및 그래픽 어댑터(712)는 메모리 컨트롤러 허브(720)에 연결되고, 디스플레이(718)는 그래픽 어댑터(712)에 연결된다. 저장 장치(708), 키보드(710), 포인팅 장치(714), 및 네트워크 어댑터(716)는 I/O 컨트롤러 허브(722)에 연결된다. 컴퓨터(700)의 다른 실시예는 상이한 아키텍처를 갖는다.
도 7에 도시된 실시예에서, 저장 장치(708)는 하드 드라이브, 컴팩트 디스크 판독 전용 메모리(CD-ROM), DVD 또는 솔리드 스테이트 메모리 장치와 같은 비일시적 컴퓨터 판독 가능 저장 매체이다. 메모리(706)는 프로세서(702)에 의해 사용되는 명령 및 데이터를 보유한다. 포인팅 장치(714)는 마우스, 트랙 볼, 터치 스크린, 또는 다른 유형의 포인팅 장치이고, 컴퓨터 시스템(700)에 데이터를 입력하기 위해 키보드(710)(온스크린 키보드일 수 있음)와 함께 사용된다. 다른 실시예에서, 컴퓨터(700)는 터치 스크린, 조이스틱, 버튼, 스크롤 휠 등 또는 이들의 임의의 조합과 같은 다양한 다른 입력 메커니즘을 갖는다. 그래픽 어댑터(712)는 디스플레이(718) 상에 이미지 및 다른 정보를 디스플레이한다. 네트워크 어댑터(716)는 컴퓨터 시스템(700)을 하나 이상의 컴퓨터 네트워크에 연결한다(예를 들어, 네트워크 어댑터(716)는 네트워크(104)를 통해 클라이언트 장치(102)를 서버에 연결할 수 있다).
도 1의 엔티티에 의해 사용되는 컴퓨터의 유형은 엔티티가 요구하는 처리 능력 및 실시예에 따라 달라질 수 있다. 예를 들어, 서버는 설명된 기능을 제공하기 위해 함께 작동하는 복수의 블레이드 서버로 구성된 분산 데이터베이스 시스템을 포함할 수 있다. 또한, 컴퓨터는 키보드(710), 그래픽 어댑터(712) 및 디스플레이(718)와 같은, 앞서 설명한 구성요소 중 일부를 포함하지 않을 수도 있다.
당업자는 설명된 개념을 벗어나지 않고 본 명세서에 개시된 장치 및 기술의 다양한 사용 및 수정 및 변형을 만들 수 있다. 예를 들어, 본 명세서에 도시되거나 설명된 구성요소 또는 특징은 도시되거나 설명된 위치, 설정 또는 환경으로 제한되지 않는다. 본 발명에 따른 장치의 예는 선행 도면 중 하나 이상을 참조하여 설명된 것 전부, 또는 그보다 적거나 또는 상이한 구성요소를 포함할 수 있다. 따라서, 본 발명은 본 명세서에 기재된 특정 구현예로 제한되지 않고, 오히려 첨부된 청구범위 및 그의 등가물과 일치하는 가능한 가장 넓은 범위가 부여되어야 한다.

Claims (20)

  1. 환경의 3차원(3-D) 지도를 생성하기 위해 복수의 클라이언트 장치로부터의 지도 데이터를 결합하는 방법으로서,
    제1 클라이언트 장치에 통합된 카메라에 의해 캡처된 제1 이미지 데이터 세트를 수신하는 단계로서, 상기 제1 이미지 데이터 세트는 상기 제1 클라이언트 장치 주변의 제1 영역의 거의 실시간 뷰를 나타내는 것인, 상기 제1 이미지 데이터 세트를 수신하는 단계;
    상기 제1 이미지 데이터 세트에 기초하여 제1 3D 지도를 생성하는 단계로서, 상기 제1 3D 지도는 상기 제1 클라이언트 장치 주변의 상기 제1 영역을 공간적으로 설명하는 것인, 상기 제1 3D 지도를 생성하는 단계;
    제2 이미지 데이터 세트에 기초하여 제2 3D 지도를 생성하는 단계로서, 상기 제2 3D 지도는 상기 제2 클라이언트 장치 주변의 제2 영역을 공간적으로 설명하는 것인, 상기 제2 3D 지도를 생성하는 단계;
    공통 특징부를 식별하기 위해 상기 제1 3D 지도 및 상기 제2 3D 지도를 분석하는 단계; 및
    상기 공통 특징부에 기초하여, 상기 제1 3D 지도와 상기 제2 3D 지도를 단일 3D 지도로 연결하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 제1 3D 지도는 그래프의 제1 노드와 연관되고;
    상기 제2 3D 지도는 상기 그래프의 제2 노드와 연관되고;
    상기 제1 노드 및 제2 노드는 상기 분석에 기초하여 결정된 에지에 의해 연결된 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서, 상기 제1 및 제2 노드 각각은 서로 다른 좌표 공간과 연관되고, 상기 에지는 상기 서로 다른 좌표 공간 사이의 변환을 포함하는 것을 특징으로 하는 방법.
  4. 제 3 항에 있어서, 각 좌표 공간은 상기 이미지 데이터가 캡처된 시간을 나타내는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서, 상기 에지는 세션 정보, 포인트 피처 기반 로컬라이제이션(point feature-based localization), 라인 피처 기반 로컬라이제이션(line feature-based localization), 3D 클라우드 정렬, 강제 오버랩(forced overlap), 최적화, 또는 QR 코드 기반 로컬라이제이션(QR code-based localization) 중 하나 이상을 사용하여 판정되는 것을 특징으로 하는 방법.
  6. 제 2 항에 있어서, 상기 그래프는 하나 이상의 클라이언트 장치에 의해 한 번 이상 캡처된 이미지 데이터로부터 생성된 3D 지도 데이터와 관련된 노드들을 포함하는 것을 특징으로 하는 방법.
  7. 제 2 항에 있어서, 상기 제1 및 제2 3D 지도 각각은 신뢰도 점수와 연관되고 상기 에지는 각 3D 지도의 상기 신뢰도 점수를 기초로 하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서, 상기 단일 3D 지도에 기초하여, 상기 환경 내의 제3 클라이언트 장치의 위치를 판정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서, 상기 제1 및 제2 클라이언트 장치는 가상 현실 게임 내에서 연결되는 것을 특징으로 하는 방법.
  10. 프로세서에 의해 실행 가능한 명령을 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령은:
    제1 클라이언트 장치에 통합된 카메라에 의해 캡처된 제1 이미지 데이터 세트를 수신하기 위한 명령으로서, 상기 제1 이미지 데이터 세트는 상기 제1 클라이언트 장치 주변의 제1 영역의 거의 실시간 뷰를 나타내는 것인, 상기 제1 이미지 데이터 세트를 수신하기 위한 명령;
    상기 제1 이미지 데이터 세트에 기초하여 제1 3D 지도를 생성하기 위한 명령으로서, 상기 제1 3D 지도는 상기 제1 클라이언트 장치 주변의 제1 영역을 공간적으로 설명하는 것인, 상기 제1 3D 지도를 생성하기 위한 명령;
    제2 이미지 데이터 세트에 기초하여 제2 3D 지도를 생성하기 위한 명령으로서, 상기 제2 3D 지도는 제2 클라이언트 장치 주변의 제2 영역을 공간적으로 설명하는 것인, 상기 제2 3D 지도를 생성하기 위한 명령;
    공통 특징부를 식별하기 위해 상기 제1 3D 지도 및 제2 3D 지도를 분석하기 위한 명령; 및
    상기 공통 특징부에 기초하여, 상기 제1 3D 지도 및 상기 제2 3D 지도를 단일 3D 지도로 연결하기 위한 명령을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  11. 제 10 항에 있어서,
    상기 제1 3D 지도는 그래프의 제1 노드와 연관되고;
    상기 제2 3D 지도는 상기 그래프의 제2 노드와 연관되고;
    상기 제1 노드 및 제2 노드는 상기 분석에 기초하여 결정된 에지에 의해 연결된 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  12. 제 11 항에 있어서, 상기 제1 및 제2 노드 각각은 서로 다른 좌표 공간과 연관되고, 상기 에지는 상기 서로 다른 좌표 공간 사이의 변환을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  13. 제 12 항에 있어서, 각 좌표 공간은 상기 이미지 데이터가 캡처된 시간을 나타내는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제 13 항에 있어서, 상기 에지는 세션 정보, 포인트 피처 기반 로컬라이제이션(point feature-based localization), 라인 피처 기반 로컬라이제이션(line feature-based localization), 3D 클라우드 정렬, 강제 오버랩(forced overlap), 최적화, 또는 QR 코드 기반 로컬라이제이션(QR code-based localization) 중 하나 이상을 사용하여 판정되는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제 11 항에 있어서, 상기 그래프는 하나 이상의 클라이언트 장치에 의해 한 번 이상 캡처된 이미지 데이터로부터 생성된 3D 지도 데이터와 관련된 노드들을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제 11 항에 있어서, 상기 제1 및 제2 3D 지도 각각은 신뢰도 점수와 연관되고 상기 에지는 각 3D 지도의 상기 신뢰도 점수를 기초로 하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제 10 항에 있어서, 상기 명령은:
    상기 단일 3D 지도에 기초하여, 환경 내의 제3 클라이언트 장치의 위치를 판정하기 위한 명령을 더 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제 10 항에 있어서, 상기 제1 및 제2 클라이언트 장치는 가상 현실 게임 내에서 연결되는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 컴퓨터 시스템으로서,
    컴퓨터 프로세서; 및
    상기 컴퓨터 프로세서에 의해 실행될 때 액션을 수행하는 명령을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 포함하고, 상기 액션은:
    제1 클라이언트 장치에 통합된 카메라에 의해 캡처된 제1 이미지 데이터 세트를 수신하는 단계로서, 상기 제1 이미지 데이터 세트는 상기 제1 클라이언트 장치 주변의 제1 영역의 거의 실시간 뷰를 나타내는 것인, 상기 제1 이미지 데이터 세트를 수신하는 단계;
    상기 제1 이미지 데이터 세트에 기초하여 제1 3D 지도를 생성하는 단계로서, 상기 제1 3D 지도는 상기 제1 클라이언트 장치 주변의 상기 제1 영역을 공간적으로 설명하는 것인, 상기 제1 3D 지도를 생성하는 단계;
    제2 이미지 데이터 세트에 기초하여 제2 3D 지도를 생성하는 단계로서, 상기 제2 3D 지도는 상기 제2 클라이언트 장치 주변의 제2 영역을 공간적으로 설명하는 것인, 상기 제2 3D 지도를 생성하는 단계;
    공통 특징부를 식별하기 위해 상기 제1 3D 지도 및 상기 제2 3D 지도를 분석하는 단계; 및
    상기 공통 특징부에 기초하여, 상기 제1 3D 지도와 상기 제2 3D 지도를 단일 3D 지도로 연결하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  20. 제 19 항에 있어서,
    상기 제1 3D 지도는 그래프의 제1 노드와 연관되고;
    상기 제2 3D 지도는 상기 그래프의 제2 노드와 연관되고;
    상기 제1 노드 및 제2 노드는 상기 분석에 기초하여 결정된 에지에 의해 연결된 것을 특징으로 하는 컴퓨터 시스템.
KR1020227025230A 2019-12-20 2020-12-18 매핑 장치로부터의 로컬 지도 병합 KR20220119123A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962952036P 2019-12-20 2019-12-20
US62/952,036 2019-12-20
PCT/IB2020/062241 WO2021124289A1 (en) 2019-12-20 2020-12-18 Merging local maps from mapping devices

Publications (1)

Publication Number Publication Date
KR20220119123A true KR20220119123A (ko) 2022-08-26

Family

ID=76437695

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227025230A KR20220119123A (ko) 2019-12-20 2020-12-18 매핑 장치로부터의 로컬 지도 병합

Country Status (9)

Country Link
US (1) US11969651B2 (ko)
EP (1) EP4078540A4 (ko)
JP (1) JP7466649B2 (ko)
KR (1) KR20220119123A (ko)
CN (1) CN115151948A (ko)
AU (1) AU2020409014A1 (ko)
CA (1) CA3165304A1 (ko)
TW (1) TWI775247B (ko)
WO (1) WO2021124289A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11014001B2 (en) * 2018-03-05 2021-05-25 Sony Interactive Entertainment LLC Building virtual reality (VR) gaming environments using real-world virtual reality maps
EP3846124A1 (en) * 2019-12-30 2021-07-07 TMRW Foundation IP SARL System and method enabling a collaborative 3d map data fusion platform and virtual world system thereof
KR102639524B1 (ko) * 2021-10-05 2024-02-22 국방과학연구소 전자 장치의 지도 병합 방법
WO2023132269A1 (ja) * 2022-01-06 2023-07-13 ソニーグループ株式会社 情報処理装置、および情報処理方法、並びにプログラム
CN114236564B (zh) * 2022-02-23 2022-06-07 浙江华睿科技股份有限公司 动态环境下机器人定位的方法、机器人、装置及存储介质
US20240046564A1 (en) * 2022-08-02 2024-02-08 Niantic, Inc. Simulated Consistency Check for Points of Interest on Three-Dimensional Maps

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3654147A1 (en) * 2011-03-29 2020-05-20 QUALCOMM Incorporated System for the rendering of shared digital interfaces relative to each user's point of view
US20120306850A1 (en) * 2011-06-02 2012-12-06 Microsoft Corporation Distributed asynchronous localization and mapping for augmented reality
US20140267234A1 (en) * 2013-03-15 2014-09-18 Anselm Hook Generation and Sharing Coordinate System Between Users on Mobile
US20140323148A1 (en) * 2013-04-30 2014-10-30 Qualcomm Incorporated Wide area localization from slam maps
US9437047B2 (en) 2014-01-15 2016-09-06 Htc Corporation Method, electronic apparatus, and computer-readable medium for retrieving map
US10547825B2 (en) * 2014-09-22 2020-01-28 Samsung Electronics Company, Ltd. Transmission of three-dimensional video
US10185775B2 (en) * 2014-12-19 2019-01-22 Qualcomm Technologies, Inc. Scalable 3D mapping system
GB2541884A (en) 2015-08-28 2017-03-08 Imp College Of Science Tech And Medicine Mapping a space using a multi-directional camera
US9721369B2 (en) 2015-09-15 2017-08-01 Facebook, Inc. Systems and methods for utilizing multiple map portions from multiple map data sources
US9984499B1 (en) * 2015-11-30 2018-05-29 Snap Inc. Image and point cloud based tracking and in augmented reality systems
KR101868374B1 (ko) * 2016-10-20 2018-06-18 엘지전자 주식회사 이동 로봇의 제어방법
JP6874343B2 (ja) 2016-11-24 2021-05-19 株式会社豊田中央研究所 地図作成装置
KR101756946B1 (ko) 2017-01-20 2017-07-11 장수진 경도선/위도선을 기반으로 교통로를 구성하고, 지도 검색을 수행하는 방법 및 장치
US10990829B2 (en) * 2017-04-28 2021-04-27 Micro Focus Llc Stitching maps generated using simultaneous localization and mapping
US10885714B2 (en) 2017-07-07 2021-01-05 Niantic, Inc. Cloud enabled augmented reality
CN109426333B (zh) 2017-08-23 2022-11-04 腾讯科技(深圳)有限公司 一种基于虚拟空间场景的信息交互方法及装置
WO2019221800A1 (en) * 2018-05-18 2019-11-21 Purdue Research Foundation System and method for spatially registering multiple augmented reality devices
CN112204502B (zh) 2018-05-30 2024-04-02 索尼公司 显示控制装置、程序和显示控制方法
US10748302B1 (en) * 2019-05-02 2020-08-18 Apple Inc. Multiple user simultaneous localization and mapping (SLAM)
US11043004B2 (en) * 2019-05-22 2021-06-22 Dell Products, L.P. Resolving region-of-interest (ROI) overlaps for distributed simultaneous localization and mapping (SLAM) in edge cloud architectures
US11087479B1 (en) * 2019-12-20 2021-08-10 Facebook Technologies, Llc Artificial reality system with 3D environment reconstruction using planar constraints

Also Published As

Publication number Publication date
CA3165304A1 (en) 2021-06-24
TW202241569A (zh) 2022-11-01
JP2023507500A (ja) 2023-02-22
EP4078540A1 (en) 2022-10-26
EP4078540A4 (en) 2023-01-18
TW202135008A (zh) 2021-09-16
JP7466649B2 (ja) 2024-04-12
AU2020409014A1 (en) 2022-08-18
WO2021124289A1 (en) 2021-06-24
CN115151948A (zh) 2022-10-04
US20210187391A1 (en) 2021-06-24
TWI775247B (zh) 2022-08-21
US11969651B2 (en) 2024-04-30

Similar Documents

Publication Publication Date Title
JP7486565B2 (ja) クラウド支援型の新しい視点を利用したローカルマップデータの生成
JP7466649B2 (ja) マッピングデバイスからのローカルマップのマージング
KR102612347B1 (ko) 장치 위치 측정을 위한 다중 동기화 통합 모델

Legal Events

Date Code Title Description
A201 Request for examination