KR20230013883A - Slam 기반의 전자 장치 및 그 동작 방법 - Google Patents
Slam 기반의 전자 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20230013883A KR20230013883A KR1020210094921A KR20210094921A KR20230013883A KR 20230013883 A KR20230013883 A KR 20230013883A KR 1020210094921 A KR1020210094921 A KR 1020210094921A KR 20210094921 A KR20210094921 A KR 20210094921A KR 20230013883 A KR20230013883 A KR 20230013883A
- Authority
- KR
- South Korea
- Prior art keywords
- feature points
- electronic device
- processor
- extracted feature
- surrounding
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 32
- 239000011159 matrix material Substances 0.000 claims description 86
- 230000003190 augmentative effect Effects 0.000 claims description 31
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000001914 filtration Methods 0.000 claims description 14
- 238000005259 measurement Methods 0.000 claims description 9
- 230000033001 locomotion Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 7
- 239000000284 extract Substances 0.000 abstract description 15
- 238000010586 diagram Methods 0.000 description 17
- 230000004907 flux Effects 0.000 description 10
- 238000005457 optimization Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000000605 extraction Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000011017 operating method Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 210000001508 eye Anatomy 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 210000005252 bulbus oculi Anatomy 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 210000003128 head Anatomy 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/20—Scenes; Scene-specific elements in augmented reality scenes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/10—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
- G01C21/12—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning
- G01C21/16—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/269—Analysis of motion using gradient-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/277—Analysis of motion involving stochastic approaches, e.g. using Kalman filters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/579—Depth or shape recovery from multiple images from motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30244—Camera pose
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Automation & Control Theory (AREA)
- Processing Or Creating Images (AREA)
Abstract
SLAM 기반의 전자 장치는, 외부 데이터를 획득하는 데이터 획득부, 메모리 및 프로세서를 포함하고, 프로세서는 획득된 외부 데이터로부터 주변 객체에 대한 특징점들을 추출하고, 추출된 특징점들의 개수가 메모리에 저장된 지정된 개수보다 많은 경우, 추출된 특징점들의 정합 오차에 대한 스코어를 계산하며, 계산된 스코어에 기초하여, 추출된 특징점들 중에서 지정된 개수의 특징점들을 선택할 수 있다.
Description
본 개시의 다양한 실시예들은 SLAM 기반의 전자 장치 및 그 동작 방법에 관한 것이다.
SLAM(simultaneous localization and mapping)은 증강 현실(AR, augmented reality), 로봇, 자율 주행 자동차와 같은 다양한 분야에서 이용되는 기술로서, 장치가 임의의 공간을 이동하면서 주변의 정보를 획득하고, 획득된 정보에 기초하여 해당 공간의 맵(map) 및 자신의 현재 포즈(pose)를 추정하는 기술이다. 예를 들어, SLAM을 수행하는 장치는 카메라 등의 센서를 이용하여 장치의 주변 공간에 대한 이미지를 획득하고, 획득된 이미지에 대한 분석 및 좌표 설정을 통해 해당 공간의 맵 및 자신의 현재 포즈를 추정할 수 있다.
SLAM은 센서로부터 획득된 데이터에 기초하여 주변 객체에 대한 특징점들을 추출하고 3차원 공간 좌표 연산을 수행하는 프론트 엔드(front-end) 및 프론트 엔드로부터 수신된 데이터에 기초하여 주변 맵 정보 및 자신의 현재 포즈 정보에 대한 최적 해(optimal solution)를 계산하는 백 엔드(back-end)로 구분될 수 있다.
프론트 엔드에서 추출되는 특징점들의 수가 많아질수록 백 엔드에서 추정되는 주변 맵 정보 및 현재 포즈 정보에 대한 정밀도는 향상될 수 있으나, 백 엔드의 연산량이 증가하게 되어 주변 맵 정보 및 자신의 현재 포즈 정보를 추정 시에 레이턴시(latency)가 발생할 수 있다.
레이턴시 발생으로 인해 SLAM을 수행하는 장치의 실시간성이 저하되는 경우, 추정된 포즈와 사용자에게 출력되는 영상의 차이에서 발생되는 오차로 인해 장치의 사용자가 불편함을 느끼는 상황이 발생할 수 있다. 따라서, 추정되는 주변 맵 정보 및 자신의 현재 포즈 정보에 대한 정밀도를 유지하면서도, 출력되는 영상의 실시간성을 확보할 수 있는 새로운 방안이 요구되는 실정이다.
본 개시의 다양한 실시예들은 정합 오차(registration error)를 최소화할 수 있는 특징점을 선택하고, 선택된 특징점에 기초하여 주변 맵 정보 및 현재 포즈를 추정함으로써, 추정되는 주변 맵 및 현재 포즈의 정밀도와 영상의 실시간성을 확보할 수 있는 SLAM 기반의 전자 장치 및 그 동작 방법을 제공하고자 한다.
본 개시의 실시예들을 통해 해결하고자 하는 과제가 상술한 과제로 한정되는 것은 아니며, 언급되지 아니한 과제들은 본 개시 및 첨부된 도면으로부터 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상술한 기술적 과제를 해결하기 위한 수단으로서, 일 실시예에 따른 SLAM 기반의 전자 장치는 외부 데이터를 획득하는 데이터 획득부, 메모리 및 상기 데이터 획득부 및 상기 메모리와 작동적으로 연결되는 프로세서를 포함하고, 상기 프로세서는 상기 획득된 외부 데이터로부터 주변 객체(object)에 대한 특징점들(features)을 추출하고, 상기 추출된 특징점들의 개수가 상기 메모리에 저장된 지정된 개수보다 많은 경우, 상기 추출된 특징점들의 정합 오차(registration error)에 대한 스코어를 계산하며, 상기 계산된 스코어에 기초하여, 상기 추출된 특징점들 중에서 상기 지정된 개수의 특징점들을 선택할 수 있다.
다른 실시예에 따른 SLAM 기반의 전자 장치의 동작 방법은 데이터 획득부를 통해 외부 데이터를 획득하는 단계, 상기 획득된 외부 데이터로부터 상기 전자 장치의 주변 객체에 대한 특징점들을 추출하는 단계, 상기 추출된 특징점들의 개수가 지정된 개수보다 많은 경우, 상기 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는 단계 및 상기 계산된 스코어에 기초하여, 상기 추출된 특징점들 중에서 상기 지정된 개수의 특징점들을 선택하는 단계를 포함할 수 있다.
또 다른 실시예에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 기록매체를 포함할 수 있다.
도 1은 일 실시예에 따른 전자 장치의 사시도이다.
도 2는 도 1에 도시된 전자 장치의 일부 영역에 대한 단면도이다.
도 3은 일 실시예에 따른 전자 장치의 구성 요소들을 나타내는 블록도이다.
도 4는 일 실시예에 따른 프론트 엔드 프로세서의 구성 요소들을 나타내는 블록도이다.
도 5는 일 실시예에 따른 전자 장치의 프론트 엔드 프로세서를 통해 특징점들을 선택하는 방법을 설명하기 위한 흐름도이다.
도 6a는 일 실시예에 따른 전자 장치가 제1 위치일 때, 주변 객체 이미지로부터 추출되는 특징점들을 나타내는 도면이다.
도 6b는 도 6a의 전자 장치가 제2 위치일 때, 주변 객체 이미지로부터 추출되는 특징점들을 나타내는 도면이다.
도 7은 월드 좌표계에서 추정된 객체의 포즈의 불확실성(uncertainty)과 디스플레이 좌표계에서 추정된 객체의 포즈의 불확실성의 관계를 나타내는 도면이다.
도 8은 일 실시예에 따른 전자 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 9는 일 실시예에 따른 전자 장치의 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는 방법을 설명하기 위한 흐름도이다.
도 10a는 월드 좌표계에서의 객체의 위치와 디스플레이 좌표계에서의 객체의 위치를 나타내는 도면이다.
도 10b는 디스플레이 상에 표시되는 AR 객체의 정합 오차를 나타내는 도면이다.
도 11은 일 실시예에 따른 전자 장치의 주변 객체의 포즈 오차(pose error)를 계산하는 방법을 설명하기 위한 흐름도이다.
도 12는 일 실시예에 따른 전자 장치에서 특징점 개수를 증가시키 위한 방법을 설명하기 위한 흐름도이다.
도 13은 다른 실시예에 따른 전자 장치에서 특징점 개수를 감소시키기 위한 방법을 설명하기 위한 도면이다.
도 2는 도 1에 도시된 전자 장치의 일부 영역에 대한 단면도이다.
도 3은 일 실시예에 따른 전자 장치의 구성 요소들을 나타내는 블록도이다.
도 4는 일 실시예에 따른 프론트 엔드 프로세서의 구성 요소들을 나타내는 블록도이다.
도 5는 일 실시예에 따른 전자 장치의 프론트 엔드 프로세서를 통해 특징점들을 선택하는 방법을 설명하기 위한 흐름도이다.
도 6a는 일 실시예에 따른 전자 장치가 제1 위치일 때, 주변 객체 이미지로부터 추출되는 특징점들을 나타내는 도면이다.
도 6b는 도 6a의 전자 장치가 제2 위치일 때, 주변 객체 이미지로부터 추출되는 특징점들을 나타내는 도면이다.
도 7은 월드 좌표계에서 추정된 객체의 포즈의 불확실성(uncertainty)과 디스플레이 좌표계에서 추정된 객체의 포즈의 불확실성의 관계를 나타내는 도면이다.
도 8은 일 실시예에 따른 전자 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 9는 일 실시예에 따른 전자 장치의 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는 방법을 설명하기 위한 흐름도이다.
도 10a는 월드 좌표계에서의 객체의 위치와 디스플레이 좌표계에서의 객체의 위치를 나타내는 도면이다.
도 10b는 디스플레이 상에 표시되는 AR 객체의 정합 오차를 나타내는 도면이다.
도 11은 일 실시예에 따른 전자 장치의 주변 객체의 포즈 오차(pose error)를 계산하는 방법을 설명하기 위한 흐름도이다.
도 12는 일 실시예에 따른 전자 장치에서 특징점 개수를 증가시키 위한 방법을 설명하기 위한 흐름도이다.
도 13은 다른 실시예에 따른 전자 장치에서 특징점 개수를 감소시키기 위한 방법을 설명하기 위한 도면이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 본 개시에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 개시에서 사용되는 '제1' 또는 '제2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
또한, 본 개시에서 사용되는 '월드 좌표계(world coordinate system)'은 현실 세계를 기준으로 설정된 3차원 좌표계를 의미할 수 있으며, '디스플레이 좌표계(display coordinate system)'은 디스플레이를 기준으로 설정된 2차원 좌표계를 의미할 수 있다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 전자 장치의 사시도이다.
도 1을 참조하면, 일 실시예에 따른 전자 장치(100)(또는 'SLAM 기반의 전자 장치)는 데이터 획득부(110) 및 프로세서(120)를 포함하며, SLAM(simultaneous localization and mapping)을 통해 주변 맵(map)과 전자 장치(100)의 현재 포즈에 관한 정보를 추정할 수 있다.
예를 들어, 전자 장치(100)의 프로세서(120)는 데이터 획득부(110)를 통해 획득된 외부 데이터에 대해 특징점(feature) 추출 및 공간 좌표에 대한 연산을 수행하고, 추출된 특징점과 공간 좌표에 대한 최적화(optimization)를 수행함으로써, 주변 맵 및 전자 장치(100)의 현재 포즈에 관한 정보를 추정할 수 있다.
또한, 전자 장치(100)의 프로세서(120)는 추정된 주변 맵 정보와 전자 장치(100)의 현재 포즈에 관한 정보에 기초하여 증강 현실 이미지(AR image, augmented reality image)를 생성하고, 디스플레이(예: 도 1의 렌즈(101))를 통해 생성된 증강 현실 이미지를 표시할 수 있다.
본 개시에서 '증강 현실 이미지'는 전자 장치(100)의 주변의 현실 세계(real world)의 이미지와 가상의 이미지가 융합된 이미지를 의미할 수 있다. 예를 들어, 증강 현실 이미지는 현실 세계의 이미지에 가상의 이미지가 오버레이(overlay)된 이미지를 의미할 수 있으나, 이에 한정되는 것은 아니다.
이 때, 현실 세계의 이미지는 사용자가 전자 장치(100)를 통해 볼 수 있는 실제 장면(real scene)을 의미하며, 현실 세계의 이미지에는 현실 객체(real world object)가 포함될 수 있다. 또한, 가상의 이미지는 그래픽스 프로세싱에 의해 형성되는 현실 세계에 존재하지 않는 이미지를 의미하며, 가상의 이미지에는 디지털 또는 가상의 객체(AR object)가 포함될 수 있다.
일 실시예에 따르면, 전자 장치(100)는 사용자의 신체의 일부에 착용 가능한 웨어러블 전자 장치일 수 있다. 예를 들어, 전자 장치(100)는 렌즈(101) 및 전자 장치(100)의 적어도 일 영역을 사용자의 신체의 일부에 고정시키기 위한 연결부(102)를 더 포함할 수 있다.
일 예시에서, 전자 장치(100)는 도 1에 도시된 바와 같이 사용자의 귀에 착용 가능한 안경 타입의 웨어러블 전자 장치일 수 있으나, 이에 한정되는 것은 아니다. 다른 예시에서, 전자 장치(100)는 사용자의 머리에 착용 가능한 헤드 마운트 타입(head-mount type)의 웨어러블 전자 장치일 수도 있다.
일 실시예에 따르면, 데이터 획득부(110)와 프로세서(120)는 연결부(102)에 배치될 수 있으나, 데이터 획득부(110)와 프로세서(120)의 배치 구조가 이에 한정되는 것은 아니다. 다른 실시예(미도시)에서, 데이터 획득부(110) 및/또는 프로세서(120)는 렌즈(101)의 주변 영역(예: 테두리)에 배치될 수도 있다.
도면 상에 도시되지 않았으나, 전자 장치(100)는 증강 현실 이미지에 대한 데이터가 포함된 광을 방출하고, 방출된 광의 이동 경로를 조절하기 위한 광학 부품들을 포함할 수 있다. 프로세서(120)는 광학 부품들을 통해 증강 현실 이미지에 대한 데이터가 포함된 광을 방출하고, 방출된 광이 렌즈(101)에 도달하도록 할 수 있다.
증강 현실 이미지에 대한 데이터가 포함된 광이 렌즈(101)에 도달함에 따라 렌즈(101)에는 증강 현실 이미지가 표시될 수 있으며, 전자 장치(100)는 상술한 과정을 통해 사용자(또는 '착용자')에게 증강 현실 이미지를 제공할 수 있다.
앞선 실시예에서는 전자 장치(100)가 웨어러블 전자 장치인 실시예에 대해서만 기술하였으나, 전자 장치(100)의 적용 분야가 이에 한정되는 것은 아니다. 실시예(미도시)에 따라, 전자 장치(100)는 SLAM을 통해 주변 맵 및 자신의 현재 포즈를 추정할 수 있는 무인 비행 장치(UAV, unmanned aerial vehicle) 및/또는 자율 주행 차량에 적용될 수도 있다.
이하에서는 도 2를 참조하여, 전자 장치(100)의 광학 부품들에 대하여 구체적으로 살펴보도록 한다.
도 2는 도 1에 도시된 전자 장치의 일부 영역에 대한 단면도이다. 도 2는 도 1에 도시된 전자 장치(100)의 사용자의 우안과 인접한 영역의 단면을 나타낸다. 또한, 도 2에 도시된 전자 장치(100)는 사용자의 귀에 착용 가능한 안경 타입의 웨어러블 디바이스(예: AR 글래스)일 수 있으나, 전자 장치(100)의 형태가 도시된 실시예에 한정되는 것은 아니다.
도 2를 참조하면, 일 실시예에 따른 전자 장치(100)는 렌즈(101), 연결부(102), 프로젝터(103), 빔 스플리터(beam splitter)(104), 거울(105), 데이터 획득부(110), 프로세서(120) 및 메모리(130)를 포함할 수 있다. 일 실시예에 따른 전자 장치(100)의 구성 요소들 중 적어도 하나는 도 1의 전자 장치(100)의 구성 요소들 중 적어도 하나와 동일 또는 유사할 수 있으며, 이하에서 중복되는 설명은 생략하도록 한다.
프로세서(120)는 데이터 획득부(110)를 통해 획득된 외부 데이터 및 메모리(130)에 저장된 데이터 값에 기초하여, 전자 장치(100)의 주변 맵 및 현재 포즈에 관한 정보를 추정할 수 있다. 일 실시예에 따르면, 프로세서(120)는 외부 데이터에 대해 데이터 획득부(110)를 통해 획득된 외부 데이터에 대해 특징점 추출 및 공간 좌표에 대한 연산을 수행하고, 추출된 특징점과 공간 좌표에 대한 최적화(optimization)를 수행함으로써, 전자 장치(100)의 주변 맵 및 현재 포즈에 관한 정보를 추정할 수 있다.
프로세서(120)는 추정된 전자 장치(100)의 주변 맵 및 현재 포즈에 관한 정보에 기초하여, 증강 현실 이미지(AR image)를 생성할 수 있으며, 생성된 증강 현실 이미지에 관한 데이터를 프로젝터(103)로 전송할 수 있다.
프로젝터(103)는 증강 현실 이미지에 관한 데이터를 포함하는 광을 렌즈(101)에 대해 방출할 수 있다. 예를 들어, 프로세서(120)는 프로젝터(103)와 전기적 또는 작동적으로 연결되어 프로젝터(103)의 작동을 제어할 수 있으며, 프로젝터(103)는 프로세서(120)에 의해 증강 현실 이미지에 관한 데이터를 포함하는 광이 렌즈(101)에 방출되도록 제어될 수 있다.
일 실시예에 따르면, 프로젝터(103)로부터 방출된 광은 빔 스플리터(104) 및/또는 거울(105)에 의해 반사되어 렌즈(101)에 도달할 수 있으나, 이에 한정되는 것은 아니다. 실시예에 따라, 프로젝터(103)가 렌즈(101)를 마주보도록 배치되어, 프로젝터(103)로부터 방출된 광은 빔 스플리터(104) 및/또는 거울(105)을 거치지 않고 렌즈(101)에 도달할 수도 있다.
프로젝터(103)로부터 방출된 광이 렌즈(101)에 도달함에 따라, 렌즈(101)에는 증강 현실 이미지가 표시될 수 있으며, 그 결과 렌즈(101)는 전자 장치(100)의 증강 현실 이미지를 표시하는 디스플레이(display)로 동작할 수 있다.
렌즈(101)는 사용자의 전자 장치(100) 착용 시, 사용자의 안구(예: 도 2의 사용자의 우안)과 마주보도록 배치될 수 있으며, 전자 장치(100)는 렌즈(101)를 통해 사용자에게 증강 현실 이미지를 제공할 수 있다.
이하에서는 도 3을 참조하여 전자 장치(100)의 SLAM을 수행하기 위한 구성 요소들에 대하여 구체적을 살펴보도록 한다.
도 3은 일 실시예에 따른 전자 장치의 구성 요소들을 나타내는 블록도이다.
도 3을 참조하면, 일 실시예에 따른 전자 장치(100)는 데이터 획득부(110), 프로세서(120) 및 메모리(130)를 포함할 수 있다. 전자 장치(100)의 구성 요소들 중 적어도 하나는 도 1 및/또는 도 2에 도시된 전자 장치(100)의 구성 요소들 중 적어도 하나와 동일 또는 유사할 수 있으며, 이하에서 중복되는 설명은 생략하도록 한다.
데이터 획득부(110)는 전자 장치(100)의 주변 이미지에 대한 데이터 및/또는 전자 장치(100)의 움직임에 대한 데이터를 포함하는 외부 데이터를 획득할 수 있다. 데이터 획득부(110)와 프로세서(120)는 전기적 또는 작동적으로 연결될 수 있으며, 데이터 획득부(110)에서 획득된 외부 데이터는 프로세서(120)로 전송될 수 있다.
일 실시예에 따르면, 데이터 획득부(110)는 카메라(111) 및 관성 측정 센서(IMU, inertial measurement unit)(112)를 포함할 수 있으며, 카메라(111) 및 관성 측정 센서(112)를 통해 외부 데이터를 획득할 수 있다.
일 예시에서, 카메라(111)는 주변 환경에 대한 이미지(image)를 촬영할 수 있는 장치이며, 프로세서(120)는 카메라(111)를 통해 전자 장치(100)의 주변 객체(object)에 대한 이미지 데이터를 획득할 수 있다.
다른 예시에서, 관성 측정 센서(112)는 3차원 공간 내에서 움직임을 측정할 있는 장치이며, 프로세서(120)는 관성 측정 센서(112)를 통해 전자 장치(100)의 움직임에 대응되는 관성 데이터를 획득할 수 있다. 예를 들어, 관성 데이터는 위치(position), 자세(orientation), 가속도(acceleration) 및 각속도(angular velocity) 중 적어도 하나에 관한 데이터를 포함할 수 있으나, 이에 한정되는 것은 아니다.
프로세서(120)는 데이터 획득부(110) 및/또는 메모리(130)와 전기적 또는 작동적으로 연결될 수 있으며, 데이터 획득부(110)에서 획득된 외부 데이터와 메모리(130)에 저장된 데이터에 기초하여 전자 장치(100)의 전반적인 동작을 제어할 수 있다.
예를 들어, 프로세서(120)는 다수의 논리 게이트들의 어레이로 구현되거나, 또는 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수 있다. 다만, 프로세서(120)의 형태가 상술한 실시예에 한정되는 것은 아니며, 실시예에 따라 다른 형태의 하드웨어로 구현될 수도 있다.
일 실시예에 따르면, 프로세서(120)는 데이터 획득부(110)에서 획득된 외부 데이터와 메모리(130)에 저장된 데이터에 기초하여 전자 장치(1100)의 주변 맵 및 포즈(pose)를 추정할 수 있다.
본 개시에서 '전자 장치의 포즈'는 전자 장치의 위치 정보를 포함하는 데이터를 의미할 수 있으며, 해당 표현은 이하에서도 동일한 의미로 사용될 수 있다. 이 때, 포즈 데이터는 6 자유도(degree of freedom) 포즈 정보를 포함할 수 있으며, 6 자유도 포즈 정보는 전자 장치(100)의 위치(position)를 나타내는 정보와 전자 장치(100)의 자세(orientation)를 나타내는 정보를 포함할 수 있다.
일 실시예에서, 프로세서(120)는 데이터 획득부(110)를 통해 획득된 외부 데이터에 기초하여, 주변 객체로부터 특징점들(features)을 추출하고, 공간 좌표에 대한 연산을 수행할 수 있다. 예를 들어, 프로세서(120)는 특징점 추출 알고리즘(feature detection algorithm)을 통해 주변 객체에 대한 이미지로부터 주변 객체의 특징점들을 추출할 수 있으나, 이에 한정되는 것은 아니다.
일 실시예에서, 프로세서(120)는 주변 객체로부터 추출된 특징점 및 공간 좌표에 기초하여 광속 조정(bundle adjustment) 또는 칼만 필터링(kalman filtering)을 수행함으로써, 전자 장치(100)의 주변 맵 및 포즈를 추정할 수 있다.
예를 들어, 프로세서(120)는 추출된 특징점들에 대하여 광속 조정 또는 칼만 필터링을 수행하여 오차가 감소된 최적화 데이터(또는 '최적해(optimal solution)')를 생성하고, 생성된 최적화 데이터와 연산된 공간 좌표에 기초하여 전자 장치(100)의 주변 맵 및 포즈를 추정할 수 있으나, 이에 한정되는 것은 아니다.
주변 객체로부터 추출되는 특징점의 개수가 많을수록 프로세서(120)를 통해 추정되는 전자 장치(100)의 주변 맵 및 포즈의 정확도 또는 정밀도는 증가할 수 있으나, 프로세서(120)의 연산량(computing budget)이 증가하여 레이턴시(latency)가 발생하여 추정되는 주변 맵 및 포즈 정보의 실시간성(real-time performance)이 보장되지 않을 수 있다.
다만, 일 실시예에 따른 전자 장치(100)의 프로세서(120)는, 주변 객체로부터 추출된 특징점의 개수가 지정된 개수보다 많은 경우, 추출된 특징점들 중에서 지정된 개수의 특징점들을 선택하고, 선택된 특징점들에 기초하여 전자 장치(100)의 주변 맵 및 포즈를 추정함으로써, 주변 맵 및 포즈 정보의 실시간성을 확보할 수 있다.
본 개시에서 '지정된 개수'는 레이턴시가 발생할 수 있는 특징점의 개수를 의미할 수 있으며, 해당 표현은 이하에서도 동일한 의미로 사용될 수 있다. 이 때, 지정된 개수에 대한 데이터는 메모리(130)에 저장될 수 있으나, 이에 한정되는 것은 아니다.
또한, 전자 장치(100)의 프로세서(120)는 추출된 특징점들에서 지정된 개수의 특징점들을 선택할 때, 정합 오차(registration error)(또는 'matching error')에 대한 영향력이 큰 특징점들을 선택함으로써, 주변 맵 및 포즈 정보의 정확도까지 확보할 수 있다.
본 개시에서 '정합 오차'는 월드 좌표계에서의 실제 객체(true object)의 포즈와 전자 장치의 디스플레이 상에 표시되는 가상의 객체(AR object)의 포즈의 오차를 의미할 수 있으며, 해당 표현은 이하에서도 동일한 의미로 사용될 수 있다.
즉, 일 실시예에 따른 전자 장치(100)는 프로세서(120)의 상술한 동작들을 통해 주변 맵 및 포즈 정보의 실시간성 및 정확도를 함께 확보할 수 있으며, 프로세서(120)가 특징점들을 선택하는 동작에 대한 구체적인 설명은 후술하도록 한다.
일 실시예에 따르면, 프로세서(120)는 프론트 엔드 프로세서(front-end processor)(121) 및 프론트 엔드 프로세서(121)와 전기적 또는 작동적으로 연결되는 백 엔드 프로세서(back-end processor)(122)를 포함할 수 있다.
프론트 엔드 프로세서(121)는 데이터 획득부(110)로부터 외부 데이터를 수신하고, 수신된 외부 데이터에 기초하여 특징점들을 추출하고, 공간 좌표에 대한 연산을 수행할 수 있다. 예를 들어, 프론트 엔드 프로세서(121)는 데이터 획득부(110)를 통해 획득된 주변 객체에 대한 이미지로부터 주변 객체의 특징점들을 추출하고, 데이터 획득부(110)를 통해 획득된 관성 데이터에 기초하여 공간 좌표에 대한 연산을 수행할 수 있다.
또한, 프론트 엔드 프로세서(121)는 추출된 특징점들의 개수가 메모리(130)에 저장된 지정된 개수보다 많은 경우, 레이턴시가 발생할 수 있는 상황으로 판단하고, 추출된 특징점들 중에서 지정된 개수의 특징점들을 선택할 수 있다.
백 엔드 프로세서(122)는 프론트 엔드 프로세서(121)로부터 추출 또는 선택된 특징점 및 연산된 공간 좌표에 대한 데이터를 수신하고, 수신된 데이터에 기초하여 전자 장치(100)의 주변 맵 및 현재 포즈를 추정할 수 있다. 예를 들어, 백 엔드 프로세서(122)는 프론트 엔드 프로세서(121)로부터 수신된 데이터에 기초하여 광속 조정 또는 칼만 필터링(예: 확장 칼만 필터링(extended kalman filtering))을 수행함으로써, 전자 장치(100)의 주변 맵 및 현재 포즈를 추정할 수 있으나, 이에 한정되는 것은 아니다.
도면 상에는 프로세서(120)가 프론트 엔드 프로세서(121)와 백 엔드 프로세서(122)를 포함하는 실시예에 대해서만 도시되어 있으나, 실시예에 따라 프로세서(120)는 프론트 엔드 프로세서의 동작과 백 엔드 프로세서의 동작을 시계열적으로 수행하는 하나의 프로세서일 수도 있다.
메모리(130)에는 전자 장치(100)의 동작을 제어하는데 필요한 데이터들이 저장될 수 있으며, 프로세서(120)는 메모리(130)에 저장된 데이터에 기초하여 전자 장치(100)의 동작을 제어할 수 있다. 예를 들어, 메모리(130)에는 레이턴시 발생 여부의 판단이 기준이 되는 특징점 개수에 관한 데이터 및/또는 프로세서(120)의 임계 연산량에 관한 데이터가 저장될 수 있으나, 이에 한정되는 것은 아니다.
도 4는 일 실시예에 따른 프론트 엔드 프로세서의 구성 요소들을 나타내는 블록도이다. 도 4는 도 3에 도시된 전자 장치(100)의 프론트 엔드 프로세서(121)의 일 실시예일 수 있으며, 이하에서 중복되는 설명은 생략하도록 한다.
도 4를 참조하면, 일 실시예에 따른 프론트 엔드 프로세서(121)는 특징점 추출부(1211) 및 특징점 선택부(1212)를 포함할 수 있다.
특징점 추출부(1211)는 데이터 획득부(예: 도 3의 데이터 획득부(110))와 전기적 또는 작동적으로 연결될 수 있으며, 데이터 획득부로부터 수신되는 외부 데이터로부터 특징점들을 추출할 수 있다.
예를 들어, 특징점 추출부(1211)는 특징점 추출 알고리즘을 통해 데이터 획득부로부터 수신된 주변 객체에 대한 이미지로부터 주변 객체의 특징점들을 추출할 수 있다. 이 때, 특징점 추출부(1211)를 통해 추출된 특징점에 대한 데이터는 특징점 추출부(1211)와 전기적으로 연결되는 특징점 선택부(1212)로 전송될 수 있다.
또한, 특징점 추출부(1211)는 데이터 획득부로부터 수신되는 관성 데이터에 기초하여, 공간 좌표에 대한 연산을 수행할 수 있으며, 공간 좌표에 대한 데이터는 특징점 선택부(1212) 및/또는 백 엔드 프로세서(예: 도 3의 백 엔드 프로세서(122))로 전송될 수 있다.
특징점 선택부(1212)는 특징점 추출부(1211)에서 추출된 특징점들 중에서 지정된 개수의 특징점들을 선택할 수 있으며, 선택된 특징점들은 특징점 선택부(1212)와 전기적으로 연결되는 백 엔드 프로세서로 전송될 수 있다.
일 실시예에서, 특징점 선택부(1212)는 특징점 추출부(1211)에서 추출된 특징점들의 개수가 메모리(예: 도 3의 메모리(130))에 저장된 지정된 개수보다 많은 경우, 추출된 특징점들 중에서 지정된 개수만큼의 특징점들을 선택할 수 있다.
예를 들어, 특징점 선택부(1212)는 특징점 추출부(1211)에서 추출된 특징점들의 정합 오차에 대한 스코어를 계산하고, 추출된 특징점들의 정합 오차에 대한 스코어에 기초하여 추출된 특징점들 중에서 지정된 개수만큼의 특징점을 선택할 수 있다. 다만, 추출된 특징점들의 정합 오차에 대한 스코어를 계산하고, 지정된 개수의 특징점들을 선택하는 과정에 대한 구체적인 설명은 후술하도록 한다.
도면 상에는 프론트 엔드 프로세서(121)의 특징점 추출부(1211)와 특징점 선택부(1212)가 구분된 실시예에 대해서만 도시되어 있으나, 프론트 엔드 프로세서(121)의 형태가 이에 한정되는 것은 아니다. 실시예에 따라 특징점 추출부(1211)와 특징점 선택부(1212)는 하나의 칩(chip) 형태로 구현될 수도 있다.
도 5는 일 실시예에 따른 전자 장치의 프론트 엔드 프로세서를 통해 특징점들을 선택하는 방법을 설명하기 위한 흐름도이다.
또한, 도 6a는 일 실시예에 따른 전자 장치가 제1 위치일 때, 주변 객체 이미지로부터 추출되는 특징점들을 나타내는 도면이고, 도 6b는 도 6a의 전자 장치가 제2 위치일 때, 주변 객체 이미지로부터 추출되는 특징점들을 나타내는 도면이며, 도 7은 월드 좌표계에서 추정된 객체의 포즈의 불확실성(uncertainty)과 디스플레이 좌표계에서 추정된 객체의 포즈의 불확실성의 관계를 나타내는 도면이다.
이하에서 도 5의 프론트 엔드 프로세서를 통해 특징점들을 선택하는 방법을 설명함에 있어, 도 6a, 도 6b 및/또는 도 7을 참조하여 설명하도록 한다.
501 단계에서, 일 실시예에 따른 프론트 엔드 프로세서(예: 도 3, 도 4의 프론트 엔드 프로세서(121))는 데이터 획득부(예: 도 3의 데이터 획득부(110))로부터 외부 데이터를 수신할 수 있다. 예를 들어, 프론트 엔드 프로세서는 데이터 획득부로부터 전자 장치의 주변 객체에 대한 이미지 데이터(이하, 주변 객체 이미지) 및/또는 전자 장치의 움직임에 대응되는 관성 데이터를 수신할 수 있다.
도 6a 및 도 6b를 참조하면, 502 단계에서, 일 실시예에 따른 프론트 엔드 프로세서는 501 단계에서 수신된 주변 객체 이미지로부터 주변 객체에 대한 특징점들(features)을 추출할 수 있다. 예를 들어, 프론트 엔드 프로세서는 특징점 추출 알고리즘을 통해 주변 객체 이미지로부터 주변 객체에 대한 특징점들을 추출해낼 수 있다.
503 단계에서, 일 실시예에 따른 프론트 엔드 프로세서는 502 단계에서 추출된 특징점들의 정합 오차(registration error)에 대한 스코어를 계산할 수 있다. 예를 들어, 프론트 엔드 프로세서는 502 단계에서 추출된 특징점들의 개수가 메모리(예: 도 3의 메모리(130))에 저장된 지정된 개수보다 많은 경우, 레이턴시가 발생할 수 있는 상황이라고 판단하고, 추출된 특징점들의 정합 오차에 대한 스코어를 계산할 수 있다.
본 개시에서 '정합 오차에 대한 스코어'는 특징점들이 정합 오차에 미치는 영향을 수치화한 것으로, 정합 오차에 대한 스코어가 높을수록 해당 특징점들이 정합 오차에 대한 영향력이 크다는 것을 의미할 수 있다.
기존에는 주변 객체로부터 추출된 특징점들의 월드 좌표계에서의 포즈(예: 6 자유도 포즈) 추정 오차에 대한 스코어를 계산하고, 계산된 스코어에 기초하여 주변 객체의 월드 좌표계에서의 포즈 추정 오차를 최소화할 수 있는 특징점들을 선택하여 SLAM을 수행하는 방안이 제안된 바 있다.
다만, 사용자에게 증강 현실 이미지를 제공하는 전자 장치(예: 웨어러블 전자 장치)의 경우, 주변 객체가 전자 장치의 디스플레이 상에 투영되어 표시됨에 따라, 월드 좌표계에서 주변 객체의 포즈 추정 오차를 최소화하는 것이 정합 오차를 최소화하는 것으로 귀결되지 않을 수 있다. 예를 들어, 월드 좌표계에서는 주변 객체가 6 자유도 포즈를 갖는 반면, 디스플레이를 기준으로 설정된 디스플레이 좌표계에서는 주변 객체가 4 자유도 포즈를 가지므로, 전자 장치의 회전 오차(rotation error)(예: 롤 오차(roll error))를 최소화하는 것은 정합 오차를 최소화하는데 영향을 끼치지 않을 수 있다.
즉, 도 7에 도시된 바와 같이 증강 현실 이미지를 제공하는 전자 장치에서는 주변 객체가 디스플레이 상에 투영되어 표시됨에 따라, 월드 좌표계에서의 주변 객체의 포즈 추정 오차(예: 도 7의 pose uncertainty ellipsoid)와 디스플레이 좌표계에서의 정합 오차(예: 도 7의 pose uncertainty ellipse)는 상이할 수 있다. 이에 따라, 기존의 주변 객체의 월드 좌표계에서의 포즈 추정 오차를 최소화할 수 있는 특징점들을 선택하는 방식에서는 정합 오차가 커지는 상황이 발생할 수 있다.
반면, 일 실시예에 따른 프론트 엔드 프로세서는 추출된 특징점들의 월드 좌표계에서의 주변 객체의 포즈 추정 오차에 대한 스코어를 계산하는 것이 아니라, 추출된 특징점들의 정합 오차에 대한 스코어를 계산함으로써, 정합 오차를 최소화할 수 있다.
일 실시예에서, 프론트 엔드 프로세서는 월드 좌표계에서의 주변 객체의 포즈 와 디스플레이 좌표계에서의 주변 객체의 포즈의 사이의 오차에 기초하여 추출된 특징점들의 정합 오차에 대한 정보 매트릭스(information matrix)(또는 '정보 행렬')를 생성하고, 정보 매트릭스를 통해 추출된 특징점들의 정합 오차에 대한 스코어를 계산할 수 있다. 다만, 프론트 엔드 프로세서의 정보 매트릭스를 생성하고, 정합 오차에 대한 스코어를 계산하는 동작에 대한 구체적인 설명은 후술하도록 한다.
504 단계에서, 일 실시예에 따른 프론트 엔드 프로세서는 503 단계에서 계산된 추출된 특징점들의 정합 오차에 대한 스코어에 기초하여, 추출된 특징점들 중에서 지정된 개수만큼의 특징점들을 선택할 수 있다. 이 때, 프론트 엔드 프로세서에서 선택된 특징점들에 관한 정보는 백 엔드 프로세서(예: 도 3의 백 엔드 프로세서(122))로 전송될 수 있으며, 백 엔드 프로세서는 선택된 특징점들을 이용하여 전자 장치의 주변 맵 및 현재 포즈를 추정할 수 있다.
도 8은 일 실시예에 따른 전자 장치의 동작 방법을 설명하기 위한 흐름도이다. 도 8는 도 1 내지 도 3에 도시된 전자 장치(100)의 동작 방법을 나타낸다.
도 8을 참조하면, 801 단계에서, 일 실시예에 따른 전자 장치는 데이터 획득부(예: 도 3의 데이터 획득부(110))를 통해 외부 데이터를 획득할 수 있다. 예를 들어, 전자 장치는 데이터 획득부를 통해 전자 장치의 주변 객체에 대한 이미지 데이터 및/또는 전자 장치의 움직임에 대응되는 관성 데이터를 획득할 수 있으나, 이에 한정되는 것은 아니다.
802 단계에서, 일 실시예에 따른 전자 장치의 프로세서(예: 도 3의 프로세서(120))는 801 단계에서 획득된 외부 데이터에 기초하여, 전자 장치의 주변 객체에 대한 특징점들을 추출할 수 있다. 예를 들어, 프로세서를 구성하는 프론트 엔드 프로세서(예: 도 3의 프론트 엔드 프로세서(121))는 데이터 획득부로부터 주변 객체에 대한 이미지 데이터를 수신할 수 있으며, 수신된 주변 객체에 대한 이미지 데이터로부터 주변 객체에 대한 특징점들을 추출할 수 있다.
803 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 802 단계를 통해 추출된 특징점들의 개수(k)와 메모리(예: 도 3의 메모리(130))에 저장된 지정된 개수(n)를 비교할 수 있다.
803 단계에서 추출된 특징점들의 개수(k)가 지정된 개수(n)보다 많은 경우, 804 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 추출된 특징점들의 정합 오차에 대한 스코어를 계산할 수 있다. 예를 들어, 프로세서는 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성하고, 생성된 정보 매트릭스를 이용하여 추출된 특징점들의 정합 오차에 대한 스코어를 계산할 수 있으나, 이에 대한 구체적인 설명은 도 9를 참조하여 설명하도록 한다.
805 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 804 단계를 통해 계산된 추출된 특징점들의 정합 오차에 대한 스코어에 기초하여, 추출된 특징점들 중에서 지정된 개수(n)의 특징점들을 선택할 수 있다.
추출된 특징점들의 개수가 지정된 개수(n)보다 많은 경우, 프로세서의 연산량이 증가하여 레이턴시가 발생할 수 있으나, 일 실시예에 따른 전자 장치는 상술한 804 단계 내지 805 단계를 통해 레이턴시 발생을 최소화할 수 있다.
반면, 803 단계에서 추출된 특징점들의 개수(k)가 지정된 개수(n) 이하인 경우, 레이턴시가 발생할 가능성이 높지 않으므로, 일 실시예에 따른 전자 장치는 804 단계 내지 805 단계를 수행하지 않고, 806 단계를 수행할 수 있다.
806 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 특징점들에 대해 광속 조절 또는 칼만 필터링을 수행함으로써, 전자 장치의 주변 맵 및 현재 포즈를 추정할 수 있다. 예를 들어, 프로세서를 구성하는 백 엔드 프로세서(예: 도 3의 백 엔드 프로세서(122))는 프론트 엔드 프로세서에서 추출 및/또는 선택된 특징점들에 대해 광속 조절 또는 칼만 필터링을 수행하여, 전자 장치의 주변 맵 및 전자 장치의 6 자유도 포즈에 관한 정보를 추정할 수 있으나, 이에 한정되는 것은 아니다.
일 예시에서, 프로세서는 802 단계에서 추출된 특징점의 개수(k)가 지정된 개수(n)보다 많은 경우에는 805 단계를 통해 선택된 특징점들에 대해 광속 조절 또는 칼만 필터링을 수행하여, 전자 장치의 주변 맵 및 현재 포즈를 추정할 수 있다.
다른 예시에서, 프로세서는 802 단계에서 추출된 특징점의 개수(k)가 지정된 개수(n) 이하인 경우에는 추출된 특징점들에 대해 광속 조절 또는 칼만 필터링을 수행하여, 전자 장치의 주변 맵 및 현재 포즈를 추정할 수 있다.
807 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 806 단계에서 추정된 전자 장치의 주변 맵 및 포즈에 관한 정보를 통해 증강 현실 이미지를 생성하고, 디스플레이를 통해 생성된 증강 현실 이미지를 표시함으로써, 사용자에게 증강 현실 이미지를 제공할 수 있다.
도 9는 일 실시예에 따른 전자 장치의 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는 방법을 설명하기 위한 흐름도이다.
또한, 도 10a는 월드 좌표계에서의 객체의 위치와 디스플레이 좌표계에서의 객체의 위치를 나타내는 도면이며, 도 10b는 디스플레이 상에 표시되는 AR 객체의 정합 오차를 나타내는 도면이다.
도 9는 도 8의 804 단계를 구체적으로 설명하기 위한 흐름도이며, 이하에서 도 9의 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는 방법에 대해 설명함에 있어, 도 10a 및 도 10b를 참조하여 설명하도록 한다.
도 9, 도 10a 및 도 10b를 참조하면, 804a 단계에서, 일 실시예에 따른 전자 장치의 프로세서(예: 도 3의 프로세서(120))는 도 8의 802 단계를 통해 추출된 특징점들의 정합 오차에 대한 정보 매트릭스(information matrix)를 생성할 수 있다.
본 개시에서 '정합 오차에 대한 정보 매트릭스'는 특징점들이 정합 오차에 미치는 영향을 수치화한 매트릭스로, 해당 표현은 이하에서도 동일한 의미로 사용될 수 있다.
SLAM은 수학식 1과 같이 전자 장치의 포즈(예: 6 자유도 포즈)와 특징점들의 위치를 포함하는 상태 변수를 추정하는 알고리즘으로, 추정된 상태 변수에 공분산은 수학식 2와 같이 표현될 수 있다.
수학식 1에서 는 k 시간(time step)에서 추정하고자 하는 주변 객체 및 전자 장치의 상태 변수를 의미하며, 는 전자 장치의 위치를, 는 전자 장치의 속도를, 는 전자 장치의 회전 쿼터니언을 의미한다. 또한, 는 전자 장치의 관성 측정 센서(예: 도 3의 관성 측정 센서(112))의 가속도 바이어스를, 는 관성 측정 센서의 각속도 바이어스를, 는 주변 객체의 N번째 특징점의 위치를 의미한다.
이 때, 추출된 특징점들이 상태 변수()를 추정하는데 영향을 미치는 정도는 특징점들의 포즈와 불확실성(uncertainty)을 통해 계산될 수 있으며, 추출된 특징점들이 상태 변수를 추정하는데 영향력(또는 '가관측성(degree of observability)')은 포즈 추정 오차에 대한 정보 매트릭스를 통해 수치화될 수 있다. 본 개시에서 '포즈 추정 오차에 대한 정보 매트릭스'는 특징점들이 월드 좌표계에서의 주변 객체의 포즈 추정 오차에 미치는 영향을 수치화한 매트릭스를 의미하며, 해당 표현은 이하에서도 동일한 의미로 사용될 수 있다.
일 실시예에 따르면, 전자 장치의 프로세서는 수학식 3을 통해 도 8의 802 단계에서 추출된 특징점들의 포즈 추정 오차에 대한 정보 매트릭스를 계산 또는 생성할 수 있다.
본 개시의 수학식 3에서 은 k+1번째 시간(time step)에서 추출된 특징점들에 대한 포즈 추정 오차에 대한 정보 매트릭스를 의미한다. 또한, 는 k번째 시간과 k+1번째 시간 사이의 상태 전이 행렬(state transition matrix)을, 는 k+1번째 시간에서의 자코비언 행렬(measurement jacobian matrix)을, 는 k+1번째 시간에서의 노이즈 행렬(measurement noise matrix)을 의미한다.
상술한 상태 전이 행렬, 자코비언 행렬, 노이즈 행렬에 관한 데이터는 SLAM 알고리즘에 의해 정의될 수 있으며, 프로세서는 SLAM 알고리즘에 정의된 데이터를 통해 추출된 특징점들의 포즈 추정 오차에 대한 정보 매트릭스를 생성할 수 있다.
일 실시예에 따르면, 전자 장치의 프로세서는 생성된 포즈 추정 오차에 대한 정보 매트릭스 및 월드 좌표계에서의 전자 장치의 주변 객체의 포즈와 디스플레이 좌표계에서의 주변 객체의 포즈의 오차에 기초하여, 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성할 수 있다.
사용자에게 증강 현실 이미지를 제공하는 전자 장치의 경우, 전자 장치의 주변 객체가 전자 장치의 디스플레이 상에 투영되어 표시되므로, 디스플레이 좌표계에서의 주변 객체의 포즈를 추정하는 것이 중요할 수 있다.
도 10a를 참조하면, 월드 좌표계와 디스플레이 좌표계의 원점이 상이함에 따라, 월드 좌표계에서의 전자 장치의 주변 객체(object)의 위치()와 디스플레이 좌표계에서의 주변 객체의 위치()는 다르게 정의될 수 있다. 이 때, 디스플레이 좌표계에서의 주변 객체의 위치와 월드 좌표계에서의 디스플레이의 포즈(, )의 관계는 수학식 4와 같이 표현될 수 있다.
도 10a 및 수학식 4에서 는 디스플레이 좌표계에서의 주변 객체의 위치, 는 월드 좌표계에서의 주변 객체의 위치를 의미한다. 또한, 는 월드 좌표계에서의 디스플레이의 위치(position)를, 는 월드 좌표계에서의 디스플레이의 자세(orientation)를 의미한다.
이 때, 월드 좌표계에서의 디스플레이의 위치 ()와 디스플레이의 자세 ()는 SLAM 알고리즘의 추정 오차(이하, 'SLAM 오차(SLAM error)')를 포함하고 있으며, 월드 좌표계에서의 디스플레이의 포즈와 추정 오차의 관계는 수학식 5 및 수학식 6과 같이 표현될 수 있다.
수학식 5 및 수학식 6에서 는 SLAM 알고리즘의 자세 추정 오차(또는 'rotation error')를, 는 SLAM 알고리즘의 위치 추정 오차(또는 'translation error)를 skew는 반대칭 행렬(skew-symmetric matrix)을 의미한다. 또한, 는 월드 좌표계에서의 디스플레이의 위치에 대한 추정 값을, 는 월드 좌표계에서의 디스플레이의 자세에 대한 추정 값을 의미한다.
도 10b를 참조하면, 디스플레이 좌표계에서의 주변 객체(object)의 실체 위치와 SLAM 알고리즘에 의해 추정된 객체(AR object)의 위치의 차이()는 수학식 7과 같이 표현될 수 있으며, 정합 오차(registration error)는 에서 디스플레이 좌표계와 대응되는 2차원 평면 값을 추출하여 계산될 수 있다.
또한, 수학식 5 내지 수학식 7을 종합하면, 디스플레이 좌표계에서의 주변 객체(object)의 실체 위치와 SLAM 알고리즘에 의해 추정된 객체(AR object)의 위치의 차이()는 수학식 8과 같이 표현될 수 있다.
수학식 8에서 는 디스플레이 원점에서 주변 객체까지의 거리를, 는 디스플레이의 원점에서 주변 객체를 향하는 단위 벡터를 의미하며, 디스플레이 좌표계에서의 주변 객체의 위치()는 수학식 9과 같이 표현될 수 있다.
일 실시예에 따르면, 전자 장치의 프로세서는 디스플레이 좌표계에서의 주변 객체의 실체 위치와 추정된 객체의 위치의 차이()에 관한 공분산 행렬()을 계산하고, 계산된 공분산 행렬에 기초하여 추출된 특징점들의 정합 오차에 대한 정보 매트릭스()를 생성할 수 있다.
이 때, 프로세서는 디스플레이 좌표계에서의 주변 객체의 위치()에 관한 정보를 주변 객체의 위치를 추정할 수 있는 외부 모듈로부터 수신하거나, 디스플레이 좌표계에서의 주변 객체의 위치를 가정함으로써, 수학식 8로부터 행렬을 획득할 수 있으나, 이에 대한 구체적인 설명은 후술하도록 한다.
예를 들어, 디스플레이 좌표계에서의 주변 객체의 실체 위치와 추정된 객체의 위치의 차이에 관한 공분산 행렬()은 수학식 10과 같이 표현될 수 있으며, 프로세서는 수학식 8을 통해 획득된 행렬을 이용하여 디스플레이 좌표계에서의 주변 객체의 실체 위치와 추정된 객체의 위치의 차이에 관한 공분산 행렬()을 계산할 수 있다.
다른 예시에서, 프로세서는 디스플레이 좌표계에서의 주변 객체의 실체 위치와 추정된 객체의 위치의 차이에 관한 공분산 행렬()과 추출된 특징점들의 정합 오차에 대한 정보 매트릭스의 상관 관계에 기초하여, 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성할 수 있다.
예를 들어, 상술한 공분산 행렬()과 추출된 특징점들의 정합 오차에 대한 정보 매트릭스는 역행렬 관계이므로, 프로세서는 상술한 공분산 행렬()의 역행렬을 구하여 수학식 11과 같은 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성할 수 있다.
즉, 일 실시예에 따른 전자 장치의 프로세서는 상술한 과정을 통해 월드 좌표계에서의 주변 객체의 포즈와 디스플레이 좌표계에서의 주변 객체의 포즈의 오차에 기초하여 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성할 수 있다.
804b 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 804a 단계에서 생성된 추출된 특징점들의 정합 오차에 대한 정보 매트릭스에 기초하여, 추출된 특징점들의 정합 오차에 대한 스코어를 계산할 수 있다.
일 실시예에 따르면, 프로세서는 3차원 행렬인 정합 오차에 대한 정보 매트릭스를 스칼라(scalar)화함으로써, 추출된 특징점들의 정합 오차에 대한 스코어를 계산할 수 있다.
일 예시에서, 프로세서는 수학식 12와 같이 정합 오차에 대한 정보 매트릭스에 대해 로그 디터미넌트(log-determinant) 연산을 수행함으로써, 추출된 특징점들의 정합 오차에 대한 스코어(information score)를 계산할 수 있으나, 이에 한정되는 것은 아니다.
다른 예시에서, 프로세서는 트레이스(trace) 또는 정합 오차에 대한 정보 매트릭스의 최대 고유치(maxmimum eigenvalue)를 계산하는 연산을 수행함으로써, 정합 오차에 대한 정보 매트릭스로부터 디스플레이 좌표계에 대응되는 2차원(2D) 값을 추출하고, 추출된 2차원 값을 스칼라(scalar)화할 수도 있다.
일 실시예에 따르면, 프로세서는 상술한 804a 및 804b 단계를 통해 계산된 추출된 특징점들의 정합 오차에 대한 스코어에 기초하여, 추출된 특징점들 중에서 지정된 개수만큼의 특징점들을 선택할 수 있다.
예를 들어, 프로세서는 추출된 특징점들 중에서 지정된 개수의 특징점들을 조합(combination)하고, 조합된 특징점들 각각에 대해 정합 오차에 대한 스코어를 계산한 후, 정합 오차에 대한 스코어가 높은 조합의 특징점들을 선택할 수 있으나, 이에 한정되는 것은 아니다. 다른 예시에서, 프로세서는 추출된 특징점들 각각에 대한 정합 오차에 대한 스코어를 계산하고, 정합 오차에 대한 스코어가 높은 특징점들을 지정된 개수만큼 선택할 수도 있다.
다른 실시예에 따르면, 프로세서는 상술한 804a 내지 804b 단계를 통해 계산된 추출된 특징점들의 정합 오차에 대한 스코어, 특징점들의 명암도(intensity)의 변화량 및 특징점들의 추적 빈도에 기초하여 추출된 특징점들 중에서 지정된 개수만큼의 특징점을 선택할 수도 있다.
예를 들어, 프로세서는 추출된 특징점들의 정합 오차에 대한 스코어, 특징점들의 명암도(intensitiy)의 변화량 및 특징점들의 추적 빈도에 기초하여, 수학식 13과 같은 특징점 선택을 위한 기준치()를 계산하고, 기준치가 높은 특징점들을 지정된 개수만큼 선택할 수도 있다.
수학식 13에서 는 정합 오차에 대한 스코어를 기준치로 변환한 값으로, 정합 오차에 대한 스코어가 높을수록 도 커질 수 있다. 는 지정된 시간 간격(time step)에서의 특징점의 주변 픽셀(pixel) 대비 명암도의 변화량을 기준치로 변환한 값으로, 명암도의 변화량이 클수록 도 커질 수 있다. 은 주변 객체에 대한 이미지로부터 특징점들이 추적(tracking)되는 빈도를 기준치로 변환한 값으로, 특징점들의 추적 빈도가 높을수록 이 커질 수 있다.
또한, 수학식 13에서 ,, 는 각각 , , 에 대한 가중치를 의미할 수 있으며, ,, 는 고정된 값일 수 있으나, 전자 장치의 종류 또는 사용자의 설정에 따라 가변될 수도 있다.
일 예시에서, 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는 과정에서 특징점들의 명암도의 변화량 및/또는 특징점들의 추적 빈도가 고려된 경우, , 는 '0'으로 설정될 수 있으나, 이에 한정되는 것은 아니다.
도 11은 일 실시예에 따른 전자 장치의 주변 객체의 포즈 오차(pose error)를 계산하는 방법을 설명하기 위한 흐름도이다. 도 11은 도 9의 804a 단계에서 수학식 8을 통해 정보 매트릭스를 생성하는 과정을 나타낸다.
도 11을 참조하면, 1101 단계에서. 일 실시예에 따른 전자 장치(예: 도 1 내지 도 3의 전자 장치(100))의 프로세서(예: 도 3의 프로세서(120))는 주변 객체의 위치 추정이 가능한지 여부를 판단할 수 있다.
예를 들어, 전자 장치가 주변 객체를 추정할 수 있는 외부 모듈(예: 객체 추적 모듈(object tracking module))과 작동적으로 연결된 경우, 전자 장치는 외부 모듈을 통해 주변 객체의 위치를 추정할 수 있으므로, 프로세서는 주변 객체의 위치 추정이 가능하다고 판단할 수 있다.
반면, 전자 장치가 외부 모듈과 연결되지 않은 경우, 전자 장치는 주변 객체의 위치를 추정할 수 없으므로, 프로세서는 주변 객체의 위치 추정이 불가능하다고 판단할 수 있다.
1101 단계에서 주변 객체의 위치 추정이 가능하다고 판단되는 경우, 1102 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 외부 모듈로부터 주변 객체에 대한 위치 정보를 수신할 수 있다. 예를 들어, 외부 모듈은 디스플레이 좌표계에서의 주변 객체의 위치를 추정하여 주변 객체에 대한 위치 정보를 생성할 수 있으며, 프로세서는 외부 모듈에서 생성된 주변 객체에 대한 위치 정보를 수신할 수 있다.
1103 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 1102 단계에서 수신된 주변 객체에 대한 위치 정보에 기초하여 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성할 수 있다.
일 실시예에서, 프로세서는 앞선 수학식 8로부터 계산된 행렬을 통해 디스플레이 좌표계에서의 주변 객체의 실체 위치와 추정된 객체의 위치의 차이에 관한 공분산 행렬을 계산하고, 계산된 공분산 행렬의 역행렬을 계산함으로써, 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성할 수 있다. 이 때, 프로세서는 수학식 14를 통해 행렬을 계산될 수 있다.
예를 들어, 프로세서는 SLAM 알고리즘을 통해 추정되는 디스플레이의 포즈(예: 또는 ), 외부 모듈을 통해 획득된 주변 객체에 대한 위치 정보(예: , )를 통해 행렬을 계산할 수 있다.
반면, 1101 단계에서 주변 객체의 위치 추정이 불가능하다고 판단되는 경우, 1104 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 디스플레이 좌표계에서의 주변 객체의 위치를 가정하여 가상의 주변 객체의 위치 정보를 생성할 수 있다.
예를 들어, 전자 장치의 사용자가 주변 객체가 디스플레이의 중심에 위치하도록 행동할 가능성이 높을 수 있다. 이에 따라, 프로세서는 주변 객체가 디스플레이 좌표계의 원점에 위치한다고 가정하고, 이와 같은 가정에 기초하여 주변 객체의 위치 정보를 생성할 수 있으나, 이에 한정되는 것은 아니다.
1105 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 1104 단계에서 생성된 가상의 주변 객체의 위치 정보에 기초하여 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성할 수 있다.
예를 들어, 프로세서는 SLAM 알고리즘을 통해 추정되는 디스플레이의 포즈(예: 또는 )와 가정을 통해 생성된 주변 객체의 위치 정보를 수학식 14에 적용하여 행렬을 계산하고, 행렬에 기초하여 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성할 수 있으나, 이에 한정되는 것은 아니다.
도 12는 일 실시예에 따른 전자 장치에서 특징점 개수를 증가시키 위한 방법을 설명하기 위한 흐름도이다. 도 12는 도 8의 805 단계 이후에 특징점들을 추가로 선택하기 위한 방법들을 나타낸다.
도 12를 참조하면, 1201 단계에서, 일 실시예에 따른 전자 장치(예: 도 1 내지 도 3의 전자 장치(100))의 프로세서(예: 도 3의 프로세서(120))는 도 8의 805 단계를 통해 선택된 특징점들의 정합 오차에 대한 하위 바운드(lower bound)(또는 '하한')를 계산할 수 있다.
크래머 라오 하한 이론(Cramr-Rao Lower Bound Theorem)에 따르면, 선택된 특징점들의 정합 오차에 대한 정보 매트릭스 () 의 역행렬은 최적 관측기(optimal estimator)(예: 칼만 필터)의 추정 공분산 행렬()의 하위 바운드에 해당하게 된다.
이 때, 정합 오차에 대한 정보 매트릭스() 에서 디스플레이 좌표계에 대응되는 2차원 값을 취한 정보 매트릭스() 와 추정 공분산 행렬에서 디스플레이 좌표계에 대응되는 2차원 값을 취한 공분산 행렬()의 사이의 관계는 수학식 15와 같이 표현될 수 있다.
일 실시예에 따르면, 추정 공분산 행렬에서 디스플레이 좌표계에 대응되는 2차원 값을 취한 공분산 행렬()은 수학식 16과 같이 2x2 행렬로 표현될 수 있으며, 프로세서는 디스플레이 좌표계에 대응되는 2차원 값을 취한 공분산 행렬()의 대각선 성분(diagonal element)을 이용하여 정합 오차의 하위 바운드를 계산할 수 있다.
예를 들어, 프로세서는 수학식 17과 같이 디스플레이 좌표계에 대응되는 2차원 값을 취한 공분산 행렬()의 대각선 성분에 대한 제곱근(square root) 연산을 수행하여 정합 오차의 하위 바운드를 계산할 수 있으나, 이에 한정되는 것은 아니다.
1202 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 1201 단계에서 계산된 정합 오차의 하위 바운드가 메모리(예: 도 3의 메모리(130))에 저장된 제1 임계값보다 작은지 여부를 판단할 수 있다.
본 개시에서 '제1 임계값'은 정합 오차 최소화를 위해 설정된 정합 오차의 상한 임계 값을 의미할 수 있다. 예를 들어, 정합 오차의 하위 바운드가 제1 임계값보다 큰 경우에는 선택된 특징점들에 대하여 최적화를 수행(예: 칼만 필터링)하는 것만으로는 정합 오차를 최소화하지 못할 수 있다. 반면, 정합 오차의 하위 바운드가 제1 임계값 이하인 경우에는 선택된 특징점들에 대해 최적화를 수행하여 원하는 수준의 정합 오차를 확보할 수 있다.
1202 단계에서 정합 오차의 하위 바운드가 제1 임계값보다 크다고 판단되는 경우, 1203 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 프로세서의 연산량(computing budget)이 메모리에 저장된 지정된 연산량보다 작은지 여부를 판단할 수 있다.
본 개시에서 '지정된 연산량'은 프로세서의 임계 연산량(threshold computing budget)을 수치화한 값을 의미하며, 프로세서의 연산량이 지정된 연산량보다 큰 경우, 프로세서의 연산량이 과도해져 레이턴시가 발생할 수 있다. 해당 표현은 이하에서도 동일한 의미로 사용될 수 있다.
예를 들어, 프로세서는 정합 오차의 하위 바운드가 제1 임계값보다 큰 경우, 선택된 특징점들만으로는 정합 오차를 최소화하기 불충분하다고 판단하고, 특징점 추가 선택이 가능한 상황인지 판단하기 위하여 프로세서의 연산량과 지정된 연산량을 비교할 수 있다.
반면, 1202 단계에서 정합 오차의 하위 바운드가 제1 임계값 이하라고 판단되는 경우, 일 실시예에 따른 전자 장치의 프로세서는 선택된 특징점들만으로 원하는 수준의 정합 오차를 확보할 수 있는 상황이라고 판단하고, 1205 단계를 통해 선택된 특징점들의 개수를 유지할 수 있다.
1203 단계에서 프로세서의 연산량이 지정된 연산량보다 작다고 판단되는 경우, 1204 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 추출된 특징점들 중에서 소정 개수(α)의 특징점을 추가로 선택할 수 있다.
프로세서의 연산량이 지정된 연산량보다 작은 경우, 특징점을 추가적으로 선택하더라도 레이턴시가 발생하지 않을 수 있다. 이에 따라, 프로세서는 정합 오차의 하위 바운드가 제1 임계값보다 크고, 프로세서의 연산량이 지정된 연산량보다 작은 경우, 특징점들을 추가로 선택하여 정합 오차 성능을 확보할 수 있다.
반면, 1203 단계에서 프로세서의 연산량이 지정된 연산량 이상인 것으로 판단되는 경우, 1205 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 특징점들을 추가로 선택할 수 없는 상황으로 판단하고, 선택된 특징점들의 개수를 유지할 수 있다.
1206 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 특징점들에 대해 대해 광속 조절 또는 칼만 필터링을 수행함으로써, 전자 장치의 주변 맵 및 현재 포즈를 추정할 수 있다.
일 실시예에 따르면, 프로세서는 주변 객체로부터 추출된 특징점들 및/또는 1204 단계를 통해 추가로 선택된 특징점에 대하여 광속 조절 또는 칼만 필터링을 수행하여, 전자 장치의 주변 맵 및 전자 장치의 6 자유도 포즈에 관한 정보를 추정할 수 있다.
예를 들어, 프로세서는 정합 오차의 하위 바운드가 제1 임계값보다 크고, 프로세서의 연산량이 지정된 연산량보다 작은 경우, 추출된 특징점들과 추가로 선택된 소정 개수(α)의 특징점에 대해 최적화를 수행할 수 있다. 다른 예로, 프로세서는 정합 오차의 하위 바운드가 제1 임계값 이하이거나, 프로세서의 연산량이 지정된 연산량 이상인 경우, 추출된 특징점들에 대해서만 최적화를 수행할 수 있다.
1207 단계에서, 일 실시예에 따른 전자 장치의 프로세서는 1206 단계에서 추정된 전자 장치의 주변 맵 및 포즈에 관한 정보를 통해 증강 현실 이미지를 생성하고, 디스플레이를 통해 생성된 증강 현실 이미지를 표시함으로써, 사용자에게 증강 현실 이미지를 제공할 수 있다.
즉, 일 실시예에 따른 전자 장치는 상술한 1201 단계 내지 1205 단계를 통해 추출된 특징점들의 정합 오차 및 프로세서의 연산량에 따라 특징점들의 개수를 조절할 수 있으며, 이를 통해 레이턴시 발생을 방지하면서도 정합 오차 성능을 유지 또는 향상시킬 수 있다.
도 13은 다른 실시예에 따른 전자 장치에서 특징점 개수를 감소시키기 위한 방법을 설명하기 위한 도면이다. 도 13은 도 8의 805 단계 이후에 선택된 특징점들 중 일부 특징점들을 제외 또는 배제하기 위한 방법들을 나타낸다.
도 13을 참조하면, 1301 단계에서, 다른 실시예에 따른 전자 장치(예: 도 1 내지 도 3의 전자 장치(100))의 프로세서(예: 도 3의 프로세서(120))는 도 8의 805 단계를 통해 선택된 특징점들의 정합 오차에 대한 하위 바운드를 계산할 수 있다. 1301 단계는 도 12의 1201 단계와 실질적으로 동일 또는 유사하므로, 이하에서 중복되는 설명은 생략하도록 한다.
1302 단계에서, 다른 실시예에 따른 전자 장치의 프로세서는 1301 단계에서 계산된 정합 오차의 하위 바운드가 메모리(예: 도 3의 메모리(130))에 저장된 제2 임계값보다 작은지 여부를 판단할 수 있다.
본 개시에서 '제2 임계값'은 정합 오차 최소화를 위해 설정된 정합 오차의 하한 임계 값을 의미할 수 있으며, 제2 임계값은 제1 임계값보다 작은 값일 수 있다. 예를 들어, 정합 오차의 하위 바운드가 제2 임계값보다 작은 경우, 추출된 특징점들 중 일부 특징점들이 제외 또는 배제되더라도 원하는 수준의 정합 오차 성능을 확보할 수 있다.
1302 단계에서 정합 오차의 하위 바운드가 제2 임계값보다 작다고 판단되는 경우, 1303 단계에서, 다른 실시예에 따른 전자 장치의 프로세서는 프로세서의 연산량(computing budget)이 메모리에 저장된 지정된 연산량보다 큰지 여부를 판단할 수 있다.
예를 들어, 프로세서는 정합 오차의 하위 바운드가 제2 임계값보다 작은 경우, 추출된 특징점들 중에서 일부 특징점들이 제외되더라도 원하는 수준의 정합 오차를 확보할 수 있는 상황이라고 판단하고, 레이턴시가 발생할 수 있는 상황인지 여부를 판단하기 위하여 프로세서의 연산량과 지정된 연산량을 비교할 수 있다.
반면, 1302 단계에서 정합 오차의 하위 바운드가 제2 임계값 이상이라고 판단되는 경우, 다른 실시예에 따른 전자 장치의 프로세서는 추출된 특징점들 중에서 일부 특징점들이 제외 또는 배제되는 경우, 원하는 수준의 정합 오차를 확보할 수 없는 상황이라고 판단하고, 1305 단계를 통해 선택된 특징점들의 개수를 유지할 수 있다.
1303 단계에서 프로세서의 연산량이 지정된 연산량보다 크다고 판단되는 경우, 1304 단계에서, 다른 실시예에 따른 전자 장치의 프로세서는 추출된 특징점들 중에서 소정 개수(β)의 특징점을 제외하여 특징점들의 개수를 줄일 수 있다
프로세서의 연산량이 지정된 연산량보다 큰 경우, 추출된 특징점에 대한 최적화를 수행하는 과정에서 레이턴시가 발생할 수 있다. 이에 따라, 프로세서는 정합 오차의 하위 바운드가 제2 임계값보다 작고, 프로세서의 연산량이 지정된 연산량보다 큰 경우, 특징점의 개수를 줄여 원하는 수준의 정합 오차를 확보하면서도 레이턴시 발생을 방지할 수 있다.
반면, 1303 단계에서 프로세서의 연산량이 지정된 연산량 이하인 것으로 판단되는 경우, 1305 단계에서, 다른 실시예에 따른 전자 장치의 프로세서는 레이턴시가 발생할 가능성이 높지 않은 상황으로 판단하고, 선택된 특징점들의 개수를 유지할 수 있다.
1306 단계에서, 다른 실시예에 따른 전자 장치의 프로세서는 특징점들에 대해 대해 광속 조절 또는 칼만 필터링을 수행함으로써, 전자 장치의 주변 맵 및 현재 포즈를 추정할 수 있다.
일 실시예에 따르면, 프로세서는 주변 객체로부터 추출된 특징점들 및/또는 1304 단계를 통해 개수가 조절된 특징점에 대하여 광속 조절 또는 칼만 필터링을 수행하여, 전자 장치의 주변 맵 및 전자 장치의 6 자유도 포즈에 관한 정보를 추정할 수 있다.
예를 들어, 프로세서는 정합 오차의 하위 바운드가 제2 임계값보다 작고, 프로세서의 연산량이 지정된 연산량보다 큰 경우, 추출된 특징점들에서 소정 개수(β)의 특징점이 제외된 특징점에 대해 최적화를 수행할 수 있다. 다른 예로, 프로세서는 정합 오차의 하위 바운드가 제2 임계값 이상이거나, 프로세서의 연산량이 지정된 연산량 이하인 경우, 추출된 특징점들에 대해 최적화를 수행할 수 있다.
1307 단계에서, 다른 실시예에 따른 전자 장치의 프로세서는 1306 단계에서 추정된 전자 장치의 주변 맵 및 포즈에 관한 정보를 통해 증강 현실 이미지를 생성하고, 디스플레이를 통해 생성된 증강 현실 이미지를 표시함으로써, 사용자에게 증강 현실 이미지를 제공할 수 있다.
즉, 다른 실시예에 따른 전자 장치는 상술한 1301 단계 내지 1305 단계를 통해 추출된 특징점들의 정합 오차 및 프로세서의 연산량에 따라 특징점들의 개수를 조절할 수 있으며, 이를 통해 레이턴시 발생을 방지하면서도 정합 오차 성능을 유지 또는 향상시킬 수 있다.
한편, 전술한 도 5, 도 8, 도 9, 도 11 내지 도 13의 동작 방법은 그 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체에 기록될 수 있다. 컴퓨터로 읽을 수 있는 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.
Claims (20)
- SLAM 기반의 전자 장치에 있어서,
외부 데이터를 획득하는 데이터 획득부;
메모리; 및
상기 데이터 획득부 및 상기 메모리와 작동적으로 연결되는(operatively connected) 프로세서;를 포함하고,
상기 프로세서는,
상기 획득된 외부 데이터로부터 주변 객체(object)에 대한 특징점들(features)을 추출하고,
상기 추출된 특징점들의 개수가 상기 메모리에 저장된 지정된 개수보다 많은 경우, 상기 추출된 특징점들의 정합 오차(registration error)에 대한 스코어를 계산하며,
상기 계산된 스코어에 기초하여, 상기 추출된 특징점들 중에서 상기 지정된 개수의 특징점들을 선택하는, 전자 장치. - 제1항에 있어서,
상기 프로세서는,
월드 좌표계에서의 상기 주변 객체의 포즈와 상기 전자 장치의 디스플레이를 기준으로 설정된 디스플레이 좌표계에서의 상기 주변 객체의 포즈의 사이의 오차에 기초하여, 상기 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성하고,
상기 생성된 정보 매트릭스를 통해 상기 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는, 전자 장치. - 제2항에 있어서,
상기 프로세서는,
상기 주변 객체의 위치를 추정하는 외부 모듈로부터 상기 주변 객체에 대한 위치 정보를 수신하고,
상기 수신된 상기 주변 객체에 대한 위치 정보에 기초하여, 상기 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성하는, 전자 장치. - 제2항에 있어서,
상기 프로세서는,
상기 디스플레이 좌표계에서의 상기 주변 객체의 위치를 가정하여 상기 주변 객체의 위치 정보를 생성하고,
상기 생성된 주변 객체의 위치 정보에 기초하여, 상기 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성하는, 전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 계산된 스코어, 상기 추출된 특징점들의 명암도(intensity)의 변화량 및 추적 빈도에 기초하여, 상기 추출된 특징점들 중에서 상기 지정된 개수의 특징점들을 선택하는, 전자 장치. - 제2항에 있어서,
상기 프로세서는,
상기 생성된 정보 매트릭스에 기초하여, 상기 선택된 특징점들의 정합 오차에 대한 하위 바운드(lower bound)를 계산하는, 전자 장치. - 제6항에 있어서,
상기 프로세서는,
상기 계산된 하위 바운드가 상기 메모리에 저장된 제1 임계 값보다 크고, 상기 프로세서의 연산량(computing budget)이 상기 메모리에 저장된 지정된 연산량보다 작다는 판단에 기초하여, 상기 추출된 특징점들 중에서 소정 개수의 특징점을 추가로 선택하는, 전자 장치. - 제6항에 있어서,
상기 프로세서는,
상기 계산된 하위 바운드가 상기 메모리에 저장된 제2 임계 값보다 작고, 상기 프로세서의 연산량이 상기 메모리에 저장된 지정된 연산량보다 크다는 판단에 기초하여, 상기 선택된 특징점들 중에서 소정 개수의 특징점을 제외하는, 전자 장치. - 제1항에 있어서,
상기 데이터 획득부는,
주변 객체에 대한 이미지 데이터를 획득하기 위한 카메라; 및
상기 전자 장치의 움직임에 대응되는 관성 데이터를 획득하기 위한 관성 측정 센서(IMU, inertial measurement unit);를 포함하는, 전자 장치. - 제1항에 있어서,
상기 프로세서는, 상기 선택된 특징점들에 대하여 광속 조정(bundle adjustment) 또는 칼만 필터링(kalman filtering)을 수행함으로써, 상기 전자 장치의 포즈(pose) 및 주변 맵(map)을 추정하는, 전자 장치. - 제10항에 있어서,
상기 프로세서는,
상기 획득된 외부 데이터, 상기 추정된 포즈 및 주변 맵에 기초하여, 증강 현실 이미지를 생성하고,
디스플레이를 통해 상기 생성된 증강 현실 이미지를 표시하는, 전자 장치. - SLAM 기반의 전자 장치의 동작 방법에 있어서,
데이터 획득부를 통해 외부 데이터를 획득하는 단계;
상기 획득된 외부 데이터로부터 상기 전자 장치의 주변 객체에 대한 특징점들을 추출하는 단계;
상기 추출된 특징점들의 개수가 지정된 개수보다 많은 경우, 상기 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는 단계; 및
상기 계산된 스코어에 기초하여, 상기 추출된 특징점들 중에서 상기 지정된 개수의 특징점들을 선택하는 단계;를 포함하는, 방법. - 제12항에 있어서,
상기 외부 데이터를 획득하는 단계는,
카메라를 통해 주변 객체에 대한 이미지 데이터를 획득하는 단계; 및
관성 측정 센서(IMU)를 통해 상기 전자 장치의 움직임에 대응되는 관성 데이터를 획득하는 단계;를 포함하는, 방법. - 제12항에 있어서,
상기 정합 오차에 대한 스코어를 계산하는 단계는,
월드 좌표계에서의 상기 주변 객체의 포즈와 상기 전자 장치의 디스플레이를 기준으로 설정된 디스플레이 좌표계에서의 상기 주변 객체의 포즈의 사이의 오차에 기초하여, 상기 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성하는 단계; 및
상기 생성된 정보 매트릭스를 통해 상기 추출된 특징점들의 정합 오차에 대한 스코어를 계산하는 단계;를 포함하는, 방법. - 제14항에 있어서,
상기 정보 매트릭스를 생성하는 단계는,
상기 주변 객체의 위치를 추정하는 외부 모듈로부터 상기 주변 객체에 대한 위치 정보를 수신하는 단계; 및
상기 수신된 상기 주변 객체에 대한 위치 정보에 기초하여, 상기 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성하는 단계;를 포함하는, 방법. - 제14항에 있어서,
상기 정보 매트릭스를 생성하는 단계는,
상기 디스플레이 좌표계에서의 상기 주변 객체의 위치를 가정하여 상기 주변 객체의 위치 정보를 생성하는 단계; 및
상기 생성된 주변 객체의 위치 정보에 기초하여, 상기 추출된 특징점들의 정합 오차에 대한 정보 매트릭스를 생성하는 단계;를 포함하는, 방법. - 제12항에 있어서,
상기 특징점들을 선택하는 단계는,
상기 계산된 스코어, 상기 추출된 특징점들의 명암도의 변화량 및 추적 빈도에 기초하여, 상기 추출된 특징점들 중에서 상기 지정된 개수의 특징점들을 선택하는 단계;를 포함하는, 방법. - 제14항에 있어서,
상기 생성된 정보 매트릭스에 기초하여, 상기 선택된 특징점들의 정합 오차에 대한 하위 바운드를 계산하는 단계;를 더 포함하는, 방법. - 제18항에 있어서,
상기 계산된 하위 바운드가 제1 임계 값보다 큰 경우, 프로세서의 연산량(computing budget)과 지정된 연산량을 비교하는 단계; 및
상기 프로세서의 연산량이 상기 지정된 연산량보다 작다는 판단에 기초하여, 상기 추출된 특징점들 중에서 소정 개수의 특징점을 추가로 선택하는 단계;를 더 포함하는, 방법. - 제18항에 있어서,
상기 계산된 하위 바운드가 제2 임계 값보다 작은 경우, 프로세서의 연산량과 지정된 연산량을 비교하는 단계; 및
상기 프로세서의 연산량이 상기 지정된 연산량보다 크다는 판단에 기초하여, 상기 선택된 특징점들 중에서 소정 개수의 특징점을 제외하는 단계;를 더 포함하는, 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210094921A KR20230013883A (ko) | 2021-07-20 | 2021-07-20 | Slam 기반의 전자 장치 및 그 동작 방법 |
US17/581,310 US11756270B2 (en) | 2021-07-20 | 2022-01-21 | Slam-based electronic device and an operating method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210094921A KR20230013883A (ko) | 2021-07-20 | 2021-07-20 | Slam 기반의 전자 장치 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230013883A true KR20230013883A (ko) | 2023-01-27 |
Family
ID=85101621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210094921A KR20230013883A (ko) | 2021-07-20 | 2021-07-20 | Slam 기반의 전자 장치 및 그 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11756270B2 (ko) |
KR (1) | KR20230013883A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116592897A (zh) * | 2023-07-17 | 2023-08-15 | 河海大学 | 基于位姿不确定性的改进orb-slam2定位方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179086B (zh) * | 2017-05-24 | 2020-04-24 | 北京数字绿土科技有限公司 | 一种基于激光雷达的制图方法、装置及*** |
CN109556596A (zh) * | 2018-10-19 | 2019-04-02 | 北京极智嘉科技有限公司 | 基于地面纹理图像的导航方法、装置、设备及存储介质 |
KR20200104103A (ko) * | 2019-02-26 | 2020-09-03 | 삼성메디슨 주식회사 | 초음파 영상과 타 모달리티(modality) 영상을 정합하는 초음파 영상 장치 및 그 동작 방법 |
-
2021
- 2021-07-20 KR KR1020210094921A patent/KR20230013883A/ko active Search and Examination
-
2022
- 2022-01-21 US US17/581,310 patent/US11756270B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116592897A (zh) * | 2023-07-17 | 2023-08-15 | 河海大学 | 基于位姿不确定性的改进orb-slam2定位方法 |
Also Published As
Publication number | Publication date |
---|---|
US11756270B2 (en) | 2023-09-12 |
US20230038594A1 (en) | 2023-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10970425B2 (en) | Object detection and tracking | |
US10621751B2 (en) | Information processing device and computer program | |
US10311833B1 (en) | Head-mounted display device and method of operating a display apparatus tracking an object | |
US20220358767A1 (en) | Visual-Inertial Positional Awareness for Autonomous and Non-Autonomous Mapping | |
US10636156B2 (en) | Apparatus and method for analyzing three-dimensional information of image based on single camera and computer-readable medium storing program for analyzing three-dimensional information of image | |
JP2018511098A (ja) | 複合現実システム | |
US10304253B2 (en) | Computer program, object tracking method, and display device | |
US11960661B2 (en) | Unfused pose-based drift correction of a fused pose of a totem in a user interaction system | |
US11108964B2 (en) | Information processing apparatus presenting information, information processing method, and storage medium | |
KR20160094190A (ko) | 시선 추적 장치 및 방법 | |
WO2017213070A1 (ja) | 情報処理装置および方法、並びに記録媒体 | |
JP2018067115A (ja) | プログラム、追跡方法、追跡装置 | |
US20170316576A1 (en) | Method for Tracking Subject Head Position from Monocular-Source Image Sequence | |
EP4174777A1 (en) | Apparatus for accelerating simultaneous localization and mapping and electronic device including the same | |
US10748344B2 (en) | Methods and devices for user interaction in augmented reality | |
KR20230013883A (ko) | Slam 기반의 전자 장치 및 그 동작 방법 | |
JP2021527888A (ja) | 軸外カメラを使用して眼追跡を実施するための方法およびシステム | |
US20230047470A1 (en) | Information processing apparatus, information processing method, and computer-readable recording medium | |
US11694345B2 (en) | Moving object tracking using object and scene trackers | |
US20230127539A1 (en) | Information processing apparatus, information processing method, and information processing program | |
US20230064242A1 (en) | Electronic device for predicting pose and operating method thereof | |
US20230120092A1 (en) | Information processing device and information processing method | |
US20240054749A1 (en) | Information processing device and information processing method | |
US11972549B2 (en) | Frame selection for image matching in rapid target acquisition | |
KR20230017088A (ko) | 영상 좌표의 불확실성을 추정하는 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |