KR20240076871A - 맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법 - Google Patents

맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법 Download PDF

Info

Publication number
KR20240076871A
KR20240076871A KR1020220158184A KR20220158184A KR20240076871A KR 20240076871 A KR20240076871 A KR 20240076871A KR 1020220158184 A KR1020220158184 A KR 1020220158184A KR 20220158184 A KR20220158184 A KR 20220158184A KR 20240076871 A KR20240076871 A KR 20240076871A
Authority
KR
South Korea
Prior art keywords
robot
map
clue
area
location
Prior art date
Application number
KR1020220158184A
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 KR1020220158184A priority Critical patent/KR20240076871A/ko
Priority to PCT/KR2023/016167 priority patent/WO2024111893A1/ko
Publication of KR20240076871A publication Critical patent/KR20240076871A/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/08Controls for manipulators by means of sensing devices, e.g. viewing or touching devices
    • B25J13/088Controls for manipulators by means of sensing devices, e.g. viewing or touching devices with position, velocity or acceleration sensors
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/003Controls for manipulators by means of an audio-responsive input
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/08Controls for manipulators by means of sensing devices, e.g. viewing or touching devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0268Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
    • G05D1/0274Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means using mapping information stored in a memory device
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/20Control system inputs

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Human Computer Interaction (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Multimedia (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Abstract

맵을 이용하여 공간을 주행하는 로봇이 개시된다. 본 로봇은 카메라, 마이크, 메모리 및 로봇이 맵을 이용하여 공간을 주행하는 동안 카메라를 통해 촬영한 이미지 및 마이크를 통해 수신한 사운드에 기초하여 공간에서 고정적으로 위치한 오브젝트 및 공간의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별하고, 맵에 클루에 대한 정보가 부가된 클루 맵을 생성하여 메모리에 저장하고, 기설정된 이벤트가 발생한 경우, 클루 맵을 이용하여 맵에서 로봇이 위치한 영역을 식별하고, 식별된 영역에 대해 리로컬라이제이션을 수행하여 맵에서 로봇의 위치를 식별하는 하나 이상의 프로세서를 포함한다.

Description

맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법 { ROBOT FOR DRIVING A SPACE USING A MAP AND METHOD FOR IDENTIFYING A LOCATION OF THE ROBOT THEREOF }
본 개시는 로봇 및 그의 위치 식별 방법에 관한 것으로, 보다 상세하게는 맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법에 관한 것이다.
일반적으로 로봇은 산업용으로 개발되어 여러 산업 현장에서 널리 사용되고 있다. 최근에는 로봇을 이용한 분야가 더욱 확대되어, 일반 가정집 뿐만 아니라, 다양한 매장에서도 활용되고 있다.
로봇은 로봇이 위치하는 공간에 대한 맵을 이용하여, 로봇이 위치하는 공간 내에서 이동할 수 있다. 이를 위해, 로봇은 맵에서 자신의 위치를 추정할 수 있다.
본 개시의 일 실시 예에 따른 맵을 이용하여 공간을 주행하는 로봇은 카메라, 마이크, 메모리 및 하나 이상의 프로세서를 포함한다. 하나 이상의 프로세서는 상기 로봇이 맵을 이용하여 상기 공간을 주행하는 동안 상기 카메라를 통해 촬영한 이미지 및 상기 마이크를 통해 수신한 사운드에 기초하여 상기 공간에서 고정적으로 위치한 오브젝트 및 상기 공간의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별한다. 하나 이상의 프로세서는 상기 맵에 상기 클루에 대한 정보가 부가된 클루 맵을 생성하여 상기 메모리에 저장한다. 하나 이상의 프로세서는 기설정된 이벤트가 발생한 경우, 상기 클루 맵을 이용하여 상기 맵에서 상기 로봇이 위치한 영역을 식별하고, 상기 식별된 영역에 대해 리로컬라이제이션을 수행하여 상기 맵에서 상기 로봇의 위치를 식별한다.
여기에서, 상기 클루에 대한 정보는 상기 오브젝트의 특징점 및 상기 오브젝트의 위치 중 적어도 하나를 포함할 수 있다.
또한, 상기 클루에 대한 정보는 상기 사운드의 특징 및 상기 사운드를 출력한 사운드 소스의 위치 중 적어도 하나를 포함할 수 있다.
그리고, 상기 하나 이상의 프로세서는 상기 기설정된 이벤트가 발생한 경우, 상기 카메라를 통해 상기 로봇의 주변 영역을 촬영한 이미지를 이용하여 오브젝트에 대한 정보를 획득하고, 상기 마이크를 통해 수신된 사운드를 이용하여 사운드에 대한 정보를 획득하고, 상기 획득된 오브젝트에 대한 정보 및 사운드에 대한 정보를 이용하여 상기 로봇이 현재 위치하는 영역에 대응되는 이미지 패치를 생성하고, 상기 생성된 이미지 패치를 상기 클루 맵과 비교하여, 상기 맵에서 상기 로봇이 위치한 영역을 식별할 수 있다.
또한, 상기 하나 이상의 프로세서는 상기 클루 맵의 복수의 영역 중 영역에 포함된 상기 클루에 대한 정보가 상기 이미지 패치에 포함된 상기 오브젝트에 대한 정보 및 상기 사운드에 대한 정보와 매칭되는 경우, 상기 클루 맵에서 상기 이미지 패치에 매칭되는 영역을 상기 로봇이 위치한 영역인 것으로 식별할 수 있다.
그리고, 상기 하나 이상의 프로세서는 상기 클루 맵에 상기 생성된 이미지 패치와 매칭되는 영역이 존재하지 않는 경우, 상기 클루 맵에서 상기 클루가 존재하지 않는 영역을 상기 로봇이 위치한 영역인 것으로 식별할 수 있다.
또한, 상기 기설정된 이벤트는 상기 로봇이 상기 맵에서 위치를 식별하지 못하는 이벤트 또는 상기 오프되었던 로봇의 전원이 온되는 이벤트를 포함할 수 있다.
본 개시의 일 실시 예에 따른 카메라 및 마이크를 포함하며, 맵을 이용하여 공간을 주행하는 로봇의 위치 식별 방법은 상기 로봇이 맵을 이용하여 상기 공간을 주행하는 동안 상기 카메라를 통해 촬영한 이미지 및 상기 마이크를 통해 수신한 사운드에 기초하여 상기 공간에서 고정적으로 위치한 오브젝트 및 상기 공간의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별하는 단계, 상기 맵에 상기 클루에 대한 정보가 부가된 클루 맵을 생성하는 단계 및 기설정된 이벤트가 발생한 경우, 상기 클루 맵을 이용하여 상기 맵에서 상기 로봇이 위치한 영역을 식별하고, 상기 식별된 영역에 대해 리로컬라이제이션을 수행하여 상기 맵에서 상기 로봇의 위치를 식별하는 단계를 포함한다.
본 개시의 일 실시 예에 따른 카메라 및 마이크를 포함하며, 맵을 이용하여 공간을 주행하는 로봇의 하나 이상의 프로세서에 의해 실행되는 경우 상기 로봇이 동작을 수행하도록 하는 컴퓨터 명령을 저장하는 비일시적 컴퓨터 판독 가능 매체에 있어서, 상기 동작은 상기 로봇이 맵을 이용하여 상기 공간을 주행하는 동안 상기 카메라를 통해 촬영한 이미지 및 상기 마이크를 통해 수신한 사운드에 기초하여 상기 공간에서 고정적으로 위치한 오브젝트 및 상기 공간의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별하는 단계, 상기 맵에 상기 클루에 대한 정보가 부가된 클루 맵을 생성하는 단계 및 기설정된 이벤트가 발생한 경우, 상기 클루 맵을 이용하여 상기 맵에서 상기 로봇이 위치한 영역을 식별하고, 상기 식별된 영역에 대해 리로컬라이제이션을 수행하여 상기 맵에서 상기 로봇의 위치를 식별하는 단계를 포함한다.
도 1은 본 개시의 일 실시 예에 따른 로봇을 설명하기 위한 도면,
도 2a는 본 개시의 일 실시 예에 따른 로봇의 구성을 설명하기 위한 블록도,
도 2b는 본 개시의 일 실시 예에 따른 로봇의 세부 구성을 설명하기 위한 블록도,
도 3은 본 개시의 일 실시 예에 따른 클루 맵의 일 예를 설명하기 위한 도면,
도 4는 본 개시의 일 실시 예에 따라 클루 맵을 업데이트하는 방법을 설명하기 위한 도면,
도 5는 본 개시의 일 실시 예에 따른 이미지 패치의 일 예를 설명하기 위한 도면,
도 6 및 도 7은 본 개시의 일 실시 예에 따라 클루 맵을 이용하여 로봇이 현재 위치한 영역을 식별하고, 식별된 영역에 대해 리로컬라이제이션을 수행하는 방법을 설명하기 위한 도면들,
도 8a 및 도 8b는 본 개시의 일 실시 예에 따라 사용자 음성을 이용하여 로봇이 현재 위치한 영역을 식별하는 방법을 설명하기 위한 도면들, 그리고
도 9는 본 개시의 일 실시 예에 따른 로봇의 위치 식별 방법을 설명하기 위한 흐름도이다.
본 실시 예들은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 본 개시의 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 개시를 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략한다.
덧붙여, 하기 실시 예는 여러 가지 다른 형태로 변형될 수 있으며, 본 개시의 기술적 사상의 범위가 하기 실시 예에 한정되는 것은 아니다. 오히려, 이들 실시 예는 본 개시를 더욱 충실하고 완전하게 하고, 당업자에게 본 개시의 기술적 사상을 완전하게 전달하기 위하여 제공되는 것이다.
본 개시에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 권리범위를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 개시에서 "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 개시에서 "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 개시에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다.
반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다.
대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
실시 예에 있어서 '모듈' 혹은 '부'는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 '모듈' 혹은 복수의 '부'는 특정한 하드웨어로 구현될 필요가 있는 '모듈' 혹은 '부'를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서로 구현될 수 있다.
한편, 도면에서의 다양한 요소와 영역은 개략적으로 그려진 것이다. 따라서, 본 발명의 기술적 사상은 첨부한 도면에 그려진 상대적인 크기나 간격에 의해 제한되지 않는다.
이하에서는 첨부한 도면을 참고하여 본 개시에 따른 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.
도 1은 본 개시의 일 실시 예에 따른 로봇을 설명하기 위한 도면이다.
도 1을 참조하면, 로봇(100)은 홈서비스 로봇일 수 있다. 즉, 로봇(100)은 집에 위치하며, 사용자에게 가사, 교육, 헬스케어 등과 같은 다양한 서비스를 제공할 수 있다. 다만, 이는 일 예이고, 로봇(100)의 종류는 홈서비스 로봇에 한정되지 않는다. 예를 들어, 로봇(100)은 사무실, 상점, 백화점, 음식점 등에 위치할 수 있다. 그리고, 로봇(100)은 사용자에게 경로를 안내하거나, 제품을 사용자에게 설명하거나, 또는 사용자의 물건을 들고 사용자를 따라 이동하는 등의 다양한 기능을 수행할 수 있다.
로봇(100)은 로봇(100)이 위치하는 공간(예: 집)에 대한 맵을 이용하여 주행할 수 있다. 이하에서는 로봇(100)이 위치하는 공간에 대한 맵으로, 로봇(100)의 주행에 이용되는 맵을 주행용 맵이라 한다. 즉, 로봇(100)은 주행용 맵을 이용하여 공간을 주행할 수 있다.
예를 들어, 로봇(100)은 SLAM(Simultaneous Localization and Mapping)을 이용하여, 주행용 맵을 생성하고 주행용 맵에서 로봇(100)의 위치를 추정하여, 공간 내에서 자율 주행을 수행할 수 있다. 이를 위해, 로봇(100)은 로봇(100)의 센서를 통해 주변 환경에 대한 정보를 획득할 수 있다.
한편, 로봇(100)이 주행용 맵에서 위치를 추정하는데 실패하거나, 로봇(100)의 전원이 오프되었다가 다시 온된 경우, 로봇(100)은 주행용 맵에서 로봇(100)의 위치를 다시 추정하는 과정 즉, 리로컬라이제이션(relocalization)을 수행할 수 있다.
이때, 본 개시에 따른 로봇(100)은 주행용 맵 전체를 검색하여 로봇(100)의 위치를 식별하는 것이 아니라, 먼저, 주행용 맵에서 로봇(100)이 위치하는 영역을 식별하고, 식별된 영역에 대해 리로컬라이제이션을 수행하여 주행용 맵에서 로봇(100)의 위치를 식별할 수 있다.
이 경우, 로봇(100)은 로봇(100)이 위치하는 영역을 식별하기 위해, 영역 내에 존재하는 다양한 정보를 클루(clue)로서 이용할 수 있다.
이와 같이, 본 개시에 따르면, 로봇(100)은 주행용 맵에서 로봇(100)이 현재 위치하는 영역을 추정하고, 주행용 맵 전체가 아닌 추정된 영역에 대해 리로컬라이제이션을 수행한다는 점에서, 로봇(100)의 위치 추정의 성공률이 높아질 수 있다.
도 2a는 본 개시의 일 실시 예에 따른 로봇의 구성을 설명하기 위한 블록도이다.
도 2a를 참조하면, 로봇(100)은 카메라(110), 마이크(120), 메모리(130) 및 하나 이상의 프로세서(140)를 포함한다.
카메라(110)는 이미지를 생성할 수 있다. 여기에서, 카메라는 카메라(즉, 단안 카메라), 스테레오 카메라 및 RGB-D 카메라 중 적어도 하나를 포함할 수 있다.
카메라(110)는 로봇(100)의 주변 영역을 촬영하여 이미지를 생성할 수 있다. 이때, 로봇(100) 주변에 존재하는 오브젝트가 존재하는 경우, 이미지는 오브젝트를 포함할 수 있다. 여기에서, 오브젝트는 벽, 문, 천장, 가전 기기(가령, TV, 에어콘, 냉장고 등), 가구(가령, 침대, 소파, 식탁, 싱크대 등) 등과 같이 공간(가령, 집)에 존재하는 다양한 물체일 수 있다.
마이크(120)는 사운드를 수신할 수 있다. 예를 들어, 마이크(120)는 로봇(100) 주변에서 발생된 사운드를 수신할 수 있다.
메모리(130)에는 주행용 맵이 저장될 수 있다. 주행용 맵은 로봇(100)이 주행하는 공간에 대한 맵으로, SLAM에 기초하여 생성될 수 있다. 로봇(100)은 주행용 맵을 이용하여 로봇(100)이 위치하는 공간을 주행할 수 있다.
또한, 메모리(130)에는 클루 맵(clue map)이 저장될 수 있다. 클루 맵은 주행용 맵에 클루에 대한 정보가 부가된 맵일 수 있다. 여기에서, 클루는 주행용 맵에서 로봇(100)이 위치하는 영역을 추정하는데 이용될 수 있는 오브젝트 및 사운드를 포함할 수 있다.
하나 이상의 프로세서(140)는 카메라(110), 마이크(120) 및 메모리(130)와 전기적으로 연결되어, 로봇(100)의 전반적인 동작 및 기능을 제어할 수 있다.
하나 이상의 프로세서(140)는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), APU(Accelerated Processing Unit), MIC(Many Integrated Core), DSP(Digital Signal Processor), NPU(Neural Processing Unit), 하드웨어 가속기 또는 머신 러닝 가속기 중 하나 이상을 포함할 수 있다. 하나 이상의 프로세서(140)는 로봇(100)의 다른 구성요소 중 하나 또는 임의의 조합을 제어할 수 있으며, 통신에 관한 동작 또는 데이터 처리를 수행할 수 있다. 하나 이상의 프로세서(140)는 메모리에 저장된 하나 이상의 프로그램 또는 명령어(instruction)을 실행할 수 있다. 예를 들어, 하나 이상의 프로세서(140)는 메모리에 저장된 하나 이상의 명령어를 실행함으로써, 본 개시의 일 실시 예에 따른 방법을 수행할 수 있다.
한편, 본 개시의 일 실시 예에 따른 방법이 복수의 동작을 포함하는 경우, 복수의 동작은 하나의 프로세서에 의해 수행될 수도 있고, 복수의 프로세서에 의해 수행될 수도 있다. 예를 들어, 일 실시 예에 따른 방법에 의해 제1 동작, 제2 동작, 제3 동작이 수행될 때, 제1 동작, 제2 동작, 및 제3 동작 모두 제1 프로세서에 의해 수행될 수도 있고, 제1 동작 및 제2 동작은 제1 프로세서(예를 들어, 범용 프로세서)에 의해 수행되고 제3 동작은 제2 프로세서(예를 들어, 인공지능 전용 프로세서)에 의해 수행될 수도 있다.
하나 이상의 프로세서(140)는 하나의 코어를 포함하는 단일 코어 프로세서(single core processor)로 구현될 수도 있고, 복수의 코어(예를 들어, 동종 멀티 코어 또는 이종 멀티 코어)를 포함하는 하나 이상의 멀티 코어 프로세서(multicore processor)로 구현될 수도 있다. 하나 이상의 프로세서(140)가 멀티 코어 프로세서로 구현되는 경우, 멀티 코어 프로세서에 포함된 복수의 코어 각각은 캐시 메모리, 온 칩(On-chip) 메모리와 같은 프로세서 내부 메모리를 포함할 수 있으며, 복수의 코어에 의해 공유되는 공통 캐시가 멀티 코어 프로세서에 포함될 수 있다. 또한, 멀티 코어 프로세서에 포함된 복수의 코어 각각(또는 복수의 코어 중 일부)은 독립적으로 본 개시의 일 실시 예에 따른 방법을 구현하기 위한 프로그램 명령을 판독하여 수행할 수도 있고, 복수의 코어 전체(또는 일부)가 연계되어 본 개시의 일 실시예에 따른 방법을 구현하기 위한 프로그램 명령을 판독하여 수행할 수도 있다.
본 개시의 일 실시 예에 따른 방법이 복수의 동작을 포함하는 경우, 복수의 동작은 멀티 코어 프로세서에 포함된 복수의 코어 중 하나의 코어에 의해 수행될 수도 있고, 복수의 코어에 의해 수행될 수도 있다. 예를 들어, 일 실시 예에 따른 방법에 의해 제1 동작, 제2 동작, 및 제3 동작이 수행될 때, 제1 동작, 제2 동작, 및 제3 동작 모두 멀티 코어 프로세서에 포함된 제1 코어에 의해 수행될 수도 있고, 제1 동작 및 제2 동작은 멀티 코0어 프로세서에 포함된 제1 코어에 의해 수행되고 제3 동작은 멀티 코어 프로세서에 포함된 제2 코어에 의해 수행될 수도 있다.
본 개시의 실시 예들에서, 프로세서는 하나 이상의 프로세서 및 기타 전자 부품들이 집적된 시스템 온 칩(SoC), 단일 코어 프로세서, 멀티 코어 프로세서, 또는 단일 코어 프로세서 또는 멀티 코어 프로세서에 포함된 코어를 의미할 수 있으며, 여기서 코어는 CPU, GPU, APU, MIC, DSP, NPU, 하드웨어 가속기 또는 기계 학습 가속기 등으로 구현될 수 있으나, 본 개시의 실시 예들이 이에 한정되는 것은 아니다.
이하에서는 설명의 편의를 위해 하나 이상의 프로세서(140)를 프로세서(140)로 명명하도록 한다.
프로세서(140)는 로봇(100)이 주행용 맵을 이용하여 공간을 주행하는 동안 카메라(110)를 통해 촬영한 이미지 및 마이크(120)를 통해 수신한 사운드에 기초하여 공간에서 고정적으로 위치한 오브젝트 및 공간 내의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별한다. 이후, 프로세서(140)는 주행용 맵에 클루에 대한 정보가 부가된 클루 맵을 생성하여 메모리(130)에 저장한다.
여기에서, 클루는 주행용 맵에서 로봇(100)이 위치하는 영역을 추정하는데 이용될 수 있는 오브젝트 및 사운드를 포함할 수 있다. 그리고, 클루에 대한 정보는 오브젝트에 대한 정보 및 사운드에 대한 정보를 포함할 수 있다.
그리고, 프로세서(140)는 기설정된 이벤트가 발생한 경우, 클루 맵을 이용하여 주행용 맵에서 로봇(100)이 위치한 영역을 식별하고, 영역에 대해 리로컬라이제이션을 수행하여 주행용 맵에서 로봇(100)의 위치를 식별한다.
이와 같이, 프로세서(140)는 로봇(100)이 현재 위치하는 영역에서 획득한 오브젝트 및 사운드에 대한 정보를 클루 맵에 포함된 클루에 대한 정보와 비교하여, 주행용 맵에서 로봇(100)이 현재 위치하는 영역을 식별할 수 있다. 그리고, 프로세서(140)는 식별된 영역에 대해 리로컬라이제이션을 수행하여 주행용 맵에서 로봇(100)의 위치를 식별할 수 있다.
이에 따라, 본 개시에 따르면, 주행용 맵 전체가 아닌 로봇(100)이 현재 위치하는 영역에 대해 리로컬라이제이션을 수행한다는 점에서, 로봇(100)의 위치 추정의 성공률이 높아질 수 있다.
도 2b는 본 개시의 일 실시 예에 따른 로봇의 세부 구성을 설명하기 위한 블록도이다.
도 2b를 참조하면, 로봇(100)은 카메라(110), IMU(inertial measurement unit) 센서(111), 인코더(112), 라이다 센서(113), 마이크(120), 메모리(130), 프로세서(140), 구동부(150), 통신부(160), 입력부(170) 및 출력부(180)를 포함할 수 있다. 그러나, 이와 같은 구성은 예시적인 것으로서, 본 개시를 실시함에 있어 이와 같은 구성에 더하여 새로운 구성이 추가되거나 일부 구성이 생략될 수 있음을 물론이다. 한편, 도 2b를 설명함에 있어, 도 2a에서 이미 설명한 부분과 중복되는 부분은 생략하거나 축약하여 설명하도록 한다.
프로세서(140)는 카메라(110), IMU 센서(111), 인코더(112) 및 라이다 센서(113) 중 적어도 하나의 센서를 이용하여 주변 환경에 대한 정보를 획득할 수 있다.
IMU 센서(111)는 가속도계(accelerometer), 각속도계(gyroscope), 지자계(magnetometer) 등을 이용하여, 로봇(100)의 가속도 및 각속도 등을 센싱할 수 있다.
인코더(112)는 로봇(100)에 설치된 복수의 휠 각각의 회전수 및 회전방향을 센싱할 수 있다. 여기에서, 복수의 휠은 모터에 의해 회전되며, 로봇(100)을 이동시키는 역할을 수행할 수 있다.
라이다 센서(113)는 360도 회전하며 레이저를 출력할 수 있다. 그리고, 라이다 센서(113)는 레이저가 로봇(100) 주변의 오브젝트로부터 반사되어 수신되면, 레이저가 수신된 시간에 기초하여 오브젝트와의 거리를 감지할 수 있다.
이 경우, 프로세서(140)는 카메라(110)를 통해 획득한 이미지와 IMU 센서(111), 인코더(112) 및 라이다 센서(113)로부터 획득한 정보를 이용하여, 주행용 맵을 생성하고, 주행용 맵에서 로봇(100)의 위치를 식별할 수 있다.
구동부(150)는 로봇(100)을 이동시킬 수 있다. 이를 위해, 구동부(150)는 복수의 휠(152) 및 복수의 휠(152)을 회전시키기 위한 모터(152)를 포함할 수 있다. 다만, 도시하지 않았지만, 구동부(150)는 기어, 액츄에이더 등을 더 포함할 수도 있다. 모터(151)는 프로세서(140)의 제어에 따라 복수의 휠(152)를 제어하여, 로봇(100)의 이동, 정지, 속도 제어 및 방향 전환 등과 같은 다양한 주행 동작을 제어할 수 있다.
통신부(160)는 회로(circuitry)를 포한한다. 통신부(160)는 외부 장치와 통신을 수행하는 구성이다. 프로세서(140)는 통신부(160)를 통해 각종 데이터를 외부 장치로 전송하고, 각종 데이터를 외부 장치로부터 수신할 수 있다. 예를 들어, 프로세서(140)는 통신부(160)를 통해 로봇(100)의 동작을 제어하기 위한 사용자 명령을 수신할 수 있다. 이를 위해, 통신 인터페이스(160)는 BT(Bluetooth), BLE(Bluetooth Low Energy), WI-FI(Wireless Fidelity) 등과 같은 무선 통신 방식을 통해 외부 장치와 통신을 수행할 수 있다.
입력부(170)는 회로를 포함한다. 입력부(170)는 로봇(100)에서 지원하는 각종 기능을 설정 또는 선택하기 위한 사용자 명령을 입력받을 수 있다. 이를 위해, 입력부(170)는 적어도 하나의 버튼을 포함할 수 있다. 또한, 입력부(170)는 디스플레이(181)의 기능을 동시에 수행할 수 있는 터치 스크린으로 구현될 수도 있다. 이 경우, 프로세서(140)는 입력부(170)를 통해 입력된 사용자 명령에 기초하여 로봇(100)의 동작을 제어할 수 있다. 예를 들어, 프로세서(140)는 로봇(100)의 입력부(170)를 통해 입력된 로봇(100)의 전원의 온/오프 명령, 로봇(100)의 기능의 온/오프 명령 등에 기초하여 로봇(100)을 제어할 수 있다.
출력부(180)는 디스플레이(181) 및 스피커(182)를 포함할 수 있다.
디스플레이(181)는 다양한 정보를 표시할 수 있다. 이를 위해, 디스플레이(181)는 LCD(Liquid Crystal Display) 등으로 구현될 수 있다. 디스플레이(181)는 입력부(170)의 기능을 동시에 수행할 수 있는 터치 스크린으로 구현될 수도 있다. 구체적으로, 프로세서(140)는 로봇(100)의 동작과 관련된 정보를 디스플레이(181)에 표시할 수 있다.
스피커(182)는 오디오를 출력할 수 있다. 구체적으로, 프로세서(140)는 로봇(100)의 동작과 관련된 다양한 알림음 또는 음성 안내 메시지를 스피커(182)를 통해 출력할 수 있다.
이하에서는 로봇(100)이 클루 맵을 이용하여 로봇(100)이 위치하는 영역을 식별하는 방법에 대해 보다 구체적으로 설명하도록 한다.
먼저, 프로세서(140)는 주행용 맵을 생성하고, 주행용 맵을 메모리(130)에 저장할 수 있다. 그리고, 프로세서(140)는 주행용 맵을 이용하여 로봇(100)이 위치하는 공간을 주행하도록 로봇(100)을 제어할 수 있다.
예를 들어, 프로세서(140)는 카메라(110), IMU 센서(111), 인코더(112) 및 라이다 센서(113) 중 적어도 하나를 이용하여 주변 환경에 대한 정보를 획득할 수 있다. 그리고, 프로세서(140)는 획득된 정보를 바탕으로 SLAM을 이용하여 주행용 맵을 생성하고, 주행용 맵에서 로봇(100)의 위치를 식별할 수 있다. 그리고, 프로세서(140)는 로봇(100)이 식별된 위치를 기반으로 로봇(100)이 주행하도록 구동부(150)를 제어할 수 있다.
또한, 프로세서(140)는 클루 맵을 생성할 수 있다. 이를 위해, 프로세서(140)는 클루를 식별할 수 있다. 여기에서, 클루는 로봇(100)이 위치한 공간 영역을 추정하는데 이용될 수 있는 오브젝트 및 사운드를 포함할 수 있다.
구체적으로, 프로세서(140)는 로봇(100)이 공간을 주행하는 동안 카메라(110)를 통해 촬영한 이미지 및 마이크(120)를 통해 수신한 사운드에 기초하여 공간에서 고정적으로 위치한 오브젝트 및 공간의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별할 수 있다.
먼저, 프로세서(140)는 주행용 맵을 이용하여 로봇(100)이 공간을 주행하는 동안 카메라(110)를 이용하여 이미지를 획득하고, 획득된 이미지에 기초하여 공간에서 고정적으로 위치하는 오브젝트를 식별할 수 있다.
구체적으로, 프로세서(140)는 로봇(100)이 공간을 주행하는 동안 카메라(110)를 통해 촬영한 이미지를 획득하고, 획득한 이미지에서 오브젝트를 검출하고 오브젝트의 특징점(feature)을 획득할 수 있다. 여기에서, 오브젝트의 특징점은 엣지(edge), 코너(corner), 굴곡(ridge) 등을 포함할 수 있다.
그리고, 프로세서(140)는 주행용 맵에서 오브젝트의 위치를 식별할 수 있다. 여기에서, 오브젝트의 위치는 주행용 맵 상에서의 좌표 값을 포함할 수 있다.
예를 들어, 프로세서(140)는 카메라(110)를 이용하여 이미지를 촬영하였을 때, 주행용 맵에서 로봇(100)의 위치를 식별할 수 있다. 그리고, 프로세서(140)는 로봇(100)의 위치, 카메라(110)의 촬영 방향 및 로봇(100)과 오브젝트 간의 거리 등을 이용하여 로봇(100)이 카메라(110)를 통해 촬영한 이미지들을 분석하여, 주행용 맵에서 오브젝트의 위치를 식별할 수 있다.
한편, 프로세서(140)는 주행용 맵의 복수의 영역의 명칭에 대한 정보가 메모리(130)에 저장되어 있는 경우, 메모리(130)에 저장된 명칭에 대한 정보를 이용하여 오브젝트가 위치하는 영역의 명칭을 식별할 수 있다.
예를 들어, 주행용 맵이 복수의 영역으로 구분되고, 복수의 영역의 명칭이 "거실", "부엌" 및 "방"와 같은 경우를 가정한다. 이 경우, 프로세서(140)는 주행용 맵에서 식별된 오브젝트의 위치가 복수의 영역 중 "거실" 영역 내에 포함되어 있는 경우, 오브젝트가 "거실" 영역에 위치하는 것으로 식별할 수 있다.
그리고, 프로세서(140)는 오브젝트의 특징점 및 오브젝트의 위치에 대한 정보를 메모리(130)에 저장할 수 있다.
한편, 프로세서(140)는 로봇(100)이 공간을 기설정된 횟수 이상 주행하는 동안 전술한 과정을 반복하여(여기에서, 기설정된 횟수는 n이다(n은 2 이상의 자연수)), 공간에서 고정적으로 위치하는 오브젝트를 식별할 수 있다.
예를 들어, 프로세서(140)는 로봇(100)이 공간을 기설정된 횟수 이상 주행하는 동안 동일한 특징점을 갖는 오브젝트가 동일한 위치에서 기설정된 횟수 이상 검출되는 경우(여기에서, 기설정된 횟수는 m이다(m은 2 이상의 자연수)), 검출된 오브젝트를 공간 내에 고정적으로 위치하는 오브젝트인 것으로 식별할 수 있다.
또한, 프로세서(140)는 주행용 맵을 이용하여 로봇(100)이 공간을 주행하는 동안 마이크(120)를 통해 사운드를 수신하고, 사운드에 기초하여 공간의 특정 위치에서 반복적으로 수신되는 사운드를 식별할 수 있다.
구체적으로, 프로세서(140)는 로봇(100)이 공간을 주행하는 동안 마이크(120)를 통해 사운드가 수신되면, 수신된 사운드로부터 사운드의 특징을 획득할 수 있다. 여기에서, 사운드의 특징은 파형, 파장, 주파수 대역, 진폭, 진동수 등을 포함할 수 있다. 다만, 이 예에 한정되는 것은 아니고, 사운드의 특징은 해당 사운드를 다른 사운드와 구별할 수 있는 다양한 파라미터를 포함할 수 있다.
또한, 프로세서(140)는 주행용 맵에서 로봇(100)의 위치를 식별하여, 주행용 맵에서 로봇(100)이 사운드를 수신한 위치를 식별할 수 있다. 여기에서, 로봇(100)이 사운드를 수신한 위치는 주행용 맵 상에서의 좌표 값을 포함할 수 있다.
그리고, 프로세서(140)는 식별된 위치에 기초하여 사운드를 출력하는 사운드 소스의 위치를 식별할 수 있다.
예를 들어, 프로세서(140)는 주행용 맵에서 로봇(100)이 사운드를 수신한 위치를 사운드 소스의 위치로 추정할 수 있다.
또한, 프로세서(140)는 주행용 맵의 복수의 영역 중 로봇(100)이 사운드를 수신한 위치가 포함된 영역을 사운드 소스의 위치로 추정할 수 있다. 예를 들어, 프로세서(140)는 주행용 맵의 영역 1 및 영역 2 중에서 로봇(100)이 사운드를 수신한 위치가 영역 2에 포함된 경우, 사운드 소스가 영역 2에 위치하는 것으로 추정할 수 있다.
한편, 프로세서(140)는 주행용 맵의 복수의 영역의 명칭에 대한 정보가 메모리(130)에 저장되어 있는 경우, 메모리(130)에 저장된 명칭에 대한 정보를 이용하여 로봇(100)이 사운드를 수신한 영역의 명칭을 식별할 수 있다.
전술한 예와 같이, 주행용 맵이 복수의 영역으로 구분되고, 복수의 영역의 명칭이 "거실", "부엌" 및 "방"와 같은 경우를 가정한다. 이 경우, 프로세서(140)는 주행용 맵의 복수의 영역 중 로봇(100)이 "거실" 영역 및 "부엌" 영역에 위치하는 동안 사운드를 수신한 경우, 로봇(100)이 사운드를 수신한 위치는 "거실" 영역 및 "부엌" 영역인 것으로 식별할 수 있다.
그리고, 프로세서(140)는 사운드의 특징 및 사운스 소스의 위치에 대한 정보를 메모리(130)에 저장할 수 있다.
한편, 프로세서(140)는 로봇(100)이 공간을 기설정된 횟수 이상 주행하는 동안 전술한 과정을 반복하여(여기에서, 기설정된 횟수는 n이다(n은 2 이상의 자연수)), 공간의 특정 위치 내에서 반복적으로 수신되는 사운드를 식별할 수 있다.
예를 들어, 프로세서(140)는 로봇(100)이 공간을 기설정된 횟수 이상 주행하는 동안 동일한 특징을 갖는 사운드를 기설정된 횟수 이상 수신하고, 기설정된 횟수 이상 수신된 사운드에 대응되는 사운드 소스의 위치가 동일한 것으로 식별되면, 해당 사운드를 반복적으로 수신되는 사운드인 것으로 식별할 수 있다.
이와 같이, 프로세서(140)는 고정적으로 위치한 오브젝트 및 반복적으로 수신되는 사운드를 식별할 수 있다.
그리고, 프로세서(140)는 식별된 오브젝트 및 사운드를 클루로서 식별하고, 주행용 맵에 클루에 대한 정보가 부가된 클루 맵을 생성하여 메모리(130)에 저장할 수 있다.
여기에서, 클루에 대한 정보는 클루로서 식별된 오브젝트에 대한 정보 및 클루로서 식별된 사운드에 대한 정보를 포함할 수 있다.
이 경우, 오브젝트에 대한 정보는 오브젝트의 특징점 및 오브젝트의 위치 중 적어도 하나를 포함할 수 있다. 또한, 사운드에 대한 정보는 사운드의 특징 및 사운드를 출력한 사운드 소스의 위치 중 적어도 하나를 포함할 수 있다.
즉, 프로세서(140)는 오브젝트의 위치를 주행용 맵 상에서 표시하고, 오브젝트의 위치에 오브젝트로부터 획득된 오브젝트의 특징점을 맵핑할 수 있다. 또한, 프로세서(140)는 사운드 소스의 위치를 주행용 맵 상에서 표시하고, 사운드 소스의 위치에 사운드로부터 획득된 사운드의 특징을 맵핑할 수 있다. 이에 따라, 프로세서(140)는 클루 맵을 생성할 수 있다. 이 경우, 클루 맵을 구성하는 정보는 클루 DB에 저장되어 관리될 수 있다.
도 3은 본 개시의 일 실시 예에 따른 클루 맵의 일 예를 설명하기 위한 도면이다.
도 3을 참조하면, 프로세서(140)는 주행용 맵(300)에 클루에 대한 정보를 부가하여 클루 맵(400)을 생성할 수 있다.
이 경우, 클루 맵(400)에는 클루로서 식별된 오브젝트의 위치(411 내지 419)가 표시되며, 오브젝트 별로 오브젝트의 특징점이 맵핑될 수 있다. 또한, 클루 맵(320)에는 클루로서 식별된 사운드에 대응되는 사운드 소스의 위치(421, 422)가 표시되며, 사운드 소스 별로 사운드의 특징이 맵핑될 수 있다.
한편, 전술한 예에서, 클루 맵이 오브젝트의 특징점을 포함하는 것으로 설명하였다. 다만, 이는 일 예이고, 클루 맵은 클루로서 식별된 오브젝트가 촬영된 이미지를 포함할 수도 있다. 이 경우, 프로세서(140)는 이미지로부터 오브젝트의 특징점을 획득할 수 있다.
한편, 프로세서(140)는 주행용 맵 상에 오브젝트의 위치를 표시할 수 있다. 전술한 바와 같이, 프로세서(140)는 공간을 복수 회 주행하고, 주행할 때마다 공간에서 오브젝트의 위치를 식별할 수 있다. 이때, 동일한 오브젝트의 위치가 오차로 인해 서로 다른 좌표 값으로 측정될 수 있다. 이 경우, 프로세서(140)는 식별된 오브젝트의 위치들의 평균 값으로 오브젝트의 위치를 결정하거나, 카메라(110)를 통해 오브젝트를 복수의 시점에서 촬영한 이미지들을 이용하여 오브젝트의 위치를 결정할 수 있다. 그리고, 프로세서(140)는 결정된 오브젝트의 위치를 주행용 맵 상에 표시할 수 있다.
또한, 프로세서(140)는 클루 맵을 업데이트할 수 있다. 구체적으로, 프로세서(140)는 로봇(100)이 공간을 주행하는 동안 카메라(110)를 통해 획득한 이미지 및 마이크(120)를 통해 획득한 사운드에 기초하여 클루를 식별할 수 있다.
그리고, 프로세서(140)는 클루로서 식별된 오브젝트 및 사운드에 대한 정보를 클루 맵에 포함된 클루에 대한 정보와 비교하여, 오브젝트 및 사운드에 대한 정보가 클루 맵에 포함되어 있지 않은 경우, 오브젝트 및 사운드에 대한 정보를 클루 맵에 추가하여 클루 맵을 업데이트할 수 있다.
도 4는 본 개시의 일 실시 예에 따라 클루 맵을 업데이트하는 방법을 설명하기 위한 도면이다.
예를 들어, 도 4와 같이, 프로세서(140)는 클루로서 새롭게 식별된 오브젝트의 위치(431)을 클루 맵(400) 상에 표시하고, 해당 위치에 클루로서 새롭게 식별된 오브젝트의 특징점을 맵핑할 수 있다.
이와 같이, 프로세서(140)는 클루 맵을 생성 및 업데이트할 수 있다.
한편, 프로세서(140)는 기설정된 이벤트가 발생한 경우, 클루 맵을 이용하여 주행용 맵에서 로봇(100)이 위치한 공간 영역을 식별하고, 공간 영역에 대해 리로컬라이제이션을 수행하여 주행용 맵에서 로봇(100)의 위치를 식별한다.
구체적으로, 프로세서(140)는 기설정된 이벤트가 발생한 경우, 카메라(110)를 이용하여 로봇(100)의 주변 영역을 촬영한 이미지를 이용하여 오브젝트에 대한 정보를 획득하고, 마이크(120)를 통해 수신된 사운드를 이용하여 사운드에 대한 정보를 획득할 수 있다.
여기에서, 기설정된 이벤트는 로봇(100)이 주행용 맵에서 위치를 식별하지 못하는 이벤트를 포함할 수 있다. 즉, 프로세서(140)는 SLAM을 이용하여 주행용 맵에서 로봇(100)의 위치를 식별할 수 있다. 이 경우, 사용자가 임의로 로봇(100)의 위치를 변경하거나, 로봇(100)의 주변 환경 등의 이유로 프로세서(140)가 주행용 맵에서 로봇(100)의 위치를 식별하지 못하는 경우가 발생될 수 있다.
또한, 기설정된 이벤트는 오프되었던 로봇(100)의 전원이 온되는 이벤트를 포함할 수 있다.
프로세서(140)는 기설정된 이벤트가 발생한 경우, 카메라(110)를 통해 로봇(100)의 주변 영역을 촬영한 이미지를 이용하여 오브젝트에 대한 정보를 획득하고, 마이크(120)를 통해 수신된 사운드를 이용하여 사운드에 대한 정보를 획득할 수 있다.
그리고, 프로세서(140)는 획득된 이미지를 이용하여 오브젝트에 대한 정보를 획득하고, 수신된 사운드를 이용하여 사운드에 대한 정보를 획득할 수 있다.
여기에서, 오브젝트에 대한 정보는 오브젝트의 특징점 및 오브젝트의 위치 중 적어도 하나를 포함할 수 있다. 또한, 사운드에 대한 정보는 사운드의 특징 및 사운드를 출력한 사운드 소스의 위치 중 적어도 하나를 포함할 수 있다.
그리고, 프로세서(140)는 획득된 오브젝트에 대한 정보 및 사운드에 대한 정보를 이용하여 로봇(100)의 현재 위치하는 영역에 대응되는 이미지 패치(patch)를 생성할 수 있다.
여기에서, 이미지 패치는 로봇(100)의 현재 위치를 기준으로 로봇(100) 주변에 존재하는 오브젝트의 위치 및 로봇(100)이 현재 위치에서 수신하는 사운드를 출력하는 사운드 소스의 위치 간의 관계를 기반으로, 로봇(100)의 현재 위치에 대응되는 영역을 이미지화하여 생성될 수 있다.
구체적으로, 프로세서(140)는 카메라(110)를 통해 로봇(100)의 주변 영역을 촬영하여 이미지를 획득할 수 있다.
이 경우, 프로세서(140)는 카메라(110)를 이용하여 로봇(100) 주변을 360도 방향으로 촬영하여 이미지를 획득할 수 있다. 이를 위해, 카메라(110)는 360도 회전 가능하도록 로봇(100)에 설치될 수 있다. 또는, 프로세서(140)는 로봇(100)이 360도 회전하도록 구동부(150)를 제어하고, 로봇(100)이 회전하는 동안 카메라(110)를 이용하여 촬영을 수행할 수 있다.
그리고, 프로세서(140)는 로봇(100)의 주변 영역을 촬영한 이미지를 분석하여 이미지에서 경계 오브젝트를 검출할 수 있다. 여기에서, 경계 오브젝트는 플래인(plane)일 수 있다. 예를 들어, 로봇(100) 주변에 벽이 존재하는 경우, 로봇(100)에서 벽이 위치한 방향을 촬영한 이미지에서 플래인이 검출될 수 있다. 그리고, 프로세서(140)는 카메라(110)의 촬영 방향 및 로봇(100)과 경계 오브젝트 간의 거리 등을 이용하여 로봇(100)의 주변 영역을 촬영한 이미지들을 분석하여, 로봇(100)의 위치를 기준으로 경계 오브젝트의 위치를 식별할 수 있다.
또한, 프로세서(140)는 로봇(100)의 주변 영역을 촬영한 이미지에서 오브젝트를 검출하고, 오브젝트의 특징점을 획득할 수 있다. 여기에서, 오브젝트의 특징점은 오브젝트의 경계, 코너, 굴곡 등을 포함할 수 있다.
그리고, 프로세서(140)는 오브젝트의 위치를 식별할 수 있다. 구체적으로, 프로세서(140)는 카메라(110)의 촬영 방향 및 로봇(100)과 오브젝트 간의 거리 등을 이용하여 로봇(100)의 주변 영역을 촬영한 이미지들을 분석하여, 로봇(100)의 위치를 기준으로 오브젝트의 위치를 식별할 수 있다.
한편, 프로세서(140)는 마이크(120)를 이용하여 로봇(100) 주변으로부터 사운드를 수신할 수 있다.
이 경우, 프로세서(140)는 수신된 사운드로부터 사운드의 특징을 획득할 수 있다. 여기에서, 사운드의 특징은 파형, 파장, 주파수 대역, 진폭, 진동수 등을 포함할 수 있다. 또한, 프로세서(140)는 사운드를 출력하는 사운드 소스의 위치를 식별할 수 있다. 예를 들어, 프로세서(140)는 로봇(100)의 현재 위치를 사운드 소스의 위치로 추정할 수 있다. 또한, 프로세서(140)는 경계 오브젝트 내의 영역을 사운드 소스의 위치로 할 수 있다.
그리고, 프로세서(140)는 오브젝트에 대한 정보 및 사운드에 대한 정보를 이용하여 이미지 패치를 생성할 수 있다.
도 5는 본 개시의 일 실시 예에 따른 이미지 패치의 일 예를 설명하기 위한 도면이다.
도 5에서는 로봇(100)이 주행용 맵(300) 상의 지점(310)에 위치하는 것으로 가정한다.
프로세서(140)는 카메라(110)를 통해 로봇(100)의 주변 영역을 촬영하여 이미지를 획득할 수 있다. 이 경우, 프로세서(140)는 획득한 이미지로부터 로봇(100)의 제1 방향 및 제1 방향과 반대인 제2 방향에 위치한 경계 오브젝트를 검출하고, 로봇(100) 주변에 위치한 오브젝트를 검출할 수 있다.
그리고, 프로세서(140)는 마이크(120)를 통해 사운드를 수신할 수 있다.
이 경우, 프로세서(140)는 경계 오브젝트의 위치, 오브젝트의 위치 및 사운드 소스의 위치를 이용하여 이미지 패치를 생성할 수 있다. 예를 들어, 도 5와 같이, 이미지 패치(510)에는 경계 오브젝트의 위치(511, 512), 오브젝트의 위치(521) 및 사운드 소스의 위치(531)가 표시될 수 있다. 이 경우, 오브젝트의 위치(521)에는 오브젝트로부터 획득된 오브젝트의 특징점이 맵핑되고, 사운드 소스의 위치(531)에 사운드로부터 획득된 사운드의 특징이 맵핑될 수 있다.
그리고, 프로세서(140)는 생성된 이미지 패치를 클루 맵과 비교하여, 주행용 맵에서 로봇이 위치한 영역을 식별할 수 있다.
구체적으로, 프로세서(140)는 클루 맵의 복수의 영역 중 영역에 포함된 클루에 대한 정보가 이미지 패치에 포함된 오브젝트에 대한 정보 및 사운드에 대한 정보와 매칭되는 경우, 클루 맵에서 이미지 패치에 매칭되는 영역을 로봇(100)이 위치한 영역인 것으로 식별할 수 있다.
이 경우, 프로세서(140)는 탬플릿 매칭 알고리즘을 이용하여 클루 맵에서 이미지 패치에 매칭되는 영역을 식별할 수 있다.
탬플릿 매칭 알고리즘은 원본 이미지 상에 탬플릿 이미지를 오버랩시키고, 탬플릿 이미지를 이동시키면서 원본 이미지에서 탬플릿 이미지와 일치하는 영역을 찾는 알고리즘을 의미할 수 있다.
전술한 바와 같이, 클루 맵은 주행용 맵을 기반으로 생성된다는 점에서, 로봇(100)이 주행하는 공간에 존재하는 벽에 대응되는 경계 오브젝트를 포함할 수 있다. 그리고, 클루로서 식별된 오브젝트의 위치 및 클루로서 식별된 사운드를 출력한 사운드 소스의 위치가 클루 맵에 표시될 수 있다.
또한, 이미지 패치는 로봇(100)의 현재 위치를 기준으로 로봇(100) 주변의 영역에 대한 정보를 이미지화시켜 생성될 수 있다. 그리고, 로봇(100) 주변의 경계 오브젝트의 위치, 로봇(100) 주변의 오브젝트의 위치 및 로봇(100)이 수신한 사운드를 출력한 사운드 소스의 위치가 이미지 패치에 표시될 수 있다.
이 경우, 프로세서(140)는 이미지 패치를 클루 맵 상에 오버랩시키고, 이미지 패치를 이동시켜면서 클루 맵에서 이미지 패치와 매칭되는 영역을 검색할 수 있다. 이에 따라, 경계 오브젝트의 위치, 오브젝트의 위치 및 사운드 소스의 위치가 이미지 패치와 매칭되는 클루 맵의 영역이 검색될 수 있다.
그리고, 프로세서(140)는 검색된 영역에 포함된 오브젝트의 특징점이 이미지 패치에 포함된 오브젝트의 특징점과 일치하고, 검색된 영역에 포함된 사운드의 특징이 이미지 패치에 포함된 사운드의 특징과 일치하는 경우, 검색된 영역을 로봇(100)이 위치한 영역인 것으로 식별할 수 있다.
이 경우, 클루 맵은 주행용 맵을 기반으로 생성된다는 점에서, 프로세서(140)는 클루 맵에서 식별된 로봇(100)이 위치하는 영역과 동일한 영역을 주행용 맵에서 판단하여, 주행용 맵에서 로봇(100)이 위치하는 영역을 식별할 수 있다.
한편, 전술한 예에서는 이미지 패치를 생성할 때, 카메라(110)를 통해 로봇(100)의 주변 영역을 촬영한 이미지에서 경계 오브젝트가 검출되는 것으로 설명하였다. 다만, 이 예에 한정되는 것은 아니다. 즉, 로봇(100)의 주변에 벽이 존재하지 않는 경우, 로봇(100)의 주변 영역을 촬영한 이미지에서 경계 오브젝트가 검출되지 않을 수 있다. 이 경우, 프로세서(140)는 오브젝트에 대한 정보 및 사운드에 대한 정보를 이용하여 이미지 패치를 생성할 수 있다. 그리고, 프로세서(140)는 클루 맵에서 이미지 패치와 매칭되는 영역을 검색할 수 있다. 이 경우, 오브젝트의 위치 및 사운드 소스의 위치가 이미지 패치와 매칭되는 클루 맵의 영역이 검색될 수 있다.
한편, 프로세서(140)는 클루 맵에 이미지 패치와 매칭되는 영역이 존재하지 않는 경우, 클루 맵에서 클루가 존재하지 않는 영역을 로봇(100)이 위치하는 영역인 것으로 식별할 수 있다.
예를 들어, 로봇(100)의 현재 위치의 주변에 오브젝트가 존재하지 않고, 또한, 로봇(100)에 사운드가 수신되지 않는 경우를 가정한다. 이 경우, 이미지 패치에 오브젝트의 위치 및 사운드 소스의 위치가 표시되지 않는다는 점에서, 클루 맵에서 이미지 패치와 매칭되는 영역이 검색되지 않을 수 있다.
예를 들어, 로봇(100)의 현재 위치의 주변에 오브젝트가 존재하지만, 해당 오브젝트가 클루로서 식별된 오브젝트가 아닌 경우가 존재할 수 있다. 이와 마찬가지로, 로봇(100)에 사운드가 수신되지만, 수신된 사운드가 클루로서 식별된 사운드가 아닌 경우가 존재할 수 있다. 이 경우, 오브젝트의 위치 및 사운드 소스의 위치가 서로 매칭되지 않는다는 점에서, 클루 맵에서 이미지 패치와 매칭되는 영역이 검색되지 않을 수 있다.
이에 따라, 프로세서(140)는 클루 맵에서 이미지 패치와 매칭되는 영역이 검색되지 않는 경우, 클루 맵에서 오브젝트 및 사운드 소스가 위치하는 않는 영역을 주행용 맵에서 로봇(100)이 위치하는 영역인 것으로 식별할 수 있다.
여기에서, 오브젝트가 위치하지 않는 영역은 카메라(110)를 통해 촬영하였을 때, 영역은 오브젝트의 위치, 경계 오브젝트의 위치 및 카메라(110)의 화각 등에 따라 클루 맵에서 오브젝트가 촬영되지 않는 영역을 포함할 수 있다. 또한, 오브젝트가 위치하지 않는 영역은 클루 맵이 벽과 같은 경계 오브젝트에 의해 복수의 영역으로 구분된 경우, 복수의 영역 중 오브젝트가 위치하지 않은 적어도 하나의 영역을 포함할 수 있다.
또한, 사운드 소스가 위치하는 않는 영역은 클루 맵에서 클루로서 식별된 사운드를 수신한 위치에 기초하여 결정된 사운드 소스의 위치를 제외한 나머지 영역을 포함할 수 있다.
그리고, 프로세서(140)는 주행용 맵에서 로봇이 위치한 영역에 대해 리로컬라이제이션을 수행하여 주행용 맵에서 로봇(100)의 위치를 식별할 수 있다.
이 경우, 프로세서(140)는 로봇이 위치한 영역이 복수 개 식별되면, 복수의 영역 각각에 대해 리로컬라이제이션을 수행할 수 있다.
도 6 및 도 7은 본 개시의 일 실시 예에 따라 클루 맵을 이용하여 로봇이 현재 위치한 영역을 식별하고, 식별된 영역에 대해 리로컬라이제이션을 수행하는 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 프로세서(140)는 클루 맵(400)에서 이미지 패치(510)와 매칭되는 영역(441)을 식별할 수 있다. 그리고, 프로세서(140)는 주행용 맵(300)에서 영역(441)과 동일한 위치의 영역(321)을 식별하고, 영역(321)에 대해 리로컬라이제이션을 수행할 수 있다.
도 7을 참조하면, 프로세서(140)는 클루 맵(400)에서 이미지 패치(510)와 매칭되는 영역이 존재하지 않는 경우, 클루 맵에서 오브젝트 및 사운드 소스가 위치하는 않는 영역(442, 443, 444)을 식별할 수 있다. 프로세서(140)는 주행용 맵(300)에서 영역(442, 443, 444)과 동일한 위치의 영역(322, 323, 324)을 식별하고, 각 영역(322, 323, 324)에 대해 리로컬라이제이션을 수행할 수 있다.
즉, 자율 주행을 수행하는 로봇은 맵을 생성한 후, 맵 상에서 자신의 위치를 찾는 위치 인식 즉, 로컬라이제이션을 통해서 주행을 할 수 있다. 이 경우, 때때로 환경적 요인(예: feature-less 등)에 의해 로봇이 자신의 위치를 잘못 추정하는 경우가 발생될 수 있다. 소형 홈 로봇의 경우, 사람이 로봇의 전원을 오프시킨 후 임의의 위치로 이동시키고, 다시 온 시키는 경우, 로봇은 현재 위치를 인식하지 못하게 된다. 이러한 경우, 로봇은 맵 상에서 자신의 위치를 다시 찾아야 하는데, 리로컬라이제이션을 통해 자신의 위치를 찾게 된다.
이 경우, 본 개시에서는 주행용 맵 전체에 대해 리로컬라이제이션을 수행하지 않고, 먼저, 주행용 맵에서 로봇(100)이 현재 위치하는 영역을 식별하고, 식별된 영역에 대해 리로컬라이제이션을 수행하여 주행용 맵에서 로봇(100)의 위치를 식별할 수 있다. 이에 따라, 로봇(100)의 위치 추정의 성공률이 높아질 수 있다.
한편, 프로세서(140)는 사용자 음성에 기초하여 로봇(100)이 위치하는 영역을 식별할 수도 있다.
이를 위해, 메모리(130)에는 클루 맵의 복수의 영역 각각에 대한 명칭에 대한 저장되어 있을 수 있다. 즉, 복수의 영역 각각에는 영역의 명칭이 레이블링되어 있을 수 있다. 이 경우, 영역의 명칭은 사용자 명령에 따라 입력될 수 있다. 그리고, 각 영역에 레이블링된 명칭에 대한 정보는 클루 DB에 저장되어 관리될 수 있다. 예를 들어, 도 8a와 같이, 클루 맵(400)의 영역(451)에 대해 "부엌"이라는 명칭이 레이블링되고, 영역(452)에 대해 "방"이라는 명칭이 레이블링될 수 있다.
프로세서(140)는 마이크(120)를 통해 사용자 음성을 수신하고, 사용자 음성에 기초하여 로봇(100)이 위치하는 영역을 식별할 수 있다.
구체적으로, 프로세서(140)는 마이크(120)를 통해 수신된 사용자 음성에 대한 음성 인식을 수행하여, 사용자 음성에 포함된 로봇(100)이 위치하는 영역에 대한 정보를 획득하고, 획득된 정보를 각 영역에 레이블링된 명칭과 비교하여, 로봇(100)이 위치하는 영역을 식별할 수 있다.
예를 들어, 프로세서(140)는 로봇(100)의 스피커(182)를 통해 "여기는 어디인가요?"와 같은 사운드를 출력하고, 그에 대한 응답으로 "방"과 같은 사용자 음성을 수신할 수 있다. 이 경우, 프로세서(140)는 음성 인식을 통해 사용자 음성으로부터 "방"을 획득하고, 클루 맵(400)에서 "방"이 레이블링된 영역(452)을 검색할 수 있다. 이에 따라, 프로세서(140)는 현재 로봇(100)이 클루 맵(400)에서 영역(452)에 위치하는 것으로 식별할 수 있다.
또한, 프로세서(140)는 사용자 음성으로부터 획득한 로봇(100)이 위치하는 영역에 대한 정보가 클루 맵에 존재하지 않는 것으로 식별되면, 획득된 정보에 기초하여 클루 맵을 업데이트할 수 있다.
구체적으로, 프로세서(140)는 사용자 음성으로부터 획득한 로봇(100)이 위치하는 영역에 대한 정보가 클루 맵의 복수의 영역에 레이블링되어 있지 않은 경우, 이미지 패치를 이용하여 클루 맵에서 로봇(100)이 위치하는 영역을 식별할 수 있다. 그리고, 프로세서(140)는 사용자 음성으로부터 획득한 로봇(100)이 위치하는 영역에 대한 정보를 식별된 영역의 명칭으로 저장하여, 클루 맵을 업데이트할 수 있다.
예를 들어, 로봇(100)이 영역(452)에 위치하는 상태에서, "큰방"과 같은 사용자 음성을 수신한 경우를 가정한다. 이 경우, 도 8b와 같이, 프로세서(140)는 이미지 패치를 이용하여 로봇(100)이 영역(452)에 위치하는 것으로 식별하고, 영역(452)에 "큰방"을 레이블링할 수 있다. 이에 따라, 영역(452)은 "방" 및 "큰방"이 레이블링될 수 있다.
이와 같이, 본 개시에 따르면 사용자 음성을 이용하여 로봇(100)이 현재 위치하는 영역을 식별할 수도 있다.
도 9는 본 개시의 일 실시 예에 따른 로봇의 위치 식별 방법을 설명하기 위한 흐름도이다.
이 경우, 로봇은 카메라 및 마이크를 포함하며, 맵을 이용하여 공간을 주행할 수 있다.
먼저, 로봇이 맵을 이용하여 공간을 주행하는 동안 카메라를 통해 촬영한 이미지 및 마이크를 통해 수신한 사운드에 기초하여 공간에서 고정적으로 위치한 오브젝트 및 공간의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별한다(S910).
이후, 맵에 클루에 대한 정보가 부가된 클루 맵을 생성한다(S920).
그리고, 기설정된 이벤트가 발생한 경우, 클루 맵을 이용하여 맵에서 로봇이 위치한 영역을 식별하고, 식별된 영역에 대해 리로컬라이제이션을 수행하여 맵에서 로봇의 위치를 식별한다(S930).
여기에서, 클루에 대한 정보는 오브젝트의 특징점 및 오브젝트의 위치 중 적어도 하나를 포함할 수 있다. 또한, 클루에 대한 정보는 사운드의 특징 및 사운드를 출력한 사운드 소스의 위치 중 적어도 하나를 포함할 수 있다.
한편, S930 단계는 기설정된 이벤트가 발생한 경우, 카메라를 통해 로봇의 주변 영역을 촬영한 이미지를 이용하여 오브젝트에 대한 정보를 획득하고, 마이크를 통해 수신된 사운드를 이용하여 사운드에 대한 정보를 획득하고, 획득된 오브젝트에 대한 정보 및 사운드에 대한 정보를 이용하여 로봇이 현재 위치하는 영역에 대응되는 이미지 패치를 생성하고, 생성된 이미지 패치를 클루 맵과 비교하여, 맵에서 상기 로봇이 위치한 영역을 식별할 수 있다.
또한, S930 단계는 클루 맵의 복수의 영역 중 영역에 포함된 클루에 대한 정보가 이미지 패치에 포함된 오브젝트에 대한 정보 및 사운드에 대한 정보와 매칭되는 경우, 클루 맵에서 이미지 패치에 매칭되는 영역을 로봇이 위치한 영역인 것으로 식별할 수 있다.
그리고, S930 단계는 클루 맵에 생성된 이미지 패치와 매칭되는 영역이 존재하지 않는 경우, 클루 맵에서 클루가 존재하지 않는 영역을 로봇이 위치한 영역인 것으로 식별할 수 있다.
한편, 기설정된 이벤트는 로봇이 상기 맵에서 위치를 식별하지 못하는 이벤트 또는 오프되었던 로봇의 전원이 온되는 이벤트를 포함할 수 있다.
한편, 일 실시 예에 따르면, 본 개시의 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예: 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
이상에서 상술한 바와 같은 본 개시의 다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다.
다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
한편, 본 개시에서 사용된 용어 "부" 또는 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. "부" 또는 "모듈"은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.
한편, 본 개시에 따른 제어 방법을 순차적으로 수행하는 프로그램이 저장된 비일시적 판독 가능 매체(non-transitory computer readable medium)가 제공될 수 있다. 비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
또한, 본 개시의 실시 예는 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 로봇(100))를 포함할 수 있다.
상기 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접 또는 상기 프로세서의 제어 하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시가 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안 될 것이다.
100 : 로봇 110 : 카메라
120 : 마이크 130 : 메모리
140 : 하나 이상의 프로세서

