KR20220138824A - 포인트-라인 피처를 이용한 슬램의 최적화 방법 및 장치 - Google Patents

포인트-라인 피처를 이용한 슬램의 최적화 방법 및 장치 Download PDF

Info

Publication number
KR20220138824A
KR20220138824A KR1020220041954A KR20220041954A KR20220138824A KR 20220138824 A KR20220138824 A KR 20220138824A KR 1020220041954 A KR1020220041954 A KR 1020220041954A KR 20220041954 A KR20220041954 A KR 20220041954A KR 20220138824 A KR20220138824 A KR 20220138824A
Authority
KR
South Korea
Prior art keywords
point
feature
line
slam
line feature
Prior art date
Application number
KR1020220041954A
Other languages
English (en)
Inventor
박순용
이준석
Original Assignee
경북대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 경북대학교 산학협력단 filed Critical 경북대학교 산학협력단
Publication of KR20220138824A publication Critical patent/KR20220138824A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/292Multi-camera tracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Image Analysis (AREA)

Abstract

본 개시의 일 실시예에 따른 포인트-라인 피처를 이용한 슬램(SLAM; Simultaneous Localization and Mapping)의 최적화 방법은, 복수의 프레임을 포함하는 영상을 수신하는 단계, 수신된 영상 내에서 에지의 방향이 변하는 위치로부터 복수의 포인트 피처를 추출하는 단계, 수신된 영상 내에서 복수의 에지(edge)로부터 복수의 라인 피처를 추출하는 단계 - 복수의 라인 피처 각각은 스타트 포인트 및 엔드 포인트를 포함함-, 복수의 포인트 피처 중 대상 포인트 피처를 결정하는 단계, 스타트 포인트 및 엔드 포인트 중 대상 포인트 피처로부터 임계 거리 이내에 위치하는 하나 이상의 포인트를 추출하는 단계, 추출된 하나 이상의 포인트를 포함하는 하나 이상의 라인 피처 중 대상 포인트 피처까지의 수직 거리가 가장 짧은 라인 피처를 대상 라인 피처로 결정하는 단계 및 대상 포인트 피처 및 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계를 포함할 수 있다.

Description

