KR20220146901A - Slam을 가속화하는 방법 및 장치 - Google Patents

Slam을 가속화하는 방법 및 장치 Download PDF

Info

Publication number
KR20220146901A
KR20220146901A KR1020210053759A KR20210053759A KR20220146901A KR 20220146901 A KR20220146901 A KR 20220146901A KR 1020210053759 A KR1020210053759 A KR 1020210053759A KR 20210053759 A KR20210053759 A KR 20210053759A KR 20220146901 A KR20220146901 A KR 20220146901A
Authority
KR
South Korea
Prior art keywords
matrix
elements
map point
camera pose
measurement
Prior art date
Application number
KR1020210053759A
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 삼성전자주식회사
Priority to KR1020210053759A priority Critical patent/KR20220146901A/ko
Priority to US17/511,692 priority patent/US20220358262A1/en
Priority to CN202111281851.4A priority patent/CN115248044A/zh
Priority to EP21211620.6A priority patent/EP4083920A1/en
Publication of KR20220146901A publication Critical patent/KR20220146901A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/38Electronic maps specially adapted for navigation; Updating thereof
    • G01C21/3804Creation or updating of map data
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/28Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
    • G01C21/30Map- or contour-matching
    • G01C21/32Structuring or formatting of map data
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/10Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
    • G01C21/12Navigation; 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/16Navigation; 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
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/10Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
    • G01C21/12Navigation; 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/16Navigation; 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
    • G01C21/165Navigation; 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 combined with non-inertial navigation instruments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Algebra (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Analysis (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Navigation (AREA)

Abstract

일 실시예에 따르면, 팩터 그래프 메모리로부터 맵 포인트 및 카메라 포즈에 대한 제1 측정값을 획득하고, 모든 측정값들에 기초하여 맵 포인트 및 카메라 포즈에 대한 헤시안 행렬 전체를 생성하는 대신, 헤시안 행렬의 요소들 중 제1 측정값과 연관되어 최적화 행렬에 영향을 주는 요소들을 계산하며, 맵 포인트 및 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는데 이용되는 최적화 행렬에 상기 계산된 요소들을 누적하는, 백 엔드 프로세서가 개시된다.

Description

SLAM을 가속화하는 방법 및 장치{Method and Apparatus for Accelerating Simultaneous Localization and Mapping}
본 개시에 따른 다양한 실시예들은 SLAM을 가속화하는 방법 및 장치에 관한 것이다.
SLAM(simultaneous localization and mapping)은 증강 현실(Augmented Reality; AR), 로봇, 자율 주행 자동차와 같은 다양한 분야에서 이용되는 기술로서, 장치가 임의의 공간을 이동하면서 주변의 정보를 획득하고, 획득된 정보에 기초하여 해당 공간의 맵(map) 및 자신의 현재 위치를 추정하는 기술이다. 예를 들어, SLAM을 수행하는 장치는 카메라 등의 센서를 이용하여 공간에 대한 이미지를 획득하고, 이미지에 대한 분석 및 좌표 설정을 통해 해당 공간의 맵 및 자신의 현재 위치를 추정할 수 있다.
SLAM은 센서로부터 획득된 데이터에 기초하여 특징점 추출과 3차원 공간 좌표 연산을 수행하는 프론트 엔드(front-end), 및 프론트 엔드로부터 수신된 데이터에 기초하여 맵 정보 및 자신의 위치 정보를 최적화하는 백 엔드(back-end)로 구분될 수 있다. 주로 위치 이동의 증분만을 고려하는 프론트 엔드와 달리, 백 엔드는 맵에 기초하여 위치 정보를 최적화하므로, SLAM의 전체 성능에 큰 영향을 미친다. 한편, 백 엔드에 필요한 연산량은 맵의 크기, 센서 데이터의 크기 및 요구되는 정밀도 등에 따라 달라질 수 있는바, 다양한 센서들의 조합을 이용하는 SLAM에 있어서, 많은 양의 연산을 고속 및 저전력으로 수행하는 방법이 요구될 수 있다.
다양한 실시예들은 SLAM을 가속화하는 방법 및 장치를 제공하는데 있다. 본 개시가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 해결하기 위한 수단으로서, 일 측면에 따른 SLAM을 가속화하는 장치는, 팩터 그래프 메모리(factor graph memory); 및 백 엔드 프로세서를 포함하고, 상기 백 엔드 프로세서는, 상기 팩터 그래프 메모리로부터 맵 포인트 및 카메라 포즈에 대한 제1 측정값(measurement)을 획득하고, 모든 측정값들에 기초하여 상기 맵 포인트 및 상기 카메라 포즈에 대한 헤시안 행렬(Hessian matrix) 전체를 생성하는 대신, 상기 헤시안 행렬의 요소들 중 상기 제1 측정값과 연관되어 최적화 행렬에 영향을 주는 요소들을 계산하며, 상기 맵 포인트 및 상기 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는데 이용되는 상기 최적화 행렬에 상기 계산된 요소들을 누적할 수 있다.
또한, 다른 측면에 따른 SLAM을 가속화하는 방법은, 팩터 그래프 메모리로부터 맵 포인트 및 카메라 포즈에 대한 제1 측정값을 획득하는 단계; 모든 측정값들에 기초하여 상기 맵 포인트 및 상기 카메라 포즈에 대한 헤시안 행렬 전체를 생성하는 대신, 상기 헤시안 행렬의 요소들 중 상기 제1 측정값과 연관되어 최적화 행렬에 영향을 주는 요소들을 계산하는 단계; 및 상기 맵 포인트 및 상기 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는데 이용되는 상기 최적화 행렬에 상기 계산된 요소들을 누적하는 단계를 포함할 수 있다.
또한, 또 다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법들을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
도 1은 일 실시예에 따른 웨어러블 전자 장치의 사시도를 도시한다.
도 2는 다른 실시예에 따른 웨어러블 전자 장치의 사시도를 도시한다.
도 3은 일 실시예에 따른 SLAM을 가속화하는 장치의 구성을 나타내는 블록도이다.
도 4 내지 도 10은 일 실시예에 따라 맵 포인트 및 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는 과정을 설명하기 위한 도면들이다.
도 11은 일 실시예에 따른 SLAM을 가속화하는 방법을 나타내는 흐름도이다.
도 12 및 13은 일 실시예에 따라 단일 측정값에 기초하여 최적화 행렬의 요소들을 계산하는 과정을 설명하기 위한 도면이다.
도 14는 일 실시예에 따른 SLAM 가속기의 구성을 나타내는 도면이다.
도 15 및 도 16은 일 실시예에 따른 IMU 자코비안(Jacobian) 행렬 및 IMU 헤시안 행렬을 나타내는 도면이다.
도 17은 일 실시예에 따른 SLAM 가속기가 상태 데이터에 대한 최적화를 수행하는 전체적인 과정을 도시하는 개요도이다.
도 18은 일 실시예에 따른 SLAM 가속기가 하드웨어 리소스를 고려하여 최적화 연산을 수행하는 방법을 나타내는 흐름도이다.
도 19는 일 실시예에 따른 슈어 컴플리먼트(Schur-complement) 연산을 수행하기 위한 헤시안 행렬을 도시한다.
도 20은 일 실시예에 따른 슈어 컴플리먼트 연산부의 블록도를 도시한다.
도 21은 일 실시예에 따른 슈어 컴플리먼트 연산부의 W 서플라이어(W supplier)의 블록도를 도시한다.
도 22는 일 실시예에 따른 슈어 컴플리먼트 연산부의 Q 제너레이터(Q generator)의 블록도를 도시한다.
도 23은 일 실시예에 따른 슈어 컴플리먼트 연산부의 벡터-스칼라 곱 어레이(vector-scalar product array)의 블록도를 도시한다.
도 24는 일 실시예에 따른 슈어 컴플리먼트 연산부의 텐서 곱 어레이(tensor product array)의 블록도를 도시한다.
도 25는 일 실시예에 따른 SLAM 가속기의 파이프라인 구조를 설명하기 위한 도면이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 웨어러블 전자 장치의 사시도를 도시한다.
도 1을 참조하면, 웨어러블 전자 장치(100)는 렌즈(110), 사용자의 신체의 일부(예: 머리 등)에 고정되기 위한 연결부(120) 및 센서(미도시)를 포함할 수 있다. 예를 들어, 웨어러블 전자 장치(100)는 AR 글래스 또는 스마트 글래스일 수 있으나, 이에 제한되는 것은 아니다. 웨어러블 전자 장치(100)는 SLAM을 수행할 수 있다.
일 실시예에서, 웨어러블 전자 장치(100)의 연결부(120)는 프로젝터(미도시), 프로세서(130) 및 가속기(140)를 포함할 수 있다.
일 실시예에서, 프로젝터는 외부로부터 데이터를 수신하고, 수신된 데이터에 기초하여 생성된 빔을 렌즈(110)에 대해 방출할 수 있다. 프로젝터로부터 방출된 빔은 임의의 굴절률을 갖는 객체(예: 프리즘)로부터 굴절되어 렌즈(110)에 표시될 수 있다.
일 실시예에서, 프로세서(130)는 웨어러블 전자 장치(100)를 제어하기 위한 전반적인 기능을 수행하는 역할을 한다. 프로세서(130)는 다수의 논리 게이트들의 어레이로 구현될 수 있고, 범용적인 마이크로 프로세서와 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다.
프로세서(130)는 센서(미도시)로부터 주변 환경에 대한 센싱 데이터를 수신할 수 있다. 센서는 하나 이상의 카메라, IMU(Inertial Measurement Unit), 깊이 센서(예: LiDAR), GPS(Global Positioning System), 및 주행거리계(odometer) 중 적어도 하나를 포함할 수도 있다. 카메라는 픽셀 어레이, CMOS(Complementary Metal Oxide Semiconductor) 이미지 센서(CIS), CCD(Charge Coupled Device) 이미지 센서 등을 포함할 수 있으나, 이에 제한되지 않는다. 예를 들어, 프로세서(130)는 카메라를 이용하여 주변 환경에 대한 이미지 데이터를 획득할 수 있다. 또한, 프로세서(130)는 IMU를 이용하여 웨어러블 전자 장치(100)의 위치, 방향(orientation), 속도, 가속도 등에 대한 데이터를 획득할 수 있다.
일 실시예에서, 프로세서(130)는 센서로부터 수신된 센싱 데이터에 대해 특징점(keypoint) 추출 및 공간 좌표에 대한 연산을 수행하고, 연산 결과를 가속기(140)에 전송할 수 있다. 예를 들어, 프로세서(130)는 특징점 추출 알고리즘에 기반하여 카메라에 의해 획득된 이미지 데이터로부터 적어도 하나 이상의 특징점을 추출할 수 있다. 프로세서(130)는 IMU에 의해 획득된 위치 및 방향 데이터로부터 웨어러블 전자 장치(100)의 공간 좌표에 대한 연산을 수행할 수 있다. 다시 말해, 프로세서(130)는 SLAM의 프론트 엔드 연산을 수행할 수 있다.
한편, 프로세서(130)는 일반적인 CPU(Central Processing Unit), ISP(Image Processing Unit) 등을 포함할 수 있는바, SLAM의 백 엔드 연산을 수행하는데 최적화되어 있지 않을 수 있다. 가속기(140)는 SLAM을 가속화하기 위한 장치로서, SLAM의 백 엔드 연산을 수행하는데 최적화된 처리 유닛일 수 있다. 가속기(140)는 다수의 논리 게이트들의 어레이로 구현될 수 있고, 범용적인 마이크로 프로세서와 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다.
한편, 도 1에서는 프로세서(130) 및 가속기(140)가 웨어러블 전자 장치(100)의 연결부(120)에 배치되는 것으로 도시되어 있으나, 프로세서(130) 및 가속기(140)의 위치는 이에 한정되지 아니한다. 예를 들어, 프로세서(130) 및 가속기(140)는 웨어러블 전자 장치(100)의 전면부에 배치될 수도 있다. 이 경우, 프로세서(130) 및 가속기(140)는 렌즈(110)의 주변을 둘러싸는 테두리 영역에 배치될 수 있다
또한, 도 1에서는 프로세서(130) 및 가속기(140)가 서로 이격되어 배치되는 것으로 도시되어 있으나, 가속기(140)는 프로세서(130) 내부에 내장될 수도 있다. 또한, 가속기(140)가 내장된 프로세서(130), 메모리(미도시) 및 센서는 일체로 형성될 수도 있다. 예를 들어, 카메라, IMU 등과 같은 센서 자체에 프로세서(130), 가속기(140) 및 메모리가 내장될 수 있고, 센서로부터 획득되는 데이터에 대한 연산들이 실시간으로 수행될 수 있다. 이에 따라, 센서, 프로세서(130), 가속기(140) 및 메모리 간의 데이터 교환을 위한 별도의 인터페이스 구성이 요구되지 않으므로, 디바이스 전체의 사이즈가 감소될 수 있고, 전력 소모도 감소될 수 있다.
일 실시예에서, 웨어러블 전자 장치(100)는 통신 인터페이스(미도시)를 더 포함할 수 있다. 통신 인터페이스는 무선 또는 유선일 수 있으며, 외부의 장치와 웨어러블 전자 장치(100) 간의 데이터 교환을 중계할 수 있다. 웨어러블 전자 장치(100)는 통신 인터페이스를 통해 프로세서(130) 및 가속기(140)에 의해 처리된 데이터를 외부의 장치로 전송할 수 있고, 외부의 장치로부터 데이터를 수신할 수도 있다.
도 2는 다른 실시예에 따른 웨어러블 전자 장치의 사시도를 도시한다.
도 2를 참조하면, 웨어러블 전자 장치(200)는 렌즈(210), 사용자의 신체의 일부에 고정되기 위한 연결부(220) 및 센서(미도시)를 포함할 수 있다. 도 2의 웨어러블 전자 장치(200), 렌즈(210), 연결부(220) 및 센서는 도 1의 웨어러블 전자 장치(100), 렌즈(110), 연결부(120) 및 센서에 대응되므로, 중복되는 설명은 생략한다.
일 실시예에서, 웨어러블 전자 장치(200)는 외부 장치(250)(예: 스마트폰, 셋탑박스 등)와 통신 인터페이스(255)를 통해 연결될 수 있다. 한편, 도 2에서는 통신 인터페이스(255)가 유선 연결인 것으로 도시되어 있으나, 이에 제한되는 것은 아니다. 통신 인터페이스(255)는 무선 연결일 수도 있다. 외부 장치(250)는 프로세서(230) 및 가속기(240)를 포함할 수 있다. 도 2의 프로세서(230) 및 가속기(240)는 도 1의 프로세서(130) 및 가속기(140)에 대응되므로, 중복되는 설명은 생략한다.
일 실시예에서, 웨어러블 전자 장치(200)는 센서에 의해 획득된 센싱 데이터를 통신 인터페이스(255)를 통해 외부 장치(250)로 전송할 수 있다. 외부 장치(250)의 프로세서(230)는 웨어러블 전자 장치(200)로부터 수신된 센싱 데이터에 대해 프론트 엔드 연산을 수행하고, 연산 결과를 가속기(240)에 전송할 수 있다. 가속기(240)는 프로세서(230)로부터 획득된 데이터에 기초하여 백 엔드 연산을 수행할 수 있고, 연산 결과를 통신 인터페이스(255)를 통해 웨어러블 전자 장치(200)로 다시 전송할 수 있다.
주로 위치 이동의 증분만을 고려하는 프론트 엔드와 달리, 백 엔드는 맵에 기초하여 위치 정보를 최적화하므로, SLAM의 전체 성능에 큰 영향을 미친다. 한편, 백 엔드에 필요한 연산량은 맵의 크기, 센서 데이터의 크기 및 요구되는 정밀도 등에 따라 달라질 수 있는바, 다양한 센서들의 조합을 이용하는 SLAM에 있어서, 많은 양의 연산을 고속 및 저전력으로 수행하는 방법이 요구될 수 있다. 이하에서는 도 1의 가속기(140) 또는 도 2의 가속기(240)가 백 엔드 연산을 가속화하는 과정에 대해 보다 상세히 살펴본다.
도 3은 일 실시예에 따른 SLAM을 가속화하는 장치의 구성을 나타내는 블록도이다.
SLAM 가속기(30)는 SLAM을 가속화하는 장치로서, 도 1의 가속기(140) 또는 도 2의 가속기(240)에 대응될 수 있다. 한편, 도 1 및 도 2에서는 SLAM 가속기(30)가 AR 글래스 또는 스마트 글래스에 채용되는 예시가 도시되어 있으나, 이에 제한되는 것은 아니다. SLAM 가속기(30)는 로봇, 드론, 자율 주행 자동차 등과 같이 위치 또는 공간에 대한 인식이 필요한 장치라면 제한 없이 채용될 수 있다.
도 3을 참조하면, SLAM 가속기(30)는 팩터 그래프 메모리(310) 및 백 엔드 프로세서(320)를 포함할 수 있다. 한편, 도 3에 도시된 SLAM 가속기(30)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, SLAM 가속기(30)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
팩터 그래프 메모리(310)는 SLAM 가속기(30) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 팩터 그래프 메모리(310)는 SLAM 가속기(30)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 팩터 그래프 메모리(310)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다. 다만, 이에 제한되는 것은 아니다.
팩터 그래프 메모리(310)는 프론트 엔드 프로세서(예: 도 1의 프로세서(130) 또는 도 2의 프로세서(230))로부터 수신된 데이터를 저장할 수 있다. 예를 들어, 프론트 엔드 프로세서는 센서에 의해 획득된 센싱 데이터에 기초하여, 특징점 추출 및 공간 좌표에 대한 연산을 수행할 수 있다. 팩터 그래프 메모리(310)는 프론트 엔드 프로세서로부터 연산 결과에 대응되는 데이터를 수신하고, 수신된 데이터를 저장할 수 있다.
백 엔드 프로세서(320)는 SLAM의 최적화를 위한 백 엔드 연산을 수행할 수 있다. 예를 들어, 백 엔드 프로세서(320)는 팩터 그래프 메모리(310)로부터 데이터를 수신하고, 수신된 데이터에 대한 최적화 연산을 수행할 수 있다. 수신된 데이터는 프론트 엔드 프로세서에 의해 수행된 센서 퓨전의 이동 누적의 결과에 대응될 수 있다. 백 엔드 프로세서(320)는 프론트 엔드 프로세서 또는 팩터 그래프 메모리(310)로부터 수신된 데이터에 대해 반복적인 연산을 수행할 수 있다. 예를 들어, 백 엔드 프로세서(320)는 행렬 및/또는 벡터 연산에 기초하여 전자 장치(예: 도 1의 웨어러블 전자 장치(100) 또는 도 2의 웨어러블 전자 장치(200))의 위치 추정 및 맵 작성을 위한 연산을 수행할 수 있다.
일 실시예에서, 백 엔드 프로세서(320)는 작성된 맵에서 전자 장치의 위치를 추정할 수 있다. 예를 들어, 백 엔드 프로세서(320)는 반복적으로 수행된 연산에 기반하여 이동 중인 전자 장치의 위치를 작성된 맵 상에서 추정할 수 있다. 백 엔드 프로세서(320)는 실시간으로 전자 장치의 위치를 추정할 수 있으며, 추정된 위치와 관련된 데이터는 실시간으로 업데이트될 수 있다.
백 엔드 프로세서(320)에 의해 수행되는 연산은 BA(Bundle Adjustment)를 포함할 수 있다. BA는 서로 다른 관점들로부터 복수의 3차원 포인트들을 도시하는 이미지들의 집합이 주어지는 경우, 모든 포인트들의 대응되는 이미지 투영들을 수반하는 최적화 기준에 따라, 장면 지오메트리(scene geometry), 상대 움직임의 파라미터들, 및 카메라의 광학 특성들을 설명하는 3차원 좌표들을 실시간으로 정제(refine)하는 것을 의미할 수 있다. 이하 도 4 내지 도 10을 참조하여 백 엔드 프로세서(320)가 맵 포인트 및 카메라 포즈의 3차원 좌표들을 최적화하는 과정을 상세히 설명한다.
도 4 내지 도 10은 일 실시예에 따라 맵 포인트 및 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는 과정을 설명하기 위한 도면들이다.
도 4를 참조하면, 전자 장치(예: 도 1의 웨어러블 전자 장치(100) 또는 도 2의 웨어러블 전자 장치(200))가 카메라와 같은 센서를 이용하여 주변 공간에 대한 이미지를 획득하는 상황의 예시가 도시되어 있다. 전자 장치의 움직임 등에 의해 프레임마다 카메라 포즈가 변경될 수 있고, 카메라에 의해 촬영되는 맵 포인트의 프레임 내 위치도 변경될 수 있다.
도 4의 예시와 같이, 카메라 포즈가 시간의 흐름에 따라 C0, C1 및 C2 순서로 변경될 수 있고, 맵 포인트 P0의 프레임 내 위치도 p0, p1 및 p2 순서로 변경될 수 있다. 한편, 맵 포인트 P0에 대한 측정값들 p0, p1 및 p2과 별개로, 맵 포인트 P0의 3차원 좌표를 이용한 재투영(reprojection)에 의해 추정값들
Figure pat00001
,
Figure pat00002
Figure pat00003
이 획득될 수 있다. 도 4의 예시에서는 p0
Figure pat00004
가 동일한 바,
Figure pat00005
의 기재가 생략되었다.
SLAM의 백 엔드 연산은 측정값 p와 추정값
Figure pat00006
의 차이를 나타내는 오차 e를 목적 함수로 설정하고, 모든 측정값들에 대해 목적 함수를 최소화하는 상태를 추정하는 연산을 포함한다. SLAM의 백 엔드 연산은 다음의 수학식 1로 표현될 수 있다.
Figure pat00007
상기 수학식 1에 따르면, i는 프레임 넘버, j는 맵 포인트 넘버를 나타내고, 최적화 연산을 통해 추정하고자 하는 상태 X는 프레임 별 카메라 포즈 Ci 및 맵 포인트(랜드마크) Pj를 포함함을 알 수 있다.
도 5를 참조하면, 카메라 포즈의 개수가 N개(N은 임의의 자연수)이고, 맵 포인트의 개수가 M개(M은 임의의 자연수)인 경우, 시점 k에서의 상태 벡터 Xk의 예시가 도시되어 있다. 카메라 포즈 Ci(i = 1, ... , N)는 3축(예: x축, y축 및 z축)에 대한 회전(rotation) 성분(예: Rxi, Ryi 및 Rzi), 3축에 대한 평행이동(translation) 성분(예: Txi, Tyi 및 Tzi), 3축에 대한 속도 성분(예: Vxi, Vyi 및 Vzi), 3축에 대한 가속도 성분(예: 가속도계의 바이어스 성분인
Figure pat00008
,
Figure pat00009
Figure pat00010
), 및 3축에 대한 각가속도 성분(예: 자이로스코프의 바이어스 성분인
Figure pat00011
,
Figure pat00012
Figure pat00013
)을 포함할 수 있다. 맵 포인트 Pj(j = 1, ... , M)는 3축에 대한 위치 성분(예: Pxj, Pyj 및 Pzj)를 포함할 수 있다.
도 6을 참조하면, 카메라로부터 획득된 센싱 데이터에 대해 프론트 엔드 연산을 수행한 결과에 대응되는 카메라 측정값(camera measurement)이 입력되는 경우의 백 엔드 연산의 전체적인 과정이 도시되어 있다. 카메라 측정값은 특징점(feature point)의 2차원 좌표를 포함할 수 있다.
카메라 측정값이 입력되면, 맵 포인트의 3차원 좌표를 이용한 재투영에 기초하여 추정값들이 획득될 수 있고, 측정값들 및 추정값들의 차이에 기초하여 오차 e가 계산될 수 있다. 오차가 계산되면, 상기 수학식 1에 따른 목적 함수의 최적화를 위한 연산이 수행될 수 있다.
상기 수학식 1에 따른 목적 함수의 최적화를 위해 다음의 수학식 2에 따른 가우스 뉴턴법(Gauss-Newton)이 이용될 수 있다.
Figure pat00014
Figure pat00015
Figure pat00016
Figure pat00017
측정값이 입력될 때마다 상기 수학식 1에 따라 오차를 감소시키기 위한 상태 변화
Figure pat00018
가 추정될 수 있다. 한편, 상태 변화
Figure pat00019
가 추정되기 위해서는 오차의 편미분을 나타내는 자코비안 행렬(Jacobian matrix)
Figure pat00020
과, 자코비안 역행렬(
Figure pat00021
) 및 자코비안 행렬(
Figure pat00022
)의 곱에 해당하는 헤시안 행렬(
Figure pat00023
)이 연산되어야 한다.
일 예에서,
Figure pat00024
Figure pat00025
는 각각 x축 및 y축을 기준으로 하는 카메라의 초점 거리를 나타내고,
Figure pat00026
,
Figure pat00027
Figure pat00028
는 카메라 좌표계를 기준으로 하는 맵 포인트의 3차원 좌표 성분들을 나타내며, R은 카메라의 회전 성분을 나타낸다고 할 때, 자코비안 행렬은 다음과 같은 수학식 3에 따라 계산될 수 있다.
Figure pat00029
수학식 3에 따르면, 자코비안 행렬은 카메라 포즈에 대한 자코비안 행렬 블록
Figure pat00030
및 맵 포인트에 대한 자코비안 행렬 블록
Figure pat00031
에 리 대수(Lie Algebra)를 적용하여 계산된다. 카메라 포즈에 대한 자코비안 행렬 블록
Figure pat00032
는 재투영 오차(reprojection error)를 카메라 포즈로 편미분한 행렬이고, 맵 포인트에 대한 자코비안 행렬 블록
Figure pat00033
는 재투영 오차를 맵 포인트로 편미분한 행렬을 나타낼 수 있다.
헤시안 행렬은 자코비안 역행렬 및 자코비안 행렬의 곱에 해당하는바, 자코비안 행렬 블록들에 기초하여 계산될 수 있다. 예를 들어, 헤시안 행렬은 다음과 같은 수학식 4에 따라 계산될 수 있다.
Figure pat00034
상기 수학식 4에 따르면, 헤시안 행렬은 4개의 헤시안 행렬 블록들 U, W, WT 및 V로 구분될 수 있다. 상기 수학식 4를 참조하면, 상기 수학식 2의 마지막 라인은 다음의 수학식 5로 표현될 수 있다.
Figure pat00035
상기 수학식 5를 참조하면, 상태 변화(
Figure pat00036
)는 카메라 포즈에 대한 상태 변화인
Figure pat00037
및 맵 포인트에 대한 상태 변화인
Figure pat00038
로 구성될 수 있다.
한편, 앞서 도 5를 참조하여 설명한 바와 같이, 카메라 포즈는 15개의 성분들을 포함하고, 맵 포인트는 3개의 성분들을 포함하는바, 카메라 포즈의 개수가 N개이고, 맵 포인트의 개수가 M개인 경우, 헤시안 행렬은 (15N + 3M) x (15N + 3M)의 크기를 갖는 정사각 행렬이다. SLAM의 특성상 다수의 맵 포인트에 대한 측정이 수행되므로, 헤시안 행렬은 매우 큰 크기를 갖는다. 따라서, 상태 변화
Figure pat00039
를 추정하기 위해 헤시안 행렬을 바로 푸는 경우 상당한 연산량이 요구되는바, 대안적인 방법이 요구될 수 있다.
일 예에서, 다음의 수학식 6과 같이, 헤시안 행렬 블록들 U, W, WT 및 V을 이용한 슈어 컴플리먼트(Schur-complement) 연산에 의해 상태 변화
Figure pat00040
가 추정될 수 있다.
Figure pat00041
상기 수학식 6에 따르면, 상태 변화
Figure pat00042
를 추정하는 연산이 카메라 포즈만의 행렬 연산(즉, S 행렬 및 s 벡터에 대한 연산)으로 변경되고, 변경된 행렬 연산에 의해 카메라 포즈에 대한 상태 변화(
Figure pat00043
)가 먼저 획득될 수 있다. 이후, 후방 대입(back substitution)을 통해 맵 포인트에 대한 상태 변화인
Figure pat00044
가 획득될 수 있다. 이와 같이, 상태 변화
Figure pat00045
를 추정하기 위해 슈어 컴플리먼트 연산을 이용하는 경우, 헤시안 행렬을 바로 푸는 경우와 비교하여 연산량이 상당히 감소될 수 있다.
도 7을 참조하면, 맵 포인트(랜드마크)와 카메라 포즈 간의 팩터 그래프의 일 예가 도시되어 있다. C0 내지 C10은 연속되는 카메라 포즈들의 상태를 나타내고, P0 내지 P13은 해당 카메라 포즈들에서 관측된 맵 포인트들의 상태를 나타낸다. r은 맵 포인트와 카메라 포즈 간의 관계를 나타내고, 재투영 오차로 표현될 수 있다. 예를 들어, r00은 카메라 포즈 C0와 맵 포인트 P0 간의 관계를 나타내고, r01은 카메라 포즈 C0와 맵 포인트 P1 간의 관계를 나타내며, r1013은 카메라 포즈 C10과 맵 포인트 P13 간의 관계를 나타낸다. rb는 인접하는 카메라 포즈들 간의 관계를 나타낸다. 예를 들어, rb01은 카메라 포즈 C0와 카메라 포즈 C1 간의 관계를 나타낸다.
도 8을 참조하면, 도 7의 팩터 그래프에 따른 자코비안 행렬의 예시가 도시되어 있다. 자코비안 행렬은 카메라 포즈에 대한 자코비안 행렬 블록
Figure pat00046
및 맵 포인트에 대한 자코비안 행렬 블록
Figure pat00047
로 구성될 수 있다. 맵 포인트와 카메라 포즈 간의 관계들에 따라 자코비안 행렬의 요소들이 결정될 수 있다. 도 8의 자코비안 행렬에서 음영 처리된 부분들은 맵 포인트와 카메라 포즈 간의 관계들을 나타내는 요소들에 대응되며, 음영 처리되지 않은 부분들은 0에 대응될 수 있다.
도 9를 참조하면, 도 7의 팩터 그래프에 따른 헤시안 행렬의 예시가 도시되어 있다. 헤시안 행렬은 카메라 포즈에 대한 헤시안 행렬 블록 U, 맵 포인트에 대한 헤시안 행렬 블록 V, 맵 포인트에 대응하는 카메라 포즈에 대한 행렬 블록 W, 및 행렬 블록 W의 역행렬에 해당하는 행렬 블록 WT를 포함한다.
행렬 블록 W 및 행렬 블록 WT는 맵 포인트와 카메라 포즈의 관계성을 나타낼 수 있다. 예를 들어, 행렬 블록 W의 맵 포인트 P0는 카메라 포즈 C0에 대응하는 1개의 프레임에서 획득되고, 행렬 블록 W의 맵 포인트 P3은 C0 내지 C4에 대응하는 5개의 프레임들에서 획득될 수 있음을 나타낸다.
행렬 블록 U 및 행렬 블록 V는 대각 요소에만 데이터를 포함하고, 대각 요소를 제외한 모든 요소에는 데이터를 포함하지 않는 대각 행렬(diagonal matrix)에 해당할 수 있다. 예를 들어, 카메라 포즈 C0 내지 C10에 대한 행렬 블록인 행렬 블록 U는 카메라 포즈 C0 및 C0이 접하는 지점, 카메라 포즈 C1 및 C1이 접하는 지점, ... , 카메라 포즈 C10 및 C10이 접하는 지점에만 데이터를 포함할 수 있다. 또한, 맵 포인트 P0 내지 P13에 대한 행렬 블록인 행렬 블록 V는 맵 포인트 P0 및 P0이 접하는 지점, 맵 포인트 P1 및 P1이 접하는 지점, … , 맵 포인트 P13 및 P13이 접하는 지점에만 데이터를 포함할 수 있다.
도 10을 참조하면, 도 7의 팩터 그래프에 따른 S 행렬의 예시가 도시되어 있다. 이와 같이, 슈어 컴플리트 연산을 위한 S 행렬은 카메라 포즈만의 행렬에 해당하고, S 행렬의 요소들은 상기 수학식 6에 기초하여 계산될 수 있다.
한편, 도 7 내지 도 10은 설명을 위한 하나의 예시에 불과할 뿐, 팩터 그래프가 변경되는 경우 헤시안 행렬, 자코비안 행렬 및 S 행렬의 구조들도 대응되게 변경될 수 있음을 통상의 기술자는 쉽게 이해할 것이다.
도 11은 일 실시예에 따른 SLAM을 가속화하는 방법을 나타내는 흐름도이다.
도 11을 참조하면, SLAM을 가속화하는 방법은 도 3에 도시된 SLAM 가속기(30)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 내지 도 10에 관하여 이상에서 기술된 내용은 도 11의 SLAM을 가속화하는 방법에도 적용됨을 알 수 있다. 한편, 도 11의 각 단계들은 SLAM 가속기에 포함되는 구성들, 예를 들어, 도 3의 팩터 그래프 메모리(310) 또는 백 엔드 프로세서(320)에 의해 수행될 수 있다.
단계 1110에서, SLAM 가속기는 팩터 그래프 메모리로부터 맵 포인트 및 카메라 포즈에 대한 제1 측정값을 획득할 수 있다. 제1 측정값은 카메라, IMU(Inertial Measurement unit), 깊이(depth) 센서, GPS(Global Positioning System), 및 주행거리계(odometer) 중 적어도 하나를 포함하는 센서로부터 획득되는 데이터에 대해 프론트 엔드(front-end)를 수행한 결과에 대응될 수 있다. 제1 측정값은 제1 맵 포인트 및 제1 맵 포인트에 대응되는 적어도 하나의 카메라 포즈를 포함할 수 있다.
SLAM 가속기는 제1 사이클에 제1 측정값이 로드된 이후, 연속적인 사이클들에 걸쳐 제1 측정값과 연관된 연산들(후술할 단계 1120 및 1130에 대응되는 연산들)을 순차적으로 수행하는 파이프라인 구조를 포함할 수 있다. SLAM 가속기의 파이프라인 구조는 제1 사이클 다음의 제2 사이클에 제2 측정값이 로드되면, 제1 측정값에 연관된 연산들에 후속하여, 제2 측정값과 연관된 연산들을 수행할 수 있다. 다시 말해, SLAM 가속기는 많은 연산량이 요구되는 팩터 생성 및 슈어 컴플리먼트 연산을 고속으로 수행하기 위해 맵 포인트 기반의 파이프라인 구조를 포함할 수 있다.
단계 1120에서, SLAM 가속기는 모든 측정값들에 기초하여 맵 포인트 및 카메라 포즈에 대한 헤시안 행렬 전체를 생성하는 대신, 헤시안 행렬의 요소들 중 제1 측정값과 연관되어 최적화 행렬에 영향을 주는 요소들을 계산할 수 있다. 예를 들어, SLAM 가속기는 제1 측정값을 이용하여 카메라 포즈에 대한 행렬 블록의 요소들, 맵 포인트에 대한 행렬 블록의 요소들, 및 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬 블록의 요소들을 계산할 수 있다.
단계 1130에서, SLAM 가속기는 맵 포인트 및 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는데 이용되는 최적화 행렬에 계산된 요소들을 누적할 수 있다. SLAM 가속기는 모든 측정값들에 대해 순차적으로 계산된 요소들이 최적화 행렬에 누적되면, 최적화 행렬을 이용하여 맵 포인트 및 카메라 포즈의 상태들에 대한 최적화 연산을 수행할 수 있다. 최적화 연산은 슈어 컴플리먼트 연산을 포함하고, 최적화 행렬은 S 행렬을 포함할 수 있다.
한편, 앞서 도 5를 참조하여 설명한 바와 같이, 카메라 포즈는 15개의 성분들을 포함하고, 맵 포인트는 3개의 성분들을 포함하는바, 카메라 포즈의 개수가 N개이고, 맵 포인트의 개수가 M개인 경우, 헤시안 행렬은 (15N + 3M) x (15N + 3M)의 크기를 갖는 정사각 행렬이다. SLAM의 특성상 다수의 맵 포인트에 대한 측정이 수행되므로, 헤시안 행렬은 매우 큰 크기를 갖는다. 따라서, 헤시안 행렬 전체를 생성하고, 생성된 헤시안 행렬을 푸는 것은 고속 및 저전력으로 수행되기 어렵다.
본 개시에 따른 SLAM 가속기는 모든 측정값들에 기초하여 맵 포인트 및 카메라 포즈에 대한 헤시안 행렬 전체를 생성하는 대신, 헤시안 행렬의 요소들 중 단일 측정값과 연관되어 최적화 행렬에 영향을 주는 요소들을 한 번에 모두 계산할 수 있다. 다시 말해, SLAM 가속기는 중간의 자코비안 행렬 또는 헤시안 행렬을 생성하지 않고, 헤시안 행렬의 요소들 중 제1 측정값과 연관되어 S 행렬에 영향을 주는 요소들만을 선택적으로 계산할 수 있다. 이에 따라, 자코비안 행렬 또는 헤시안 행렬이 생성 및 저장될 필요가 없으므로, 메모리 사이즈가 감소될 수 있다. 또한, 일단 하나의 측정값이 로드되면, 해당 측정값과 관련된 모든 연산들이 한 번에 처리되는바, 해당 측정값을 다시 로드할 필요가 없으므로, 연산 속도가 증가될 수 있다.
단일 측정값에 대해 계산된 요소들은 슈어 컴플리먼트 연산부로 바로 전달될 수 있다. 예를 들어, 단일 측정값에 대해 계산된 요소들은 슈어 컴플리먼트 연산을 위한 최적화 행렬에 누적될 수 있다. 이하 도 12 및 도 13를 참조하여 SLAM 가속기가 최적화 행렬에 영향을 주는 요소들을 계산하는 과정을 상세히 설명한다.
도 12 및 13은 일 실시예에 따라 단일 측정값에 기초하여 최적화 행렬의 요소들을 계산하는 과정을 설명하기 위한 도면이다.
도 12를 참조하면, 측정값들이 카메라 포즈 C1 내지 C5 및 맵 포인트 P1 내지 P10를 포함하는 예시가 도시되어 있다. 맵 포인트 P1이 입력되면, SLAM 가속기는 맵 포인트 P1을 이용하여 카메라 포즈에 대한 행렬 블록 U의 요소들, 맵 포인트에 대한 행렬 블록 V의 요소들, 및 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬 블록 W의 요소들을 계산할 수 있다. 또한, SLAM 가속기는 r 벡터(예를 들어, 상기 수학식 5의 rc 및 rp)를 계산할 수 있다.
예를 들어, 맵 포인트 P0가 카메라 포즈 C1 내지 C4에 대응되는 4개의 프레임들에서 관측되는 경우, SLAM 가속기는 재투영 오차
Figure pat00048
,
Figure pat00049
,
Figure pat00050
Figure pat00051
를 계산할 수 있다. 또한, SLAM 가속기는 행렬 블록 U의 요소들인
Figure pat00052
,
Figure pat00053
,
Figure pat00054
Figure pat00055
를 계산하고, 행렬 블록 V의 요소인
Figure pat00056
를 계산하며, 행렬 블록 W의 요소들인
Figure pat00057
,
Figure pat00058
,
Figure pat00059
Figure pat00060
를 계산할 수 있다.
도 13을 참조하면, 헤시안 행렬(1310) 및 S 행렬(1320)의 예시가 도시되어 있다. SLAM 가속기는 측정값들 각각에 대해 수행된 연산 결과들을 누적하여 헤시안 행렬(1310)을 생성하는 대신, 도 12를 참조하여 설명한 바와 같이, 헤시안 행렬(1310)의 요소들 중 맵 포인트 P1과 연관되어 S 행렬(1320)에 영향을 주는 요소들만을 계산할 수 있다. SLAM 가속기는 계산된 요소들(예를 들어, U, V, W 및 r 요소)을 슈어 컴플리먼트 연산부로 전송할 수 있다.
SLAM 가속기는 슈어 컴플리먼트 연산에 따라 행렬 블록 W 및 행렬 블록 V의 요소들과 행렬 블록 U의 요소들을 연산한 뒤, 행렬 블록 U와 동일한 크기를 갖는 S 행렬(1320)을 생성할 수 있다. 예를 들어, SLAM 가속기는 다음의 수학식 7에 따라 S 행렬(1320)의 요소들을 계산할 수 있다.
Figure pat00061
수학식 7에서 i1, i2는 카메라 포즈의 인덱스를 나타내며, j는 맵 포인트의 인덱스를 나타낸다. 도 13의 예시에서 맵 포인트 P1은 카메라 포즈 C1 내지 C4에서 관측되므로, 슈어 컴플리먼트 적용시 S11 내지 S44까지 총 16개의 S 행렬의 요소들이 계산될 수 있다. 한편, S 행렬은 대각선을 기준으로 전치(transpose) 관계를 갖는바, SLAM 가속기는 S 행렬의 대각 성분 및 상삼각 성분만을 계산할 수도 있다. 이와 같이, 본 개시에 따른 SLAM 가속기는 카메라 포즈 및 맵 포인트에 대한 상태들의 오차를 최소화하기 위한 최적화 연산을 고속 및 저전력으로 수행할 수 있다.
도 14는 일 실시예에 따른 SLAM 가속기의 구성을 나타내는 도면이다.
도 14를 참조하면, SLAM 가속기(예를 들어, 도 1의 가속기(140), 도 2의 가속기(240), 또는 도 3의 SLAM 가속기(30))는 파이프라인 구조를 갖는 비전 팩터 생성기(1400)를 포함할 수 있다. 비전 팩터 생성기(1400)는 카메라 제약 생성기(1410) 및 슈어 컴플리먼트 연산부(1420)를 포함할 수 있다. 카메라 제약 생성기(1410)는 도 11의 단계 1110 및 단계 1120을 수행하는 구성에 대응되고, 슈어 컴플리먼트 연산부(1420)는 도 11의 단계 1130을 수행하는 구성에 대응될 수 있다. 다만, 이에 반드시 제한되는 것은 아니며, 비전 팩터 생성기(1400)는 도 11을 참조하여 설명한 동작들을 수행하기 위한 임의의 적절한 구성들을 포함할 수 있다.
한편, SLAM 가속기는 카메라로부터 획득되는 센싱 데이터만을 이용하여 카메라 포즈 및 맵 포인트를 추정할 수도 있으나, IMU와 같은 다른 센서로부터 획득되는 센싱 데이터를 함께 이용함으로써 성능을 증가시킬 수 있다. 이 경우, 도 14에 도시된 바와 같이, SLAM 가속기는 IMU 제약 생성기(1430)를 더 포함할 수 있다. SLAM 가속기가 IMU 제약 생성기(1430)를 포함하는 경우, 상기 수학식 1에 따른 목적 함수는 다음의 수학식 8로 확장될 수 있다.
Figure pat00062
또한, IMU 팩터와 관련된 오차들은 다음의 수학식 9에 따라 정의될 수 있다.
Figure pat00063
상기 수학식 9에서 i, j는 프레임 넘버(즉, 카메라 포즈 넘버)를 나타내며, ij는 i번째 프레임에서 j번째 프레임으로의 전처리 통합(pre-integration)을 의미할 수 있다.
앞서 도 5를 참조하여 설명하였던, 카메라 포즈에 대한 상태 벡터 C의 요소들 중 카메라 측정값을 이용하여 추정되는 요소들은 R 및 T를 포함하며, IMU 측정값을 이용하여 추정되는 요소들은 R 및 T뿐만 아니라 V, Ba, Bw를 포함할 수 있다. 따라서, 카메라 포즈에 대한 상태 벡터 C는 c 및 m으로 나눌 수 있으며, c는 카메라 및 IMU 모두에 의해 영향을 받는 팩터들을 포함하고, m은 IMU에 의한 팩터들만을 포함할 수 있다. 이하 도 15 및 도 16을 참조하여 IMU 팩터가 함께 고려되는 경우의 자코비안 행렬 및 헤시안 행렬의 예시를 살펴본다.
도 15 및 도 16은 일 실시예에 따른 IMU 자코비안(Jacobian) 행렬 및 IMU 헤시안 행렬을 나타내는 도면이다.
도 15의 예시를 참조하면, IMU 자코비안 행렬은 카메라 및 IMU 모두에 의해 영향을 받는 c0 내지 c5와, IMU에 의해서만 영향을 받는 m0 내지 m5를 팩터로 포함할 수 있다. 또한, IMU 자코비안 행렬은 인접한 두 프레임들 사이에서만 요소를 포함할 수 있다.
도 16의 예시를 참조하면, IMU 헤시안 행렬도 인접한 두 프레임들 사이에서만 요소를 포함할 수 있다. 이와 같이, IMU 측정값은 맵 포인트와 연관이 없는 팩터이므로, IMU 헤시안 행렬은 행렬 블록 U만을 포함하고, 행렬 블록 W 및 V를 포함하지 않을 수 있다.
따라서, 도 14에 도시된 바와 같이, SLAM 가속기는 카메라 제약 생성기(1410) 및 슈어 컴플리먼트 연산부(1420)를 하나의 블록으로 구성하여 1차적으로 S 행렬을 연산한 뒤, IMU 제약 생성기(1430)의 출력 값을 더하여 최종 S 행렬을 생성할 수 있다. SLAM 가속기는 S 행렬 및 s 벡터가 생성되면, 선형 솔버(1440)를 이용하여 방정식 연산을 수행함으로써, 누적된 에러가 최적화된 상태 변화를 획득할 수 있다.
이와 같이, SLAM 가속기(또는 SLAM 가속기에 포함되는 백 엔드 프로세서)는 측정값이 카메라 및 IMU로부터 획득되는 데이터에 대해 프론트 엔드를 수행한 결과에 대응되는 경우, 측정값을 카메라 및 IMU 모두에 의해 영향을 받는 제1 부분과, IMU에 의해서만 영향을 받는 제2 부분으로 구분할 수 있다. SLAM 가속기는 제1 부분을 이용하여 카메라 포즈에 대한 행렬 블록의 요소들, 맵 포인트에 대한 행렬 블록의 요소들, 및 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬 블록의 요소들을 계산한 뒤, 제1 부분을 이용하여 계산된 요소들을 최적화 행렬에 1차적으로 누적할 수 있다. 이후 SLAM 가속기는 제2 부분을 이용하여 카메라 포즈에 대한 행렬 블록의 요소들을 계산한 뒤, 제2 부분에 대해 계산된 요소들을 최적화 행렬에 2차적으로 누적할 수 있다.
도 17은 일 실시예에 따른 SLAM 가속기가 상태 데이터에 대한 최적화를 수행하는 전체적인 과정을 도시하는 개요도이다.
도 17을 참조하면, 백 엔드 프로세서(320)는 팩터 그래프 메모리(310)로부터 맵 포인트 및 카메라 포즈에 대한 제1 데이터(
Figure pat00064
)를 수신할 수 있다. 예를 들어, 팩터 그래프 메모리(310)로부터 수신된 데이터인 제1 데이터(
Figure pat00065
)는 맵 포인트의 상태인
Figure pat00066
및 카메라 포즈의 상태인
Figure pat00067
으로 구성될 수 있다.
백 엔드 프로세서(320)는 제1 데이터에 대해 자코비안 갱신(jacobian update)(1710)을 수행함으로써, IMU에 대한 자코비안 행렬(
Figure pat00068
)의 요소들, 카메라 포즈에 대한 자코비안 행렬(
Figure pat00069
)의 요소들, 맵 포인트에 대한 자코비안 행렬(
Figure pat00070
)의 요소들, 및 에러에 대한 벡터(e)의 요소들을 획득할 수 있다.
백 엔드 프로세서(320)는 자코비안 갱신(1710)을 통해 출력되는 데이터에 대해 헤시안 갱신(hessian update)(1720)을 수행함으로써, 헤시안 행렬 블록들 U, W 및 V의 요소들과 벡터 r의 요소들을 획득할 수 있다.
이후 백 엔드 프로세서(320)는 획득된 행렬 블록들 U, W 및 V의 요소들과 벡터 r의 요소들에 대해, 슈어 컴플리먼트 연산부(1730)의 연산 및 선형 솔버(1740)의 방정식 연산을 수행함으로써, 누적된 에러가 최적화된 상태 변화(
Figure pat00071
)를 획득할 수 있다. 슈어 컴플리먼트 연산부(1730)의 연산 및 선형 솔버(1740)의 방정식 연산은 상기 수학식 6에 따른 연산들에 대응될 수 있다. 상태 변화(
Figure pat00072
)는 카메라 포즈에 대한 상태 변화인
Figure pat00073
및 맵 포인트에 대한 상태 변화인
Figure pat00074
로 구성될 수 있다.
일 실시예에서, 백 엔드 프로세서(320)는 맵 포인트를 기준으로 슈어 컴플리먼트 연산을 순차적으로 수행할 수 있다. 예를 들어, 백 엔드 프로세서(320)는 제1 맵 포인트에 대한 행렬의 요소들, 및 제1 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬의 요소들에 대해 슈어 컴플리먼트 연산을 수행할 수 있다. 백 엔드 프로세서(320)는 제1 맵 포인트에 대한 연산을 수행한 결과 값을 메모리(예를 들어, 팩터 그래프 메모리(310))에 축적할 수 있다.
이 후, 백 엔드 프로세서(320)는 제1 맵 포인트 이후의 제2 맵 포인트에 대한 행렬의 요소들, 및 제2 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬의 요소들에 대해 슈어 컴플리먼트 연산을 수행할 수 있다. 백 엔드 프로세서가 맵 포인트를 기준으로 슈어 컴플리먼트 연산을 순차적으로 수행하고, 결과 값을 메모리에 축적하는 것은, 이후에 데이터를 로드(load)하는데 걸리는 시간을 최소화하기 위함이다.
일 실시예에 따르면, 백 엔드 프로세서(320)는 메모리에 축적된 결과 값에 기초하여, 제1 데이터에 대해 최적화된 제2 데이터를 획득할 수 있다. 예를 들어, 백 엔드 프로세서(320)는 제1 데이터에 대하여, 슈어 컴플리먼트 연산부(1730)의 연산 및 선형 솔버(1740)의 방정식 연산을 통해 획득한 상태 변화(
Figure pat00075
)를 적용하여, 제1 데이터의 신규 상태(1750)인 제2 데이터를 획득할 수 있다. 제2 데이터(
Figure pat00076
)는 제1 데이터(
Figure pat00077
)의 맵 포인트의 상태인
Figure pat00078
및 카메라 포즈의 상태인
Figure pat00079
에 대해 각각
Figure pat00080
Figure pat00081
가 적용된 것을 의미할 수 있다. 제2 데이터(
Figure pat00082
)는 맵 포인트의 상태인
Figure pat00083
및 카메라 포즈의 상태인
Figure pat00084
으로 구성될 수 있다.
도 18은 일 실시예에 따른 SLAM 가속기가 하드웨어 리소스를 고려하여 최적화 연산을 수행하는 방법을 나타내는 흐름도이다. 도 19는 일 실시예에 따른 슈어 컴플리먼트 연산을 수행하기 위한 헤시안 행렬을 도시한다.
도 18을 참조하면, SLAM 가속기가 최적화 연산을 수행하는 방법은 도 3에 도시된 SLAM 가속기(30)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 내지 도 17에 관하여 이상에서 기술된 내용은 도 18의 SLAM 가속기가 최적화 연산을 수행하는 방법에도 적용됨을 알 수 있다. 한편, 도 18의 각 단계들은 SLAM 가속기에 포함되는 구성들, 예를 들어, 도 3의 팩터 그래프 메모리(310) 또는 백 엔드 프로세서(320)에 의해 수행될 수 있다.
단계 1810에서, SLAM 가속기는 맵 포인트 및 카메라 포즈에 대한 행렬의 요소들을 획득하는 연산을 복수 개의 서브 트랙(sub-track)으로 분할할 수 있다. 복수 개의 서브 트랙의 길이(track length)는 SLAM 가속기(또는 백 엔드 프로세서)가 동시에 연산을 수행할 수 있는 카메라 포즈의 개수에 기초하여 설정될 수 있다.
예를 들어, SLAM 가속기가 2개의 카메라 포즈(또는 프레임)들에 대해서만 동시에 연산을 수행할 수 있는 경우에, 서브 트랙의 길이는 '2'로 설정될 수 있다. 예를 들어, 특정 맵 포인트(예: P1)가 카메라 포즈 C1 내지 C4에 대응하는 4개의 프레임들에서 획득된 경우에, 설정된 서브 트랙의 길이에 기초하여 맵 포인트에 대한 행렬(예: 도 9의 행렬 블록 V), 및 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬(예: 도 9의 행렬 블록 W)을 분할할 수 있다. 이 경우, 서브 트랙의 개수는 다음의 수학식 10을 통해 결정될 수 있다.
Figure pat00085
상기 수학식 10에 따르면, 서브 트랙의 길이(
Figure pat00086
)가 '2'이고 특정 맵 포인트가 획득된 프레임의 개수(
Figure pat00087
)가 4개인 경우에, 서브 트랙의 개수(
Figure pat00088
)는 '3'임을 알 수 있다. 도 19를 참조하면, 해당 예시의 서브 트랙의 개수(즉, 3개)에 따라, 맵 포인트 P1에 대한 연산들이 P1,1, P1,2 및 P1,3로 분할됨을 알 수 있다.
단계 1820에서, SLAM 가속기는 제1 서브 트랙에 대한 연산을 수행하고, 제1 결과 값을 메모리에 저장할 수 있다. 제1 서브 트랙에 대한 연산은 최적화 연산 또는 슈어 컴플리먼트 연산을 포함할 수 있다.
도 19의 예시에 따르면, SLAM 가속기는 제1 서브 트랙(1910)에 대응하는 제1 맵 포인트(P1,1)에 대한 행렬(V1,1)의 요소들, 및 상기 제1 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈(C1 및 C2)에 대한 행렬(W1(1) 및 W1(2))의 요소들에 대해 슈어 컴플리먼트 연산을 수행할 수 있다.
SLAM 가속기는 행렬 V1,1 및 행렬 W1(1), W1(2)에 대해 슈어 컴플리먼트 연산을 수행하여, 제1 결과 값으로서 행렬
Figure pat00089
및 벡터
Figure pat00090
를 획득할 수 있다. 행렬
Figure pat00091
는 대각 성분을 기준으로 전치 관계를 가지므로, SLAM 가속기는 슈어 컴플리먼트 연산을 수행하여 행렬
Figure pat00092
의 대각 성분 및 상삼각 성분만을 획득할 수 있다. SLAM 가속기는 획득된 행렬
Figure pat00093
및 벡터
Figure pat00094
의 데이터를 제1 결과 값으로 메모리에 저장할 수 있다.
단계 1830에서, SLAM 가속기는 제2 서브 트랙에 대한 연산을 수행하고, 제2 결과 값을 획득할 수 있다. 제2 서브 트랙에 대한 연산은 최적화 연산 또는 슈어 컴플리먼트 연산을 포함할 수 있다.
도 19의 예시에 따르면, SLAM 가속기는 제2 서브 트랙(1920)에 대응하는 제2 맵 포인트(P1,2)에 대한 행렬(V1,2)의 요소들, 및 상기 제2 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈(C2 및 C3)에 대한 행렬(W1(2) 및 W1(3))의 요소들에 대해 슈어 컴플리먼트 연산을 수행할 수 있다.
SLAM 가속기는 제2 서브 트랙(1920)에 대한 데이터 중 제1 서브 트랙(1910)과 중복되는 데이터는 로드(load)하지 않을 수 있다. 예를 들어, SLAM 가속기는 제1 서브 트랙(1910)에서 제1 맵 포인트에 대응하는 카메라 포즈(C2)에 대한 행렬인 W1(2)이 제2 서브 트랙(1920)에서 제2 맵 포인트에 대응하는 카메라 포즈(C2)에 대한 행렬과 중복됨을 판단할 수 있다. 이에 따라, SLAM 가속기는 카메라 포즈(C2)에 대한 행렬인 W1(2)은 별도로 로드하지 않고, 카메라 포즈(C3)에 대한 행렬인 W1(3)만을 로드함으로써, 데이터 로딩 속도를 감소시킬 수 있다.
SLAM 가속기는 행렬 V1,2 및 행렬 W1(2), W1(3)에 대해 슈어 컴플리먼트 연산을 수행하여, 제2 결과 값으로서 행렬
Figure pat00095
및 벡터
Figure pat00096
를 획득할 수 있다.
단계 1840에서, SLAM 가속기는 제2 결과 값을 제1 결과 값에 누적할 수 있다. 예를 들어, SLAM 가속기는 제2 결과 값을 제1 결과 값이 저장된 메모리에 누적할 수 있다.
도 19의 예시에 따르면, SLAM 가속기는 슈어 컴플리먼트 연산에 의해 획득되는 데이터를 출력 순서대로 메모리에 축적하여 저장할 수 있다. 예를 들어, SLAM 가속기는 제2 결과 값을 제1 결과 값이 저장된 메모리에 축적할 수 있고, 이후에 제3 서브 트랙(1930)에 대하여 획득한 제3 결과 값을 제1 결과 값 및 제2 결과 값이 축적되어 있는 메모리에 축적할 수 있다.
도 20은 일 실시예에 따른 슈어 컴플리먼트 연산부의 블록도를 도시한다.
도 20을 참조하면, 슈어 컴플리먼트 연산부(예: 도 17의 슈어 컴플리먼트 연산부(1730))는 인버스 멀티플라이어(inverse multiplier)(2010), Q 제너레이터(Q generator)(2020), W 서플라이어(W supplier)(2030), 벡터-스칼라곱 어레이(vector-scalar product array)(2040), 텐서곱 어레이(tensor product array)(2050), 벡터 축적 메모리(vector accumulator memory)(2060) 및 행렬 축적 메모리(matrix accumulator memory)(2070)를 포함할 수 있다. 일 실시예에서, 벡터 축적 메모리(2060) 및 행렬 축적 메모리(2070)는 도 3의 팩터 그래프 메모리(310)에 대응될 수 있다. 다만, 이에 제한되는 것은 아니며, 벡터 축적 메모리(2060) 및 행렬 축적 메모리(2070)는 별도의 메모리에 대응될 수도 있다.
일 실시예에서, 슈어 컴플리먼트 연산부는 아래 수학식 11을 이용하여 행렬
Figure pat00097
및 벡터
Figure pat00098
를 연산할 수 있다. 수학식 11은 도 18의 단계들과 같이, 복수 개(예: 5개)의 서브 트랙으로 분할된 슈어 컴플리먼트 연산을 수행하기 위한 의사코드(pseudo-code)에 해당할 수 있다.
Figure pat00099
상기 수학식 11에서, i는 카메라 포즈에 대한 인덱스 성분이고, j는 맵 포인트에 대한 인덱스 성분을 의미할 수 있다.
일 실시예에서, 인버스 멀티플라이어(2010)는 헤시안 갱신(예: 도 17의 헤시안 갱신(1720))을 통해 획득된 V 데이터 및 r 데이터를 수신할 수 있다. 예를 들어, V 데이터는 헤시안 행렬(
Figure pat00100
) 중 맵 포인트에 대한 행렬 블록 V의 요소들을 의미할 수 있다. r 데이터는 헤시안 행렬(
Figure pat00101
) 및 상태 변화(
Figure pat00102
)의 곱에 해당하는 벡터의 요소들을 의미할 수 있다. r 데이터는 자코비안 역행렬(
Figure pat00103
) 및 에러 벡터(
Figure pat00104
)의 곱에 해당하는 벡터의 요소들을 의미할 수도 있다. 일 실시예에서, 인버스 멀티플라이어(2010)는 V 데이터의 역행렬(V -1 ) 및 V 데이터의 역행렬과 r 데이터의 곱(V -1 r)을 연산할 수 있다.
일 실시예에서, Q 제너레이터(2020)는 인버스 멀티플라이어(2010)로부터 V 데이터의 역행렬(V -1 ) 및 V 데이터의 역행렬과 r 데이터의 곱(V -1 r)을 수신하여, 벡터
Figure pat00105
및 행렬
Figure pat00106
를 생성할 수 있다.
일 실시예에서, W 서플라이어(2030)는 헤시안 갱신을 통해 획득된
Figure pat00107
데이터를 수신할 수 있다. 예를 들어,
Figure pat00108
데이터는 헤시안 행렬(
Figure pat00109
) 중 맵 포인트에 대응하는 카메라 포즈에 대한 행렬 블록 W의 요소들을 의미할 수 있다.
일 실시예에서, 벡터-스칼라곱 어레이(2040)는 Q 제너레이터(2020)로부터 수신된 벡터
Figure pat00110
및 행렬
Figure pat00111
와, W 서플라이어(2030)로부터 수신된
Figure pat00112
데이터에 대해 곱 연산을 수행할 수 있다. 일 실시예에서, 텐서곱 어레이(2050)는 W 서플라이어(2030)로부터 수신된
Figure pat00113
데이터와, 벡터-스칼라곱 어레이(2040)에서 수행된 곱 연산 데이터에 대해 텐서곱 연산을 수행할 수 있다. 이 경우, 텐서곱 어레이(2050)는 W 서플라이어(2030)로부터 수신된
Figure pat00114
데이터에 대하여, 대각 성분을 기준으로 행과 열의 값을 교환하는 전치행렬(transposed matrix)로 변환하여 텐서곱 연산을 수행할 수 있다.
일 실시예에서, 벡터-스칼라곱 어레이(2040)는 벡터
Figure pat00115
Figure pat00116
데이터에 대한 곱 연산 데이터를 벡터 축적 메모리(2060)로 전송할 수 있다. 일 실시예에서, 텐서곱 어레이(2050)는
Figure pat00117
데이터와 벡터-스칼라곱 어레이(2040)에서 수행된 곱 연산 데이터에 대한 텐서곱 연산 데이터를 행렬-축적 메모리(2070)로 전송할 수 있다.
도 21은 일 실시예에 따른 슈어 컴플리먼트 연산부의 W 서플라이어(W supplier)의 블록도를 도시한다.
도 21을 참조하면, 슈어 컴플리먼트 연산부(예: 도 17의 슈어 컴플리먼트 연산부(1730))의 W 서플라이어(2030)는 헤시안 갱신(예: 도 17의 헤시안 갱신(1720))을 통해 획득된
Figure pat00118
데이터를 입력으로 수신할 수 있다.
일 실시예에서, W 서플라이어(2030)는 복수 개의 서브 트랙 분할에 대응하여, 복수 개의 W 레지스터를 포함할 수 있다. 예를 들어,
Figure pat00119
데이터가 5개의 서브 트랙으로 분할되는 경우에, W 서플라이어(2030)는 5개의 W 레지스터를 포함할 수 있다. 이 경우, W 레지스터는
Figure pat00120
데이터의 대각(diagonal) 성분을 포함하는 1개의 레지스터, 및
Figure pat00121
데이터의 비 대각(off-diagonal) 성분을 포함하는 4개의 레지스터들로 구성될 수 있다.
일 실시예에서, W 서플라이어(2030)는 복수 개의 시프트 레지스터(shift register)를 포함할 수 있다. 예를 들어, W 서플라이어(2030)는 시프트 레지스터를 통해서, 수신된
Figure pat00122
데이터를 각각의 레지스터에 대하여 순차적으로 이동시킬 수 있다. 일 실시예에서, 시프트 레지스터의 개수는 분할된 서브 트랙의 개수와 동일할 수 있다.
일 실시예에서, W 서플라이어(2030)는 복수 개의 시프트 레지스터를 통해 처리된 데이터를 텐서곱 어레이(2050)로 전송하는 타이밍 컨트롤러(timing controller, t-con)를 포함할 수 있다. 예를 들어, 복수 개의 시프트 레지스터에서 처리된 데이터는 타이밍 컨트롤러에 순차적으로 입력될 수 있고, 타이밍 컨트롤러는 상기 입력된 복수 개의 데이터(예:
Figure pat00123
,
Figure pat00124
,
Figure pat00125
,
Figure pat00126
,
Figure pat00127
)를 텐서곱 어레이(2050)에 동시에 전송할 수 있다.
일 실시예에서, W 서플라이어(2030)는 복수 개의 시프트 레지스터를 통해 처리된 데이터를 벡터-스칼라곱 어레이(2040)로 전송할 수 있다. 예를 들어, W 서플라이어(2030)는
Figure pat00128
데이터의 대각(diagonal) 성분을 포함하는 레지스터에서 처리된 데이터(예:
Figure pat00129
)를 벡터-스칼라곱 어레이(2040)로 전송할 수 있다.
도 22는 일 실시예에 따른 슈어 컴플리먼트 연산부의 Q 제너레이터(Q generator)의 블록도를 도시한다.
도 22를 참조하면, 슈어 컴플리먼트 연산부(예: 도 17의 슈어 컴플리먼트 연산부(1730))의 Q 제너레이터(2020)는 인버스 멀티플라이어(2010)로부터 V 데이터의 역행렬(V -1 ) 및 V 데이터의 역행렬과 r 데이터의 곱(V -1 r)을 수신하여, 벡터
Figure pat00130
및 행렬
Figure pat00131
를 생성할 수 있다.
일 실시예에서, Q 제너레이터(2020)는 복수 개의 서브 트랙 분할에 대응하여, 복수 개의 듀얼 레지스터(dual register) 및 가산기(adder)를 포함할 수 있다. 예를 들어, 복수 개의 듀얼 레지스터 및 가산기는 시프트 레지스터에 해당할 수 있다. Q 제너레이터(2020)는 복수 개의 듀얼 레지스터 및 가산기를 통해서, 수신된 V 데이터의 역행렬(V -1 ) 및 V 데이터의 역행렬과 r 데이터의 곱(V -1 r)을 순차적으로 이동시킬 수 있다. 일 실시예에서, 듀얼 레지스터의 개수는 분할된 서브 트랙의 개수와 동일할 수 있다.
일 실시예에서, Q 제너레이터(2020)는 복수 개의 듀얼 레지스터 및 가산기를 통해 처리된 데이터를 벡터-스칼라곱 어레이(2040)로 전송하는 타이밍 컨트롤러(timing controller, t-con)를 포함할 수 있다. 예를 들어, 복수 개의 듀얼 레지스터 및 가산기를 통해 처리된 데이터는 타이밍 컨트롤러에 순차적으로 입력될 수 있고, 타이밍 컨트롤러는 상기 입력된 복수 개의 데이터(예:
Figure pat00132
,
Figure pat00133
,
Figure pat00134
,
Figure pat00135
,
Figure pat00136
,
Figure pat00137
)를 벡터-스칼라곱 어레이(2040)에 동시에 전송할 수 있다.
도 23은 일 실시예에 따른 슈어 컴플리먼트 연산부의 벡터-스칼라 곱 어레이(vector-scalar product array)의 블록도를 도시한다.
도 23을 참조하면, 벡터-스칼라곱 어레이(2040)는 W 서플라이어(2030)로부터 대각(diagonal) 성분의
Figure pat00138
데이터(예:
Figure pat00139
)를 수신하고, Q 제너레이터(2020)로부터 벡터
Figure pat00140
및 행렬
Figure pat00141
데이터를 수신할 수 있다.
일 실시예에서, 벡터-스칼라곱 어레이(2040)는
Figure pat00142
데이터와 벡터
Figure pat00143
및 행렬
Figure pat00144
데이터에 대해 벡터-스칼라곱 연산을 수행할 수 있다. 이 경우, 벡터-스칼라곱 어레이(2040)는
Figure pat00145
데이터와 벡터
Figure pat00146
데이터에 대한 곱연산 및
Figure pat00147
데이터와 행렬
Figure pat00148
데이터에 대한 곱 연산을 동시에 수행할 수 있다. 예를 들어, 벡터-스칼라곱 어레이(2040)는 복수 개의 파이프라인 벡터-스칼라 멀티플라이어(pipelined vector-scalar multiplier)를 포함할 수 있고, 각각의 파이프라인 벡터-스칼라 멀티플라이어는
Figure pat00149
데이터와 벡터
Figure pat00150
데이터에 대한 곱연산 및
Figure pat00151
데이터와 행렬
Figure pat00152
데이터에 대한 곱연산을 병렬적으로 수행할 수 있다.
일 실시예에서, 벡터-스칼라곱 어레이(2040)는
Figure pat00153
데이터와 벡터
Figure pat00154
데이터에 대한 곱 연산의 결과 값(예:
Figure pat00155
)을 벡터 축적 메모리(2060)에 저장할 수 있다. 일 실시예에서, 벡터-스칼라곱 어레이(2040)는
Figure pat00156
데이터와 행렬
Figure pat00157
데이터에 대한 곱연산의 결과 값(예:
Figure pat00158
,
Figure pat00159
,
Figure pat00160
,
Figure pat00161
,
Figure pat00162
)을 텐서곱 어레이(2050)에 전송할 수 있다.
도 24는 일 실시예에 따른 슈어 컴플리먼트 연산부의 텐서 곱 어레이(tensor product array)의 블록도를 도시한다.
도 24를 참조하면, 텐서곱 어레이(2050)는 W 서플라이어(2030)로부터
Figure pat00163
데이터(예:
Figure pat00164
,
Figure pat00165
,
Figure pat00166
,
Figure pat00167
,
Figure pat00168
)를 수신하고, 벡터-스칼라곱 어레이(2040)로부터
Figure pat00169
데이터와 행렬
Figure pat00170
데이터에 대한 곱연산의 결과 값(예:
Figure pat00171
,
Figure pat00172
,
Figure pat00173
,
Figure pat00174
,
Figure pat00175
)을 수신할 수 있다.
일 실시예에서, 텐서곱 어레이(2050)는
Figure pat00176
데이터와,
Figure pat00177
데이터 및 행렬
Figure pat00178
데이터에 대한 곱연산의 결과 값에 대해 텐서곱 연산을 수행할 수 있다. 이 경우, 텐서곱 어레이(2050)는 W 서플라이어(2030)로부터 수신한
Figure pat00179
데이터와, 벡터-스칼라곱 어레이(2040)로부터 수신한
Figure pat00180
데이터 및 행렬
Figure pat00181
데이터에 대한 곱연산의 결과 값에 대한 텐서곱 연산을 동시에 수행할 수 있다. 예를 들어, 텐서곱 어레이(2050)는 W 서플라이어(2030)로부터 수신한
Figure pat00182
데이터에 대하여, 전치행렬로 변환하여 텐서곱 연산을 수행할 수 있다. 전치행렬로 변환된
Figure pat00183
데이터는
Figure pat00184
,
Figure pat00185
,
Figure pat00186
,
Figure pat00187
Figure pat00188
로 구성될 수 있다.
일 실시예에서, 텐서곱 어레이(2050)는 텐서곱 연산의 결과 값(예:
Figure pat00189
,
Figure pat00190
,
Figure pat00191
,
Figure pat00192
,
Figure pat00193
)을 행렬 축적 메모리(2070)에 저장할 수 있다. 이와 같이, 본 개시에 따른 SLAM 가속기는 하드웨어 리소스의 한계에도 불구하고, 서브 트랙 분할 방법을 이용하여 복잡한 연결 관계를 갖는 팩터 그래프에 대해서도 효과적인 연산을 수행할 수 있다. 또한, SLAM 가속기는 시프트 레지스터를 이용하여 데이터를 순차적으로 이동시키고, 기존 데이터를 재사용함으로써, 서브 트랙 단위의 연산을 한 번에 처리할 수 있다. 이에 따라, 저전력 및 고속의 최적화 연산이 수행될 수 있다.
도 25는 일 실시예에 따른 SLAM 가속기의 파이프라인 구조를 설명하기 위한 도면이다.
도 25를 참조하면, SLAM 가속기(예를 들어, 도 3의 SLAM 가속기(30))가 파이프라인 구조를 이용하여 측정값들에 대한 연산을 수행하는 과정이 도시되어 있다.
SLAM 가속기는 N번째 측정값(keypoint measurement)을 K번째 사이클에 로드할 수 있다. SLAM 가속기는 K번째 사이클에 N번째 측정값이 로드된 이후, 연속적인 사이클들(즉, K+1번째 사이클 내지 K+7번째 사이클)에 걸쳐 N번째 측정값과 연관된 연산들을 순차적으로 수행할 수 있다. 예를 들어, SLAM 가속기는 N번째 측정값에 대해, 데이터 로드, 재투영 오차 연산, 자코비안 행렬(또는 자코비안 행렬의 요소들) 생성, 헤시안 행렬(또는 헤시안 행렬의 요소들) 생성, Q 제네레이터, W 서플라이어, 벡터-스칼라곱, 텐서 곱, 벡터 축적, 및 행렬 축적을 순차적으로 수행할 수 있다.
또한, SLAM 가속기는 N+1번째 측정값을 K+1번째 사이클에 로드할 수 있다. SLAM 가속기는 K+1번째 사이클에 N+1번째 측정값이 로드된 이후, N번째 측정값에 연관된 연산들에 후속하여, N+1번째 측정값과 연관된 연산들을 수행할 수 있다. 예를 들어, SLAM 가속기는 K+1번째 사이클에서 N번째 측정값에 대한 재투영을 수행하는 동시에, N+1번째 측정값에 대한 데이터 로드를 수행할 수 있다. 이후 SLAM 가속기는 K+2번째 사이클에서 N번째 측정값에 대한 자코비안 생성을 수행하는 동시에, N+1번째 측정값에 대한 재투영을 수행할 수 있다.
이에 더하여, SLAM 가속기는 N+2번째 측정값을 K+1번째 사이클에 로드할 수 있고, N번째 측정값에 대한 연산들 및 N+1번째 측정값에 대한 연산들에 후속하여, N+2번째 측정값에 대한 연산들을 수행할 수 있다. 이와 같이, SLAM 가속기는 상태 변수를 최적화하는 복수의 연산들 각각을 수행하는 파이프라인 구조를 포함할 수 있고, 복수의 측정값들에 대한 연산들을 병렬적으로 수행할 수 있다. 이에 따라, 최적화 연산이 고속으로 수행될 수 있다.
한편, 전술한 SLAM을 가속화하는 방법은 그 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체에 기록될 수 있다. 컴퓨터로 읽을 수 있는 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.

Claims (20)

  1. SLAM(Simultaneous Localization and Mapping)을 가속화하는 장치에 있어서,
    팩터 그래프 메모리(factor graph memory); 및
    백 엔드 프로세서(back-end processor)를 포함하고,
    상기 백 엔드 프로세서는,
    상기 팩터 그래프 메모리로부터 맵 포인트 및 카메라 포즈에 대한 제1 측정값(measurement)을 획득하고,
    모든 측정값들에 기초하여 상기 맵 포인트 및 상기 카메라 포즈에 대한 헤시안 행렬(Hessian matrix) 전체를 생성하는 대신, 상기 헤시안 행렬의 요소들 중 상기 제1 측정값과 연관되어 최적화 행렬에 영향을 주는 요소들을 계산하며,
    상기 맵 포인트 및 상기 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는데 이용되는 상기 최적화 행렬에 상기 계산된 요소들을 누적하는, 장치.
  2. 제 1항에 있어서,
    상기 백 엔드 프로세서는,
    제1 사이클에 상기 제1 측정값이 로드된 이후, 연속적인 사이클들에 걸쳐 상기 제1 측정값과 연관된 연산들을 순차적으로 수행하는 파이프라인 구조를 포함하고,
    상기 파이프라인 구조는,
    상기 제1 사이클 다음의 제2 사이클에 제2 측정값이 로드되면, 상기 제1 측정값에 연관된 연산들에 후속하여, 상기 제2 측정값과 연관된 연산들을 수행하는, 장치.
  3. 제 1항에 있어서,
    상기 백 엔드 프로세서는,
    상기 제1 측정값을 이용하여 상기 카메라 포즈에 대한 행렬 블록의 요소들, 상기 맵 포인트에 대한 행렬 블록의 요소들, 및 상기 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬 블록의 요소들을 계산하는, 장치.
  4. 제 1항에 있어서,
    제1 측정값은 제1 맵 포인트 및 상기 제1 맵 포인트에 대응되는 적어도 하나의 카메라 포즈를 포함하는, 장치.
  5. 제 1항에 있어서,
    상기 백 엔드 프로세서는,
    상기 모든 측정값들에 대해 순차적으로 계산된 요소들이 상기 최적화 행렬에 누적되면, 상기 최적화 행렬을 이용하여 상기 맵 포인트 및 상기 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는, 장치.
  6. 제 1항에 있어서,
    상기 제1 측정값은 카메라, IMU(Inertial Measurement unit), 깊이(depth) 센서, GPS(Global Positioning System), 및 주행거리계(odometer) 중 적어도 하나를 포함하는 센서로부터 획득되는 데이터에 대해 프론트 엔드(front-end)를 수행한 결과에 대응되는, 장치.
  7. 제 6항에 있어서,
    상기 제1 측정값이 상기 카메라 및 상기 IMU로부터 획득되는 데이터에 대해 프론트 엔드를 수행한 결과에 대응되는 경우,
    상기 백 엔드 프로세서는,
    상기 제1 측정값을 상기 카메라 및 상기 IMU 모두에 의해 영향을 받는 제1 부분과, 상기 IMU에 의해서만 영향을 받는 제2 부분으로 구분하는, 장치.
  8. 제 7항에 있어서,
    상기 백 엔드 프로세서는,
    상기 제1 부분을 이용하여 상기 카메라 포즈에 대한 행렬 블록의 요소들, 상기 맵 포인트에 대한 행렬 블록의 요소들, 및 상기 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬 블록의 요소들을 계산한 뒤, 상기 제1 부분을 이용하여 계산된 요소들을 상기 최적화 행렬에 1차적으로 누적하고,
    상기 제2 부분을 이용하여 상기 카메라 포즈에 대한 행렬 블록의 요소들을 계산한 뒤, 상기 제2 부분에 대해 계산된 요소들을 상기 최적화 행렬에 2차적으로 누적하는, 장치.
  9. 제 1항에 있어서,
    상기 백 엔드 프로세서는,
    상기 맵 포인트 및 상기 카메라 포즈에 대한 행렬의 요소들을 획득하는 연산을 복수 개의 서브 트랙(sub-track)으로 분할하는, 장치.
  10. 제 9항에 있어서,
    상기 복수 개의 서브 트랙의 길이(track length)는 상기 백 엔드 프로세서가 동시에 연산을 수행할 수 있는 카메라 포즈의 개수에 기초하여 설정되는, 장치.
  11. SLAM을 가속화하는 방법에 있어서,
    팩터 그래프 메모리로부터 맵 포인트 및 카메라 포즈에 대한 제1 측정값을 획득하는 단계;
    모든 측정값들에 기초하여 상기 맵 포인트 및 상기 카메라 포즈에 대한 헤시안 행렬 전체를 생성하는 대신, 상기 헤시안 행렬의 요소들 중 상기 제1 측정값과 연관되어 최적화 행렬에 영향을 주는 요소들을 계산하는 단계; 및
    상기 맵 포인트 및 상기 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는데 이용되는 상기 최적화 행렬에 상기 계산된 요소들을 누적하는 단계를 포함하는, 방법.
  12. 제 11항에 있어서,
    상기 방법은,
    제1 사이클에 상기 제1 측정값이 로드된 이후, 연속적인 사이클들에 걸쳐 상기 제1 측정값과 연관된 연산들을 순차적으로 수행하는 단계; 및
    상기 제1 사이클 다음의 제2 사이클에 제2 측정값이 로드되면, 상기 제1 측정값에 연관된 연산들에 후속하여, 상기 제2 측정값과 연관된 연산들을 수행하는 단계를 더 포함하는, 방법.
  13. 제 11항에 있어서,
    상기 제1 측정값과 연관되어 최적화 행렬에 영향을 주는 요소들을 계산하는 단계는,
    상기 제1 측정값을 이용하여 상기 카메라 포즈에 대한 행렬 블록의 요소들, 상기 맵 포인트에 대한 행렬 블록의 요소들, 및 상기 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬 블록의 요소들을 계산하는, 방법.
  14. 제 11항에 있어서,
    제1 측정값은 제1 맵 포인트 및 상기 제1 맵 포인트에 대응되는 적어도 하나의 카메라 포즈를 포함하는, 방법.
  15. 제 11항에 있어서,
    상기 방법은,
    상기 모든 측정값들에 대해 순차적으로 계산된 요소들이 상기 최적화 행렬에 누적되면, 상기 최적화 행렬을 이용하여 상기 맵 포인트 및 상기 카메라 포즈의 상태들에 대한 최적화 연산을 수행하는 단계를 더 포함하는, 방법.
  16. 제 11항에 있어서,
    상기 제1 측정값은 카메라, IMU(Inertial Measurement unit), 깊이(depth) 센서, GPS(Global Positioning System), 및 주행거리계(odometer) 중 적어도 하나를 포함하는 센서로부터 획득되는 데이터에 대해 프론트 엔드(front-end)를 수행한 결과에 대응되는, 방법.
  17. 제 16항에 있어서,
    상기 방법은,
    상기 제1 측정값이 상기 카메라 및 상기 IMU로부터 획득되는 데이터에 대해 프론트 엔드를 수행한 결과에 대응되는 경우, 상기 제1 측정값을 상기 카메라 및 상기 IMU 모두에 의해 영향을 받는 제1 부분과, 상기 IMU에 의해서만 영향을 받는 제2 부분으로 구분하는 단계를 더 포함하는, 방법.
  18. 제 17항에 있어서,
    상기 방법은,
    상기 제1 부분을 이용하여 상기 카메라 포즈에 대한 행렬 블록의 요소들, 상기 맵 포인트에 대한 행렬 블록의 요소들, 및 상기 맵 포인트에 대응하는 적어도 하나 이상의 카메라 포즈에 대한 행렬 블록의 요소들을 계산한 뒤, 상기 제1 부분을 이용하여 계산된 요소들을 상기 최적화 행렬에 1차적으로 누적하는 단계; 및
    상기 제2 부분을 이용하여 상기 카메라 포즈에 대한 행렬 블록의 요소들을 계산한 뒤, 상기 제2 부분에 대해 계산된 요소들을 상기 최적화 행렬에 2차적으로 누적하는 단계를 더 포함하는, 방법.
  19. 제 17항에 있어서,
    상기 방법은,
    상기 맵 포인트 및 상기 카메라 포즈에 대한 행렬의 요소들을 획득하는 연산을 복수 개의 서브 트랙(sub-track)으로 분할하는 단계를 더 포함하는, 방법.
  20. 제 11항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020210053759A 2021-04-26 2021-04-26 Slam을 가속화하는 방법 및 장치 KR20220146901A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210053759A KR20220146901A (ko) 2021-04-26 2021-04-26 Slam을 가속화하는 방법 및 장치
US17/511,692 US20220358262A1 (en) 2021-04-26 2021-10-27 Method and apparatus for accelerating simultaneous localization and mapping
CN202111281851.4A CN115248044A (zh) 2021-04-26 2021-11-01 用于加速同步定位与地图构建的方法和装置
EP21211620.6A EP4083920A1 (en) 2021-04-26 2021-12-01 Method and apparatus for accelerating simultaneous localization and mapping

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210053759A KR20220146901A (ko) 2021-04-26 2021-04-26 Slam을 가속화하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220146901A true KR20220146901A (ko) 2022-11-02

Family

ID=78820490

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210053759A KR20220146901A (ko) 2021-04-26 2021-04-26 Slam을 가속화하는 방법 및 장치

Country Status (4)

Country Link
US (1) US20220358262A1 (ko)
EP (1) EP4083920A1 (ko)
KR (1) KR20220146901A (ko)
CN (1) CN115248044A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230079884A (ko) * 2021-11-29 2023-06-07 삼성전자주식회사 이종 특징들의 통합 최적화 프레임워크를 이용한 영상 처리 방법 및 장치
CN117705107B (zh) * 2024-02-06 2024-04-16 电子科技大学 基于两阶段稀疏舒尔补的面向视觉惯性定位方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9658070B2 (en) * 2014-07-11 2017-05-23 Regents Of The University Of Minnesota Inverse sliding-window filters for vision-aided inertial navigation systems
US9709404B2 (en) * 2015-04-17 2017-07-18 Regents Of The University Of Minnesota Iterative Kalman Smoother for robust 3D localization for vision-aided inertial navigation

Also Published As

Publication number Publication date
US20220358262A1 (en) 2022-11-10
CN115248044A (zh) 2022-10-28
EP4083920A1 (en) 2022-11-02

Similar Documents

Publication Publication Date Title
US10989540B2 (en) Binocular vision localization method, device and system
US20210190497A1 (en) Simultaneous location and mapping (slam) using dual event cameras
CN110084832B (zh) 相机位姿的纠正方法、装置、系统、设备和存储介质
US20210110599A1 (en) Depth camera-based three-dimensional reconstruction method and apparatus, device, and storage medium
EP4083920A1 (en) Method and apparatus for accelerating simultaneous localization and mapping
EP4174777A1 (en) Apparatus for accelerating simultaneous localization and mapping and electronic device including the same
KR20210058686A (ko) 동시적 위치 추정 및 맵 작성을 구현하는 장치 및 방법
CN112115874A (zh) 一种融合云端的视觉slam系统及方法
Churchill et al. Experience based navigation: Theory, practice and implementation
Wang et al. Pypose: A library for robot learning with physics-based optimization
CN114013449A (zh) 针对自动驾驶车辆的数据处理方法、装置和自动驾驶车辆
KR20200037502A (ko) 포즈 정보를 출력하는 방법 및 장치
Wen et al. Joint optimization based on direct sparse stereo visual-inertial odometry
US11188787B1 (en) End-to-end room layout estimation
CN115235454B (zh) 行人运动约束的视觉惯性融合定位与建图方法和装置
EP4040375A1 (en) Method for performing simultaneous localization and mapping and device using same
US11657530B2 (en) Stereo matching method and apparatus of images
CN115690201A (zh) 姿势估计方法和装置
CN115362478A (zh) 用于标记图像之间的空间关系的强化学习模型
Rückert et al. FragmentFusion: a light-weight SLAM pipeline for dense reconstruction
Li et al. A Research of Visual-Inertial Simultaneous Localization and Mapping
US11886491B2 (en) Method of accelerating simultaneous localization and mapping (SLAM) and device using same
Ge et al. PIPO-SLAM: Lightweight Visual-Inertial SLAM With Preintegration Merging Theory and Pose-Only Descriptions of Multiple View Geometry
Temburu et al. Real time System Implementation for Stereo 3D Mapping and Visual Odometry
US20240169562A1 (en) Device and method with camera pose estimation

Legal Events

Date Code Title Description
A201 Request for examination