Claims (14)

  1. 맵을 이용하여 공간을 주행하는 로봇에 있어서,
    카메라;
    마이크;
    메모리; 및
    상기 로봇이 맵을 이용하여 상기 공간을 주행하는 동안 상기 카메라를 통해 촬영한 이미지 및 상기 마이크를 통해 수신한 사운드에 기초하여 상기 공간에서 고정적으로 위치한 오브젝트 및 상기 공간의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별하고,
    상기 맵에 상기 클루에 대한 정보가 부가된 클루 맵을 생성하여 상기 메모리에 저장하고,
    기설정된 이벤트가 발생한 경우, 상기 클루 맵을 이용하여 상기 맵에서 상기 로봇이 위치한 영역을 식별하고, 상기 식별된 영역에 대해 리로컬라이제이션(relocalization)을 수행하여 상기 맵에서 상기 로봇의 위치를 식별하는 하나 이상의 프로세서;를 포함하는, 로봇.
  2. 제1항에 있어서,
    상기 클루에 대한 정보는,
    상기 오브젝트의 특징점 및 상기 오브젝트의 위치 중 적어도 하나를 포함하는, 로봇.
  3. 제1항에 있어서,
    상기 클루에 대한 정보는,
    상기 사운드의 특징 및 상기 사운드를 출력한 사운드 소스의 위치 중 적어도 하나를 포함하는, 로봇.
  4. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 기설정된 이벤트가 발생한 경우, 상기 카메라를 통해 상기 로봇의 주변 영역을 촬영한 이미지를 이용하여 오브젝트에 대한 정보를 획득하고,
    상기 마이크를 통해 수신된 사운드를 이용하여 사운드에 대한 정보를 획득하고,
    상기 획득된 오브젝트에 대한 정보 및 사운드에 대한 정보를 이용하여 상기 로봇이 현재 위치하는 영역에 대응되는 이미지 패치를 생성하고,
    상기 생성된 이미지 패치를 상기 클루 맵과 비교하여, 상기 맵에서 상기 로봇이 위치한 영역을 식별하는, 로봇.
  5. 제4항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 클루 맵의 복수의 영역 중 영역에 포함된 상기 클루에 대한 정보가 상기 이미지 패치에 포함된 상기 오브젝트에 대한 정보 및 상기 사운드에 대한 정보와 매칭되는 경우, 상기 클루 맵에서 상기 이미지 패치에 매칭되는 영역을 상기 로봇이 위치한 영역인 것으로 식별하는, 로봇.
  6. 제4항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 클루 맵에 상기 생성된 이미지 패치와 매칭되는 영역이 존재하지 않는 경우, 상기 클루 맵에서 상기 클루가 존재하지 않는 영역을 상기 로봇이 위치한 영역인 것으로 식별하는, 로봇.
  7. 제1항에 있어서,
    상기 기설정된 이벤트는,
    상기 로봇이 상기 맵에서 위치를 식별하지 못하는 이벤트 또는 상기 오프되었던 로봇의 전원이 온되는 이벤트를 포함하는, 로봇.
  8. 카메라 및 마이크를 포함하며, 맵을 이용하여 공간을 주행하는 로봇의 위치 식별 방법에 있어서,
    상기 로봇이 맵을 이용하여 상기 공간을 주행하는 동안 상기 카메라를 통해 촬영한 이미지 및 상기 마이크를 통해 수신한 사운드에 기초하여 상기 공간에서 고정적으로 위치한 오브젝트 및 상기 공간의 특정 위치에서 반복적으로 수신되는 사운드를 클루로서 식별하는 단계;
    상기 맵에 상기 클루에 대한 정보가 부가된 클루 맵을 생성하는 단계; 및
    기설정된 이벤트가 발생한 경우, 상기 클루 맵을 이용하여 상기 맵에서 상기 로봇이 위치한 영역을 식별하고, 상기 식별된 영역에 대해 리로컬라이제이션(relocalization)을 수행하여 상기 맵에서 상기 로봇의 위치를 식별하는 단계;를 포함하는, 위치 식별 방법.
  9. 제8항에 있어서,
    상기 클루에 대한 정보는,
    상기 오브젝트의 특징점 및 상기 오브젝트의 위치 중 적어도 하나를 포함하는, 위치 식별 방법.
  10. 제8항에 있어서,
    상기 클루에 대한 정보는,
    상기 사운드의 특징 및 상기 사운드를 출력한 사운드 소스의 위치 중 적어도 하나를 포함하는, 위치 식별 방법.
  11. 제8항에 있어서,
    상기 로봇의 위치를 식별하는 단계는,
    상기 기설정된 이벤트가 발생한 경우, 상기 카메라를 통해 상기 로봇의 주변 영역을 촬영한 이미지를 이용하여 오브젝트에 대한 정보를 획득하는 단계;
    상기 마이크를 통해 수신된 사운드를 이용하여 사운드에 대한 정보를 획득하는 단계;
    상기 획득된 오브젝트에 대한 정보 및 사운드에 대한 정보를 이용하여 상기 로봇이 현재 위치하는 영역에 대응되는 이미지 패치를 생성하는 단계; 및
    상기 생성된 이미지 패치를 상기 클루 맵과 비교하여, 상기 맵에서 상기 로봇이 위치한 영역을 식별하는 단계;를 포함하는, 위치 식별 방법.
  12. 제11항에 있어서,
    상기 로봇의 위치를 식별하는 단계는,
    상기 클루 맵의 복수의 영역 중 영역에 포함된 상기 클루에 대한 정보가 상기 이미지 패치에 포함된 상기 오브젝트에 대한 정보 및 상기 사운드에 대한 정보와 매칭되는 경우, 상기 클루 맵에서 상기 이미지 패치에 매칭되는 영역을 상기 로봇이 위치한 영역인 것으로 식별하는, 위치 식별 방법.
  13. 제11항에 있어서,
    상기 로봇의 위치를 식별하는 단계는,
    상기 클루 맵에 상기 생성된 이미지 패치와 매칭되는 영역이 존재하지 않는 경우, 상기 클루 맵에서 상기 클루가 존재하지 않는 영역을 상기 로봇이 위치한 영역인 것으로 식별하는, 위치 식별 방법.
  14. 제8항에 있어서,
    상기 기설정된 이벤트는,
    상기 로봇이 상기 맵에서 위치를 식별하지 못하는 이벤트 또는 상기 오프되었던 로봇의 전원이 온되는 이벤트를 포함하는, 위치 식별 방법.
