KR20230132065A - 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치 - Google Patents

왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치 Download PDF

Info

Publication number
KR20230132065A
KR20230132065A KR1020220029107A KR20220029107A KR20230132065A KR 20230132065 A KR20230132065 A KR 20230132065A KR 1020220029107 A KR1020220029107 A KR 1020220029107A KR 20220029107 A KR20220029107 A KR 20220029107A KR 20230132065 A KR20230132065 A KR 20230132065A
Authority
KR
South Korea
Prior art keywords
image
autonomous driving
driving device
self
mapping
Prior art date
Application number
KR1020220029107A
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 KR1020220029107A priority Critical patent/KR20230132065A/ko
Publication of KR20230132065A publication Critical patent/KR20230132065A/ko

Links

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
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/0012Context preserving transformation, e.g. by using an importance map
    • G06T3/0018Fisheye, wide-angle transformation
    • G06T3/047
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration by the use of more than one image, e.g. averaging, subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle

Abstract

본 개시의 일 실시예에 따르면, 적어도 하나의 프로세서에 의해 수행되는 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법은, 자율 주행 장치의 광각 이미지 센서에 의해 촬영된 왜곡 영상을 수신하는 단계, 왜곡 영상을 큐브맵에 맵핑하여 복수의 시점 - 복수의 시점은 제1 시점 및 제2 시점을 포함함 - 과 연관된 큐브맵 영상을 생성하는 단계 및 큐브맵 영상을 기초로 자율 주행 장치의 자기 위치를 추정하는 단계를 포함할 수 있다.

Description

왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치{METHOD AND DEVICE FOR SELF-LOCALIZATION OF AUTONOMOUS VEHICLE USING DISTORTED IMAGE}
본 개시는 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치에 관한 것으로, 보다 상세하게는 주행 공간의 바닥을 촬영한 왜곡 영상을 이용하여 높은 정확도로 자율 주행 장치의 자기 위치를 추정하는 방법 및 장치에 관한 것이다.
동시적 위치 추정 및 지도 작성 기술(SLAM; Simultaneous Localization and Mapping)이란 자율 주행 장치에 사용되어 주변 환경 지도를 작성하는 동시에 장치의 위치를 작성된 지도 안에서 인식하는 기술을 말한다. 자율 주행 장치는 SLAM 알고리즘을 통해 미지의 환경에 대한 지도를 작성할 수 있다. 나아가, 엔지니어는 작성된 지도를 이용하여 장치의 주행 경로 계획 또는 장애물 회피 등의 작업을 수행할 수 있다.
한편, 컴퓨터 처리 속도가 크게 개선되고 카메라와 같은 저비용 센서가 등장함에 따라 SLAM은 점점 더 많은 분야에 실제로 응용되고 있다. 그러나, 카메라는 라이다(LiDAR), 레이더(RADAR) 등과 같은 센서보다 주변 환경의 조도 변화에 따라 노이즈 또는 모호성에 의한 오차 발생률이 상대적으로 높다는 문제점이 있다. 따라서, 종래 기술에 따라 카메라로 촬영된 영상으로 SLAM을 수행하는 경우 시간이 지날수록 오차가 누적되어, 위치 추정 및 지도의 정확도가 매우 떨어진다는 문제가 있다.
상술한 바와 같은 과제를 해결하기 위해 본 개시는 주행 공간의 바닥을 촬영한 왜곡 영상을 이용하여 높은 정확도로 자율 주행 장치의 자기 위치를 추정하는 방법 및 장치를 제공한다.
본 개시의 일 실시예에 따르면, 적어도 하나의 프로세서에 의해 수행되는 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법은, 자율 주행 장치의 광각 이미지 센서에 의해 촬영된 왜곡 영상을 수신하는 단계, 왜곡 영상을 큐브맵에 맵핑하여 복수의 시점 - 복수의 시점은 제1 시점 및 제2 시점을 포함함 - 과 연관된 큐브맵 영상을 생성하는 단계 및 큐브맵 영상을 기초로 자율 주행 장치의 자기 위치를 추정하는 단계를 포함할 수 있다.
일 실시예에 따르면, 큐브맵 영상을 기초로 자율 주행 장치의 자기 위치를 추정하는 단계는, 큐브맵 영상 중 제1 시점과 연관된 제1 맵핑 영상을 제2 시점과 연관된 제2 맵핑 영상에 대하여 투영 변환하는 단계 및 투영 변환된 제1 맵핑 영상 및 제2 맵핑 영상을 기초로 자율 주행 장치의 자기 위치를 추정하는 단계를 포함할 수 있다.
일 실시예에 따르면, 투영 변환된 제1 맵핑 영상의 비율은 제2 맵핑 영상의 비율과 동일하게 제공될 수 있다.
일 실시예에 따르면, 큐브맵 영상 중 제1 시점과 연관된 제1 맵핑 영상을 제2 시점과 연관된 제2 맵핑 영상에 대하여 투영 변환하는 단계는, 큐브맵 영상으로부터 제1 시점과 연관된 제1 맵핑 영상 및 제2 시점과 연관된 제2 맵핑 영상을 크롭하는 단계, 크롭된 제1 맵핑 영상을 제2 맵핑 영상에 대하여 투영 변환하는 단계 및 투영 변환된 제1 맵핑 영상 및 크롭된 제2 맵핑 영상을 이어 붙이는 단계를 포함할 수 있다.
일 실시예에 따르면, 큐브맵 영상으로부터 제1 시점과 연관된 제1 맵핑 영상 및 제2 시점과 연관된 제2 맵핑 영상을 크롭하는 단계는, 큐브맵 영상으로부터 제1 시점과 연관된 제1 맵핑 영상을 사다리꼴 형태로 크롭하는 단계 및 큐브맵 영상으로부터 제1 시점과 연관된 제2 맵핑 영상을 사다리꼴의 아랫변과 길이가 동일한 밑변을 갖는 사각형으로 크롭하는 단계를 포함할 수 있다.
일 실시예에 따르면, 왜곡 영상은 피쉬 아이(fish-eye) 이미지를 포함할 수 있다.
일 실시예에 따르면, 제1 시점은 광각 이미지 센서의 정면 시점(front-view)을 포함할 수 있다.
일 실시예에 따르면, 제2 시점은 광각 이미지 센서의 바닥 시점(bottom-view)을 포함할 수 있다.
일 실시예에 따르면, 큐브맵 영상을 기초로 자율 주행 장치의 자기 위치를 추정하는 단계는, 큐브맵 영상에 포함된 하나 이상의 특징점을 추적하여 자율 주행 장치의 자기 위치를 추정하는 단계를 포함할 수 있다.
본 개시의 다른 일 실시예에 따르면, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법을 실행시키도록 컴퓨터로 판독 가능한 기록 매체에 기록된 컴퓨터 프로그램이 제공될 수 있다.
본 개시의 또 다른 일 실시예에 따르면, 왜곡 영상을 이용하여 자기 위치를 추정하는 자율 주행 장치는, 광각 이미지 센서 및 적어도 하나의 프로세서를 포함하고, 적어도 하나의 프로세서는, 광각 이미지 센서에 의해 촬영된 왜곡 영상을 수신하고, 왜곡 영상을 큐브맵에 맵핑하여 복수의 시점 - 복수의 시점은 제1 시점 및 제2 시점을 포함함 - 과 연관된 큐브맵 영상을 생성하고, 큐브맵 영상을 기초로 자율 주행 장치의 자기 위치를 추정하기 위한 명령어들을 실행하도록 구성될 수 있다.
본 개시의 일부 실시예에 따르면, 자율 주행 장치에 의해 생성되는 맵의 정확도를 향상시킬 수 있다.
본 개시의 일부 실시예에 따르면, 정확하게 생성된 맵을 이용하여 자율 주행 장치가 최적의 경로를 따라 주행하도록 제어할 수 있다.
본 개시의 일부 실시예에 따르면, 자율 주행 장치에 저가의 카메라를 적용함으로써 생산 비용을 절감시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 자율 주행 장치의 자기 위치를 추정한 예시를 나타낸다.
도 2는 본 개시의 일 실시예에 따른 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 서비스를 제공하기 위하여, 정보 처리 시스템이 복수의 자율 주행 장치와 통신 가능하도록 연결된 구성을 나타내는 개요도이다.
도 3은 본 개시의 일 실시예에 따른 자율 주행 장치 및 정보 처리 시스템의 내부 구성을 나타내는 블록도이다.
도 4a 및 4b는 본 개시의 일 실시예에 따른 가상 모델 및 가상 모델을 이용하여 왜곡 영상을 큐브맵에 맵핑하는 예시를 나타낸다.
도 5는 본 개시의 일 실시예에 따라 투영 변환 영상을 생성하는 예시를 나타낸다.
도 6은 본 개시의 일 실시예에 따라 자율 주행 장치의 실제 움직임에 따른 실제 벡터(M)를 산출하는 예시를 나타낸다.
도 7은 본 개시의 일 실시예에 따라 자율 주행 장치의 움직임을 추정하기 위한 바이 사이클 모션 모델의 예시를 나타낸다.
도 8은 본 개시의 일 실시예에 따른 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법의 예시를 나타내는 흐름도이다.
도 9는 본 개시의 일 실시예에 따른 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법의 다른 예시를 나타내는 흐름도이다.
이하, 본 개시의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 개시의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응되는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
개시된 실시예의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 개시가 완전하도록 하고, 본 개시가 통상의 기술자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것일 뿐이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 개시된 실시예에 대해 구체적으로 설명하기로 한다. 본 명세서에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 관련 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 '포함'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만 '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면 '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서는, '프로세서'는 주문형 반도체(ASIC), 프로그램 가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
도 1은 본 개시의 일 실시예에 따라 자율 주행 장치가 자기 위치를 추정한 예시를 나타낸다. 자율 주행 장치는 운전자가 직접 조작하지 않아도 주변 환경 및 차량 상태를 인식, 판단 및 제어하여 스스로 주행하는 장치를 지칭할 수 있다. 예를 들어, 자율 주행 장치는 주변 환경 및 차량 상태를 인식, 판단 및 제어하여 2차원 공간을 주행하는 휠 기반의 차량, 모바일 로봇(Wheel based Mobile Robot) 등을 지칭할 수 있다. 이를 위해, 자율 주행 장치를 제어하는 프로세서는 자율 주행 장치의 광각 이미지 센서(예: 카메라, 라이다(LiDAR), 레이더(RADAR), 초음파 센서 등)에 의해 감지된 정보(즉, 영상)를 이용하여 주변 환경 지도를 작성하거나, 자신의 위치 및 주행 경로를 작성된 지도 내에서 추정할 수 있다.
일 실시예에 따르면, 자율 주행 장치의 광각 이미지 센서로부터 왜곡 영상(110)이 획득될 수 있다. 예를 들어, 어안 렌즈(fish-eye lens)(또는, 초광각 렌즈) 카메라를 포함하는 광각 이미지 센서로부터 왜곡 영상(110)이 획득될 수 있다. 다른 예를 들어, 와이드 렌즈(또는, 광각 렌즈) 카메라를 포함하는 광각 이미지 센서로부터 왜곡 영상(110)이 획득될 수 있다. 보다 구체적으로, 자율 주행 장치의 광각 이미지 센서는 일반적으로 47도의 화각(Field of View)을 갖는 표준 렌즈보다 넓은 화각을 갖는 카메라를 포함하여, 해당 카메라로부터 원근감이 왜곡된 왜곡 영상(110)이 획득될 수 있다. 이에 따라, 왜곡 영상(110)은 자율 주행 장치(또는, 광각 이미지 센서)가 마주하는 정면 이외에 측면, 상면(천장) 및/또는 저면(바닥)이 촬영된 영상을 포함할 수 있다.
일 실시예에 따르면, 자율 주행 장치는 왜곡 영상(110)을 이용하여 자율 주행 장치가 주행하는 환경의 맵(120)을 생성할 수 있다. 또한, 자율 주행 장치는 생성된 맵(120)을 연속적으로(또는, 실시간으로) 업데이트함과 동시에, 주행 환경 상에서 장치 스스로의 위치를 추정할 수 있다. 이를 위해, 자율 주행 장치는 왜곡 영상(110)을 이용할 수 있다.
일 실시예에 따르면, 자율 주행 장치는 왜곡 영상(110)의 일부 영역을 이용하여 맵(120)을 생성할 수 있다. 이 경우, 왜곡 영상(110)의 일부 영역은 자율 주행 장치의 하드웨어적 구성(예를 들어, 광각 이미지 센서의 위치 및 방향)을 고려하여 결정될 수 있다. 예를 들어, 일반적으로 자율 주행 장치에서 광각 이미지 센서의 위치는 고정되어 있고, 자율 주행 장치가 주행하는 주변 환경의 바닥은 상대적으로 수평면이므로, 광각 이미지 센서로부터 바닥까지의 거리는 일정하게 유지될 수 있다. 또한, 자율 주행 장치의 크기 및 광각 이미지 센서의 위치를 고려하면, 바닥은 다른 사물(예: 왜곡 영상(110) 내 사람, 의자, 책상, 천장 등)보다 광각 이미지 센서로부터 비교적 근거리에 위치할 수 있다. 이에 따라, 프로세서는 왜곡 영상(110) 중 주변 환경의 바닥을 촬영한 맵핑 영상(들)만을 이용하여 맵(120)을 생성함으로써, 맵(120)의 정확도를 향상시킬 수 있다.
한편, 왜곡 영상(110)을 이용하여 맵(120)을 생성하기 위해서는 왜곡 영상(110)에 대한 이미지 처리가 수행될 수 있다. 예를 들어, 왜곡 영상(110)의 특정 맵핑 영상을 투영 변환하거나, 크롭(crop)할 수 있다. 또한, 크롭된 왜곡 영상(110)의 일부 영역과 다른 일부 영역을 이어 붙일 수 있다. 이에 관한 설명은 도 2 내지 9에서 상세히 후술된다.
도 2는 본 개시의 일 실시예에 따른 자율 주행 장치의 자기 위치 추정 방법의 구현을 위하여, 정보 처리 시스템(230)이 복수의 자율 주행 장치(210_1, 210_2, 210_3)와 통신 가능하도록 연결된 구성을 나타내는 개요도이다. 정보 처리 시스템(230)은 네트워크(220)를 통해 자율 주행 장치의 자기 위치 추정 및 지도 작성을 위한 시스템(들)을 포함할 수 있다. 일 실시예에 따르면, 정보 처리 시스템(230)은 자율 주행 장치의 자기 위치 추정 및 지도 작성과 연관된 컴퓨터 실행 가능한 프로그램(예를 들어, 다운로드 가능한 어플리케이션) 및 데이터를 저장, 제공 및 실행할 수 있는 하나 이상의 서버 장치 및/또는 데이터베이스, 또는 클라우드 컴퓨팅 서비스 기반의 하나 이상의 분산 컴퓨팅 장치 및/또는 분산 데이터베이스를 포함할 수 있다. 예를 들어, 정보 처리 시스템(230)은 자율 주행 장치 제어 서비스를 제공하기 위한 별도의 시스템(예를 들어, 서버)들을 포함할 수 있다.
정보 처리 시스템(230)에 의해 제공되는 자율 주행 장치 제어 서비스는, 복수의 자율 주행 장치(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)와의 인터페이스를 위한 수단일 수 있다. 일 예로서, 입력 장치는 오디오 센서 및/또는 광각 이미지 센서를 포함한 카메라, 키보드, 마이크로폰, 마우스 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커, 햅틱 피드백 디바이스(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)와 연결된 터치 스크린, 키보드, 오디오 센서 및/또는 광각 이미지 센서를 포함한 카메라, 마이크로폰 등의 입력 장치를 통해 입력되거나 선택된 음성 데이터, 텍스트, 이미지, 영상 등을 수신할 수 있으며, 수신된 음성 데이터, 텍스트, 이미지 및/또는 영상 등을 메모리(312)에 저장하거나 통신 모듈(316) 및 네트워크(220)를 통해 정보 처리 시스템(230)에 제공할 수 있다. 일 실시예에 따르면, 프로세서(314)는 입력 장치를 통해 사용자로부터 정보 및/또는 데이터의 전송 요청을 수신하고, 해당 데이터/요청을 네트워크(220) 및 통신 모듈(316)을 통해 정보 처리 시스템(230)에 제공할 수 있다.
정보 처리 시스템(230)의 프로세서(334)는 복수의 자율 주행 장치 및/또는 복수의 외부 시스템으로부터 수신된 정보 및/또는 데이터를 관리, 처리 및/또는 저장하도록 구성될 수 있다. 일 실시예에 따르면, 프로세서(334)는 자율 주행 장치(210)로부터 수신한 영상 등을 저장, 처리 및 전송할 수 있다. 추가적으로 또는 대안적으로, 프로세서(334)는 네트워크(220)와 연결된 별도의 클라우드 시스템, 데이터베이스 등으로부터 자율 주행 장치(210)의 자기 위치 추정 및/또는 지도 작성을 위해 이용되는 알고리즘을 실행하기 위한 프로그램 등을 저장 및/또는 업데이트하도록 구성될 수 있다.
도 4a 및 4b는 본 개시의 일 실시예에 따른 가상 모델(400) 및 가상 모델(400)을 이용하여 왜곡 영상(110)을 큐브맵에 맵핑하는 예시를 나타낸다. 일 실시예에 따르면, 프로세서(예: 프로세서(314, 334))는 왜곡 영상(110)을 큐브맵에 맵핑하기 위한 가상 모델(400)을 획득할 수 있다. 이 경우, 가상 모델(400)은 도 4a에 도시된 바와 같이 (정)육면체의 형태로 제공될 수 있다. 예를 들어, 가상 모델(400)은 정육면체 형태의 가상의 핀홀(pinhole) 카메라 모델로 제공될 수 있다.
일 실시예에 따르면, 가상 모델(400)은 복수의 핀홀 카메라 모델(410 내지 450)을 포함할 수 있다. 예를 들어, 가상 모델(400)은 정면(Front)에 핀홀이 위치하는 정육면체 형태의 제1 핀홀 카메라 모델(410), 상면(Top)에 핀홀이 위치하는 정육면체 형태의 제2 핀홀 카메라 모델(420), 바닥면(Bottom)에 핀홀이 위치하는 정육면체 형태의 제3 핀홀 카메라 모델(430), 좌측면(Left)에 핀홀이 위치하는 정육면체 형태의 제4 핀홀 카메라 모델(440) 및/또는 우측면(Right)에 핀홀이 위치하는 정육면체 형태의 제5 핀홀 카메라 모델(450) 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 프로세서(예: 프로세서(314, 334))는 왜곡 영상(110)을 큐브맵에 맵핑하여 복수의 시점과 연관된 큐브맵 영상(460)을 생성할 수 있다. 구체적으로, 프로세서는 가상 모델(400)을 이용하여 왜곡 영상(110)으로부터 복수의 시점과 각각 연관된 서브 큐브맵 영상(들)(462 내지 472)을 생성하고, 생성된 서브 큐브맵 영상(들)(462 내지 472) 중 적어도 하나를 결합하여(또는, 이어 붙여) 복수의 시점과 연관된 큐브맵 영상(460)을 생성할 수 있다. 예를 들어, 프로세서는 제1 핀홀 카메라 모델(410)을 이용하여 왜곡 영상(110)으로부터 정면 시점의 제1 맵핑 영상(462)을 생성하고, 제2 핀홀 카메라 모델(420)을 이용하여 상면 시점의 제2 맵핑 영상(464)을 생성할 수 있다. 이와 유사하게, 프로세서는 제3 핀홀 카메라 모델(430), 제4 핀홀 카메라 모델(440) 또는 제5 핀홀 카메라 모델(450)을 이용하여 왜곡 영상(110)으로부터 제3 맵핑 영상(466), 제4 맵핑 영상(468) 또는 제5 맵핑 영상(472)을 생성할 수 있다. 그리고 나서, 프로세서는 생성된 제1 내지 제5 맵핑 영상(들)(462 내지 472) 중 적어도 하나를 결합하여(또는, 이어 붙여) 복수의 시점과 연관된 큐브맵 영상(460)을 생성할 수 있다.
도 4b에 도시된 바와 같이, 큐브맵 영상(460)은 자율 주행 장치의 위치에서 광각 이미지 센서가 정면, 상면, 바닥면, 좌측면 및 우측면을 각각 왜곡 없이(즉, 표준 렌즈를 이용하여) 바라본 영상들을 합친 형태로 맵핑된다. 이와 같은 큐브맵 영상(460)은 왜곡 영상(110)에 적용되는 제1 핀홀 카메라 모델(410) 내지 제5 핀홀 카메라 모델(450)의 내부(intrinsic) 파라미터(예: 초점거리(focal length), 주점(principal point), 비대칭계수(skew coefficient) 등)는 서로 동일하나, 외부(extrinsic) 파라미터가 상이하다는 점에 의하여 가능하다.
도 5는 본 개시의 일 실시예에 따라 투영 변환 영상(520)을 생성하는 예시를 나타낸다. 한편, 도 5에서 큐브맵 영상(510)은 도 4b의 큐브맵 영상의 적어도 일부를 나타낸다. 일 실시예에 따르면, 프로세서는 큐브맵 영상(510) 중 적어도 일부를 이용하여 투영 변환 영상(520)을 생성할 수 있다. 예를 들어, 프로세서는 큐브맵 영상(510)으로부터 정면 시점과 연관된 제1 맵핑 영상(512) 및 바닥면 시점과 연관된 제2 맵핑 영상(514)을 크롭하여 투영 변환 영상(520)의 생성에 이용할 수 있다. 이는, 도 1에서 상술한 바와 같이 바닥의 특징점(도 5에서, 청색점)만을 추적하여 맵을 생성함으로써 맵의 정확도를 향상시키기 위함이다.
한편, 도 5에서는 정면 시점과 연관된 제1 맵핑 영상(512) 및 바닥면 시점과 연관된 제2 맵핑 영상(514)이 이용되는 예시가 도시되어 있으나 이에 한정되지 않는다. 구체적으로, 프로세서는 큐브맵 영상(510) 중 좌측면 시점과 연관된 맵핑 영상 및/또는 우측면 시점과 연관된 맵핑 영상을 추가적으로 이용하여 투영 변환 영상(520)을 생성함으로써, 맵의 정확도를 향상시킬 수도 있다.
일 실시예에 따르면, 프로세서는 제1 맵핑 영상(512)을 제2 맵핑 영상(514)에 대하여 투영 변환(perspective transformation)할 수 있다. 예를 들어, 프로세서는 정면을 바닥면에 투영 변환하기 위한 호모그래피 매트릭스(Homography Matrix)를 이용하여 제1 맵핑 영상(512)을 제2 맵핑 영상(514)에 와핑(warping)할 수 있다. 이 경우, 프로세서는 체스보드(Chessboard)를 이용하여 투영 변환된 제1 맵핑 영상(520)이 제2 맵핑 영상(514)과 동일한 비율(또는, 스케일)을 갖도록 하는 호모그래피 매트릭스를 산출할 수 있다. 이에 따라, 투영 변환된 제1 맵핑 영상(522)은 제2 맵핑 영상(514)과 동일한 평면(즉, 바닥면과 나란한 면) 상에 동일한 비율(또는, 스케일)로 위치할 수 있다.
일 실시예에 따르면, 프로세서는 투영 변환된 제1 맵핑 영상(520) 및 제2 맵핑 영상(514)을 결합하여(또는, 이어 붙여) 투영 변환 영상(520)을 생성할 수 있다. 도시된 바와 같이, 투영 변환 영상(520)의 시점은 핀홀이 바닥면에 위치하는 카메라(예: 제3 핀홀 카메라 모델(430))에 의해 촬영된 영상의 시점과 동일할 수 있다. 즉, 투영 변환 영상(520)은 광각 이미지 센서가 바닥을 수직으로 바라보고 촬영한 영상과 같이 제공될 수 있다.
도 6은 본 개시의 일 실시예에 따라 자율 주행 장치의 실제 움직임에 따른 실제 벡터(M)를 산출하는 예시를 나타낸다. 도 6의 (a)는 하나 이상의 특징점(여기서, 청색점)이 추출된 투영 변환 영상(예: 투영 변환 영상(520))의 일부를 나타낸다. 일 실시예에 따르면, 프로세서는 투영 변환 영상으로부터 하나 이상의 특징점을 추출할 수 있다. 이 경우, 프로세서는 특징점 추출을 위해 일반적으로 이미지 처리 기술 분야에서 사용되는 모든 오브젝트 디텍션 (object detection) 알고리즘을 이용할 수 있다.
일 실시예에 따르면, 프로세서는 투영 변환 영상에서 추출된 하나 이상의 특징점을 각각 추적할 수 있다. 예를 들어, 프로세서는 특징점을 추적하기 위한 옵티컬-플로우(Opticalflow) 알고리즘으로서 KLT(Kanade-Lucas-Tomasi Feature Tracking)을 이용하여 하나 이상의 특징점을 각각 추적할 수 있다. 이에 따라, 프로세서는 추적된 하나의 특징점에 의해 생성되는 옵티컬 벡터(610)를 획득할 수 있다.
도 6의 (b)는 옵티컬 벡터(610)를 이용하여 자율 주행 장치의 실제 이동 거리 및/또는 방향을 나타내는 실제 벡터(M)를 산출하는 예시를 나타낸다. 도 5에서 상술한 바와 같이, 투영 변환 영상은 광각 이미지 센서가 바닥을 수직으로 바라보고 촬영한 영상과 같이 이미지 처리된 영상이므로, 이와 대응되도록 가상의 광각 이미지 센서(620) 또한 지면(630)을 수직 하방으로 바라보고 촬영하는 것으로 가정되어야 한다.
일 실시예에 따르면, 프로세서는 수학식 1 및 2에 따라 옵티컬 벡터(m)로부터 자율 주행 장치의 실제 이동 거리 및 방향을 나타내는 실제 벡터(M)를 산출할 수 있다. 여기서, scale, f 및 z는 각각 실제 세계(여기서, 지면(630))에 대한 투영 변환 영상의 비율, 광각 이미지 센서(620)의 초점 거리 및 지면(630)으로부터 광각 이미지 센서(620)까지의 높이를 의미한다.
일 실시예에 따르면, 프로세서는 옵티컬 벡터(m)를 이용하여 자율 주행 장치의 속도 및/또는 조향각을 산출할 수 있다. 구체적으로, 프로세서는 투영 변환 영상으로부터 산출된 복수의 옵티컬 벡터(m)들 중 신뢰할 수 있는 하나의 옵티컬 벡터를 결정하고, 결정된 하나의 옵티컬 벡터를 이용하여 자율 주행 장치의 속도 및/또는 조향각을 산출할 수 있다. 예를 들어, 프로세서는 투영 변환 영상으로부터 산출된 복수의 옵티컬 벡터 각각의 x축 변화량(dx) 및 y축 변화량(dy)을 산출하고, 산출된 복수의 x축 변화량(dx)의 및 복수의 y축 변화량(dy) 각각의 중앙값을 따르는 중앙 벡터(Median Vector)를 산출하여 신뢰할 수 있는 하나의 옵티컬 벡터로서 결정할 수 있다. 그리고 나서, 프로세서는 수학식 3에 따라 중앙 벡터(Median Vector)를 이용하여 자율 주행 장치의 속도를 산출할 수 있다. 또한, 프로세서는 수학식 4에 따라 중앙 벡터를 이용하여 조향각(ζ; Steering Angle)을 산출할 수 있다.
도 7은 본 개시의 일 실시예에 따라 자율 주행 장치의 움직임을 추정하기 위한 바이 사이클 모션 모델(700)의 예시를 나타낸다. 본 개시에서, 자율 주행 장치에 탑재된 광각 이미지 센서의 움직임은 자율 주행 장치의 움직임에 종속되므로, 광각 이미지 센서로부터 획득된 영상을 입력으로 하는 바이 사이클 모션 모델(700)이 제안될 수 있다. 바이 사이클 모션 모델(700)에서는 투영 변환 영상(예: 투영 변환 영상(510))로부터 추출된 임의의 옵티컬 벡터를 자율 주행 장치의 두 개의 조향 바퀴 중 하나의 조향 바퀴로 본다. 또한, 바이 사이클 모션 모델(700)의 적용을 위해, 조향 바퀴를 기반으로 이동하는 자율 주행 장치가 2차원 평면에서 움직인다는 점, 자율 주행 장치의 질량 중심이 중점인 점 및 조향 바퀴에서 종방향 및 횡방향의 미끄러짐(Slip)이 발생하지 않는 점이 가정되어야 한다.
도시된 바와 같이, 바이 사이클 모션 모델(700)은 2차원 평면에서 IC(Instantaneuse Centre)를 중심으로 회전하며 이동하는 주행 장치의 운동(kinematic) 모델이다. 프로세서는 수학식 5 내지 9에 따라 투영 변환 영상으로부터 산출된 속도(V) 및 조향각(ζ)을 이용하여 자율 주행 장치의 움직임을 추정할 수 있다. 여기서, Ir 및 L은 각각 뒷바퀴의 축(axis)과 자율 주행 장치의 질량 중심 사이의 거리와 자율 주행 장치의 뒷바퀴의 축과 앞바퀴의 축 사이의 거리를 의미한다. 또한, w는 IC를 중심으로 회전 이동하는 자율 주행 장치의 각속도를 의미한다.
이 경우, 자율 주행 장치의 위치 변화는 수학식 10 및 11과 같고, 결과적으로 투영 변환 영상으로부터 획득된 옵티컬 벡터를 바이 사이클 모션 모델(700)에 적용하여 시간(t)에 따른 자율 주행 장치의 움직임을 추정한 결과(즉, 주행 기록(Odometry))는 수학식 12로 나타낼 수 있다.
도 8은 본 개시의 일 실시예에 따른 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법(800)의 예시를 나타내는 흐름도이다. 자율 주행 장치의 자기 위치 추정 방법(800)은 자율 주행 장치의 적어도 하나의 프로세서(예: 프로세서(314, 334))에 의해 수행될 수 있다. 일 실시예에 따르면, 자율 주행 장치의 자기 위치 추정 방법(800)은 왜곡 영상을 수신하는 단계(S810)로 개시될 수 있다.
일 실시예에 따르면, 자율 주행 장치의 자기 위치 추정 방법(800)은 큐브맵 맵핑 단계(S820), 기준 평면(ground plane) 영상 생성 단계(S830), 옵티컬 플로우 단계(S840), 중앙 벡터(median vector) 추출 단계(S850), 속도 및 조향각 산출 단계(S860), 운동 모델 적용 단계(S870) 및 자기 위치 추정 단계(S880) 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 큐브맵 맵핑 단계(S820)는 가상 모델(예: 가상 모델(400))을 이용하여 수신된 왜곡 영상을 큐브맵에 맵핑하여 큐브맵 영상(예: 큐브맵 영상(460))을 생성하는 단계를 포함하고, 기준 평면 영상 생성 단계(S830)는 큐브맵 영상을 크롭, 투영 변환 및/또는 결합하여 투영 변환 영상(예: 투영 변환 영상(520))을 생성하는 단계를 포함할 수 있다. 추가적으로 또는 대안적으로, 옵티컬 플로우 단계(S840)는 투영 변환 영상에서 하나 이상의 특징점을 추출하는 단계, 투영 변환 영상에서 추출된 하나 이상의 특징점을 추적하는 단계 또는 특징점을 추출한 결과에 따르는 옵티컬 벡터를 산출하는 단계 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 자기 위치 추정 단계(S880)는 자율 주행 장치의 자기 위치 추정하는 단계, 맵(map)을 생성 및/또는 업데이트 하는 단계 또는 생성된 맵을 기초로 자율 주행 장치의 움직임(이동 방향, 속도, 거리 등)을 제어하는 단계 중 적어도 하나를 포함할 수 있다.
도 9는 본 개시의 일 실시예에 따른 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법(900)의 다른 예시를 나타내는 흐름도이다. 자율 주행 장치의 자기 위치 추정 방법(900)은 자율 주행 장치의 적어도 하나의 프로세서(예: 프로세서(314, 334))에 의해 수행될 수 있다. 일 실시예에 따르면, 자율 주행 장치의 자기 위치 추정 방법(900)은 자율 주행 장치의 광각 이미지 센서에 의해 촬영된 왜곡 영상을 수신하는 단계(S910)로 개시될 수 있다. 여기서, 왜곡 영상은 피쉬 아이(fish-eye) 이미지를 포함할 수 있다.
일 실시예에 따르면, 프로세서는 왜곡 영상을 큐브맵에 맵핑하여 제1 시점 및 제2 시점을 포함하는 복수의 시점과 연관된 큐브맵 영상을 생성할 수 있다(S920). 그리고 나서, 프로세서는 큐브맵 영상을 기초로 자율 주행 장치의 자기 위치를 추정할 수 있다(S920). 예를 들어, 프로세서는 큐브맵 영상에 포함된 하나 이상의 특징점을 추적하여 자율 주행 장치의 자기 위치를 추정할 수 있다.
일 실시예에 따르면, 프로세서는 큐브맵 영상 중 제1 시점과 연관된 제1 맵핑 영상을 제2 시점과 연관된 제2 맵핑 영상에 대하여 투영 변환하고, 투영 변환된 제1 맵핑 영상 및 제2 맵핑 영상을 기초로 자율 주행 장치의 자기 위치를 추정할 수 있다. 이 때, 투영 변환된 제1 맵핑 영상의 비율은 제2 맵핑 영상의 비율과 동일하게 제공될 수 있다.
일 실시예에 따르면, 프로세서는 큐브맵 영상으로부터 제1 시점과 연관된 제1 맵핑 영상 및 제2 시점과 연관된 제2 맵핑 영상을 크롭할 수 있다. 그리고 나서, 프로세서는 크롭된 제1 맵핑 영상을 제2 맵핑 영상에 대하여 투영 변환하고, 투영 변환된 제1 맵핑 영상 및 크롭된 제2 맵핑 영상을 이어 붙일 수 있다. 이 경우, 제1 시점은 광각 이미지 센서의 정면 시점(front-view)을 포함할 수 있다. 또한, 제2 시점은 광각 이미지 센서의 바닥 시점(bottom-view)을 포함할 수 있다.
일 실시예에 따르면, 프로세서는 큐브맵 영상으로부터 제1 시점과 연관된 제1 맵핑 영상을 사다리꼴 형태로 크롭할 수 있다. 추가적으로, 프로세서는 큐브맵 영상으로부터 제1 시점과 연관된 제2 맵핑 영상을 사다리꼴의 아랫변과 길이가 동일한 밑변을 갖는 사각형으로 크롭할 수 있다.
본 개시의 앞선 설명은 통상의 기술자들이 본 개시를 행하거나 이용하는 것을 가능하게 하기 위해 제공된다. 본 개시의 다양한 수정예들이 통상의 기술자들에게 쉽게 자명할 것이고, 본원에 정의된 일반적인 원리들은 본 개시의 취지 또는 범위를 벗어나지 않으면서 다양한 변형예들에 적용될 수도 있다. 따라서, 본 개시는 본원에 설명된 예들에 제한되도록 의도된 것이 아니고, 본원에 개시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위가 부여되도록 의도된다.
비록 예시적인 구현예들이 하나 이상의 독립형 컴퓨터 시스템의 맥락에서 현재 개시된 주제의 양태들을 활용하는 것을 언급할 수도 있으나, 본 주제는 그렇게 제한되지 않고, 오히려 네트워크나 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 연계하여 구현될 수도 있다. 또 나아가, 현재 개시된 주제의 양상들은 복수의 프로세싱 칩들이나 디바이스들에서 또는 그들에 걸쳐 구현될 수도 있고, 스토리지는 복수의 디바이스들에 걸쳐 유사하게 영향을 받게 될 수도 있다. 이러한 디바이스들은 PC들, 네트워크 서버들, 및 핸드헬드 디바이스들을 포함할 수도 있다.
본 명세서에서는 본 개시가 일부 실시예들과 관련하여 설명되었지만, 본 발명이 속하는 기술분야의 통상의 기술자가 이해할 수 있는 본 개시의 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다는 점을 알아야 할 것이다. 또한, 그러한 변형 및 변경은 본 명세서에서 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
110: 왜곡 영상
120: 맵(map)