포인트-라인 피처를 이용한 슬램의 최적화 방법 및 장치{METHOD AND APPARATUS FOR OPTIMIZATION OF SLAM USING POINT-LINE FEATURES}
본 개시는 주행 장치의 동시적 위치 추정 및 지도 작성(SLAM Simultaneous Localization and Mapping)에 있어서 포인트-라인 피처를 이용하여 최적화를 수행하는 포인트-라인 피처를 이용한 슬램의 최적화 방법 및 이를 위한 장치에 관한 것이다.
SLAM은 무인 자동차, 무인 비행 드론, 군용 로봇, 청소 로봇, 농업용 로봇, AR(Augmented Reality), VR(Virtual Reality), 물류 배송 로봇 등과 같은 주행 장치에 연결된 이미지 센서에 의해 촬영된 3차원 공간의 이미지를 이용하여 주행 장치의 위치를 실시간으로 트래킹하고 해당 공간의 맵(map)을 생성하는 기술에 관한 것으로, SLAM 기술의 고도화를 위해서는 위치 추정 및 맵 생성의 정확성 및 견고성을 극대화시키는 것이 요구된다.
상술한 SLAM 기술의 정확성 및 견고성을 개선하기 위하여, 본 개시에서는 포인트 피처와 라인 피처가 결합된 포인트-라인 피처를 이용하여 슬램의 최적화를 수행하는 방법 및 이를 위한 장치가 제공된다.
본 개시의 일 실시예에 따른 포인트-라인 피처를 이용한 슬램(SLAM; Simultaneous Localization and Mapping)의 최적화 방법은, 복수의 프레임을 포함하는 영상을 수신하는 단계, 수신된 영상 내에서 에지의 방향이 변하는 위치로부터 복수의 포인트 피처를 추출하는 단계, 수신된 영상 내에서 복수의 에지(edge)로부터 복수의 라인 피처를 추출하는 단계 - 복수의 라인 피처 각각은 스타트 포인트 및 엔드 포인트를 포함함-, 복수의 포인트 피처 중 대상 포인트 피처를 결정하는 단계, 스타트 포인트 및 엔드 포인트 중 대상 포인트 피처로부터 임계 거리 이내에 위치하는 하나 이상의 포인트를 추출하는 단계, 추출된 하나 이상의 포인트를 포함하는 하나 이상의 라인 피처 중 대상 포인트 피처까지의 수직 거리가 가장 짧은 라인 피처를 대상 라인 피처로 결정하는 단계 및 대상 포인트 피처 및 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계를 포함할 수 있다.
일 실시예에 따르면, 대상 포인트 피처 및 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계는, 영상에서 대상 포인트 피처를 트랙킹(tracking)하는 단계 및 최적화를 위한 슬라이딩 윈도우 내에서 대상 포인트 피처가 트래킹된 윈도우의 수가 임계치 이상인 경우, 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계를 포함할 수 있다.
일 실시예에 따르면, 대상 포인트 피처 및 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계는, 대상 포인트 피처의 리프로젝션(reprojection) 포인트 및 대상 라인 피처 사이의 거리가 최소화되도록 슬램의 최적화를 수행하는 단계를 포함할 수 있다.
일 실시예에 따르면, 영상에서 복수의 라인 피처를 트래킹하는 단계 - 복수의 라인 피처는 제1 라인 피처 및 제2 라인 피처를 포함함- 및 최적화를 위한 슬라이딩 윈도우 내에서, 제1 라인 피처 및 제2 라인 피처가 트래킹된 윈도우의 수가 각각 임계치 이상이고, 최적화를 위한 슬라이딩 윈도우 내 복수의 시점(time)에서 제1 라인 피처 및 제2 라인 피처의 배니싱 포인트(vanishing point)가 임계 횟수 이상 동일한 것으로 판단된 경우, 제1 라인 피처 및 제2 라인 피처를 그룹핑하는 단계를 더 포함할 수 있다.
일 실시예에 따르면, 복수의 시점은 현재 시점으로부터 홀수 번째인 시점을 포함할 수 있다.
일 실시예에 따르면, 대상 포인트 피처 및 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계는, 포인트-라인 피처 및 그룹핑과 연관된 정보를 기초로 슬램의 최적화를 수행하는 단계를 포함할 수 있다.
일 실시예에 따르면, 복수의 라인 피처에 대하여 트라이앵귤레이션(triangulation)을 수행하여 복수의 3차원 라인 벡터를 생성하는 단계, 복수의 3차원 라인 벡터 중 임의의 두 라인 벡터 사이의 사이각을 산출하는 단계 및 산출된 사이각을 기초로 복수의 라인 피처 중 두 라인 벡터와 연관된 두 라인 피처를 그룹핑하는 단계를 포함할 수 있다.
일 실시예에 따르면, 대상 포인트 피처 및 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계는, 포인트-라인 피처 및 그룹핑과 연관된 정보를 기초로 슬램의 최적화를 수행하는 단계를 포함할 수 있다.
본 개시의 다른 실시예에 따르면, 포인트-라인 피처를 이용한 슬램의 최적화 장치는, 복수의 프레임을 포함하는 영상 및 영상과 연관된 데이터를 저장하는 메모리 및 메모리와 통신하여 영상 및 데이터를 처리하도록 구성된 적어도 하나의 프로세서를 포함하고, 적어도 하나의 프로세서는, 메모리로부터 복수의 프레임을 포함하는 영상을 수신하고, 수신된 영상 내에서 에지의 방향이 변하는 위치로부터 복수의 포인트 피처를 추출하고,수신된 영상 내에서 복수의 에지로부터 스타트 포인트 및 엔드 포인트를 각각 포함하는 복수의 라인 피처를 추출하고, 복수의 포인트 피처 중 대상 포인트 피처를 결정하고, 스타트 포인트 및 엔드 포인트 중 대상 포인트 피처로부터 임계 거리 이내에 위치하는 하나 이상의 포인트를 추출하고, 추출된 하나 이상의 포인트를 포함하는 하나 이상의 라인 피처 중 대상 포인트 피처까지의 수직 거리가 가장 짧은 라인 피처를 대상 라인 피처로 결정하고, 대상 포인트 피처 및 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하기 위한 명령어들을 실행하도록 구성될 수 있다.
본 개시의 또 다른 실시예에 따르면, 포인트-라인 피처를 이용한 슬램의 최적화 방법을 실행시키도록 컴퓨터로 판독 가능한 기록매체에 기록된 컴퓨터 프로그램이 제공될 수 있다.
본 개시의 일부 실시예에 따르면, 동시적 위치 추정 및 지도 작성(SLAM Simultaneous Localization and Mapping)의 정확성 및 견고성을 극대화할 수 있다.
본 개시의 일부 실시예에 따르면, 주행 장치의 순수 회전 및 스케일 리커버리(scale recovery)의 문제를 해결할 수 있다.
본 개시의 일부 실시예에 따르면, 슬라이딩 윈도우를 위한 최적화 수행에 따른 국소 최소 문제를 극복하고, 정확한 맵 생성을 위한 최적의 상태에 빠르게 수렴할 수 있다.
도 1은 본 개시의 일 실시예에 따른 포인트 피처 및 라인 피처가 추출된 영상의 일부를 나타낸다.
도 2는 본 개시의 일 실시예에 따른 주행 장치의 자기 위치 추정 방법의 구현을 위하여, 정보 처리 시스템이 복수의 주행 장치와 통신 가능하도록 연결된 구성을 나타내는 개요도이다.
도 3은 본 개시의 일 실시예에 따른 주행 장치 및 정보 처리 시스템의 내부 구성을 나타내는 블록도이다.
도 4는 본 개시의 일 실시예에 따른 최적화 방법을 수행하기 위한 전체 시스템의 개요도이다.
도 5는 본 개시의 일 실시예에 따른 포인트-라인 피처를 생성하는 방법의 예시를 나타낸다.
도 6은 본 개시의 일 실시예에 따라 포인트-라인 피처를 기초로 최적화를 수행하는 방법의 예시를 나타낸다.
도 7은 본 개시의 일 실시예에 따라 배니싱 포인트(vanishing point)를 이용하여 최적화를 수행하는 방법의 예시를 나타낸다.
도 8은 본 개시의 일 실시예에 따른 최적화 방법의 성능을 나타내는 도표이다.
도 9는 본 개시의 일 실시예에 따른 포인트-라인 피처를 이용한 슬램(SLAM)의 최적화 방법을 나타내는 흐름도이다.
이하, 본 개시의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 개시의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응되는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
개시된 실시예의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 개시가 완전하도록 하고, 본 개시가 통상의 기술자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것일 뿐이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 개시된 실시예에 대해 구체적으로 설명하기로 한다. 본 명세서에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 관련 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 '포함'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만 '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면 '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서는, '프로세서'는 주문형 반도체(ASIC), 프로그램 가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
도 1은 본 개시의 일 실시예에 따른 포인트 피처 및 라인 피처가 추출된 영상(100)의 일부를 나타낸다. 도 1의 영상(100)은 주행 장치의 동시적 위치 추정 및 지도 작성(SLAM; Simultaneous Localization and Mapping)을 위해 이미지 센서(또는, 카메라)에 의해 촬영된 영상을 지칭할 수 있다. 한편, 본 개시에서'최적화'란, 추출된 피처를 영상 시퀀스(또는, 프레임, 윈도우 등)에서 추적한 결과를 기초로, 카메라(또는, 주행 장치)의 위치 및/또는 자세(pose)를 추정하고, 3차원 맵을 생성하는 과정을 지칭할 수 있다. 또한, '최적화'란, 3차원 맵을 생성하는 과정에서 맵을 구성하는 랜드마크(landmark)의 위치들을 카메라의 추정된 자세로 재투영(reprojection)시켜서 재투영된 결과와 추적된 피처들 사이의 좌표상 거리가 최소화되도록 맵을 업데이트하는 과정을 지칭할 수 있다. 이와 같은 최적화는, 정확하고 견고한 맵을 생성하기 위해 요구되며, 최적화 과정에서 영상(100) 내 객체로부터 추출된 포인트 피처 및/또는 라인 피처가 사용될 수 있다.
일 실시예에 따르면, 실제 세계에 존재하는 포인트가 영상에 재투영되어(reprojected) 생성된 리프로젝션 포인트와 이에 대응하는 영상(100) 내 포인트 피처의 기하학적 오차를 감소시키는 방법으로 최적화를 수행할 수 있다. 이 경우, 영상(100)에서 추출된 포인트 피처 및/또는 라인 피처가 사용될 수 있다. 구체적으로, 영상(100) 내에서 에지(edge)의 방향이 변하는 위치로부터 복수의 포인트 피처를 추출하고, 에지로부터 복수의 라인 피처를 추출할 수 있다. 이 때, 추출된 복수의 포인트 피처 각각은 임의의 라인 피처의 스타트 포인트 또는 엔드 포인트와 대응되므로, 서로 대응되는 포인트 피처 및 라인 피처가 결합된 포인트-라인 피처를 생성할 수 있다. 이와 같이 생성된, 포인트-라인 피처는 포인트 피처 또는 라인 피처를 사용하여 최적화를 수행하는 경우보다 높은 정확성과 견고성 가질 수 있다.
일 실시예에 따르면, 실제 세계에서 평행하게 존재하는 라인들의 라인 피처들을 그룹핑(grouping)한 정보를 사용하여 최적화를 수행할 수 있다. 예를 들어, 라인 피처들 각각의 배니싱 포인트를 기초로 라인 피처들을 그룹핑하고, 그룹핑 정보를 사용하여 최적화를 수행할 수 있다. 이 때, 동일한 배니싱 포인트를 갖는 라인 피처는 하나의 그룹으로 그룹핑될 수 있으며, 하나의 그룹 내 라인 피처들과 연관된 실제 세계의 라인들은 서로 평행하게 존재할 수 있다. 다만, 하나의 그룹 내 라인 피처들 중에서도 실제 세계에서 서로 평행하게 존재하지 않는 예외적인 경우가 존재할 수 있으며, 본 개시에서는 이러한 예외적인 경우와 연관된 데이터를 제거하는 방식으로 최적화를 수행함으로써, 정확성이 높은 맵을 생성할 수 있다.
한편, 본 개시에서는 후술되는 표기법에 따라 슬램의 최적화 방법이 설명된다. 구체적으로,
Figure pat00001
은 각각 월드 프레임, 바디 프레임, 카메라 프레임을 나타낼 수 있다. 또한, 월드 프레임의 z축은 중력 방향을 따라 정렬될 수 있다.
Figure pat00002
는 i번째 최적화를 위한 슬라이딩 윈도우의 바디 프레임에서 월드 프레임의 좌표계 변환 벡터를 의미합니다. (u,v)는 픽셀 영상 좌표계를 따르며 픽셀 포인트의 위치 정보를 나타낸다. (x,y)은 정규화된 영상 좌표계를 말하며, 카메라 내부 파라미터의 영향이 제거된 좌표계를 (fx,fy,cx,cy)를 이용하여 표현한 것이다.
Figure pat00003
또한, 본 개시에서 최적화를 위한 슬라이딩 윈도우의 전체 상태 변수는 수학식 2 내지 4에 따라 정의될 수 있다.
Figure pat00004
Figure pat00005
Figure pat00006
수학식 2에서 은 상태 변수의 전체 집합이다. k, n 및 m은 각각 최적화를 위한 슬라이딩 윈도우의 수, 포인트 피처의 수 및 라인 피처의 개수이다.
Figure pat00007
는 i번째 최적화를 위한 슬라이딩 윈도우의 IMU 상태를 나타낸다.
Figure pat00008
는 첫 번째 관찰된 l번째 점 특징의 인버스 깊이(inverse depth)이다.
Figure pat00009
,
Figure pat00010
Figure pat00011
각각 i번째 최적화를 위한 슬라이딩 윈도우의 평행이동, 쿼터니언(quaternion) 및 속도이다.
Figure pat00012
Figure pat00013
는 각각
Figure pat00014
의 가속도 바이어스와 자이로스코프 바이어스를 나타낸다.
Figure pat00015
는 첫 번째로 관찰된 j번째 라인 피처의 직교 표현이다. 즉, {
Figure pat00016
,
Figure pat00017
}는 최적화를 위한 슬라이딩 윈도우에서 포인트 피처, 라인 피처에 대한 각각의 식별자(ID)이다.
Figure pat00018
는 3-DoF 오일러 각(
Figure pat00019
)과 1-DoF 회전 각(
Figure pat00020
) 으로 구성될 수 있다(Q. Fu, J. Wang, H. Yu, I. Ali, F. Guo, and H. Zhang, "PL-VINS: Real-Time Monocular Visual-Inertial SLAM with Point and Line," arXiv preprint arXiv:2009.07462, 2020.; S. J. Lee and S. S. Hwang, "Elaborate monocular point and line slam with robust initialization," Proceedings of the IEEE/CVF International Conference on Computer Vision, 2019, pp. 1121-1129.; R. Mur-Artal and J. D. Tardσs, "Orb-slam2: An open-source slam system for monocular, stereo, and rgb-d cameras," IEEE Transactions on Robotics, vol. 33, no. 5, pp. 1255-1262, 2017.).
Figure pat00021
Figure pat00022
는 좌표에 따른 3차원 공간 상의 라인을 나타낸다.
Figure pat00023
는 3-DoF 방향 벡터이고,
Figure pat00024
는 선의 3-DoF 모멘트 벡터이다.
Figure pat00025
Figure pat00026
는 직교 표현에 의해 서로 변환될 수 있습니다. 시각적 관성 BA(Bundle Adjustment)에서는
Figure pat00027
대신
Figure pat00028
가 사용될 수 있다. 이는, 미지의 매개변수 개수가 적을수록 더 효과적이다는 사실에 근거한다.
도 2는 본 개시의 일 실시예에 따른 주행 장치의 자기 위치 추정 방법의 구현을 위하여, 정보 처리 시스템(230)이 복수의 주행 장치(210_1, 210_2, 210_3)와 통신 가능하도록 연결된 구성을 나타내는 개요도이다. 정보 처리 시스템(230)은 네트워크(220)를 통해 주행 장치의 자기 위치 추정 및 지도 작성을 위한 시스템(들)을 포함할 수 있다. 일 실시예에 따르면, 정보 처리 시스템(230)은 주행 장치의 자기 위치 추정 및 지도 작성과 연관된 컴퓨터 실행 가능한 프로그램(예를 들어, 다운로드 가능한 어플리케이션) 및 데이터를 저장, 제공 및 실행할 수 있는 하나 이상의 서버 장치 및/또는 데이터베이스, 또는 클라우드 컴퓨팅 서비스 기반의 하나 이상의 분산 컴퓨팅 장치 및/또는 분산 데이터베이스를 포함할 수 있다. 예를 들어, 정보 처리 시스템(230)은 동시적 위치 추정 및 지도 작성 프로그램(SLAM; Simultaneous Localization and Mapping)을 제공하기 위한 별도의 시스템(예를 들어, 서버)들을 포함할 수 있다.
정보 처리 시스템(230)에 의해 제공되는 동시적 위치 추정 및 지도 작성 프로그램은, 복수의 주행 장치(210_1, 210_2, 210_3)의 각각에 설치되어 등을 통해 복수의 주행 장치(210_1, 210_2, 210_3)를 이용하는 사용자에게 제공될 수 있다. 예를 들어, 동시적 위치 추정 및 지도 작성 프로그램은, 주행 장치의 원격 제어, 주행 장치의 위치 추정, 맵핑과 연관된 프로그램을 포함할 수 있다.
복수의 주행 장치(210_1, 210_2, 210_3)은 네트워크(220)를 통해 정보 처리 시스템(230)과 통신할 수 있다. 네트워크(220)는 복수의 주행 장치(210_1, 210_2, 210_3)과 정보 처리 시스템(230) 사이의 통신이 가능하도록 구성될 수 있다. 네트워크(220)는 설치 환경에 따라, 예를 들어, 이더넷(Ethernet), 유선 홈 네트워크(Power Line Communication), 전화선 통신 장치 및 RS-serial 통신 등의 유선 네트워크, 이동통신망, WLAN(Wireless LAN), Wi-Fi, Bluetooth 및 ZigBee 등과 같은 무선 네트워크 또는 그 조합으로 구성될 수 있다. 통신 방식은 제한되지 않으며, 네트워크(220)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망, 위성망 등)을 활용하는 통신 방식뿐 아니라 주행 장치(210_1, 210_2, 210_3) 사이의 근거리 무선 통신 역시 포함될 수 있다.
도 2에서 드론(210_1), 자율 주행 로봇(210_2) 및 자율 주행 차량(210_3)이 주행 장치의 예로서 도시되었으나, 이에 한정되지 않으며, 주행 장치(210_1, 210_2, 210_3)는 유선 및/또는 무선 통신이 가능하고 주행 장치(210_1, 210_2, 210_3)의 제어를 위한 프로그램이 설치되어 실행될 수 있는 임의의 컴퓨팅 장치일 수 있다. 또한, 도 2에는 세 개의 주행 장치(210_1, 210_2, 210_3)가 네트워크(220)를 통해 정보 처리 시스템(230)과 통신하는 것으로 도시되어 있으나, 이에 한정되지 않으며, 상이한 수의 주행 장치(210_1, 210_2, 210_3)가 네트워크(220)를 통해 정보 처리 시스템(230)과 통신하도록 구성될 수도 있다.
일 실시예에 따르면, 정보 처리 시스템(230)은 주행 장치(210_1, 210_2, 210_3)로부터 정보 및/또는 데이터 수신할 수 있다. 여기서, 정보 및/또는 데이터는 주행 장치(210_1, 210_2, 210_3)의 센서 등에 의하여 획득된 정보 및/또는 데이터를 지칭할 수 있다. 또한, 정보 및/또는 데이터는 주행 장치(210_1, 210_2, 210_3)의 자기 위치 추정 및/또는 지도 작성을 위하여 주행 장치(210_1, 210_2, 210_3)의 프로세서 등에 의하여 가공된 정보 및/또는 데이터를 지칭할 수 있다. 이 경우, 수신된 정보 및/또는 데이터는 네트워크(220)를 통해 다른 주행 장치(210_1, 210_2, 210_3)(예를 들어, 인접한 위치에서 주행하는 다른 주행 장치)로 전송될 수 있다. 이 경우, 정보 처리 시스템(230)은 정보 및/또는 데이터를 수신하는 다른 주행 장치의 상태(위치, 방향, 속도 등)에 따라 수신된 정보 및/또는 데이터에 추가적인 가공 처리를 수행할 수 있다.
도 3은 본 개시의 일 실시예에 따른 주행 장치(210) 및 정보 처리 시스템(230)의 내부 구성을 나타내는 블록도이다. 주행 장치(210)는 주행 장치를 제어하기 위한 프로그램 등이 실행 가능하고 유/무선 통신이 가능한 임의의 컴퓨팅 장치를 지칭할 수 있으며, 예를 들어, 도 2의 드론(210_1), 자율 주행 로봇(210_2), 자율 주행 차량(210_3) 등을 포함할 수 있다. 도시된 바와 같이, 주행 장치(210)는 메모리(312), 프로세서(314), 통신 모듈(316) 및 입출력 인터페이스(318)를 포함할 수 있다. 이와 유사하게, 정보 처리 시스템(230)은 메모리(332), 프로세서(334), 통신 모듈(336) 및 입출력 인터페이스(338)를 포함할 수 있다. 도 3에 도시된 바와 같이, 주행 장치(210) 및 정보 처리 시스템(230)은 각각의 통신 모듈(316, 336)을 이용하여 네트워크(220)를 통해 정보 및/또는 데이터를 통신할 수 있도록 구성될 수 있다. 또한, 이미지 센서(320)는 입출력 인터페이스(318)를 통해 주행 장치(210)에 정보 및/또는 데이터를 입력하거나 주행 장치(210)로부터 생성된 정보 및/또는 데이터를 출력하도록 구성될 수 있다.
메모리(312, 332)는 비-일시적인 임의의 컴퓨터 판독 가능한 기록매체를 포함할 수 있다. 일 실시예에 따르면, 메모리(312, 332)는 RAM(random access memory), ROM(read only memory), 디스크 드라이브, SSD(solid state drive), 플래시 메모리(flash memory) 등과 같은 비소멸성 대용량 저장 장치(permanent mass storage device)를 포함할 수 있다. 다른 예로서, ROM, SSD, 플래시 메모리, 디스크 드라이브 등과 같은 비소멸성 대용량 저장 장치는 메모리와는 구분되는 별도의 영구 저장 장치로서 주행 장치(210) 또는 정보 처리 시스템(230)에 포함될 수 있다. 또한, 메모리(312, 332)에는 운영체제와 적어도 하나의 프로그램 코드(예를 들어, 주행 장치(210)에 설치되어 구동되는 주행 장치의 제어를 위한 코드)가 저장될 수 있다.
이러한 소프트웨어 구성요소들은 메모리(312, 332)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독가능한 기록매체는 이러한 주행 장치(210) 및 정보 처리 시스템(230)에 직접 연결가능한 기록 매체를 포함할 수 있는데, 예를 들어, 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 예로서, 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 모듈(316, 336)을 통해 메모리(312, 332)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템이 네트워크(220)를 통해 제공하는 파일들에 의해 설치되는 컴퓨터 프로그램에 기반하여 메모리(312, 332)에 로딩될 수 있다.
프로세서(314, 334)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(312, 332) 또는 통신 모듈(316, 336)에 의해 프로세서(314, 334)로 제공될 수 있다. 예를 들어, 프로세서(314, 334)는 메모리(312, 332)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신 모듈(316, 336)은 네트워크(220)를 통해 주행 장치(210)와 정보 처리 시스템(230)이 서로 통신하기 위한 구성 또는 기능을 제공할 수 있으며, 주행 장치(210) 및/또는 정보 처리 시스템(230)이 다른 주행 장치 또는 다른 시스템(일례로 별도의 클라우드 시스템 등)과 통신하기 위한 구성 또는 기능을 제공할 수 있다. 일례로, 주행 장치(210)의 프로세서(314)가 메모리(312) 등과 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청 또는 데이터(예를 들어, 그래픽 객체의 전송 요청 등)는 통신 모듈(316)의 제어에 따라 네트워크(220)를 통해 정보 처리 시스템(230)으로 전달될 수 있다. 역으로, 정보 처리 시스템(230)의 프로세서(334)의 제어에 따라 제공되는 제어 신호나 명령이 통신 모듈(336)과 네트워크(220)를 거쳐 주행 장치(210)의 통신 모듈(316)을 통해 주행 장치(210)에 수신될 수 있다. 예를 들어, 주행 장치(210)는 정보 처리 시스템(230)으로부터 그래픽 객체 등을 수신할 수 있다.
입출력 인터페이스(318)는 이미지 센서(320)와의 상호 작용을 위한 수단일 수 있다. 구체적으로, 이미지 센서(320)는 오디오 센서 및/또는 이미지 센서를 포함한 카메라, IMU(Inertial Measurement Unit) 센서, 키보드, 마이크로폰, 마우스 등의 입력 장치를 포함할 수 있다. 이 경우, 이미지 센서(320)는 광각 어안 렌즈 또는 전방향 렌즈 중 적어도 하나를 포함할 수 있다. 추가적으로, 이미지 센서(320)는 디스플레이, 스피커, 햅틱 피드백 디바이스(haptic feedback device) 등과 같은 출력 장치를 포함할 수 있다. 다른 예로, 입출력 인터페이스(318)는 터치스크린 등과 같이 입력과 출력을 수행하기 위한 구성 또는 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수 있다.
도 3에서는 이미지 센서(320)가 주행 장치(210)에 포함되지 않도록 도시되어 있으나, 이에 한정되지 않으며, 주행 장치(210)와 하나의 장치로 구성될 수 있다. 또한, 정보 처리 시스템(230)의 입출력 인터페이스(338)는 정보 처리 시스템(230)과 연결되거나 정보 처리 시스템(230)이 포함할 수 있는 입력 또는 출력을 위한 장치(미도시)와의 인터페이스를 위한 수단일 수 있다. 도 3에서는 입출력 인터페이스(318, 338)가 프로세서(314, 334)와 별도로 구성된 요소로서 도시되었으나, 이에 한정되지 않으며, 입출력 인터페이스(318, 338)가 프로세서(314, 334)에 포함되도록 구성될 수 있다.
주행 장치(210) 및 정보 처리 시스템(230)은 도 3의 구성요소들보다 더 많은 구성요소들을 포함할 수 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 일 실시예에 따르면, 주행 장치(210)는 상술된 이미지 센서(320) 중 적어도 일부를 포함하도록 구현될 수 있다. 또한, 주행 장치(210)는 트랜시버(transceiver), GPS(Global Positioning system) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수 있다. 예를 들어, 주행 장치(210)가 스마트폰인 경우, 일반적으로 스마트폰이 포함하고 있는 구성요소를 포함할 수 있으며, 예를 들어, 가속도 센서, 자이로 센서, 마이크 모듈, 카메라 모듈, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 주행 장치(210)에 더 포함되도록 구현될 수 있다.
일 실시예에 따르면, 주행 장치(210)의 프로세서(314)는 자기 위치 추정 및/또는 지도 작성 기능을 포함하는 주행 장치(210)의 제어를 위한 프로그램을 동작하도록 구성될 수 있다. 이 때, 해당 프로그램과 연관된 코드가 주행 장치(210)의 메모리(312)에 로딩될 수 있다. 프로그램이 동작되는 동안에, 주행 장치(210)의 프로세서(314)는 이미지 센서(320)로부터 제공된 정보 및/또는 데이터를 입출력 인터페이스(318)를 통해 수신하거나 통신 모듈(316)을 통해 정보 처리 시스템(230)으로부터 정보 및/또는 데이터를 수신할 수 있으며, 수신된 정보 및/또는 데이터를 처리하여 메모리(312)에 저장할 수 있다. 또한, 이러한 정보 및/또는 데이터는 통신 모듈(316)을 통해 정보 처리 시스템(230)에 제공될 수 있다.
주행 장치(210)의 제어를 위한 프로그램이 동작되는 동안에, 프로세서(314)는 입출력 인터페이스(318)와 연결된 이미지 센서(320)를 통해 입력되거나 선택된 음성 데이터, 텍스트, 이미지, 영상 등을 수신할 수 있으며, 수신된 음성 데이터, 텍스트, 이미지 및/또는 영상 등을 메모리(312)에 저장하거나 통신 모듈(316) 및 네트워크(220)를 통해 정보 처리 시스템(230)에 제공할 수 있다. 추가적으로 또는 대안적으로, 프로세서(314)는 네트워크(220)를 통해 연결된 정보 처리 시스템(230)을 통해 음성 데이터, 텍스트, 이미지, 영상 등을 수신할 수 있으며, 수신된 음성 데이터, 텍스트, 이미지 및/또는 영상 등을 메모리(312)에 저장하거나 통신 모듈(316) 및 네트워크(220)를 통해 정보 처리 시스템(230)에 제공할 수 있다.
정보 처리 시스템(230)의 프로세서(334)는 복수의 주행 장치 및/또는 복수의 외부 시스템으로부터 수신된 정보 및/또는 데이터를 관리, 처리 및/또는 저장하도록 구성될 수 있다. 일 실시예에 따르면, 프로세서(334)는 주행 장치(210)로부터 수신한 영상 등을 저장, 처리 및 전송할 수 있다. 추가적으로 또는 대안적으로, 프로세서(334)는 네트워크(220)와 연결된 별도의 클라우드 시스템, 데이터베이스 등으로부터 주행 장치(210)의 자기 위치 추정 및/또는 지도 작성을 위해 이용되는 알고리즘을 실행하기 위한 프로그램 등을 저장 및/또는 업데이트하도록 구성될 수 있다.
도 4는 본 개시의 일 실시예에 따른 최적화 방법을 수행하기 위한 전체 시스템(400)의 개요도이다. 시스템은 적어도 하나의 프로세서(예: 프로세서(614, 334))에 의해 수행될 수 있다. 한편, 시스템(400)은 포인트 피처와 라인 피처를 효율적으로 활용하여 알고리즘의 성능을 향상시키는 것을 목적으로 한다. 이를 위해, 시스템(400)은 IMU 센서(410), 카메라(420), 피처 검출 및 트래킹 모듈(430), 최적화 모듈(440) 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, IMU 센서(410)는 가속도 측정값과 각속도 측정값을 사용하여 메트릭 스케일(metric scale)의 회전 정보(예: 주행 장치(210)의 회전 정보)를 획득할 수 있다. 이러한 구성에 의해, 주행 장치의 순수 회전 및 스케일 리커버리(scale recovery)의 문제를 해결할 수 있다.
일 실시예에 따르면, 카메라(420)는 주행 장치의 동시적 위치 추정 및 지도 작성을 위한 영상을 촬영할 수 있다. 그리고 나서, 피처 검출 및 트래킹 모듈(430)은 카메라(420)에 의해 획득된 영상 내 두 개의 연속 프레임으로부터 포인트 피처를 검출 및/또는 트래킹할 수 있다. 구체적으로, 피처 검출 및 트래킹 모듈(430)의 포인트 피처 모듈(432)은 영상 내 에지(edge)의 방향이 변하는 위치로부터 복수의 포인트 피처를 추출할 수 있다. 추가적으로 또는 대체적으로, 포인트 피처 모듈(432)은 영상 내 에지가 교차하는 지점으로부터 복수의 포인트 피처를 추출할 수 있다. 이를 위해, 포인트 피처 모듈(432)은 Shi-Tomasi(J. Shi, “Good features to track,” In 1994 Proceedings of IEEE conference on computer vision and pattern recognition, IEEE, 1994, pp. 593-600.) 및 KLT(C. Tomasi and T. Kanade, “Detection and tracking of point,” features. Technical Report CMU-CS-91-132, Carnegie, Mellon University, Tech. Rep., 1991.) 중 적어도 하나를 기초로 구성될 수 있으나, 이에 한정되지 않고 영상으로부터 피처 포인트를 추출하기 위하여 설계된 종래의 모든 알고리즘을 기초로 구성될 수 있다.
일 실시예에 따르면, 피처 검출 및 트래킹 모듈(430)은 카메라(420)에 의해 획득된 영상 내 두 개의 연속 프레임으로부터 라인 피처를 검출 및/또는 트래킹할 수 있다. 구체적으로, 라인 피처 모듈(434)은 영상 내 객체(object) 또는 구조물의 에지로부터 복수의 라인 피처를 추출 및 할 수 있다. 이를 위해, 라인 피처 모듈(434)은 LSD(Large-Scale Direct; R. G. Von Gioi, J. Jakubowicz, J. M. Morel and G. Randall, “LSD: A fast line segment detector with a false detection control,” IEEE transactions on pattern analysis and machine intelligence, vol. 32, no. 4, pp. 722-732, 2008.) 및 LBD(Line Band Descriptor; Zhang and R. Koch, “An efficient and robust line segment matching approach based on LBD descriptor and pairwise geometric consistency,” Journal of Visual Communication and Image Representation, vol. 24, no. 7, pp.794-805, 2013.)를 기초로 구성될 수 있으나, 이에 한정되지 않고 영상으로부터 피처 포인트를 추출하기 위하여 설계된 종래의 모든 알고리즘을 기초로 구성될 수 있다.
일 실시예에 따르면, 최적화 모듈(440)은 추출된 포인트 피처 및/또는 라인 피처를 기초로 정확하고 견고한 위치 추정 및 지도 작성을 위한 최적화를 수행할 수 있다. 구체적으로, 최적화 모듈(440)은 추출된 포인트 피처 및 해당 포인트 피처에 대응하는 라인 피처를 결합하여 포인트-라인 피처를 생성하고, 생성된 포인트-라인 피처를 기초로 최적화를 수행할 수 있다. 일반적으로, 영상 내 객체나 구조물의 에지에서 라인 피처가 추출되고, 에지와 다른 에지의 교차점이나 에지의 방향이 변화하는 포인트에서 포인트 피처가 추출되므로, 포인트 피처는 라인 피처의 양 끝점 중 적어도 한 지점에서 검출될 수 있다. 즉, 포인트 피처와 라인 피처는 위치 관계를 가진다는 점에서 기하학적 유사성을 공유하는 것으로 여겨질 수 있다. 본 개시에서는 이러한 포인트 피처와 라인 피처의 관계를 포인트-라인 피처 또는, PLC(Point-Line Coupled))라고 정의된다. 도 5 내지 6에서는, 이러한 포인트-라인 피처를 이용하여 재투영 거리 오차(reprojection error)를 최소화하는 방식으로 최적화를 수행하는 방법이 후술된다.
도 5는 본 개시의 일 실시예에 따른 포인트-라인 피처를 생성하는 방법의 예시를 나타낸다. 도시된 바와 같이, 포인트-라인 피처를 생성하는 방법은 제1 동작 단계(510), 제2 동작 단계(520) 및 제3 동작 단계(530) 중 적어도 하나를 포함할 수 있다. 제1 동작 단계(510)는 영상으로부터 라인 피처가 추출된 예시를 나타낸다.
일 실시예에 따르면, 프로세서(예: 프로세서(314, 334))는 제1 동작 단계(510)에서 영상으로부터 복수의 라인 피처(검은색 라인)를 추출할 수 있다. 이 경우, 복수의 라인 피처 각각은 스타트 포인트 및/또는 엔드 포인트(청색 포인트)를 포함할 수 있다. 이 경우, 실시간 성능을 유지하면서 빠른 속도로 피처를 추출하기 위하여 KT-tree(K-Dimension Tree) 알고리즘이 적용될 수 있다. 추가적으로, 프로세서는 영상으로부터 복수의 포인트 피처(미도시)를 추출할 수 있다.
일 실시예에 따르면, 프로세서는 제2 동작 단계(520) 및 제3 동작 단계(530)에서 추출된 복수의 포인트 피처 중 대상 포인트 피처(522)에 대응하는 대상 라인 피처(524)를 결정할 수 있다. 구체적으로, 프로세서는 제2 동작 단계(520)에서 대상 포인트 피처(532)로부터 일정한 거리 내에 위치하는 라인 피처의 스타트 포인트 또는 엔드 포인트를 추출하고, 추출된 스타트 포인트 또는 엔드 포인트를 포함하는 적어도 하나의 후보 라인 피처(524, 526)를 식별할 수 있다. 그리고 나서, 프로세서는 제3 동작 단계(530)에서 적어도 하나의 후보 라인 피처(524, 526) 중 대상 포인트 피처(522)까지의 거리가 가장 가까운 대상 라인 피처(524)로 결정할 수 있다. 여기서, 거리는 대상 포인트 피처(522)와 후보 라인 피처(524, 526) 각각 사이의 수직 거리를 지칭할 수 있다. 또한, 거리는 대상 포인트 피처(522)와 후보 라인 피처(524)의 스타트 포인트 또는 엔드 포인트 사이의 거리를 지칭할 수 있다.
추가적으로, 프로세서는 제3 동작 단계(530) 이후에 대상 포인트 피처(522) 및 대상 라인 피처(524)의 식별자(ID; Identification) 및 대상 포인트 피처(522) 및 대상 라인 피처(524)가 검출 및/또는 트랙킹된 영상의 프레임 식별자를 매칭하여 저장함으로써, 포인트-라인 피처를 생성할 수 있다. 수학식 5에서 h는 포인트-라인 피처의 서술자로 정의되고, H 및 h는 각각 집합을 나타낸다.
Figure pat00029
도 6은 본 개시의 일 실시예에 따라 포인트-라인 피처를 기초로 최적화를 수행하는 방법의 예시를 나타낸다. 도 6에 개시되는 제1 동작 단계(610) 및 제2 동작 단계(620)는 각각 도 5의 최적화 방법 이후에 수행될 수 있다. 여기서, 제1 동작 단계(610) 및 제2 동작 단계(620)는 영상 내 연속적인 두 시점(view point)에서의 프레임(또는, 윈도우)를 나타낸다. 일반적으로, 최적화 기반 VIO(Visual-inertial Odometry)는 BA(Bundle Adjustment)를 사용하여 포인트 피처의 깊이를 추정한다. 이 때, 포인트 피처 깊이의 정확도와 안정성은 해당 포인트 피처가 트래킹된 프레임 수(또는, 슬라이드 윈도우 내 윈도우의 수)의 영향을 받을 수 있다. 구체적으로, 포인트 피처의 깊이는 트래킹된 프레임 수가 증가할수록 더 안정적이고 추적 프레임 수가 감소할수록 상대적으로 불안정하다. 이를 위해, 프로세서(예: 프로세서(314, 334))는 대상 포인트 피처(예: 대상 포인트 피처(522, 622))가 트래킹된 프레임 수(또는, 슬라이드 윈도우 내 윈도우의 수)의 수가 임계치(μ1)보다 작은 경우, 도 5 및 6에 개시된 최적화 방법이 적용된 BA를 수행할 수 있다. 이 경우, 최적화 방법은 정규화된 영상 좌표계를 따른다.
일 실시예에 따르면, 프로세서 제1 동작 단계(610)에서 대상 포인트 피처(612)를 트래킹할 수 있다. 이 경우, 프로세서는 대상 포인트 피처(612)와 연관된 정보를 획득할 수 있다. 여기서, 대상 포인트 피처(612) 연관된 정보는 상술한 방법에 따라 대상 포인트 피처(612) 및 대상 포인트 피처(612)를 스타트 포인트 또는 엔드 포인트로 갖는 대상 라인 피처(614)가 매칭됨으로써 생성된 정보를 지칭할 수 있다.
일 실시예에 따르면, 프로세서는 제2 동작 단계(620)에서 슬라이딩 윈도우를 이용하여 획득된 대상 포인트 피처(612)의 포인트-라인 피처를 기초로 최적화를 수행할 수 있다. 예를 들어, 프로세서는 포인트 피처(612)와 연관된 리프로젝션 포인트(622) 및 대상 라인 피처(614) 사이의 수직 거리(d)가 최소화되도록 최적화를 수행할 수 있다. 추가적으로 또는 대안적으로, 프로세서는 슬라이딩 윈도우 내에서 대상 포인트 피처(612), 대상 라인 피처(614) 또는 이와 연관된 포인트-라인 피처중 적어도 하나가 트래킹된 윈도우의 수가 임계치 이상인 경우에 한하여, 포인트-라인 피처를 기초로 최적화를 수행할 수도 있다. 예를 들어, 프로세서는 대상 포인트 피처(612)가 트래킹된 윈도우의 수가 임계치 이상인 경우, 대상 포인트 피처(612)와 연관된 리프로젝션 포인트(622) 및 대상 라인 피처(614) 사이의 수직 거리(d)가 최소화되도록 최적화를 수행할 수 있다. 이러한 구성에 의해, 프로세서는 슬라이딩 윈도우를 위한 최적화 수행에 따른 국소 최소 문제를 극복하고, 정확한 맵 생성을 위한 최적의 상태에 빠르게 수렴할 수 있다.
Figure pat00030
Figure pat00031
Figure pat00032
Figure pat00033
Figure pat00034
도 7은 본 개시의 일 실시예에 따라 배니싱 포인트(vanishing point)를 이용하여 최적화를 수행하는 방법의 예시를 나타낸다. 일반적으로, 퍼스펙티브(perspective) 모델의 카메라가 3차원 공간에서 물리적으로 평행한 두 개의 선을 투영하는 경우, 영상 내 두 라인 피처는 하나의 포인트에서 교차한다. 이러한 현상을 원근감 효과라고 하며, 교차점을 배니싱 포인트(VP; Vanishing Point)라고 한다. 이에 기초하여, 프로세서(예: 프로세서(314, 334))는 복수의 라인 피처 중 동일한 배니싱 포인트 갖는(이에 따라, 현실 세계에서 평행한 것으로 판단되는) 라인 피처를 그룹핑(또는, 클러스터링)하고, 그룹핑된 정보를 이용하여 최적화를 수행함으로써 주행 장치의 드리프트 문제를 극복하고 정확한 맵을 생성할 수 있다.
한편, 도 7의 (a)를 참고하면, 동일한 배니싱 포인트를 갖는 두 라인 피처는 현실 세계에서 평행하는 에지로서 존재하지만, 그렇지 않을 수도 있다. 예를 들어, 제1 에지(710)와 제2 에지(720)는 현실 세계에서 평행하므로 영상(740)에서 동일한 배니싱 포인트를 갖지만, 제1 에지(710)와 제3 에지(730)는 현실 세계에서 평행하지 않음에도 불구하고, 영상에서 동일한 배니싱 포인트를 갖는다. 본 개시의 프로세서는 후자와 같은 상황에서 제1 에지(710) 및 제3 에지(730)가 하나의 그룹으로 그룹핑되는 것을 피함으로써, 위치 추정 및 지도 작성의 정확도를 극대화할 수 있다.
도 7의 (b)를 참고하면, 프로세서는 최적화를 위한 슬라이딩 윈도우 내에서, 복수의 라인 피처에 포함된 제1 라인 피처 및 제2 라인 피처가 각각 트래킹된 윈도우(여기서, t 내지 t-4에서의 윈도우)의 수가 임계치 이상이고, 최적화를 위한 슬라이딩 윈도우 내 복수의 시점(여기서, t, t-2 및 t-4에서의 윈도우)에서 제1 라인 피처 및 제2 라인 피처의 배니싱 포인트가 임계 횟수(예를 들어, 3회, 5회 등) 이상 동일한 것으로 판단된 경우, 제1 라인 피처 및 제2 라인 피처를 하나의 그룹으로 그룹핑할 수 있다. 예를 들어, 복수의 시점은 현재 시점으로부터 홀수 번째인 시점(여기서, t, t-2 및 t-4에서의 윈도우)을 지칭할 수 있다. 다른 예를 들어, 복수의 시점은 현재 시점으로부터 짝수 번째인 시점(여기서, t-1, t-3에서의 윈도우)을 지칭할 수 있다. 한편, 배니싱 포인트가 임계 횟수(예를 들어, 3회, 5회 등) 이상 동일할 것을 조건으로 하는 것은, 제1 라인 피처 및 제2 라인 피처가 동일한 배니싱 포인트를 갖는 것으로 판단되는 횟수가 클수록 제1 라인 피처 및 제2 라인 피처가 현실 세계에서 서로 평행할 확률이 높다는 점에 기초한다.
도 8은 본 개시의 일 실시예에 따른 최적화 방법의 성능을 나타내는 도표이다. EuRoC MAV(Micro Aerial Vehicle) Dataset(M. Burri, J. Nikolic, P. Gohl, T. Schneider, J. Rehder, S. Omari, M. W. Achtelik and R. Siegwart, "The EuRoC micro aerial vehicle datasets," The International Journal of Robotics Research, vol. 35, no. 10, pp. 1157-1163, 2016.)의 11개 시퀀스를 모두 사용하여 본 개시에 따른 최적화 방법이 평가되었다.
평가에 사용된 데이터 세트에는 동기화된 글로벌 셔터 스테레오 카메라(20FPS) 및 IMU 센서에 의한 측정 데이터(200Hz)가 포함되어 있다. 해당 평가는 RMSE ATE를 평가지표로 채택하였으며, Quantitative Trajectory Evaluation Tool(Z. Zhang and D. Scaramuzza, "A tutorial on quantitative trajectory evaluation for visual (-inertial) odometry," in 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), IEEE, 2018, pp. 7244-7251.)를 사용하여 RMSE ATE를 평가했다.
도 8을 참고하면, 루프 폐쇄가 없는 제약 조건에서 제안된 PLF-VINS는 VINS-모노에 비해 9.63%, PL-VINS에 비해 3.33% 만큼 정확도가 향상됨을 확인할 수 있다.
한편, 하드웨어 시스템 환경에 따른 공정한 평가를 위해 공개된 비교 알고리즘 코드를 이용하여 오도메트리 데이터를 획득하였다. 모든 알고리즘은 인텔 코어 i7-9700k @ 3.60GHz, 16GB RAM에서 테스트되었으며, EuRoC MAV 데이터 세트에 대한 총 5회의 실행 결과를 기반으로 하는 Quantitative Trajectory Evaluation Tool(Z. Zhang and D. Scaramuzza, "A tutorial on quantitative trajectory evaluation for visual (-inertial) odometry," in 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), IEEE, 2018, pp. 7244-7251.)에 의해 평가되었다. ROVIO 및 OKVIS 운영 체제는 우분투 16.04에서 실행되었고 VINS-mono, PL-VINS, PLF-VINS는 ubuntu 18.04에서 실행되었다. 본 개시에서 언급된 슬라이딩 윈도우는 CERES solver(S. Agarwal, K. Mierle, and Others, "Ceres solver," http://ceres-solver. org.)가 이용되었다.
도 9는 본 개시의 일 실시예에 따른 포인트-라인 피처를 이용한 슬램(SLAM)의 최적화 방법(900)을 나타내는 흐름도이다. 방법(900)은 적어도 하나의 프로세서(예: 프로세서(314, 334))에 의해 수행될 수 있다. 도시된 바와 같이, 방법(900)은 복수의 프레임을 포함하는 영상을 수신하는 단계(S910)로 개시될 수 있다.
일 실시예에 따르면, 프로세서는 수신된 영상 내에서 에지의 방향이 변하는 위치로부터 복수의 포인트 피처를 추출할 수 있다(S920). 추가적으로 또는 대안적으로, 프로세서는 수신된 영상 내에서 복수의 에지(edge)로부터 복수의 라인 피처를 추출할 수 있다(S930). 이 경우, 복수의 라인 피처 각각은 스타트 포인트 및 엔드 포인트를 포함할 수 있다.
일 실시예에 따르면, 프로세서는 복수의 포인트 피처 중 대상 포인트 피처를 결정하고(S940), 스타트 포인트 및 엔드 포인트 중 대상 포인트 피처로부터 임계 거리 이내에 위치하는 하나 이상의 포인트를 추출할 수 있다(S950). 그리고 나서, 프로세서는, 추출된 하나 이상의 포인트를 포함하는 하나 이상의 라인 피처 중 대상 포인트 피처까지의 수직 거리가 가장 짧은 라인 피처를 대상 라인 피처로 결정할 수 있다(S960).
일 실시예에 따르면, 프로세서는 대상 포인트 피처 및 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행할 수 있다(S970). 예를 들어, 프로세서는 영상에서 대상 포인트 피처를 트랙킹(tracking)하는 단계 및 최적화를 위한 슬라이딩 윈도우 내에서 대상 포인트 피처가 트래킹된 윈도우의 수가 임계치 이상인 경우, 포인트-라인 피처를 기초로 슬램의 최적화를 수행할 수 있다. 추가적으로 또는 대안적으로, 프로세서는 대상 포인트 피처의 리프로젝션(reprojection) 포인트 및 대상 라인 피처 사이의 거리가 최소화되도록 슬램의 최적화를 수행할 수 있다.
일 실시예에 따르면, 프로세서는 영상에서 복수의 라인 피처를 트래킹할 수 있다. 이 경우, 복수의 라인 피처는 제1 라인 피처 및 제2 라인 피처를 포함할 수 있다. 그리고 나서, 프로세서는 최적화를 위한 슬라이딩 윈도우 내에서, 제1 라인 피처 및 제2 라인 피처가 트래킹된 윈도우의 수가 각각 임계치 이상이고, 최적화를 위한 슬라이딩 윈도우 내 복수의 시점(time)에서 제1 라인 피처 및 제2 라인 피처의 배니싱 포인트가 임계 횟수 이상 동일한 것으로 판단된 경우, 제1 라인 피처 및 제2 라인 피처를 그룹핑할 수 있다. 여기서, 복수의 시점은 현재 시점으로부터 홀수 번째인 시점을 포함할 수 있다. 이에 따라, 프로세서는 포인트-라인 피처 및 그룹핑과 연관된 정보를 기초로 슬램의 최적화를 수행할 수 있다.
일 실시예에 따르면, 프로세서는 복수의 라인 피처에 대하여 트라이앵귤레이션(triangulation)을 수행하여 복수의 3차원 라인 벡터를 생성할 수 있다. 그리고 나서, 프로세서는 복수의 3차원 라인 벡터 중 임의의 두 라인 벡터 사이의 사이각을 산출하고, 산출된 사이각을 기초로 복수의 라인 피처 중 두 라인 벡터와 연관된 두 라인 피처를 그룹핑할 수 있다. 이에 따라, 프로세서는 포인트-라인 피처 및 그룹핑과 연관된 정보를 기초로 슬램의 최적화를 수행할 수 있다.
본 개시의 앞선 설명은 통상의 기술자들이 본 개시를 행하거나 이용하는 것을 가능하게 하기 위해 제공된다. 본 개시의 다양한 수정예들이 통상의 기술자들에게 쉽게 자명할 것이고, 본원에 정의된 일반적인 원리들은 본 개시의 취지 또는 범위를 벗어나지 않으면서 다양한 변형예들에 적용될 수도 있다. 따라서, 본 개시는 본원에 설명된 예들에 제한되도록 의도된 것이 아니고, 본원에 개시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위가 부여되도록 의도된다.
비록 예시적인 구현예들이 하나 이상의 독립형 컴퓨터 시스템의 맥락에서 현재 개시된 주제의 양태들을 활용하는 것을 언급할 수도 있으나, 본 주제는 그렇게 제한되지 않고, 오히려 네트워크나 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 연계하여 구현될 수도 있다. 또 나아가, 현재 개시된 주제의 양상들은 복수의 프로세싱 칩들이나 디바이스들에서 또는 그들에 걸쳐 구현될 수도 있고, 스토리지는 복수의 디바이스들에 걸쳐 유사하게 영향을 받게 될 수도 있다. 이러한 디바이스들은 PC들, 네트워크 서버들을 포함할 수도 있다.
본 명세서에서는 본 개시가 일부 실시예들과 관련하여 설명되었지만, 본 발명이 속하는 기술분야의 통상의 기술자가 이해할 수 있는 본 개시의 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다는 점을 알아야 할 것이다. 또한, 그러한 변형 및 변경은 본 명세서에서 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
100: 영상
210: 주행 장치
410: IMU(Inertial Measurement Unit) 센서
420: 카메라

Claims (10)

  1. 포인트-라인 피처를 이용한 슬램(SLAM)의 최적화 방법에 있어서,
    복수의 프레임을 포함하는 영상을 수신하는 단계;
    상기 수신된 영상 내에서 에지의 방향이 변하는 위치로부터 복수의 포인트 피처를 추출하는 단계;
    상기 수신된 영상 내에서 복수의 에지로부터 복수의 라인 피처를 추출하는 단계 - 상기 복수의 라인 피처 각각은 스타트 포인트 및 엔드 포인트를 포함함-;
    상기 복수의 포인트 피처 중 대상 포인트 피처를 결정하는 단계;
    상기 스타트 포인트 및 엔드 포인트 중 상기 대상 포인트 피처로부터 임계 거리 이내에 위치하는 하나 이상의 포인트를 추출하는 단계;
    상기 추출된 하나 이상의 포인트를 포함하는 하나 이상의 라인 피처 중 상기 대상 포인트 피처까지의 수직 거리가 가장 짧은 라인 피처를 대상 라인 피처로 결정하는 단계; 및
    상기 대상 포인트 피처 및 상기 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계
    를 포함하는, 포인트-라인 피처를 이용한 슬램의 최적화 방법.
  2. 제1항에 있어서,
    상기 대상 포인트 피처 및 상기 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계는,
    상기 영상에서 상기 대상 포인트 피처를 트랙킹하는 단계; 및
    최적화를 위한 슬라이딩 윈도우 내에서 상기 대상 포인트 피처가 트래킹된 윈도우의 수가 임계치 이상인 경우, 상기 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계
    를 포함하는, 포인트-라인 피처를 이용한 슬램의 최적화 방법.
  3. 제1항에 있어서,
    상기 대상 포인트 피처 및 상기 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계는,
    상기 대상 포인트 피처의 리프로젝션(reprojection) 포인트 및 상기 대상 라인 피처 사이의 거리가 최소화되도록 슬램의 최적화를 수행하는 단계
    를 포함하는, 포인트-라인 피처를 이용한 슬램의 최적화 방법.
  4. 제1항에 있어서,
    상기 영상에서 상기 복수의 라인 피처를 트래킹하는 단계 - 상기 복수의 라인 피처는 제1 라인 피처 및 제2 라인 피처를 포함함-; 및
    최적화를 위한 슬라이딩 윈도우 내에서, 상기 제1 라인 피처 및 상기 제2 라인 피처가 트래킹된 윈도우의 수가 각각 임계치 이상이고, 최적화를 위한 슬라이딩 윈도우 내 복수의 시점(view point)에서 상기 제1 라인 피처 및 상기 제2 라인 피처의 배니싱 포인트(vanishing point)가 임계 횟수 이상 동일한 것으로 판단된 경우, 상기 제1 라인 피처 및 상기 제2 라인 피처를 그룹핑하는 단계
    를 더 포함하는, 포인트-라인 피처를 이용한 슬램의 최적화 방법.
  5. 제4항에 있어서,
    상기 복수의 시점은 현재 시점으로부터 홀수 번째인 시점을 포함하는, 포인트-라인 피처를 이용한 슬램의 최적화 방법.
  6. 제4항에 있어서,
    상기 대상 포인트 피처 및 상기 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계는,
    상기 포인트-라인 피처 및 상기 그룹핑과 연관된 정보를 기초로 슬램의 최적화를 수행하는 단계
    를 포함하는, 포인트-라인 피처를 이용한 슬램의 최적화 방법.
  7. 제1항에 있어서,
    상기 복수의 라인 피처에 대하여 트라이앵귤레이션(triangulation)을 수행하여 복수의 3차원 라인 벡터를 생성하는 단계;
    상기 복수의 3차원 라인 벡터 중 임의의 두 라인 벡터 사이의 사이각을 산출하는 단계; 및
    상기 산출된 사이각을 기초로 상기 복수의 라인 피처 중 상기 두 라인 벡터와 연관된 두 라인 피처를 그룹핑하는 단계
    를 포함하는, 포인트-라인 피처를 이용한 슬램의 최적화 방법.
  8. 제7항에 있어서,
    상기 대상 포인트 피처 및 상기 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하는 단계는,
    상기 포인트-라인 피처 및 상기 그룹핑과 연관된 정보를 기초로 슬램의 최적화를 수행하는 단계
    를 포함하는, 포인트-라인 피처를 이용한 슬램의 최적화 방법.
  9. 포인트-라인 피처를 이용한 슬램의 최적화 장치에 있어서,
    복수의 프레임을 포함하는 영상 및 상기 영상과 연관된 데이터를 저장하는 메모리; 및
    상기 메모리와 통신하여 상기 영상 및 상기 데이터를 처리하도록 구성된 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 메모리로부터 복수의 프레임을 포함하는 영상을 수신하고,
    상기 수신된 영상 내에서 에지의 방향이 변하는 위치로부터 복수의 포인트 피처를 추출하고,
    상기 수신된 영상 내에서 복수의 에지로부터 스타트 포인트 및 엔드 포인트를 각각 포함하는 복수의 라인 피처를 추출하고,
    상기 복수의 포인트 피처 중 대상 포인트 피처를 결정하고,
    상기 스타트 포인트 및 엔드 포인트 중 상기 대상 포인트 피처로부터 임계 거리 이내에 위치하는 하나 이상의 포인트를 추출하고,
    상기 추출된 하나 이상의 포인트를 포함하는 하나 이상의 라인 피처 중 상기 대상 포인트 피처까지의 수직 거리가 가장 짧은 라인 피처를 대상 라인 피처로 결정하고,
    상기 대상 포인트 피처 및 상기 대상 라인 피처가 결합된 포인트-라인 피처를 기초로 슬램의 최적화를 수행하기 위한 명령어들을 실행하도록 구성된, 포인트-라인 피처를 이용한 슬램의 최적화 장치.
  10. 제1항 내지 제8항 중 어느 한 항에 따른 슬램의 최적화 방법을 실행시키도록 컴퓨터로 판독 가능한 기록매체에 기록된 컴퓨터 프로그램.


KR1020220041954A 2021-04-06 2022-04-05 포인트-라인 피처를 이용한 슬램의 최적화 방법 및 장치 KR20220138824A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210044600 2021-04-06
KR20210044600 2021-04-06

Publications (1)

Publication Number Publication Date
KR20220138824A true KR20220138824A (ko) 2022-10-13

Family

ID=83599520

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220041954A KR20220138824A (ko) 2021-04-06 2022-04-05 포인트-라인 피처를 이용한 슬램의 최적화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20220138824A (ko)

Similar Documents

Publication Publication Date Title
US10948297B2 (en) Simultaneous location and mapping (SLAM) using dual event cameras
US11127203B2 (en) Leveraging crowdsourced data for localization and mapping within an environment
Giubilato et al. An evaluation of ROS-compatible stereo visual SLAM methods on a nVidia Jetson TX2
Heng et al. Self-calibration and visual slam with a multi-camera system on a micro aerial vehicle
Rambach et al. Learning to fuse: A deep learning approach to visual-inertial camera pose estimation
US10197399B2 (en) Method for localizing a robot in a localization plane
Voigt et al. Robust embedded egomotion estimation
JP7138361B2 (ja) 3次元仮想空間モデルを利用したユーザポーズ推定方法および装置
Angelino et al. High altitude UAV navigation using IMU, GPS and camera
Giubilato et al. An experimental comparison of ros-compatible stereo visual slam methods for planetary rovers
US11504608B2 (en) 6DoF inside-out tracking game controller
Vemprala et al. Monocular vision based collaborative localization for micro aerial vehicle swarms
de Palézieux et al. Duo-VIO: Fast, light-weight, stereo inertial odometry
WO2020195875A1 (ja) 情報処理装置、情報処理方法、及びプログラム
Caldato et al. ORB-ODOM: Stereo and odometer sensor fusion for simultaneous localization and mapping
Saurer et al. A homography formulation to the 3pt plus a common direction relative pose problem
Do et al. Autonomous flights through image-defined paths
Qayyum et al. Inertial-kinect fusion for outdoor 3d navigation
Abdulov et al. Visual odometry approaches to autonomous navigation for multicopter model in virtual indoor environment
Dubey et al. Droan-disparity-space representation for obstacle avoidance: Enabling wire mapping & avoidance
KR20220138824A (ko) 포인트-라인 피처를 이용한 슬램의 최적화 방법 및 장치
Hernández et al. Visual SLAM with oriented landmarks and partial odometry
Morelli et al. COLMAP-SLAM: A framework for visual odometry
Li-Chee-Ming et al. Augmenting visp’s 3d model-based tracker with rgb-d slam for 3d pose estimation in indoor environments
Jama et al. Parallel tracking and mapping for controlling vtol airframe