KR1020220158184A 2022-11-23 2022-11-23 맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법 KR20240076871A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220158184A KR20240076871A (ko) 2022-11-23 2022-11-23 맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법
PCT/KR2023/016167 WO2024111893A1 (ko) 2022-11-23 2023-10-18 맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220158184A KR20240076871A (ko) 2022-11-23 2022-11-23 맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법

Publications (1)

Publication Number Publication Date
KR20240076871A true KR20240076871A (ko) 2024-05-31

Family

ID=91195879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220158184A KR20240076871A (ko) 2022-11-23 2022-11-23 맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법

Country Status (2)

Country Link
KR (1) KR20240076871A (ko)
WO (1) WO2024111893A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4315872B2 (ja) * 2004-07-28 2009-08-19 本田技研工業株式会社 移動ロボットの制御装置
KR101356165B1 (ko) * 2012-03-09 2014-01-24 엘지전자 주식회사 로봇 청소기 및 이의 제어 방법
US9989626B2 (en) * 2013-04-12 2018-06-05 Hitachi, Ltd. Mobile robot and sound source position estimation system
JP6673276B2 (ja) * 2017-03-28 2020-03-25 カシオ計算機株式会社 音声検出装置、音声検出方法、及びプログラム
KR102306437B1 (ko) * 2019-07-05 2021-09-28 엘지전자 주식회사 이동 로봇 및 그 제어방법