Claims (11)

  1. 적어도 하나의 프로세서에 의해 수행되는 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법에 있어서,
    상기 자율 주행 장치의 광각 이미지 센서에 의해 촬영된 왜곡 영상을 수신하는 단계;
    상기 왜곡 영상을 큐브맵에 맵핑하여 복수의 시점 - 상기 복수의 시점은 제1 시점 및 제2 시점을 포함함 - 과 연관된 큐브맵 영상을 생성하는 단계; 및
    상기 큐브맵 영상을 기초로 상기 자율 주행 장치의 자기 위치를 추정하는 단계
    를 포함하는, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  2. 제1항에 있어서,
    상기 큐브맵 영상을 기초로 상기 자율 주행 장치의 자기 위치를 추정하는 단계는,
    상기 큐브맵 영상 중 상기 제1 시점과 연관된 제1 맵핑 영상을 상기 제2 시점과 연관된 제2 맵핑 영상에 대하여 투영 변환하는 단계; 및
    투영 변환된 상기 제1 맵핑 영상 및 상기 제2 맵핑 영상을 기초로 상기 자율 주행 장치의 자기 위치를 추정하는 단계
    를 포함하는, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  3. 제2항에 있어서,
    투영 변환된 상기 제1 맵핑 영상의 비율은 상기 제2 맵핑 영상의 비율과 동일한, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  4. 제2항에 있어서,
    상기 큐브맵 영상 중 상기 제1 시점과 연관된 제1 맵핑 영상을 상기 제2 시점과 연관된 제2 맵핑 영상에 대하여 투영 변환하는 단계는,
    상기 큐브맵 영상으로부터 상기 제1 시점과 연관된 제1 맵핑 영상 및 상기 제2 시점과 연관된 제2 맵핑 영상을 크롭하는 단계;
    크롭된 상기 제1 맵핑 영상을 상기 제2 맵핑 영상에 대하여 투영 변환하는 단계; 및
    투영 변환된 상기 제1 맵핑 영상 및 크롭된 상기 제2 맵핑 영상을 이어 붙이는 단계
    를 포함하는, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  5. 제4항에 있어서,
    상기 큐브맵 영상으로부터 상기 제1 시점과 연관된 제1 맵핑 영상 및 상기 제2 시점과 연관된 제2 맵핑 영상을 크롭하는 단계는,
    상기 큐브맵 영상으로부터 상기 제1 시점과 연관된 상기 제1 맵핑 영상을 사다리꼴 형태로 크롭하는 단계; 및
    상기 큐브맵 영상으로부터 상기 제1 시점과 연관된 상기 제2 맵핑 영상을 상기 사다리꼴의 아랫변과 길이가 동일한 밑변을 갖는 사각형으로 크롭하는 단계
    를 포함하는, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  6. 제1항에 있어서,
    상기 왜곡 영상은 피쉬 아이(fish-eye) 이미지를 포함하는, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  7. 제1항에 있어서,
    상기 제1 시점은 상기 광각 이미지 센서의 정면 시점(front-view)을 포함하는, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  8. 제1항에 있어서,
    상기 제2 시점은 상기 광각 이미지 센서의 바닥 시점(bottom-view)을 포함하는, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  9. 제1항에 있어서,
    상기 큐브맵 영상을 기초로 상기 자율 주행 장치의 자기 위치를 추정하는 단계는,
    상기 큐브맵 영상에 포함된 하나 이상의 특징점을 추적하여 상기 자율 주행 장치의 자기 위치를 추정하는 단계
    를 포함하는, 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 기재된 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법을 실행시키도록 컴퓨터로 판독 가능한 기록 매체에 기록된 컴퓨터 프로그램.
  11. 왜곡 영상을 이용하여 자기 위치를 추정하는 자율 주행 장치에 있어서,
    광각 이미지 센서; 및
    적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 광각 이미지 센서에 의해 촬영된 왜곡 영상을 수신하고,
    상기 왜곡 영상을 큐브맵에 맵핑하여 복수의 시점 - 상기 복수의 시점은 제1 시점 및 제2 시점을 포함함 - 과 연관된 큐브맵 영상을 생성하고,
    상기 큐브맵 영상을 기초로 상기 자율 주행 장치의 자기 위치를 추정하기 위한 명령어들을 실행하도록 구성된, 왜곡 영상을 이용하여 자기 위치를 추정하는 자율 주행 장치.