Also Published As

Publication number Publication date
WO2024111893A1 (ko) 2024-05-30

Similar Documents

Publication Publication Date Title
CN111542420B (zh) 移动家庭机器人及其控制方法
CN108027649B (zh) 定位增强现实环境中的设备
US11127203B2 (en) Leveraging crowdsourced data for localization and mapping within an environment
KR102522814B1 (ko) 사물 인터넷 장치의 3d 매핑
CN107407567B (zh) 增强现实导航
KR102362117B1 (ko) 지도 정보를 제공하기 위한 전자 장치
JP2020533687A (ja) ゲームプレイを介して環境の詳細データセットを生成する方法およびシステム
JP2023541619A (ja) 倉庫保管ロボットの位置決めと地図作成方法、ロボット及び記憶媒体
US9874977B1 (en) Gesture based virtual devices
US10979695B2 (en) Generating 3D depth map using parallax
WO2018068607A1 (zh) 一种可穿戴设备的位置确定方法和装置、终端
US10586106B2 (en) Responsive spatial audio cloud
WO2018160381A1 (en) 3d depth map
US11880209B2 (en) Electronic apparatus and controlling method thereof
US20210141381A1 (en) Information processing device, information processing system, behavior planning method, and computer program
KR20200094843A (ko) 외부 전자 장치를 제어하는 방법 및 이를 지원하는 전자 장치
US11410672B2 (en) Organization of signal segments supporting sensed features
US10178370B2 (en) Using multiple cameras to stitch a consolidated 3D depth map
KR20210141294A (ko) 전자 장치 및 그의 제어 방법
KR20240076871A (ko) 맵을 이용하여 공간을 주행하는 로봇 및 그의 위치 식별 방법
US20230058999A1 (en) Robot and method for controlling thereof
US10606814B2 (en) Computer-aided tracking of physical entities
KR20170138723A (ko) 전자 장치, 외부 서버 및 그 제어 방법
US20230215092A1 (en) Method and system for providing user interface for map target creation
US20230251663A1 (en) Robot and method for generating map thereby