KR1020220029107A 2022-03-08 2022-03-08 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치 KR20230132065A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220029107A KR20230132065A (ko) 2022-03-08 2022-03-08 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220029107A KR20230132065A (ko) 2022-03-08 2022-03-08 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20230132065A true KR20230132065A (ko) 2023-09-15

Family

ID=88017475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220029107A KR20230132065A (ko) 2022-03-08 2022-03-08 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20230132065A (ko)

Similar Documents

Publication Publication Date Title
JP6896077B2 (ja) 車両自動パーキングシステム及び方法
JP5222971B2 (ja) 歩行ロボット装置及びその制御プログラム
JP6827627B2 (ja) ビークル環境マップを生成および更新するための方法およびシステム
KR101539270B1 (ko) 충돌회피 및 자율주행을 위한 센서융합 기반 하이브리드 반응 경로 계획 방법, 이를 수행하기 위한 기록 매체 및 이동로봇
US10659768B2 (en) System and method for virtually-augmented visual simultaneous localization and mapping
US9798322B2 (en) Virtual camera interface and other user interaction paradigms for a flying digital assistant
TWI827649B (zh) 用於vslam比例估計的設備、系統和方法
US20180210442A1 (en) Systems and methods for controlling a vehicle using a mobile device
KR102056147B1 (ko) 자율주행차량을 위한 거리 데이터와 3차원 스캔 데이터의 정합 방법 및 그 장치
KR20180050823A (ko) 3차원의 도로 모델을 생성하는 방법 및 장치
CN111024040A (zh) 距离估计方法和设备
KR20110097140A (ko) 이동 로봇의 위치 추정 장치 및 방법
KR20110122022A (ko) 지도 생성 장치 및 방법
JP7138361B2 (ja) 3次元仮想空間モデルを利用したユーザポーズ推定方法および装置
JP2016157197A (ja) 自己位置推定装置、自己位置推定方法およびプログラム
CN103472434B (zh) 一种机器人声音定位方法
KR20190115982A (ko) 지도 데이터를 생성하는 전자 장치 및 그 동작 방법
JP2020149463A (ja) 移動体行動登録装置、移動体行動登録システム、及び移動体行動決定装置
WO2020195875A1 (ja) 情報処理装置、情報処理方法、及びプログラム
US20220230350A1 (en) Position recognition method and system based on visual information processing
KR20230132065A (ko) 왜곡 영상을 이용한 자율 주행 장치의 자기 위치 추정 방법 및 장치
US20220277480A1 (en) Position estimation device, vehicle, position estimation method and position estimation program
WO2022227632A1 (zh) 基于图像的轨迹规划方法和运动控制方法以及使用该些方法的移动机器
WO2021049227A1 (ja) 情報処理システム、情報処理装置及び情報処理プログラム
WO2023127337A1 (ja) 情報処理装置、情報処理方法、及びプログラム