KR102143349B1 - 이동 로봇의 제어 방법 - Google Patents
이동 로봇의 제어 방법 Download PDFInfo
- Publication number
- KR102143349B1 KR102143349B1 KR1020190035040A KR20190035040A KR102143349B1 KR 102143349 B1 KR102143349 B1 KR 102143349B1 KR 1020190035040 A KR1020190035040 A KR 1020190035040A KR 20190035040 A KR20190035040 A KR 20190035040A KR 102143349 B1 KR102143349 B1 KR 102143349B1
- Authority
- KR
- South Korea
- Prior art keywords
- feature point
- image
- block
- driving
- information
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 126
- 238000000605 extraction Methods 0.000 claims abstract description 79
- 238000005286 illumination Methods 0.000 claims abstract description 14
- 230000033001 locomotion Effects 0.000 claims description 28
- 239000002245 particle Substances 0.000 claims description 21
- 238000012952 Resampling Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 60
- 238000006073 displacement reaction Methods 0.000 description 35
- 230000008859 change Effects 0.000 description 28
- 239000000428 dust Substances 0.000 description 28
- 238000004140 cleaning Methods 0.000 description 27
- 238000001514 detection method Methods 0.000 description 24
- 238000005516 engineering process Methods 0.000 description 19
- 238000013528 artificial neural network Methods 0.000 description 12
- 239000000284 extract Substances 0.000 description 12
- 230000007613 environmental effect Effects 0.000 description 11
- 239000013598 vector Substances 0.000 description 10
- 238000010801 machine learning Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000004807 localization Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000002187 spin decoupling employing ultra-broadband-inversion sequences generated via simulated annealing Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1664—Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L11/00—Machines for cleaning floors, carpets, furniture, walls, or wall coverings
- A47L11/40—Parts or details of machines not provided for in groups A47L11/02 - A47L11/38, or not restricted to one of these groups, e.g. handles, arrangements of switches, skirts, buffers, levers
- A47L11/4011—Regulation of the cleaning machine by electric means; Control systems and remote control systems therefor
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L11/00—Machines for cleaning floors, carpets, furniture, walls, or wall coverings
- A47L11/40—Parts or details of machines not provided for in groups A47L11/02 - A47L11/38, or not restricted to one of these groups, e.g. handles, arrangements of switches, skirts, buffers, levers
- A47L11/4061—Steering means; Means for avoiding obstacles; Details related to the place where the driver is accommodated
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L9/00—Details or accessories of suction cleaners, e.g. mechanical means for controlling the suction or for effecting pulsating action; Storing devices specially adapted to suction cleaners or parts thereof; Carrying-vehicles specially adapted for suction cleaners
- A47L9/28—Installation of the electric equipment, e.g. adaptation or attachment to the suction cleaner; Controlling suction cleaners by electric means
- A47L9/2805—Parameters or conditions being sensed
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L9/00—Details or accessories of suction cleaners, e.g. mechanical means for controlling the suction or for effecting pulsating action; Storing devices specially adapted to suction cleaners or parts thereof; Carrying-vehicles specially adapted for suction cleaners
- A47L9/28—Installation of the electric equipment, e.g. adaptation or attachment to the suction cleaner; Controlling suction cleaners by electric means
- A47L9/2836—Installation of the electric equipment, e.g. adaptation or attachment to the suction cleaner; Controlling suction cleaners by electric means characterised by the parts which are controlled
- A47L9/2852—Elements for displacement of the vacuum cleaner or the accessories therefor, e.g. wheels, casters or nozzles
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J11/00—Manipulators not otherwise provided for
- B25J11/008—Manipulators for service tasks
- B25J11/0085—Cleaning
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1628—Programme controls characterised by the control loop
- B25J9/1653—Programme controls characterised by the control loop parameters identification, estimation, stiffness, accuracy, error analysis
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1694—Programme 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/1697—Vision controlled systems
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/20—Control system inputs
- G05D1/24—Arrangements for determining position or orientation
- G05D1/243—Means capturing signals occurring naturally from the environment, e.g. ambient optical, acoustic, gravitational or magnetic signals
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/20—Control system inputs
- G05D1/24—Arrangements for determining position or orientation
- G05D1/246—Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM]
- G05D1/2462—Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM] using feature-based mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L2201/00—Robotic cleaning machines, i.e. with automatic control of the travelling movement or the cleaning operation
- A47L2201/04—Automatic control of the travelling movement; Automatic obstacle detection
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D2105/00—Specific applications of the controlled vehicles
- G05D2105/10—Specific applications of the controlled vehicles for cleaning, vacuuming or polishing
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D2107/00—Specific environments of the controlled vehicles
- G05D2107/40—Indoor domestic environment
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D2109/00—Types of controlled vehicles
- G05D2109/10—Land vehicles
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D2111/00—Details of signals used for control of position, course, altitude or attitude of land, water, air or space vehicles
- G05D2111/10—Optical signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30248—Vehicle exterior or interior
- G06T2207/30252—Vehicle exterior; Vicinity of vehicle
- G06T2207/30261—Obstacle
Landscapes
- Engineering & Computer Science (AREA)
- Mechanical Engineering (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Robotics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Aviation & Aerospace Engineering (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Automation & Control Theory (AREA)
- Multimedia (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Image Analysis (AREA)
Abstract
본 발명의 일 측면에 따른 이동 로봇 및 그 제어 방법은, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 저조도 환경에서도 우수한 비전 슬램 기술을 구현할 수 있다.
Description
본 발명은 이동 로봇 및 그 제어 방법에 관한 것으로서, 더욱 상세하게는 이동 로봇이 맵(map)을 생성, 학습하거나 맵 상에서 위치를 인식하는 기술에 관한 것이다.
로봇은 산업용으로 개발되어 공장 자동화의 일 부분을 담당하여 왔다. 최근에는 로봇을 응용한 분야가 더욱 확대되어, 의료용 로봇, 우주 항공 로봇 등이 개발되고, 일반 가정에서 사용할 수 있는 가정용 로봇도 만들어지고 있다. 이러한 로봇 중에서 자력으로 주행이 가능한 것을 이동 로봇이라고 한다.
가정에서 사용되는 이동 로봇의 대표적인 예는 로봇 청소기로, 로봇 청소기는 일정 영역을 스스로 주행하면서, 주변의 먼지 또는 이물질을 흡입함으로써, 해당 영역을 청소하는 기기이다.
이동 로봇은, 스스로 이동이 가능하여 이동이 자유롭고, 주행중 장애물 등을 피하기 위한 다수의 센서가 구비되어 장애물을 피해 주행할 수 있다.
청소 등 설정된 작업을 수행하기 위해서는 주행구역의 맵(Map)을 정확하게 생성하고, 주행구역 내의 어느 위치로 이동하기 위해서 맵 상에서 이동 로봇의 현재 위치를 정확하게 파악할 수 있어야 한다.
또한, 외부적인 요인에 의해 주행 중인 이동 로봇의 위치가 강제로 변경된 경우, 이동 로봇은 직전 위치에서의 주행 정보를 근거로 미지의 현재 위치를 인식할 수 없게 된다. 일 예로, 사용자가 주행 중인 이동 로봇을들어서 옮긴 납치(Kidnapping) 상황이 발생한 경우가 그러하다.
이동 로봇의 현재 위치 인식을 위해, 이동 로봇의 연속적인 이동 중 자신의 직전 위치에서의 주행 정보(이동 방향 및 이동 속도에 대한 정보 또는 연속적으로 촬영되는 바닥사진 등의 비교 등)를 바탕으로 현재 위치를 지속적으로 파악하는 다양한 방법이 연구되어 왔다. 또한, 이동 로봇이 스스로 맵을 생성하고 학습하는 다양한 방법에 대한 연구들이 진행되고 있다.
또한, 이동 로봇이 현재 위치에서 카메라를 통해 촬영된 영상을 이용하여 미지의 현재 위치를 인식하는 기술들이 제안되고 있다.
선행 문헌(한국 공개특허공보 제10-2010-0104581호 공개일자 2010. 9. 29.)은, 주행구역 내에서 촬영된 영상으로부터 추출된 특징점들로부터 3차원 지도를 생성하고 현재 위치에서 카메라를 통해 촬영된 영상에 기초한 특징점을 이용하여 미지의 현재 위치를 인식하는 기술을 개시한다.
상기 선행 문헌에서는, 주행구역 내에서 촬영된 영상으로부터 추출된 특징점들로부터 3차원 지도를 생성하고, 미지의 현재 위치에서 촬영된 영상 내의 특징점들 중 3차원 지도 내의 특징점들과 매칭되는 3쌍 이상의 특징점 쌍을 검출한다. 그 후, 현재 위치에서 촬영된 영상 내의 매칭된 3개 이상의 특징점의 2차원 좌표, 3차원 지도 상의 매칭된 3개 이상의 특징점의 3차원 좌표, 및 현재 위치에서 카메라의 초점거리 정보를 이용하여, 상기 매칭된 3개 이상의 특징점으로부터 거리를 산출하고, 이로부터 현재 위치를 인식하는 기술이, 상기 선행 문헌에 개시되어 있다.
상기 선행 문헌과 같이, 주행구역 상의 같은 부분을 촬영한 어느 한 영상과 인식 영상을 비교하여 특정 포인트(point)의 특징점으로 위치를 인식하는 방식은, 주행구역 내의 조명 온/오프(On/Off) 여부나 태양광의 입사각이나 양에 따른 조도 변화 등 환경 변화에 의해 현재 위치의 추정 정확도가 달라질 수 있는 문제가 있다.
선행 문헌과 같이, 주행구역 상의 같은 부분을 촬영한 어느 한 영상과 인식 영상을 비교하여 특정 포인트(point)의 특징점으로 위치를 인식하는 방식은, 주행구역 내의 조명 온/오프(On/Off) 여부나 태양광의 입사각이나 양에 따른 조도 변화, 물품 위치 변경 등 환경 변화에 의해 현재 위치의 추정 정확도가 달라질 수 있는 문제가 있다. 본 발명의 목적은 이러한 환경 변화에 강인한 위치 인식 및 맵 생성 기술을 제공함에 있다.
본 발명의 목적은 이동 로봇의 현재 위치 인식의 성공률을 높이고 더 높은 신뢰도로 현재 위치를 추정하게 하여, 효율적이고 정확한 주행구역 내 위치 인식 기술을 제공함에 있다.
본 발명의 목적은 저조도 환경에서도 동작할 수 있는 비전(Vision) 슬램(Simultaneous localization and mapping: SLAM) 기술을 제공함에 있다.
본 발명의 목적은, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 저조도 환경에서도 우수한 슬램 기술을 제공함에 있다.
상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇 및 그 제어 방법은, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 저조도 환경에서도 우수한 비전 슬램 기술을 구현할 수 있다.
상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇 및 그 제어 방법은, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 환경 변화에 강인한 맵을 생성하고 맵 상 위치를 정확하게 인식할 수 있다.
상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇 및 그 제어 방법은, 다양한 환경 변화에 대응할 수 있는 하나의 맵에 기초하여 효율적인 주행 및 청소를 수행할 수 있다.
상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇의 제어방법은, 주행 중 주행구역 내 영상을 획득하는 단계, 상기 획득된 영상에서 특징점을 추출하는 포인트(point) 기반의 특징점 추출 단계, 상기 획득된 영상을 기설정된 크기의 블록(Bolck)들로 구분하고, 구분된 각각의 블록 단위 영상들에서 특징점을 추출하는 블록 기반의 특징점 추출 단계, 상기 포인트 기반의 특징점 추출 단계에서 추출된 특징점을 이용하여, 현재 위치에 대응하는 노드 및 상기 현재 위치에 대응하는 노드를 기준으로 기설정된 기준 거리 이내의 노드의 특징점을 매칭(matching)하는 포인트 기반의 특징점 매칭 단계, 상기 블록 기반의 특징점 추출 단계에서 추출된 특징점을 이용하여, 상기 현재 위치에 대응하는 노드 및 상기 현재 위치에 대응하는 노드를 기준으로 상기 기준 거리 이내의 노드의 특징점을 매칭하는 블록 기반의 특징점 매칭 단계, 상기 포인트 기반의 특징점 매칭 결과와 상기 블록 기반의 특징점 매칭 결과에 기초하여 상기 현재 위치를 인식하는 단계, 및, 상기 인식된 현재 위치 정보, 상기 현재 위치에 대응하는 노드의 포인트 기반의 특징점 정보, 및 상기 현재 위치에 대응하는 노드의 블록 기반의 특징점 정보를 맵(map)에 등록하는 단계를 포함함으로써 환경 변화에 강인한 맵을 생성할 수 있다.
상기 포인트 기반의 특징점 추출 단계에서, 상기 추출된 특징점 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성에 기초하여 상기 추출된 특징점에 대응하는 디스크립터(descriptor)를 생성할 수 있다.
또한, 블록 기반의 특징점 추출 단계에서는, 상기 블록 단위 영상들의 밝기 구배(gradient)의 분포 특성에 기초하여 각각의 블록별 디스크립터를 생성할 수 있다.
또한, 상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇의 제어방법은, 상기 주행 중 주행 정보를 획득하는 단계를 더 포함하고, 상기 영상 획득 단계는, 상기 획득된 주행 정보에 기초하여 이전 노드부터의 이동량이 문턱값(threshold)보다 커지면 영상획득부를 통하여 상기 영상을 획득할 수 있다
또는, 상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇의 제어방법은, 상기 주행 중 주행 정보를 획득하는 단계와 상기 영상 획득 단계에서 영상획득부를 통하여 획득되는 영상들 중, 이전 노드부터의 이동량이 문턱값보다 큰 영상을 키 프레임 영상으로 선택하는 단계를 더 포함하고, 상기 포인트 기반의 특징점 추출 단계와 상기 블록 기반의 특징점 추출 단계는, 상기 키 프레임 영상을 대상으로 수행할 수 있다.
상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇의 제어방법은, 주행 중 주행구역 내 영상을 획득하는 단계, 상기 획득된 영상을 기설정된 크기의 블록(Bolck)들로 구분하고, 구분된 각각의 블록 단위 영상들에서 특징점을 추출하는 블록 기반의 특징점 추출 단계, 상기 블록 기반의 특징점 추출 단계에서 추출된 특징점을 맵에 등록된 블록 기반의 특징점 정보와 매칭하는 블록 기반의 특징점 매칭 단계, 및, 상기 블록 기반의 특징점 매칭 결과에 기초하여 현재 위치를 인식하는 단계를 포함함으로써, 저조도 환경에서도 위치를 정확하게 인식할 수 있다.
상기 블록 기반의 특징점 추출 단계에서, 상기 블록 단위 영상들의 밝기 구배(gradient)의 분포 특성에 기초하여 각각의 블록별 디스크립터를 생성할 수 있다.
또한, 상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇의 제어방법은, 상기 획득된 영상에서 특징점을 추출하는 포인트(point) 기반의 특징점 추출 단계, 및, 상기 포인트 기반의 특징점 추출 단계에서 추출된 특징점을 상기 맵에 등록된 포인트 기반의 특징점 정보와 매칭하는 단계를 더 포함하고, 상기 현재 위치 인식 단계는, 상기 포인트 기반의 특징점 매칭 결과와 상기 블록 기반의 특징점 매칭 결과에 기초하여 상기 현재 위치를 인식할 수 있다.
이 경우에, 포인트 기반의 특징점 추출 단계는, 상기 추출된 특징점 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성에 기초하여 상기 추출된 특징점에 대응하는 디스크립터(descriptor)를 생성할 수 있다.
또한, 상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇의 제어방법은, 상기 주행 중 주행 정보를 획득하는 단계를 더 포함하고, 상기 영상 획득 단계는, 상기 획득된 주행 정보에 기초하여 이전 노드부터의 이동량이 문턱값(threshold)보다 커지면 영상획득부를 통하여 상기 영상을 획득할 수 있다.
또는, 상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇의 제어방법은, 상기 주행 중 주행 정보를 획득하는 단계, 상기 영상 획득 단계에서 영상획득부를 통하여 획득되는 영상들 중, 이전 노드부터의 이동량이 문턱값보다 큰 영상을 키 프레임 영상으로 선택하는 단계를 더 포함하고, 상기 블록 기반의 특징점 추출 단계는, 상기 키 프레임 영상을 대상으로 수행할 수 있다.
또한, 상기 또는 다른 목적을 달성하기 위해 본 발명의 일 측면에 따른 이동 로봇의 제어방법은, 센서부를 통하여 조도 정보를 획득하는 단계를 더 포함하고, 상기 조도 정보가 저조도 환경으로 설정된 조건을 만족하면, 상기 블록 기반의 특징점 추출 단계를 수행할 수 있다.
이 경우에. 상기 조도 정보가 상기 저조도 환경으로 설정된 조건을 만족하지 않으면, 포인트(point) 기반의 위치 인식을 수행할 수 있다. 본 발명의 일 측면에 따르면, 상기 조도 정보가 상기 저조도 환경으로 설정된 조건을 만족하지 않으면, 상기 획득된 영상에서 특징점을 추출하는 포인트(point) 기반의 특징점 추출 단계, 상기 포인트 기반의 특징점 추출 단계에서 추출된 특징점을 상기 맵에 등록된 포인트 기반의 특징점 정보와 매칭하는 단계, 및, 상기 포인트 기반의 특징점 매칭 결과에 기초하여 상기 현재 위치를 인식하는 단계를 더 포함할 수 있다.
한편, 포인트 기반의 특징점 추출 단계는, 상기 추출된 특징점 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성에 기초하여 상기 추출된 특징점에 대응하는 디스크립터(descriptor)를 생성할 수 있다.
본 발명의 일 측면에 따르면, 현재 위치를 인식하는 단계는, 상기 블록 기반의 특징점 매칭에 기초하여 위치 후보인 복수의 파티클(particle)을 설정하고, 상기 복수의 파티클에 대한 가중치(weight)를 산출하며, 상기 복수의 파티클의 가중치에 기초하여 상기 현재 위치를 결정하고, 상기 복수의 파티클을 리샘플링(resampling)할 수 있다.
본 발명의 실시예들 중 적어도 하나에 의하면, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 조명, 조도, 시간대, 사물 위치 변화 등의 다양한 환경 변화에 대해 강인한 맵을 생성할 수 있다.
또한, 본 발명의 실시예들 중 적어도 하나에 의하면, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 맵 상 이동 로봇의 위치를 정확하게 인식할 수 있다.
또한, 본 발명의 실시예들 중 적어도 하나에 의하면, 저조도 환경에서도 동작할 수 있는 비전(Vision) 슬램 기술을 구현할 수 있다.
또한, 본 발명의 실시예들 중 적어도 하나에 의하면, 블록 기반의 특징점 추출 및 매칭을 이용하여 저조도 환경에서도 우수한 슬램 기술을 제공할 수 있다.
또한, 본 발명의 실시예들 중 적어도 하나에 의하면, 다양한 환경 변화에 대응할 수 있는 하나의 맵과 정확한 위치 인식에 기초하여 효율적인 주행 및 청소를 수행할 수 있다.
한편, 그 외의 다양한 효과는 후술될 본 발명의 실시예에 따른 상세한 설명에서 직접적 또는 암시적으로 개시될 것이다.
도 1은 본 발명의 일 실시예에 따른 이동 로봇을 도시하는 사시도이다.
도 2는 도 1의 이동 로봇의 평면도이다.
도 3은 도 1의 이동 로봇의 측면도이다.
도 4는 본 발명의 일 실시예에 따른 이동 로봇의 주요 구성들 간의 제어관계를 도시한 블록도이다.
도 5는 본 발명의 일 실시예에 따른 이동 로봇의 제어 방법을 도시한 순서도이다.
도 6 내지 도 9는 도 5의 제어 방법에 관한 설명에 참조되는 도면이다.
도 10 내지 도 13은 본 발명의 일 실시예에 따른 위치 인식에 관한 설명에 참조되는 도면이다.
도 14와 도 15는 본 발명의 일 실시예에 따른 블록 단위의 특징점 추출 및 매칭에 관한 설명에 참조되는 도면이다.
도 16 내지 도 21은 본 발명의 다양한 실시예에 따른 이동 로봇의 제어 방법을 도시한 순서도이다.
도 2는 도 1의 이동 로봇의 평면도이다.
도 3은 도 1의 이동 로봇의 측면도이다.
도 4는 본 발명의 일 실시예에 따른 이동 로봇의 주요 구성들 간의 제어관계를 도시한 블록도이다.
도 5는 본 발명의 일 실시예에 따른 이동 로봇의 제어 방법을 도시한 순서도이다.
도 6 내지 도 9는 도 5의 제어 방법에 관한 설명에 참조되는 도면이다.
도 10 내지 도 13은 본 발명의 일 실시예에 따른 위치 인식에 관한 설명에 참조되는 도면이다.
도 14와 도 15는 본 발명의 일 실시예에 따른 블록 단위의 특징점 추출 및 매칭에 관한 설명에 참조되는 도면이다.
도 16 내지 도 21은 본 발명의 다양한 실시예에 따른 이동 로봇의 제어 방법을 도시한 순서도이다.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 그러나 본 발명이 이러한 실시예에 한정되는 것은 아니며 다양한 형태로 변형될 수 있음은 물론이다.
한편, 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 단순히 본 명세서 작성의 용이함만이 고려되어 부여되는 것으로서, 그 자체로 특별히 중요한 의미 또는 역할을 부여하는 것은 아니다. 따라서, 상기 "모듈" 및 "부"는 서로 혼용되어 사용될 수도 있다.
또한, 본 명세서에서, 다양한 요소들을 설명하기 위해 제1, 제2 등의 용어가 이용될 수 있으나, 이러한 요소들은 이러한 용어들에 의해 제한되지 아니한다. 이러한 용어들은 한 요소를 다른 요소로부터 구별하기 위해서만 이용된다.
본 발명의 일 실시예에 따른 이동 로봇(100)은 바퀴 등을 이용하여 스스로 이동이 가능한 로봇을 의미하고, 가정 도우미 로봇 및 로봇 청소기 등이 될 수 있다. 이하에서는, 도면들을 참조하여, 이동 로봇 중 청소 기능을 가지는 로봇 청소기를 예로 들어 설명하나, 본 발명은 이에 한정되지 않는다.
도 1은 본 발명의 일 실시예에 따른 이동 로봇을 도시하는 사시도이고, 도 2는 도 1의 이동 로봇의 평면도이며, 도 3은 도 1의 이동 로봇의 측면도이다.
도 1 내지 도 3을 참고하여, 이동 로봇(100)은 일정 영역을 스스로 주행할 수 있다. 이동 로봇(100)은 바닥을 청소하는 기능을 수행할 수 있다. 여기서 말하는 바닥의 청소에는, 바닥의 먼지(이물질을 포함한다)를 흡입하거나 바닥을 걸레질하는 것이 포함된다.
이동 로봇(100)은 본체(110)를 포함한다. 본체(110)는 외관을 형성하는 케비닛을 포함한다. 이동 로봇(100)은, 본체(110)에 구비된 흡입 유닛(130) 및 먼지통(140)을 포함할 수 있다. 이동 로봇(100)은 이동 로봇 주변의 환경과 관련된 정보를 감지하는 영상획득부(120)를 포함한다. 이동 로봇(100)은 상기 본체를 이동시키는 주행부(160)를 포함한다. 이동 로봇(100)은 이동 로봇(100)의 제어를 위한 제어부(150)를 포함한다. 제어부(150)는 본체(110)에 구비된다.
주행부(160)는 이동 로봇(100)의 주행을 위한 휠 유닛(111)을 포함한다. 휠 유닛(111)은 본체(110)에 구비된다. 휠 유닛(111)에 의해 이동 로봇(100)은 전후좌우로 이동되거나 회전될 수 있다. 제어부가 휠 유닛(111)의 구동을 제어함으로써, 이동 로봇(100)은 바닥을 자율 주행할 수 있다. 휠 유닛(111)은 메인 휠(111a) 및 서브 휠(111b)을 포함한다.
메인 휠(111a)은 본체(110)의 양측에 각각 구비되어, 제어부의 제어 신호에 따라 일 방향 또는 타 방향으로 회전 가능하게 구성된다. 각각의 메인 휠(111a)은 서로 독립적으로 구동 가능하게 구성될 수 있다. 예를 들어, 각각의 메인 휠(111a)은 서로 다른 모터에 의해서 구동될 수 있다.
서브 휠(111b)은 메인 휠(111a)과 함께 본체(110)를 지지하며, 메인 휠(111a)에 의한 이동 로봇(100)의 주행을 보조하도록 이루어진다. 이러한 서브 휠(111b)은 후술하는 흡입 유닛(130)에도 구비될 수 있다.
흡입 유닛(130)은 본체(110)의 전방(F)으로부터 돌출된 형태로 배치될 수 있다. 흡입 유닛(130)은 먼지가 포함된 공기를 흡입하도록 구비된다.
흡입 유닛(130)이 본체(110)의 전방에서 좌우 양측방으로 돌출된 형태를 가질 수 있다. 흡입 유닛(130)의 전단부는 본체(110)의 일측으로부터 전방으로 이격된 위치에 배치될 수 있다. 흡입 유닛(130)의 좌우 양단부는 본체(110)로부터 좌우 양측으로 각각 이격된 위치에 배치될 수 있다.
본체(110)는 원형으로 형성되고, 흡입 유닛(130)의 후단부 양측이 본체(110)로부터 좌우 양측으로 각각 돌출 형성됨에 따라, 본체(110)와 흡입 유닛(130) 사이에는 빈 공간, 즉 틈이 형성될7 수 있다. 상기 빈 공간은 본체(110)의 좌우 양단부와 흡입 유닛(130)의 좌우 양단부 사이의 공간으로서, 이동 로봇(100)의 내측으로 함몰된 형태를 가진다.
흡입 유닛(130)은 본체(110)에 착탈 가능하게 결합될 수 있다. 흡입 유닛(130)이 본체(110)로부터 분리되면, 분리된 흡입 유닛(130)을 대체하여 걸레 모듈(미도시)이 본체(110)에 착탈 가능하게 결합될 수 있다.
영상획득부(120)는 본체(110)에 배치될 수 있다. 영상획득부(120)는 본체(110)의 전방(F)에 배치될 수 있다. 영상획득부(120)는 본체(110)의 상하 방향으로 흡입 유닛(130)과 오버랩(overlap)되도록 배치될 수 있다. 영상획득부(120)는 흡입 유닛(130)의 상부에 배치될 수 있다.
영상획득부(120)는 이동 로봇(100) 주변의 장애물을 감지할 수 있다. 영상획득부(120)는 이동 로봇(100)의 가장 앞쪽에 위치하는 흡입 유닛(130)이 장애물과 부딪히지 않도록 전방의 장애물이나 지형지물 등을 감지할 수 있다. 영상획득부(120)는 이러한 감지 기능 외의 후술할 다른 센싱 기능을 추가로 수행할 수 있다.
또한, 본 발명의 일 실시예에 따른 이동 로봇(100)의 영상획득부(120)는, 본체(110)의 일면에 대하여 경사지게 배치되어 전방과 상방을 함께 촬영하도록 구성된 카메라 센서를 포함할 수 있다. 즉, 하나의 카메라 센서로 전방과 상방을 함께 촬영할 수 있다. 이 경우에 제어부(150)는 카메라가 촬영하여 획득한 영상에서 전방 영상과 상방 영상을 화각을 기준으로 분리할 수 있다. 분리된 전방 영상은 비전(vision) 기반의 사물 인식에 사용될 수 있다. 또한, 분리된 상방 영상은 비전(vision) 기반의 위치 인식 및 주행에 사용될 수 있다.
본 발명에 따른 이동 로봇(100)은 주변의 이미지를 이미지 기반의 기저장된 정보와 비교하거나 획득되는 이미지들을 비교하여 현재 위치를 인식하는 비전 슬램(Simultaneous Localization and Mapping, SLAM)을 수행할 수 있다.
본체(110)에는 먼지통 수용부(미도시)가 구비될 수 있다. 먼지통 수용부에는 흡입된 공기 중의 먼지를 분리하여 집진하는 먼지통(140)이 착탈 가능하게 결합된다. 먼지통 수용부는 본체(110)의 후방(R)에 형성될 수 있다. 먼지통(140)의 일부는 먼지통 수용부에 수용되되, 먼지통(140)의 다른 일부는 본체(110)의 후방(R)을 향하여 돌출되게 형성될 수 있다.
먼지통(140)에는 먼지가 포함된 공기가 유입되는 입구(미도시)와 먼지가 분리된 공기가 배출되는 출구(미도시)가 형성된다. 먼지통 수용부에 먼지통(140)이 장착시 먼지통(140)의 상기 입구와 상기 출구는 먼지통 수용부의 내측벽에 형성된 제1 개구(미도시) 및 제2 개구(미도시)와 각각 연통되도록 구성된다.
흡입 유닛(130)의 흡입구부터 상기 제1 개구까지 공기를 안내하는 흡입 유로(미도시)가 구비된다. 상기 제2 개구부터 외부를 향해 열린 배기구(미도시)까지 공기를 안내하는 배기 유로(미도시)가 구비된다.
흡입 유닛(130)을 통하여 유입된 먼지가 포함된 공기는 본체(110) 내부의 상기 흡기유로를 거쳐, 먼지통(140)으로 유입되고, 먼지통(140)의 필터 내지는 사이클론을 거치면서 공기와 먼지가 상호 분리된다. 먼지는 먼지통(140)에 집진되며, 공기는 먼지통(140)에서 배출된 후 본체(110) 내부의 상기 배기유로를 거쳐 최종적으로 상기 배기구를 통하여 외부로 배출된다.
도 4는 본 발명의 일 실시예에 따른 이동 로봇의 주요 구성들 간의 제어관계를 도시한 블록도이다.
도 1 내지 도 4를 참조하면, 이동 로봇(100)은, 본체(110)와, 본체(110) 주변의 영상을 획득하는 영상획득부(120)를 포함한다.
이동 로봇(100)은 본체(110)를 이동시키는 주행부(160)를 포함한다. 주행부(160)는 본체(110)를 이동시키는 적어도 하나의 휠 유닛(111)을 포함한다. 주행부(160)는 휠 유닛(111)에 연결되어 휠 유닛(111)을 회전시키는 구동 모터(미도시)를 포함한다.
영상획득부(120)는 주행구역을 촬영하는 것으로, 카메라 모듈을 포함할 수 있다. 상기 카메라 모듈은 디지털 카메라를 포함할 수 있다. 디지털 카메라는 적어도 하나의 광학렌즈와, 광학렌즈를 통과한 광에 의해 상이 맺히는 다수개의 광다이오드(photodiode, 예를 들어, pixel)를 포함하여 구성된 이미지센서(예를 들어, CMOS image sensor)와, 광다이오드들로부터 출력된 신호를 바탕으로 영상을 구성하는 디지털 신호 처리기(DSP: Digital Signal Processor)를 포함할 수 있다. 디지털 신호 처리기는 정지영상은 물론이고, 정지영상으로 구성된 프레임들로 이루어진 동영상을 생성하는 것도 가능하다.
이러한 카메라는 촬영 효율을 위해 각 부위별로 여러 개가 설치될 수도 있다. 카메라에 의해 촬상된 영상은 해당 공간에 존재하는 먼지, 머리카락, 바닥 등과 같은 물질의 종류 인식, 청소 여부, 또는 청소 시점을 확인하는데 사용할 수 있다.
카메라는 이동 로봇(100)의 주행 방향 전면에 존재하는 장애물 또는 청소 영역의 상황을 촬영할 수 있다.
본 발명의 일 실시예에 따르면, 상기 영상획득부(120)는 본체(110) 주변을 연속적으로 촬영하여 복수의 영상을 획득할 수 있고, 획득된 복수의 영상은 저장부(105)에 저장될 수 있다.
이동 로봇(100)은 복수의 영상을 이용하여 공간 인식, 위치 인식, 장애물 인식의 정확성을 높이거나, 복수의 영상 중 하나 이상의 영상을 선택하여 효과적인 데이터를 사용함으로써 공간 인식, 위치 인식, 장애물 인식의 정확성을 높일 수 있다.
또한, 이동 로봇(100)은 이동 로봇의 동작, 상태와 관련된 각종 데이터를 센싱하는 센서들을 포함하는 센서부(170)를 포함할 수 있다.
예를 들어, 상기 센서부(170)는 전방의 장애물을 감지하는 장애물 감지 센서를 포함할 수 있다. 또한, 상기 센서부(170)는 주행구역 내 바닥에 낭떠러지의 존재 여부를 감지하는 낭떠러지 감지센서와, 바닥의 영상을 획득하는 하부 카메라 센서를 더 포함할 수 있다.
상기 장애물 감지 센서는, 적외선 센서, 초음파 센서, RF 센서, 지자기 센서, PSD(Position Sensitive Device) 센서 등을 포함할 수 있다.
한편, 상기 장애물 감지 센서에 포함되는 센서의 위치와 종류는 이동 로봇의 기종에 따라 달라질 수 있고, 상기 장애물 감지 센서는 더 다양한 센서를 포함할 수 있다.
한편, 상기 센서부(170)는 본체(110)의 구동에 따른 이동 로봇(100)의 주행 동작을 감지하고 동작 정보를 출력하는 주행 감지 센서를 더 포함할 수 있다. 주행 감지 센서로는, 자이로 센서(Gyro Sensor), 휠 센서(Wheel Sensor), 가속도 센서(Acceleration Sensor) 등을 사용할 수 있다. 주행 감지 센서 중 적어도 하나에서 감지되는 데이터 또는 주행 감지 센서 중 적어도 하나에서 감지되는 데이터에 기초하여 산출되는 데이터는 오도메트리(odometry) 정보를 구성할 수 있다.
자이로 센서는, 이동 로봇(100)이 운전 모드에 따라 움직일 때 회전 방향을 감지하고 회전각을 검출한다. 자이로 센서는, 이동 로봇(100)의 각속도를 검출하여 각속도에 비례하는 전압 값을 출력한다. 제어부(150)는 자이로 센서로부터 출력되는 전압 값을 이용하여 회전 방향 및 회전각을 산출한다.
휠 센서는, 휠 유닛(111)에 연결되어 바퀴의 회전수를 감지한다. 여기서, 휠 센서는 엔코더(Encoder)일 수 있다.
제어부(140)는 회전수를 이용하여 좌, 우측 바퀴의 회전 속도를 연산할 수 있다. 또한, 제어부(140)는 좌, 우측 바퀴의 회전수 차이를 이용하여 회전각을 연산할 수 있다.
가속도 센서는, 이동 로봇(100)의 속도 변화, 예를 들어, 출발, 정지, 방향 전환, 물체와의 충돌 등에 따른 이동 로봇(100)의 변화를 감지한다.
또한, 가속도 센서는 제어부(150)에 내장되어 이동 로봇(100)의 속도 변화를 감지할 수 있다.
제어부(150)는 주행 감지 센서로부터 출력된 동작 정보에 기초하여 이동 로봇(100)의 위치 변화를 산출할 수 있다. 이러한 위치는 영상 정보를 이용한 절대 위치에 대응하여 상대 위치가 된다. 이동 로봇은 이러한 상대 위치 인식을 통해 영상 정보와 장애물 정보를 이용한 위치 인식의 성능을 향상시킬 수 있다.
한편, 이동 로봇(100)은 충전 가능한 배터리를 구비하여 이동 로봇 내로 전원을 공급하는 전원 공급부(미도시)를 포함할 수 있다.
상기 전원 공급부는 이동 로봇(100)의 각 구성 요소들에 구동 전원과, 동작 전원을 공급하며, 전원 잔량이 부족하면 충전대(미도시)에서 전원을 공급받아 충전될 수 있다.
이동 로봇(100)은 배터리의 충전 상태를 감지하고, 감지 결과를 제어부(150)에 전송하는 배터리 감지부(미도시)를 더 포함할 수 있다. 배터리는 배터리 감지부와 연결되어 배터리 잔량 및 충전 상태가 제어부(150)에 전달된다. 배터리 잔량은 출력부(180)의 디스플레이(182)에 표시될 수 있다.
또한, 이동 로봇(100)은 온/오프(On/Off) 또는 각종 명령을 입력할 수 있는 입력부(125)를 포함한다. 입력부(125)는 버튼이나 다이얼, 터치 스크린 등을 포함할 수 있다. 입력부(125)는 사용자의 음성 지시를 입력 받기 위한 마이크를 포함할 수 있다. 입력부(125)를 통해 이동 로봇(100)의 작동 전반에 필요한 각종 제어명령을 입력받을 수 있다.
또한, 이동 로봇(100)은 출력부(180)를 포함하여, 예약 정보, 배터리 상태, 동작모드, 동작상태, 에러상태 등을 이미지로 표시하거나 음향으로 출력할 수 있다.
출력부(180)는 오디오 신호를 출력하는 음향 출력부(181)를 포함할 수 있다. 음향 출력부(181)는 제어부(150)의 제어에 따라 경고음, 동작모드, 동작상태, 에러상태 등의 알림 메시지 등을 음향으로 출력할 수 있다. 음향 출력부(181)는, 제어부(150)로부터의 전기 신호를 오디오 신호로 변환하여 출력할 수 있다. 이를 위해, 스피커 등을 구비할 수 있다.
또한, 출력부(180)는 예약 정보, 배터리 상태, 동작모드, 동작상태, 에러상태 등을 이미지로 표시하는 디스플레이(182)를 더 포함할 수 있다.
도 4를 참조하면, 이동 로봇(100)은 현재 위치를 인식하는 등 각종 정보를 처리하고 판단하는 제어부(150), 및 각종 데이터를 저장하는 저장부(105)를 포함한다. 또한, 이동 로봇(100)은 외부 단말기와 데이터를 송수신하는 통신부(190)를 더 포함할 수 있다.
외부 단말기는 이동 로봇(100)을 제어하기 위한 애플리케이션을 구비하고, 애플리케이션의 실행을 통해 이동 로봇(100)이 청소할 주행구역에 대한 맵을 표시하고, 맵 상에 특정 영역을 청소하도록 영역을 지정할 수 있다. 외부 단말기는 맵 설정을 위한 애플리케이션(application)이 탑재된 리모콘, PDA, 랩탑(laptop), 스마트 폰, 태블릿 등을 예로 들 수 있다.
외부 단말기는 이동 로봇(100)과 통신하여, 맵과 함께 이동 로봇의 현재 위치를 표시할 수 있으며, 복수의 영역에 대한 정보가 표시될 수 있다. 또한, 외부 단말기는 이동 로봇의 주행에 따라 그 위치를 갱신하여 표시한다.
제어부(150)는 이동 로봇(100)를 구성하는 영상획득부(120), 입력부(125), 주행부(160), 흡입 유닛(130) 등을 제어하여, 이동 로봇(100)의 동작 전반을 제어한다.
제어부(150)는 입력부(125)의 마이크를 통해 수신되는 사용자의 음성 입력 신호를 처리하고 음성 인식 과정을 수행할 수 있다. 실시예에 따라서, 이동 로봇(100)은 제어부(150) 내부 또는 외부에 음성 인식을 수행하는 음성 인식 모듈을 구비할 수 있다.
실시예에 따라서, 간단한 음성 인식은 이동 로봇(100)이 자체적으로 수행하고, 자연어 처리 등 고차원의 음성 인식은 서버(70)에서 수행될 수 있다.
저장부(105)는 이동 로봇(100)의 제어에 필요한 각종 정보들을 기록하는 것으로, 휘발성 또는 비휘발성 기록 매체를 포함할 수 있다. 기록 매체는 마이크로 프로세서(micro processor)에 의해 읽힐 수 있는 데이터를 저장한 것으로, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등을 포함할 수 있다.
또한, 저장부(105)에는 주행구역에 대한 맵(Map)이 저장될 수 있다. 맵은 이동 로봇(100)과 유선 또는 무선 통신을 통해 정보를 교환할 수 있는 외부 단말기, 서버 등에 의해 입력된 것일 수도 있고, 이동 로봇(100)이 스스로 학습을 하여 생성한 것일 수도 있다.
맵에는 주행구역 내의 방들의 위치가 표시될 수 있다. 또한, 이동 로봇(100)의 현재 위치가 맵 상에 표시될 수 있으며, 맵 상에서의 이동 로봇(100)의 현재의 위치는 주행 과정에서 갱신될 수 있다. 외부 단말기는 저장부(105)에 저장된 맵과 동일한 맵을 저장한다.
상기 저장부(105)는 청소 이력 정보를 저장할 수 있다. 이러한 청소 이력 정보는 청소를 수행할 때마다 생성될 수 있다.
상기 저장부(105)에 저장되는 주행구역에 대한 맵(Map)은, 주행구역의 소정 정보들을 소정 형식으로 저장한 데이터로서, 청소 중 주행에 사용되는 내비게이션 맵(Navigation map), 위치 인식에 사용되는 SLAM(Simultaneous localization and mapping) 맵, 장애물 등에 부딪히면 해당 정보를 저장하여 학습 청소시 사용하는 학습 맵, 전역 위치 인식에 사용되는 전역 위치 맵, 인식된 장애물에 관한 정보가 기록되는 장애물 인식 맵 등일 수 있다.
상기 맵(Map)은 복수의 노드를 포함하는 노드맵을 의미할 수 있다. 여기서, 노드(Node)란, 주행구역 내의 어느 한 위치인 지점에 대응하는 맵 상의 어느 한 위치를 나타내는 데이터를 의미할 수 있고, 그래프(graph) 기반의 슬램에서 노드는 로봇의 포즈(pose)를 의미할 수 있다. 또한, 포즈(pose)는 좌표계상의 위치 좌표 정보(X, Y)와 방향 정보(θ)를 포함할 수 있다.
상기 노드맵은, 각 노드에 대응하는 각종 데이터인 노드 정보를 포함할 수 있다. 예를 들어, 노드 정보는 위치 정보, 노드에 대응하는 지점에서 획득한 영상 정보 등을 포함할 수 있다. 위치 정보(X, Y, θ)는, 대응하는 노드에서의 로봇의 X 좌표(X), 로봇의 Y 좌표(Y), 방향(Direction) 정보(θ)를 포함할 수 있다. 방향 정보(θ)는 각도 정보 등으로도 명명될 수 있다.
한편, 상술한 바와 같이 용도별로 상기 저장부(105)에 맵들을 구분하여 저장, 관리할 수 있지만, 맵이 용도별로 명확히 구분되지 않을 수도 있다. 예를 들어, 적어도 2 이상의 용도로 사용할 수 있도록 하나의 맵에 복수의 정보를 저장할 수도 있다.
제어부(150)는 주행제어모듈(151), 지도생성모듈(152), 위치인식모듈(153) 및 장애물인식모듈(154)을 포함할 수 있다.
도 1 내지 도 4를 참조하면, 주행제어모듈(151)은 이동 로봇(100)의 주행을 제어하는 것으로, 주행 설정에 따라 주행부(160)의 구동을 제어한다. 또한, 주행제어모듈(151)은 주행부(160)의 동작을 바탕으로 이동 로봇(100)의 주행경로를 파악할 수 있다. 예를 들어, 주행제어모듈(151)은 휠 유닛(111)의 회전속도를 바탕으로 이동 로봇(100)의 현재 또는 과거의 이동속도, 주행한 거리 등을 파악할 수 있으며, 이렇게 파악된 이동 로봇(100)의 주행 정보를 바탕으로, 맵 상에서 이동 로봇(100)의 위치가 갱신될 수 있다.
지도생성모듈(152)은 주행구역의 맵을 생성할 수 있다. 지도생성모듈(152)은 영상획득부(120)를 통해 획득한 영상을 처리하여 맵을 작성할 수 있다. 즉, 청소 영역과 대응되는 청소 맵을 작성할 수 있다.
또한, 지도생성모듈(152)은 각 위치에서 영상획득부(120)를 통해 획득한 영상을 처리하여 맵과 연계시켜 전역위치를 인식할 수 있다.
위치인식모듈(153)은 현재 위치를 추정하여 인식한다. 위치인식모듈(153)은 영상획득부(120)의 영상 정보를 이용하여 지도생성모듈(152)과 연계하여 위치를 파악함으로써, 이동 로봇(100)의 위치가 갑자기 변경되는 경우에도 현재 위치를 추정하여 인식할 수 있다.
또한, 위치인식모듈(153)은 현재 위치하는 영역의 속성을 인식할 수 있다, 즉, 위치인식모듈(153)는 공간을 인식할 수 있다.
이동 로봇(100)은 위치인식모듈(153)을 통해 연속적인 주행 중에 위치 인식이 가능하고 또한, 위치인식모듈(153) 없이 지도생성모듈(152) 및 장애물인식모듈(154)을 통해, 맵을 학습하고 현재 위치 등을 추정할 수 있다.
이동 로봇(100)이 주행하는 중에, 영상획득부(120)는 이동 로봇(100) 주변의 영상들을 획득한다. 이하, 영상획득부(120)에 의해 획득된 영상을 '획득영상'이라고 정의한다.
획득영상에는 천장에 위치하는 조명들, 경계(edge), 코너(corner), 얼룩(blob), 굴곡(ridge) 등의 여러가지 특징(feature)들이 포함된다.
지도생성모듈(152)은 획득영상들 각각으로부터 특징을 검출하고, 각 특징점을 근거로 디스크립터(descriptor)를 산출한다. 디스크립터(descriptor)는, 특징점을 나타내기 위한 소정 형식의 데이터를 의미하며 디스크립터들 간의 거리 또는 유사도가 산출 가능한 형식의 수학적 데이터를 의미한다. 예를 들어, 디스크립터는 n차원 벡터(n은 자연수) 또는 행렬 형식의 데이터일 수 있다.
또한, 본 발명의 일 실시예에 따르면 획득영상을 복수의 블록으로 분할하고 블록 단위로도 특징을 검출할 수 있다. 또한, 이 때 검출된 특징점을 근거로도 디스크립터를 산출할 수 있다.
이하에서 설명되는 획득영상에서 검출된 특징 및 디스크립터는 획득영상을 분할한 블록 단위의 영상에서 검출된 특징과 이에 근거한 디스크립터를 포함할 수 있다.
지도생성모듈(152)은 각 위치의 획득영상을 통해 얻은 디스크립터 정보를 바탕으로, 획득영상마다 적어도 하나의 디스크립터를 소정 하위 분류규칙에 따라 복수의 군으로 분류하고, 소정 하위 대표규칙에 따라 같은 군에 포함된 디스크립터들을 각각 하위 대표 디스크립터로 변환할 수 있다.
다른 예로, 실(room)과 같이 소정 구역내의 획득영상들로부터 모인 모든 디스크립터를 소정 하위 분류규칙에 따라 복수의 군으로 분류하여 상기 소정 하위 대표규칙에 따라 같은 군에 포함된 디스크립터들을 각각 하위 대표 디스크립터로 변환할 수도 있다.
지도생성모듈(152)은 이 같은 과정을 거쳐, 각 위치의 특징분포를 구할 수 있다. 각 위치 특징분포는 히스토그램 또는 n차원 벡터로 표현될 수 있다. 또 다른 예로, 지도생성모듈(152)은 소정 하위 분류규칙 및 소정 하위 대표규칙을 거치지 않고, 각 특징점으로부터 산출된 디스크립터를 바탕으로 미지의 현재위치를 추정할 수 있다.
또한, 위치 도약 등의 이유로 이동 로봇(100)의 현재 위치가 미지의 상태가 된 경우에, 기저장된 디스크립터 또는 하위 대표 디스크립터 등의 데이터를 근거로 현재 위치를 추정할 수 있다.
이동 로봇(100)은, 미지의 현재 위치에서 영상획득부(120)를 통해 획득영상을 획득한다. 영상을 통해 천장에 위치하는 조명들, 경계(edge), 코너(corner), 얼룩(blob), 굴곡(ridge) 등의 여러가지 특징(feature)들이 확인된다.
위치인식모듈(153)은 획득영상으로부터 특징들을 검출하고, 디스크립터를 산출한다.
위치인식모듈(153)은 미지의 현재 위치의 획득영상을 통해 얻은 적어도 하나의 디스크립터 정보를 근거로, 소정 하위 변환규칙에 따라 비교대상이 되는 위치 정보(예를 들면, 각 위치의 특징분포)와 비교 가능한 정보(하위 인식 특징분포)로 변환한다.
소정 하위 비교규칙에 따라, 각각의 위치 특징분포를 각각의 인식 특징분포와 비교하여 각각의 유사도를 산출할 수 있다. 각각의 위치에 해당하는 상기 위치 별로 유사도(확률)를 산출하고, 그 중 가장 큰 확률이 산출되는 위치를 현재위치로 결정할 수 있다. 이러한 유사도 산출은 블록 단위로도 수행될 수 있다.
이와 같이, 제어부(150)는 주행구역을 구분하고 복수의 영역으로 구성된 맵을 생성하거나, 기저장된 맵을 바탕으로 본체(110)의 현재 위치를 인식할 수 있다.
제어부(150)는 맵이 생성되면, 생성된 맵을 통신부(190)를 통해 외부 단말기, 서버 등으로 전송할 수 있다. 또한, 제어부(150)는 앞서 설명한 바와 같이, 외부 단말기, 서버 등으로부터 맵이 수신되면, 저장부(105)에 저장할 수 있다.
이때, 맵은 청소 영역을 복수의 영역으로 구분되고, 복수의 영역을 연결하는 연결통로가 포함하며, 영역 내의 장애물에 대한 정보를 포함할 수 있다.
제어부(150)는 청소명령이 입력되면, 맵 상의 위치와 이동 로봇의 현재위치가 일치하는지 여부를 판단한다. 청소명령은 리모컨, 입력부 또는 외부 단말기로부터 입력될 수 있다.
제어부(150)는 현재 위치가 맵 상의 위치와 일치하지 않는 경우, 또는 현재 위치를 확인할 수 없는 경우, 현재 위치를 인식하여 이동 로봇(100)의 현재 위치를 복구한 한 후, 현재 위치를 바탕으로 지정영역으로 이동하도록 주행부(160)를 제어할 수 있다.
현재 위치가 맵 상의 위치와 일치하지 않는 경우 또는 현재 위치를 확인할 수 없는 경우, 위치인식모듈(153)은 영상획득부(120)로부터 입력되는 획득영상을 분석하여 맵을 바탕으로 현재 위치를 추정할 수 있다. 또한, 장애물인식모듈(154) 또는 지도생성모듈(152) 또한, 같은 방식으로 현재 위치를 인식할 수 있다.
위치를 인식하여 이동 로봇(100)의 현재 위치를 복구한 후, 주행제어모듈(151)은 현재 위치로부터 지정영역으로 주행경로를 산출하고 주행부(160)를 제어하여 지정영역으로 이동한다.
서버로부터 청소 패턴 정보를 수신하는 경우, 주행제어모듈(151)은 수신한 청소 패턴 정보에 따라, 전체 주행구역을 복수의 영역으로 나누고, 하나 이상의 영역을 지정영역으로 설정할 수 있다.
또한, 주행제어모듈(151)은 수신한 청소 패턴 정보에 따라 주행경로를 산출하고, 주행경로를 따라 주행하며, 청소를 수행할 수 있다.
제어부(150)는 설정된 지정영역에 대한 청소가 완료되면, 청소기록을 저장부(105)에 저장할 수 있다.
또한, 제어부(150)는 통신부(190)를 통해 이동 로봇(100)의 동작상태 또는 청소상태를 소정 주기로 외부 단말기, 서버로 전송할 수 있다.
그에 따라 외부 단말기는 수신되는 데이터를 바탕으로, 실행중인 애플리케이션의 화면상에 맵과 함께 이동 로봇의 위치를 표시하고, 또한 청소 상태에 대한 정보를 출력한다.
본 발명의 실시예에 따른 이동 로봇(100)은 일방향으로 장애물이나 벽면이 감지될 때까지 이동하다가, 장애물인식모듈(154)이 장애물을 인식하면, 인식된 장애물의 속성에 따라 직진, 회전 등 주행 패턴을 결정할 수 있다.
한편, 제어부(150)는 인식된 장애물의 속성에 기초하여 다른 패턴으로 회피주행을 수행하도록 제어할 수 있다. 제어부(150)는 비위험 장애물(일반 장애물), 위험 장애물, 이동 가능한 장애물 등 장애물의 속성에 따라 다른 패턴으로 회피 주행하도록 제어할 수 있다.
예를 들어, 제어부(150)는 위험 장애물은 더 긴 거리의 안전 거리를 확보한 상태에서 우회하여 회피하도록 제어할 수 있다.
또한, 제어부(150)는 이동 가능한 장애물의 경우에 소정 대기 시간 후에도 장애물이 이동하지 않으면, 일반 장애물에 대응하는 회피 주행 또는 위험 장애물에 대응하는 회피 주행을 수행하도록 제어할 수 있다. 또는, 제어부(150)는 이동 가능한 장애물에 대응하는 회피 주행 패턴이 별도로 설정된 경우에는 이에 따라 주행하도록 제어할 수 있다.
본 발명의 실시예에 따른 이동 로봇(100)은, 머신 러닝(machine learning) 기반의 장애물 인식 및 회피를 수행할 수 있다.
상기 제어부(150)는, 입력 영상에서 머신 러닝(machine learning)으로 기학습된 장애물을 인식하는 장애물인식모듈(154)과 상기 인식된 장애물의 속성에 기초하여, 상기 주행부(160)의 구동을 제어하는 주행제어모듈(151)을 포함할 수 있다.
한편, 도 4에서는 복수의 모듈(151, 152, 153, 154)이 제어부(150) 내에 별도로 구비되는 예를 도시하였으나, 본 발명은 이에 한정되지 않는다.
예를 들어, 위치인식모듈(153)과 장애물인식모듈(154)은 하나의 인식기로써 통합되어 하나의 인식모듈(155)로 구성될 수 있다. 이 경우에, 머신 러닝 등의 학습 기법을 이용하여 인식기를 학습시키고, 학습된 인식기는 이후에 입력되는 데이터를 분류하여 영역, 사물 등의 속성을 인식할 수 있다.
실시예에 따라서, 지도생성모듈(152), 위치인식모듈(153), 및, 장애물인식모듈(154)이 하나의 통합모듈로 구성될 수도 있다.
이하에서는, 위치인식모듈(153)과 장애물인식모듈(154)은 하나의 인식기로써 통합되어 하나의 인식모듈(155)로 구성되는 실시예를 중심으로 설명하지만, 위치인식모듈(153)과 장애물인식모듈(154)이 각각 구비되는 경우에도 동일한 방식으로 동작할 수 있다.
본 발명의 실시예에 따른 이동 로봇(100)은, 머신 러닝으로 사물, 공간의 속성이 학습된 인식모듈(155)을 포함할 수 있다.
머신 러닝은 컴퓨터에게 사람이 직접 로직(Logic)을 지시하지 않아도 데이터를 통해 컴퓨터가 학습을 하고 이를 통해 컴퓨터가 알아서 문제를 해결하게 하는 것을 의미한다.
딥러닝(Deep Learning)은. 인공지능(artificial intelligence)을 구성하기 위한 인공신경망(Artificial Neural Networks: ANN)에 기반으로 해 컴퓨터에게 사람의 사고방식을 가르치는 방법으로 사람이 가르치지 않아도 컴퓨터가 스스로 사람처럼 학습할 수 있는 인공지능 기술이다.
상기 인공신경망(ANN)은 소프트웨어 형태로 구현되거나 칩(chip) 등 하드웨어 형태로 구현될 수 있다.
인식모듈(155)은 공간의 속성, 장애물 등 사물의 속성이 학습된 소프트웨어 또는 하드웨어 형태의 인공신경망(ANN)을 포함할 수 있다.
예를 들어, 인식모듈(155)은 딥러닝(Deep Learning)으로 학습된 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network), DBN(Deep Belief Network) 등 심층신경망(Deep Neural Network: DNN)을 포함할 수 있다.
인식모듈(155)은 상기 심층신경망(DNN)에 포함된 노드들 사이의 가중치(weight)들에 기초하여 입력되는 영상 데이터에 포함되는 공간, 사물의 속성을 판별할 수 있다.
한편, 상기 주행제어모듈(151)은 상기 인식된 공간, 장애물의 속성에 기초하여 상기 주행부(160)의 구동을 제어할 수 있다.
한편, 인식모듈(155)은, 머신 러닝(machine learning)으로 기학습된 데이터에 기초하여 상기 선택된 특정 시점 영상에 포함되는 공간, 장애물의 속성을 인식할 수 있다.
한편, 저장부(105)에는 공간, 사물 속성 판별을 위한 입력 데이터, 상기 심층신경망(DNN)을 학습하기 위한 데이터가 저장될 수 있다.
저장부(105)에는 영상획득부(120)가 획득한 원본 영상과 소정 영역이 추출된 추출 영상들이 저장될 수 있다.
또한, 실시예에 따라서는, 저장부(105)에는 상기 심층신경망(DNN) 구조를 이루는 웨이트(weight), 바이어스(bias)들이 저장될 수 있다.
또는, 실시예에 따라서는, 상기 심층신경망 구조를 이루는 웨이트(weight), 바이어스(bias)들은 인식모듈(155)의 임베디드 메모리(embedded memory)에 저장될 수 있다.
한편, 상기 인식모듈(155)은 상기 영상획득부(120)가 영상을 획득하거나 영상의 일부 영역을 추출할 때마다 소정 영상을 트레이닝(training) 데이터로 사용하여 학습 과정을 수행하거나, 소정 개수 이상의 영상이 획득된 후 학습 과정을 수행할 수 있다.
또는, 이동 로봇(100)은 통신부(190)를 통하여 상기 소정 서버로부터 머신 러닝과 관련된 데이터를 수신할 수 있다.
이 경우에, 이동 로봇(100)은, 상기 소정 서버로부터 수신된 머신 러닝과 관련된 데이터에 기초하여 인식모듈(155)을 업데이트(update)할 수 있다.
도 5는 본 발명의 일 실시예에 따른 이동 로봇의 제어 방법을 도시한 순서도로, 맵 생성 과정을 도시한 순서도이고, 도 6 내지 도 9는 도 5의 제어 방법에 관한 설명에 참조되는 도면이다.
도 6과 도 7은, 도 5의 주행 및 정보 획득 과정(S501), 노드 생성 과정(S502), 노드 맵 생성 과정(S503), 경계 생성 과정(S504), 경계맵 생성 과정(S505) 및 디스크립터 생성 과정(S506)을 예시적으로 도시한 개념도이다.
도 6에는, 상기 과정(S501)에서 획득한 영상과 영상 내의 복수의 특징점(f1, f2, f3, f4, f5, f6, f7)이 도시되고, 상기 과정(S506)에서 복수의 특징점(f1, f2, f3, ..., f7)에 각각 대응하는 n차원 벡터인 디스크립터()를 생성시키는 도식이 도시된다.
도 6과 도 7을 참고하여, 정보 획득 과정(S501)에서, 이동 로봇(100)이 주행하는 중에 영상획득부(120)는 각 지점에서 영상을 획득한다. 예를 들어, 영상획득부(120)는 이동 로봇(100)의 상측을 향해 촬영하여 천장 등의 영상을 획득할 수 있다.
또한. 정보 획득 과정(S501)에서, 이동 로봇(100)이 주행하는 중에 센서부(170), 영상획득부(120), 그 밖에 공지된 수단을 이용하여 주행 장애 요소를 감지할 수 있다.
이동 로봇(100)은 각 지점에서 주행 장애 요소를 감지할 수 있다. 예를 들어, 이동 로봇은 특정 지점에서 주행 장애 요소 중 하나인 벽체의 외측면을 감지할 수 있다.
도 6과 도 7을 참고하여, 노드 생성 과정(S502)에서, 이동 로봇(100)은 각 지점에 대응하는 노드를 생성한다. 노드(Na18, Na19, Na20)에 대응하는 좌표 정보는 이동 로봇(100)이 측정한 주행 변위를 근거로 생성될 수 있다.
주행 변위는, 이동 로봇의 이동 방향과 이동 거리를 포함하는 개념이다. 주행구역의 바닥면을 X축 및 Y축이 직교하는 평면 상에 있다고 가정할 때, 주행 변위는 ()로 표현할 수 있다. 는 각각 X축 및 Y축 방향으로의 변위를 의미하고, 는 회전 각도를 의미한다.
제어부(150)는, 주행부(160)의 동작을 근거로 이동 로봇(100)의 주행 변위를 측정할 수 있다. 예를 들어, 주행제어모듈(151)은 휠 유닛(111)의 회전속도를 근거로 이동 로봇(100)의 현재 또는 과거의 이동속도, 주행한 거리 등을 측정할 수 있으며, 휠 유닛(111)의 회전 방향에 따라 현재 또는 과거의 방향 전환 과정 또한 측정할 수 있다.
또한, 제어부(150)는 센서부(170)에서 센싱되는 데이터를 이용하여 상기 주행 변위를 측정하는 것도 가능하다.
도 6과 도 7을 참고하여, 경계 정보 생성 과정(S504)에서, 이동 로봇(100)은 주행 장애 요소에 대응하는 경계 정보(b20)를 생성한다. 경계 정보 생성 과정(S504)에서, 이동 로봇(100)은 각 주행 장애 요소에 각각 대응하는 각 경계 정보를 생성한다. 복수의 주행 장애 요소에 복수의 경계 정보가 일대일대응 한다. 경계 정보(b20)는 대응하는 노드의 좌표 정보와 센서부(170)가 측정한 거리값을 근거로 생성될 수 있다.
도 6과 도 7을 참고하여, 노드맵 생성 과정(S503) 및 경계맵 생성 과정(S505)은 동시에 진행된다. 노드맵 생성 과정(S503)에서 복수의 노드(Na18, Na19, Na20 등)를 포함하는 노드맵이 생성된다. 경계맵 생성 과정(S505)에서 복수의 경계 정보(b20 등)를 포함하는 경계맵(Ba)이 생성된다. 노드맵 생성 과정(S503) 및 경계맵 생성 과정(S505)에서 노드맵 및 경계맵(Ba)을 포함하는 맵(Ma)이 생성된다. 도 6에는, 노드맵 생성 과정(S503) 및 경계맵 생성 과정(S505)을 통해 생성 중인 맵(Ma)을 도시한다.
도 6에 도시된 영상에는, 천장에 위치하는 조명들, 경계(edge), 코너(corner), 얼룩(blob), 굴곡(ridge) 등에 의한 여러 가지 특징점들이 확인된다. 이동 로봇(100)은 영상으로부터 특징점을 추출한다. 컴퓨터 비전(Computer Vision) 기술 분야에서 영상으로부터 특징점을 추출하는 다양한 방법(Feature Detection)이 잘 알려져 있다. 이들 특징점의 추출에 적합한 여러 특징검출기(feature detector)들이 알려져 있다. 예를 들어, Canny, Sobel, Harris&Stephens/Plessey, SUSAN, Shi&Tomasi, Level curve curvature, FAST, Laplacian of Gaussian, Difference of Gaussians, Determinant of Hessian, MSER, PCBR, Grey-level blobs 검출기 등이 있다.
또한, 이러한 특징점 추출은 포인트(point) 기반으로 수행될 수 있고, 블록(block) 단위로도 수행 가능하다.
도 6을 참고하여, 디스크립터 생성 과정(S506)에서, 획득된 영상에서 추출된 복수의 특징점(f1, f2, f3, ..., f7)을 근거로 디스크립터()를 생성한다. 상기 디스크립터 생성 과정(S506)에서, 획득된 복수의 영상에서 추출된 복수의 특징점(f1, f2, f3, ..., fm)을 근거로 디스크립터()를 생성한다. (여기서, m은 자연수) 복수의 특징점(f1, f2, f3, ..., fm)에 복수의 디스크립터()는 일대일대응 한다.
은 n차원 벡터를 의미한다. 의 중괄호 { } 안의 f1(1), f1(2), f1(3), ..., f1(n)은 을 이루는 각 차원의 수치를 의미한다. 나머지 에 대한 표기도 이와 같은 방식이므로 설명을 생략한다.
특징 검출을 위해 SIFT(Scale Invariant Feature Transform) 기법을 이용하여, 복수의 특징점(f1, f2, f3, ..., fm)에 대응하는 복수의 디스크립터()를 생성할 수 있다.
예를 들면, SIFT기법을 적용하여, 영상에서 식별이 용이한 특징점(f1, f2, f3, f4, f5, f6, f7)을 선택한 후, 각 특징점(f1, f2, f3, f4, f5, f6, f7) 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성(밝기 변화의 방향 및 변화의 급격한 정도)을 근거로 n차원 벡터인 디스크립터를 생성할 수 있다. 여기서, 특징점의 각 밝기 변화의 방향을 각 차원으로 보고, 각 밝기 변화의 방향에 대한 변화의 급격한 정도를 각 차원에 대한 수치로 하는 n차원 벡터(디스크립터)를 생성할 수 있다. SIFT 기법은 촬영 대상의 스케일(scale), 회전, 밝기변화에 대해서 불변하는 특징을 검출할 수 있어, 같은 영역을 이동 로봇(100)의 자세를 달리하며 촬영하더라도 불변하는(즉, 회전 불변한(Rotation-invariant)) 특징을 검출할 수 있다. 물론, 이에 한정되지 않고 다른 다양한 다른 기법(예를 들어, HOG: Histogram of Oriented Gradient, Haar feature, Fems, LBP:Local Binary Pattern, MCT:Modified Census Transform)들이 적용하는 것도 가능하다.
한편, 블록 단위로도 차원 벡터인 디스크립터를 생성할 수 있다. 예를 들어, 각 블록의 밝기 구배(gradient)의 분포 특성(밝기 변화의 방향 및 변화의 급격한 정도)에 기초하여 n차원 디스크립터를 새성할 수 있다.
도 8은, 이동 로봇이 이동하면서 생성하는 복수의 노드(N) 및 노드들 간의 변위(C)를 도시한 개념도이다.
도 8을 참고하여, 원점 노드(O)가 설정된 상태에서 주행 변위(C1)가 측정되어 노드(N1)의 정보가 생성된다. 이후 측정된 주행 변위(C2)의 시점이 되는 노드(N1)의 좌표 정보에 상기 주행 변위(C2)를 더하여, 상기 주행 변위(C2)의 종점이 되는 노드(N2)의 좌표 정보를 생성할 수 있다. 노드(N2)의 정보가 생성된 상태에서 주행 변위(C3)가 측정되어 노드(N3)의 정보가 생성된다. 이와 같이 순차적으로 측정되는 주행 변위들(C1, C2, C3, …, C16)을 근거로 순차적으로 노드들(N1, N2, N3, …, N16)의 정보가 생성된다.
어느 하나의 주행 변위(C15)의 시점이 되는 노드(C15)를 해당 주행 변위(C15)의 종점이 되는 노드(16)의 '기초 노드'라고 정의할 때, 루프 변위(Loop Constraint, LC)는 어느 한 노드(N15) 및 상기 어느 한 노드(N15)의 상기 '기초 노드(N14)가 아닌' 다른 인접한 노드(N5) 사이의 변위가 측정된 값을 의미한다.
일 예로, 어느 한 노드(N15)에 대응하는 획득영상 정보와 다른 인접한 노드(N5)에 대응하는 획득영상 정보가 서로 비교되어 두 노드(N15, N5) 사이의 루프 변위(LC)가 측정될 수 있다. 다른 예로, 어느 한 노드(N15)의 주변 환경과의 거리 정보와 다른 인접한 노드(N5)의 주변 환경과의 거리 정보가 서로 비교되어 두 노드(N15, N5) 사이의 루프 변위(LC)가 측정될 수 있다. 도 8에는, 노드 N5와 노드 N15 사이에서 측정된 루프 변위(LC1), 및 노드 N4와 노드 N16 사이에서 측정된 루프 변위(LC2)가 예시적으로 도시되어 있다.
상기 주행 변위를 근거로 생성된 어느 한 노드(N5)의 정보는 노드 좌표 정보 및 해당 노드에 대응하는 영상 정보를 포함할 수 있다. 노드(N5)에 인접하는 다른 노드(N15)가 있을 때, 노드(N15)에 대응하는 영상 정보를 노드(N5)에 대응하는 영상 정보와 비교하면 두 노드(N5, N15) 사이의 루프 변위(LC1)가 측정된다. '루프 변위(LC1)'와 '기저장된 두 노드(N5, N15)의 좌표 정보에 따라 산출되는 변위'가 서로 다를 경우, 노드 좌표 정보에 오차가 있는 것으로 보고, 두 노드(N5, N15)의 좌표 정보를 갱신할 수 있다. 이 경우, 두 노드(N5, N15)와 연결된 다른 노드들(N6, N7, N8, N9, N10, N11, N12, N13, N14)의 좌표 정보도 갱신될 수 있다. 또한, 한번 갱신된 노드 좌표 정보도 계속해서 상기 과정을 거쳐 거듭 갱신될 수 있다.
보다 구체적으로 설명하면 다음과 같다. 루프 변위(LC)가 측정된 두 노드(N)를 각각 제1 루프 노드 및 제2 루프 노드라고 정의한다. 기저장된 제1 루프 노드의 노드 좌표 정보 및 제2 루프 노드의 노드 좌표 정보에 의해 산출되는 '산출 변위()'(좌표값의 차에 의해 산출됨)가 루프 변위(LC)()와 차이(1-)가 발생할 수 있다. 상기 차이가 발생하면, 상기 차이를 오차로 보고 노드 좌표 정보를 갱신할 수 있는데, 루프 변위(LC)가 상기 산출 변위보다 더 정확한 값이라는 가정하에 노드 좌표 정보를 갱신한다.
노드 좌표 정보를 갱신하는 경우, 상기 제1 루프 노드 및 제2 루프 노드의 노드 좌표 정보만 갱신할 수도 있으나, 상기 오차의 발생은 주행 변위들의 오차가 누적되어 발생된 것이므로 상기 오차를 분산시켜 다른 노드들의 노드 좌표 정보도 갱신하도록 설정할 수 있다. 예를 들어, 상기 제1 루프 노드와 제2 루프 노드 사이에 상기 주행 변위에 의해 생성된 모든 노드들에, 상기 오차 값을 분산시켜 노드 좌표 정보를 갱신할 수 있다. 도 8을 참고하여, 루프 변위(LC1)가 측정되고 상기 오차가 산출된 경우, 제1 루프 노드(N15)와 제2 루프 노드(N5)와 사이의 노드들(N6 내지 N14)에 상기 오차를 분산시켜, 노드들(N5 내지 N15)의 노드 좌표 정보가 모두 조금씩 갱신될 수 있다. 물론, 이러한 오차 분산을 확대시켜, 이외의 노드들(N1 내지 N4)의 노드 좌표 정보를 같이 갱신할 수도 있음은 물론이다.
도 9는 제1 맵(Ma)의 일 예를 도시한 개념도로서, 생성된 노드맵을 포함하고 있는 그림이다. 도 9에는, 도 5에 따른 맵 생성 과정을 거쳐 생성된 어느 한 맵(Ma)의 일 예가 도시된다. 상기 맵(Ma)은 노드맵 및 경계맵(Ba)을 포함한다. 상기 노드맵은 복수의 제1 노드(Na1 내지 Na99)를 포함한다.
도 9를 참고하여, 어느 한 맵(Ma)은 노드맵(Na1, Na2, …, Na99) 및 경계맵(Ba)을 포함할 수 있다. 노드맵은 하나의 맵 상의 여러 가지 정보 중 복수의 노드로 이루어진 정보를 지칭하는 것이고, 경계맵은 하나의 맵 상의 여러 가지 정보 중 복수의 경계 정보로 이루어진 정보를 지칭하는 것이다. 노드맵과 경계맵은 상기 맵의 구성요소로서, 노드맵의 생성 과정(S502, S503)과 경계맵의 생성 과정(S504, S505)은 동시에 진행된다. 예를 들어, 경계 정보는, 특정 지점에서 떨어진 주행 장애 요소의 거리를 측정한 후, 상기 특정 지점에 대응하는 기저장된 노드의 좌표 정보를 기준으로 생성될 수 있다. 예를 들어, 노드의 노드 좌표 정보는 특정 주행 장애 요소에서 떨어진 특정 지점의 거리를 측정한 후, 상기 특정 장애 요소에 대응하는 기저장된 경계 정보를 기준으로 생성할 수 있다. 노드 및 경계 정보는, 기저장된 어느 하나에 대한 다른 하나의 상대적 좌표를 근거로, 다른 하나가 맵 상에 생성될 수 있다.
또한, 상기 맵은 상기 과정(S506)에서 생성된 영상 정보를 포함할 수 있다. 복수의 영상 정보는 복수의 노드에 일대일대응 한다. 특정 영상 정보는 특정 노드에 대응한다.
도 10 내지 도 13은 본 발명의 일 실시예에 따른 위치 인식에 관한 설명에 참조되는 도면이다.
도 10을 참고하여, 인식 영상의 획득 과정 및 인식 디스크립터의 생성 과정을 자세히 설명하면 다음과 같다.
위치 점핑 상황의 발생으로 인해서, 이동 로봇(100)의 현재 지점이 미지(Unknown)의 상태가 되는 경우 인식 영상의 획득 과정이 시작된다. 영상획득부(120)는 미지의 현재 지점에서 인식 영상을 획득한다. 또는 이동 로봇(100)의 주행 중 현재 위치 인식을 위해 인식 영상의 획득 과정이 시작된다.
인식 영상은 이동 로봇(100)의 상측을 향해 촬영될 수 있다. 인식 영상은 천장을 촬영한 것일 수 있다. 도 10에 도시된 영상은 현재 지점에 대응하는 인식 영상이다.
도 10을 참고하여, 인식 영상에서 추출된 복수의 인식 특징점(h1,h2,h3,..,h7)을 근거로 복수의 인식 디스크립터()를 생성한다. 인식 특징점(h1,h2,h3,..,h7)에 복수의 인식 디스크립터()는 일대일대응 한다.
도 10에서, 은 n차원 벡터를 의미한다. 의 중괄호 { } 안의 h1(1), h1(2), h1(3),..,h1(n)은 을 이루는 각 차원의 수치를 의미한다. 나머지 에 대한 표기도 이와 같은 방식이므로 설명을 생략한다.
특징 검출을 위해 상기 SIFT 기법을 이용하여, 복수의 인식 특징점(h1,h2,h3,..,h7)에 대응하는 복수의 인식 디스크립터()를 생성할 수 있다. 컴퓨터 비전 기술 분야에서 영상으로부터 특징을 검출하는 다양한 방법 및 이들 특징의 검출에 적합한 여러 특징검출기들에 대한 설명은 상기한 바와 같다.
도 11을 참고하여, 상기 특징점(또는 디스크립터) 매칭 과정을 자세히 설명하면 다음과 같다. 상기 매칭 과정에서, 인식 영상 내 복수의 인식 디스크립터()에 각각 거리 상 가장 가까운 전역 라벨 디스크립터를 매칭시킨다. 도 10에서, 인식 디스크립터와 전역 라벨 디스크립터의 대응관계를 매칭 선으로 도시한다. 매칭 과정(S231)을 진행하면, 복수의 인식 디스크립터()에 복수의 전역 라벨 디스크립터()는 일의대응 한다.
예를 들어, 인식 디스크립터()에 거리상 가장 가까운 전역 라벨 디스크립터는 이고, 인식 디스크립터()에 전역 라벨 디스크립터()가 대응한다. 인식 디스크립터()에 거리상 가장 가까운 전역 라벨 디스크립터는 이고, 인식 디스크립터()에 전역 라벨 디스크립터()가 대응한다. 인식 디스크립터()에 거리상 가장 가까운 전역 라벨 디스크립터는 이고, 인식 디스크립터()에 전역 라벨 디스크립터()가 대응한다. 인식 디스크립터()에 거리상 가장 가까운 전역 라벨 디스크립터는 이고, 인식 디스크립터()에 전역 라벨 디스크립터()가 대응한다. 이 경우, 전역(X) 내 모든 전역 라벨 디스크립터() 중 복수의 인식 디스크립터()에 매칭된 전역 라벨 디스크립터는 이다. 도 11에는, 매칭된 전역 라벨 디스크립터()의 생성 근거가 된 그룹(XG1, XG3, XG5, XG32)에 표시가 되어 있다.
도 12를 참고하여, 비교대상 노드의 선택 과정을 자세히 설명하면 다음과 같다. 상기 비교대상 노드의 선택 과정에서, 매칭된 전역 라벨 디스크립터()에 대응하는 비교 대상 노드를 선택한다. 매칭된 복수의 전역 라벨 디스크립터()에 복수의 노드는 일대다대응 한다.
예를 들어, 매칭된 복수의 전역 라벨 디스크립터()에 대응하는 비교 대상 노드들은 N1, N14, N15, N38, N62, N63, N64 이다. 선택되는 각각의 비교 대상 노드(N1, N14, N15, N38, N62, N63, N64) 내 복수의 전역 라벨 디스크립터는, 상기 매칭된 전역 라벨 디스크립터() 중 적어도 하나를 포함한다. 선택되지 않은 나머지 노드 내 복수의 전역 라벨 디스크립터는, 상기 매칭된 전역 라벨 디스크립터() 모두를 포함하지 않는다.
구체적으로, 매칭된 전역 라벨 디스크립터()의 생성 근거가 된 디스크립터들을 선택하고, 선택된 디스크립터들의 생성 근거가 된 영상들을 선택하고, 선택된 영상들에 대응하는 노드들을 비교대상 노드로 한다.
예를 들어, 어느 한 디스크립터A가 소정 분류규칙(제1 소정 분류규칙)에 따라 그룹 A1G1으로 분류되고, 그룹 A1G1 내 디스크립터들을 근거로 소정 라벨규칙(제1 소정 라벨규칙)에 따라 지역 라벨 디스크립터B가 생성되고, 그 후 지역 라벨 디스크립터B가 소정 분류규칙(제2 소정 분류규칙)에 따라 그룹 XG5로 분류되고, 그룹 XG5 내 지역 라벨 디스크립터들을 근거로 소정 라벨규칙(제2 소정 라벨규칙)에 따라 전역 라벨 디스크립터C가 생성된다면, '디스크립터A는 전역 라벨 디스크립터 C의 생성 근거가 된다'고 표현한다. 또한, 영상D 내 복수의 디스크립터 중 디스크립터A가 있다면, '영상D는 디스크립터A의 생성 근거가 된다'고 표현한다. 나아가, '영상D는 전역 라벨 디스크립터C의 생성 근거가 된다'고 표현한다.
상기 선택 과정에서, 복수의 영상들 중 상기 매칭된 전역 라벨 디스크립터()의 생성 근거가 된 영상들을 선택하고, 모든 노드들 중 상기 선택된 영상들에 일대일대응 하는 비교대상 노드들을 선택한다. 도 12에는, 선택된 비교 대상 노드들 (N1, N14, N15, N38, N62, N63, N64)을 까만 점으로 표시한다.
도 13을 참고하여, 비교대상 노드 별 비교 과정의 일례를 설명하면 다음과 같다. 상기 비교 과정에서는, 상기 선택 과정에서 선택된 비교대상 노드들(N1, N14, N15, N38, N62, N63, N64)에 대응하는 영상들만 인식 영상과 비교를 한다. 비교 결과 가장 유사도가 높게 산출되는 영상에 대응하는 비교대상 노드를 최종 노드로 선택한다.
상기 비교 과정에서는, 상기 선택 과정에서 선택된 비교대상 노드들(N1, N14, N15, N38, N62, N63, N64)에 대해서만 각 노드(N1, N14, N15, N38, N62, N63, N64)에 대응하는 영상 특징 분포(예들들어, 영상 특징 분포 벡터)를 생성한다. 또한, 상기 비교 과정에서는, 상기 비교 대상 노드들(N1, N14, N15, N38, N62, N63, N64)의 영상 특징 분포와 비교 가능한 인식 영상 특징 분포(예를 들어, 인식 영상 특징 분포 벡터)를 생성한다. 상기 비교 과정에서는, 비교 대상 노드(N1, N14, N15, N38, N62, N63, N64) 별로 영상 특징 분포와 인식 영상 특징 분포를 비교하여, 가장 높은 유사도를 가지는 하나의 노드를 최종 노드(현재 지점으로 추정되는 노드)로 선택한다.
도 13에서, 좌측의 히스토그램은 상기 인식 영상 특징 분포 히스토그램의 일 예를 도시한 것이다. 인식 영상 특징 분포는 상기 매칭된 전역 라벨 디스크립터()를 근거로 생성된다. 매칭된 전역 라벨 디스크립터()의 인식 스코어(Sh)는 소정 수학식을 통해 산출할 수 있다.
도 13에서, 우측의 히스토그램들은 비교 대상 노드 별 영상 특징 분포 히스토그램의 일례를 도시한 것이다. 상기 매칭된 전역 라벨 디스크립터()를 근거로 영상 특징 분포가 생성된다. 매칭된 전역 라벨 디스크립터()의 인식 스코어(Sh)는 소정 수학식을 통해 산출할 수 있다.
어느 한 비교 대상 노드의 영상 특징 분포는, 각 전역 라벨 디스크립터의 종류를 대표값(가로 축의 값)으로 보고, 각 종류당 웨이트(w)를 근거로 산출된 스코어(s)를 도수(세로 축의 값)로 보는 영상 특징 분포 히스토그램으로 표현될 수 있다.
한편, 영상 내 복수의 전역 라벨 디스크립터에는, 상기 매칭된 전역 라벨 디스크립터들() 외에도 다른 전역 라벨 디스크립터(예를 들어, )가 있을 수 있다. 이러한 다른 전역 라벨 디스크립터()는 영상 특징 분포 히스토그램의 대표값이 될 필요가 없다. 다만, 이러한 다른 전역 라벨 디스크립터()의 웨이트는, 매칭된 전역 라벨 디스크립터())의 스코어(S)에 영향을 줄 수는 있다.
상기 비교 과정 이후, 비교대상 노드들 중에 현재 위치로 추정되는 노드를 선택할 수 있다. 상기 비교 과정에서 인식 영상 특징 분포를 각 비교 대상 노드 별 영상 특징 분포와 비교하여, 가장 유사도가 높은 노드를 선택한다. 여기셔 선택된 가장 유사도가 높은 노드에 대응하는 위치가 현재 위치가 된다.
한편, 이러한 유사도가 가장 높은 노드의 선택은 블록 단위로도 수행될 수 있다.
도 14와 도 15는 본 발명의 일 실시예에 따른 블록 단위의 특징점 추출 및 매칭에 관한 설명에 참조되는 도면이다.
일반적으로 슬램 기술 중 카메라 센서를 통하여 획득되는 영상을 이용하는 비전 슬램(Vision SLAM)의 경우 카메라와 포인트(Point) 단위의 특징점 기반 매칭을 적용한다.
포인트(Point) 단위의 특징점은 특징점의 성능이 좋을 경우 전 프레임 영상과의 관계에 의해 그 특징점의 3D 포인트(Point) 위치를 복원할 수 있으며, 이를 통해 로봇의 위치를 쉽게 알아낼 수 있다는 장점이 있다.
포인트(Point)의 특징점은 상술한 SIFT, SURF, FAST, BRIEF, ORB 등의 특징점들이 널리 사용되며, 각 특징점들이 가지는 특정한 디스크립터를 바탕으로 영상간 같은 특징점인지를 판단하여 매칭(Matching)을 수행함으로써 영상 간 거리와 디스패리티(Disparity)를 가지고 3D 좌표를 복원하게 된다.
기존에 사용되는 포인트 기반의 특징점들은 주로 영상의 픽셀 단위 밝기값 변화량(Gradient)를 기반으로 디스크립터를 기술하기 때문에 씬(Scene)의 조명이 바뀌거나 영상 전반적인 밝기 변화량이 클 경우 디스크립터간 매칭(Matching)이 잘 안될 수 있다. 즉, 포인트(Point) 특징점 기반의 자기 위치 인식 기술의 경우, 영상의 특성 변화가 빈번한 저조도 상황에서 성능 열화가 발생할 수 있다.
따라서, 본 발명은 블록 단위의 특징점 추출 및 매칭을 이용하여 조도 변화 및 저조도 환경에 강인한 맵 생성 및 자기 위치 인식 방법을 제안한다.
도 14를 참조하면, 영상획득부(120)를 통하여 획득된 영상을 기설정된 크기의 블록(Bolck)들(B1, B2, B3 ... Bn-2, Bn-1, Bn)로 구분하고, 각 블록(B1, B2, B3 ... Bn-2, Bn-1, Bn) 단위로 특징점을 추출하여 저장할 수 있다.
이후, 자기 위치 인식시, 현재 위치에서 획득된 인식 영상을 기설정된 크기의 블록(Bolck)들(B1, B2, B3 ... Bn-2, Bn-1, Bn)로 구분하고, 각 블록(B1, B2, B3 ... Bn-2, Bn-1, Bn) 단위로 특징점을 추출하여 기저장된 블록 단위의 특징점 정보와 비교함으로써, 자기 위치를 인식할 수 있다.
더욱 바람직하게는 각 블록(B1, B2, B3 ... Bn-2, Bn-1, Bn)은 동일한 크기를 가질 수 있다. 이에 따라, 영상(1400)은 동일한 크기의 블록들(B1, B2, B3 ... Bn-2, Bn-1, Bn)로 구성되는 격자 형태(1410)로 분할될 수 있다.
블록이 일정한 크기를 가짐으로써, 연산량을 감소시키고, 블록간 비교, 영상간 비교를 더 빠르게 수행할 수 있다.
또한, 영상획득부(120)를 통하여 획득된 영상에서, 추출된 특징점에 기초하여 디스크립터를 산출하고 저장할 수 있다. 이후, 자기 위치 인식시, 현재 위치에서 획득된 인식 영상을 기설정된 크기의 블록들(B1, B2, B3 ... Bn-2, Bn-1, Bn)로 구분하고, 각 블록(B1, B2, B3 ... Bn-2, Bn-1, Bn) 단위로 특징점을 추출하여 디스크립터를 산출하고, 기저장된 블록 단위의 디스크립터와 유사도를 산출, 가장 유사한 노드를 현재 자기 위치로 인식할 수 있다.
일반적인 포인트(Point) 기반의 특징점 기반 자기 위치 인식은 위치 성능이 좋은 반면 조도 변화에 민감하다.
하지만, 영상에서 여러 개의 일정 영역을 블록 단위로 지정하고 그 블록 단위 특징점 매칭 기술을 적용함으로써 조도 변화에 강인하게 자기 위치 인식을 할 수 있다.
비전 슬램에서는 천장의 영상을 획득하고, 천장의 특징점을 추출하여 이용할 수 있다. 이때, 천장의 특징적인 선분을 이용하는 것이 효과적이다. 도 15는 영상(1400) 내의 특징적인 선분(L1, L2, L3, L4, L5, L6, L7, L8)을 예시한다.
포인트 기반의 특징점 추출 및 매칭은 특징점에 대응하는 픽셀의 밝기값 변화량(Gradient)를 사용하는데, 저조도 환경에서 천장의 특징적인 선분(L1, L2, L3, L4, L5, L6, L7, L8)이 잘 인식되지 않을 수 있다. 예를 들어, 어두운 환경에서 획득된 전체 영상에서 픽셀 단위의 밝기값 변화로 천장의 특징적인 선분, 선분들의 크로스의 식별이 어렵다.
하지만, 본 발명의 일 실시예에 따르면, 블록 단위의 변화량을 사용하여 블록 단위의 영상에 포함되는 특징적인 선분을 더 잘 인식할 수 있어 천장의 특징적인 선분들을 잘 인식할 수 있다. 또한, 블록 안에 전등, 장식물 선분 등의 적어도 일부가 그 형태를 유지한 체 블록에 포함되어, 특징점 추출이 용이하다.
본 발명의 일 실시예에 따르면, 천장의 선분을 이용해 영상 특징들을 회전시켜 매칭하거나 로봇의 주행 방향을 결정하여 로봇이 좀 더 지능적인 행동을 하는 것처럼 보일 수 있다.
본 발명의 일 실시예에 따르면, 블록 기반의 특징점 추출 및 매칭을 수행할 수 있다. 예를 들어, 블록별 밝기값 변화량(Gradient)의 히스토그램을 쌓아서 블록 단위의 유사도로 판단하게 된다.
본 발명에 따르면, 제어부(150)는 영상획득부(120)를 통하여 획득된 천장 또는 전경 영상에서 카메라 파라미터를 이용하여 천장 선분을 추출할 수 있다.
또한, 제어부(150)는 블록 단위 특징점 매칭 시 영상을 회전(rotation)하여 영역을 재설정 후 매칭을 진행할 수 있다. 이 경우, 천장의 선분 정보를 이용하여 이동 로봇(100)의 모션(motion)을 더욱 지능적으로 보이도록 할 수 있다. 예를 들어, 천장의 선분에 평행하게 주행함으로써 천장의 선분에 대응하여 위치할 가능성이 높은 벽체와 일정한 간격을 유지하면서 안정적으로 주행할 수 있다.
본 발명의 일 실시예에 따르면, 블록 단위 특징점 기반 매칭을 사용함으로써 기존 생성한 맵에서 조명 변화가 커진 경우 또는 저조도 환경에서도 자기 위치 인식 성능을 보장할 수 있다.
본 발명의 일 실시예에 따르면, 맵 작성 시, 포인트(Point) 기반 특징점과 블록(Block) 기반 특징점을 모두 추출하여 맵에 저장할 수 있다.
이에 따라, 추후 포인트(Point) 기반 특징점과 블록(Block) 기반 특징점을 필요에 따라 선택하거나 혼합하여 사용함으로써 다양한 조명 변화에 대응할 수 있다.
예를 들어, 포인트(Point) 기반 특징점과 블록(Block) 기반 특징점을 모두 추출하여 맵 작성 시 포인트 기반 특징점으로 정확한 자기 위치 인식을 하고, 서비스 시 블록 기반 특징점을 활용하여 조명 변화, 저조도 환경에서도 강인하게 자기 위치 인식을 할 수 있다.
또한, 저조도 환경에서, 자기 위치 인식 시, 블록(Block) 특징점을 이용하여 몬테카를로(Monte Carlo Localization, MCL) 기반의 자기 위치 인식을 통해 저조도 상황에서도 자기 위치 인식이 가능하다.
또한, 포인트(Point) 기반 특징점과 블록(Block) 기반 특징점을 모두 이용하여 이중으로 자기 위치를 인식함으로써 자기 위치 인식의 정확도를 더욱 높일 수 있다.
실시예에 따라서, 주행구역에서 촬영된 영상을 여러 개의 일정 영역에 대한 블록(block)으로 나눈 후, 그 영역의 텍스쳐, 모양, 컨투어 등의 정보를 추출한 후 이들 정보를 각 영역의 특징점으로 생성할 수 있다. 이러한 텍스쳐, 모양, 컨투어 등의 정보는 조명의 변화에도 유지되는 특징이 있기 때문에 이러한 특징을 기반으로 블록(block)끼리 유사도를 계산하여 매칭(Matching)을 수행함으로써 조명 변화에 강인한 매칭을 수행할 수 있다.
도 16 내지 도 21은 본 발명의 다양한 실시예에 따른 이동 로봇의 제어 방법을 도시한 순서도이다. 이하에서는 도 16 내지 도 21을 참조하여, 본 발명의 다양한 실시예에 따른 이동 로봇의 제어 방법을 설명한다.
도 16은 맵 생성 과정의 일예를 도시한 것이다.
도 16을 참조하면, 본 발명의 일 실시예에 따른 이동 로봇(100)은, 하나 이상의 카메라 센서(120b)를 포함하는 영상획득부(120)를 통하여 주행 중 주행구역 내 영상을 획득할 수 있다(S1610).
제어부(150)는 상기 획득된 영상에서 포인트(point) 기반으로 특징점을 추출할 수 있다(S1620). 또한, 제어부(150)는 상기 획득된 영상을 기설정된 크기의 블록(Bolck)들로 구분하고, 구분된 각각의 블록 단위 영상들에서 특징점을 추출할 수 있다(S1630).
즉, 본 발명의 일 실시예에 따른 이동 로봇(100)의 제어 방법은, 비전 슬램에서 많이 사용되는 SIFT, SURF, FAST, BRIEF, ORB 등의 포인트 기반 특징점 추출 단계(S1620)를 포함할 수 있을 뿐만 아니라, 구분된 각각의 블록 단위 영상들에서 특징점을 추출하는 블록 기반의 특징점 추출 단계(S1630)를 더 포함할 수 있다.
이에 따라, 포인트 기반의 특징점과 블록 기반의 특징점을 슬램에 모두 활용할 수 있다.
한편, 상술한 것과 같이, 제어부(150)는, 추출된 특징점에 대응하는 디스크립터(descriptor)를 생성할 수 있다.
예를 들어, 포인트 기반 특징점 추출 단계(S1620)에서, 제어부(150)는 포인트 기반의 특징점을 추출하고, 추출된 포인트 기반의 특징점에 대응하는 픽셀 또는 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성에 기초하여 상기 추출된 특징점에 대응하는 디스크립터를 생성할 수 있다.
또한, 블록 기반의 특징점 추출 단계(S1630)에서, 제어부(150)는 상기 블록 단위 영상들의 밝기 구배(gradient)의 분포 특성에 기초하여 각각의 블록별 디스크립터를 생성할 수 있다.
한편, 본 발명의 일 실시예에 따른 이동 로봇(100)은 본체(110)의 이동에 따른 주행 상태를 감지하는 주행 감지 센서를 포함할 수 있다. 예를 들어, 이동 로봇(100)은 엔코더 등의 센서를 구비할 수 있다.
제어부(150)는 엔코더 등 주행 감지 센서로부터 주행 중 주행 정보를 획득할 수 있다.
실시예에 따라서, 제어부(150)는 상기 획득된 주행 정보에 기초하여 이전 노드부터의 이동량이 문턱값(threshold)보다 커지면 영상획득부(120)를 통하여 영상을 획득하도록 제어할 수 있다. 이미 정보가 획득되고 인식된 이전 노드에 너무 인접한 위치에서 다시 영상 획득, 분석, 위치 인식을 수행하는 것은 비효율적이다. 따라서, 이전 노드로부터 문턱값(threshold) 이상 움직이면, 다시 영상을 획득하여, 특징점 추출(S1620, S1630) 등을 수행하는 것이 효과적이다.
또는, 상기 영상 획득 단계(S1610)에서 영상획득부(120)는 주행 중에 연속적으로 주행구역의 영상을 획득하거나 소정 기준 또는 주기에 따라 주행구역의 영상을 획득할 수 있다.
이미 정보가 획득되고 인식된 이전 노드에 너무 인접한 위치에서 획득된 영상 프레임들 전부를 대상으로 분석, 위치 인식을 수행하는 것은 비효율적이다.
이 경우에, 제어부(150)는, 상기 영상 획득 단계(S1610)에서 영상획득부(120)를 통하여 획득되는 영상들 중, 이전 노드부터의 이동거리가 문턱값보다 큰 위치에 대응하는 영상을 키 프레임(key frame) 영상으로 선택할 수 있다. 또한, 소정 키 프레임 영상이 선택되면, 선택된 키 프레임 영상을 기준으로 이동 로봇(100)이 문턱값보다 더 이동한 거리에서 획득되는 영상 하나를 다음 키 프레임 영상으로 선택할 수 있다.
이에 따라, 제어부(150)는, 일정 거리 이상 이격된 위치에 대응하여 선택된 키 프레임(key frame) 영상들을 대상으로 특징점 추출(S1620, S1630) 등을 수행할 수 있다. 즉, 상기 포인트 기반의 특징점 추출 단계(S1620)와 상기 블록 기반의 특징점 추출 단계(S1630)는, 이전 노드로부터 문턱값보다 멀리 떨어진 위치에 대응하는 키 프레임 영상을 대상으로 수행할 수 있다.
한편, 제어부(150)는, 포인트 기반의 특징점 추출 단계(S1620)에서 추출된 특징점을 이용하여, 현재 위치에 대응하는 노드 및 상기 현재 위치에 대응하는 노드를 기준으로 기설정된 기준 거리 이내의 노드의 특징점을 매칭(matching)할 수 있다(S1640).
또한, 제어부(150)는, 블록 기반의 특징점 추출 단계(S1630)에서 추출된 특징점을 이용하여, 상기 현재 위치에 대응하는 노드 및 상기 현재 위치에 대응하는 노드를 기준으로 상기 기준 거리 이내의 노드의 특징점을 매칭할 수 있다(S1650).
즉, 본 발명의 일 실시예에 따른 이동 로봇(100)의 제어 방법은, 비전 슬램에서 많이 사용되는 SIFT, SURF, FAST, BRIEF, ORB 등의 포인트 기반 특징점 매칭 단계(S1640)를 포함할 수 있을 뿐만 아니라, 구분된 각각의 블록 단위 영상들에서 특징점을 매칭하는 블록 기반의 특징점 매칭 단계(S1650)를 더 포함할 수 있다.
이에 따라, 포인트 기반의 특징점과 블록 기반의 특징점을 슬램에 모두 활용할 수 있다.
한편, 제어부(150)는, 상기 포인트 기반의 특징점 매칭 결과와 상기 블록 기반의 특징점 매칭 결과에 기초하여 상기 현재 위치를 인식할 수 있다(S1660). 이와 같이 두가지 방식의 특정점 매칭 결과를 종합적으로 이용함으로써 위치 인식의 정확도를 더 높일 수 있다.
또한, 제어부(150)는, 상기 인식된 현재 위치 정보, 상기 현재 위치에 대응하는 노드의 포인트 기반의 특징점 정보, 및 상기 현재 위치에 대응하는 노드의 블록 기반의 특징점 정보를 맵(map)에 등록할 수 있다(S1670).
본 발명의 일 실시예에 따르면, 포인트 기반의 특징점 정보과 블록 기반의 특징점 정보를 모두 저장하면서 맵을 생성함으로써, 이후의 위치 인식에서는 포인트 기반의 특징점 정보과 블록 기반의 특징점 정보를 선택적으로 이용하거나 조합하여 이용할 수 있다.
도 17은 맵 생성 과정의 일예를 도시한 것이다.
도 17을 참조하면, 본 발명의 일 실시예에 따른 이동 로봇(100)은 주행 중 좌/우측 바퀴에 연결된 엔코더를 통하여 주행 정보를 모니터링할 수 있다(S1611).
바퀴 엔코더 값에 의해 판별된 이동 로봇(100)의 이동량이 문턱값(th)보다 크다면(S1613), 영상획득부(120)는 키 프레임 영상을 획득할 수 있다(S1615).
만약 이동 로봇(100)의 이동량이 문턱값(th)보다 크지 않다면(S1613), 바퀴 엔코더 값에 의해 판별된 이동 로봇(100)의 이동량이 문턱값(th)보다 커질때까지 엔코더를 통하여 주행 정보를 모니터링할 수 있다(S1611).
한편, 제어부(150)는, 키 프레임 영상에서, 포인트 기반의 특징점을 추출하고(S1620), 블록 기반의 특징점을 추출할 수 있다(S1630).
또한, 제어부(150)는, 포인트 기반의 특징점 매칭을 수행하고(S1640), 블록 기반의 반의 특징점 매칭을 수행할 수 있다(S1650).
제어부(150)는, 포인트 기반의 특징점들이 가지는 특정한 디스크립터를 바탕으로 영상간 동일 특징점인지를 판단하여 매칭(Matching)을 수행할 수 있다(S1640).
제어부(150)는, 각 블록 단위로 특징점을 추출하여 디스크립터를 산출하고, 기저장된 블록 단위의 디스크립터와 유사도를 산출하여 동일 특징점인지를 판단하여 매칭(Matching)을 수행할 수 있다(S1650).
한편, 제어부(150)는, 영상들의 포인트 기반의 특징점 및/또는 블록 기반의 특징점 관계에 의해 그 특징점의 3D 포인트(Point) 위치를 복원할 수 있고(S1661), 이를 통해 이동 로봇(100)의 위치를 쉽게 알아낼 수 있다(S1663).
제어부(150)는, 영상들에 포함된 특징점이 동일 특징점인지를 판단하여 매칭(Matching)을 수행함으로써 영상 간 거리와 디스패리티(Disparity)를 가지고 3D 좌표를 복원하게 된다(S1661).
제어부(150)는, 복원된 3D 좌표에 기초하여 이동 로봇(100)의 위치를 쉽게 알아낼 수 있다(S1663).
자기 위치 인식(S1663) 후, 제어부(150)는, 현재 위치의 특징점 정보를 저장부(105)에 저장할 수 있다(S1670). 예를 들어, 제어부(150)는, 저장부(105)에 저장되는 슬램 맵 상에 현재 위치에 대응하는 노드 정보로 현재 위치의 특징점 정보를 저장할 수 있다.
또한, 제어부(150)는, 포인트 기반의 특징점 정보와 블록 기반의 특징점 정보를 모두 저장할 수 있다. 이에 따라, 이후의 자기 위치 인식에서 포인트 기반의 특징점 정보과 블록 기반의 특징점 정보를 선택적으로 이용하거나 조합하여 이용할 수 있다.
제어부(150)는, 맵 작성이 완료되지 않았으면(S1680). 주행을 계속하면서 상술한 S1611 단계 내지 S1670까지의 과정을 계속 수행할 수 있다. S1611 단계 내지 S1670까지의 과정은 맵 작성이 완료되면(S1680), 종료될 수 있다.
본 발명의 실시예에 의하면, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 조명, 조도, 시간대, 사물 위치 변화 등의 다양한 환경 변화에 대해 강인한 맵을 생성할 수 있다. 블록(Bolck) 기반의 특징점 추출 및 매칭은 포인트 기반의 특징점 추출 및 매칭보다 천장의 특징적인 선분 추출에 유리하다. 따라서, 조도 환경에서도 동작할 수 있는 비전(Vision) 슬램 기술을 구현할 수 있고, 블록 기반의 특징점 추출 및 매칭을 이용하여 저조도 환경에서도 우수한 슬램 기술을 구현할 수 있다.
도 18과 도 19는 맵 생성 후 자기 위치 인식 과정을 도시한 것이다.
도 18과 도 19를 참조하면, 본 발명의 일 실시예에 따른 이동 로봇(100)은 주행 중 주행 감지 센서를 통하여 주행 정보를 모니터링할 수 있다(S1801).
주행 감지 센서로는, 자이로 센서(Gyro Sensor), 휠 센서(Wheel Sensor), 가속도 센서(Acceleration Sensor) 등을 사용할 수 있다. 주행 감지 센서 중 적어도 하나에서 감지되는 데이터 또는 주행 감지 센서 중 적어도 하나에서 감지되는 데이터에 기초하여 산출되는 데이터는 오도메트리(odometry) 정보를 구성할 수 있다.
예를 들어, 제어부(150)는, 좌/우측 바퀴에 연결된 엔코더 등 휠 센서의 센싱값에 기초하여 이동 로봇(100)의 이동량을 판별할 수 있다. 또한, 제어부(150)는, 휠 센서의 센싱값에 기초하여 이동 로봇(100)의 이동량, 방향 정보를 획득하여 주행 변위를 판별할 수 있다.
한편, 판별된 이동 로봇(100)의 이동량이 문턱값(th)보다 크다면(S1803), 영상획득부(120)는 주행구역 내 영상을 획득할 수 있다(S1810).
이후, 제어부(150)는, 상기 획득된 영상을 기설정된 크기의 블록(Bolck)들로 구분하고, 구분된 각각의 블록 단위 영상들에서 특징점을 추출할 수 있다(S1840).
다른 실시예에서는, 상기 영상 획득 단계(S1810)에서 영상획득부(120)는 주행 중에 연속적으로 주행구역의 영상을 획득하거나 소정 기준 또는 주기에 따라 주행구역의 영상을 획득할 수 있다.
이 경우에, 제어부(150)는, 상기 영상 획득 단계(S1810)에서 영상획득부(120)를 통하여 획득되는 영상들 중, 이전 노드부터의 이동거리가 문턱값(th)보다 큰 위치에 대응하는 영상을 키 프레임(key frame) 영상으로 선택할 수 있다. 또한, 소정 키 프레임 영상이 선택되면, 제어부(150)는, 선택된 키 프레임 영상을 기준으로 이동 로봇(100)이 문턱값(th)보다 더 이동한 거리에서 획득되는 영상 하나를 다음 키 프레임 영상으로 선택할 수 있다.
이후의 블록 기반의 특징점 추출 단계(S1840)는, 이전 노드로부터 문턱값(th)보다 멀리 떨어진 위치에 대응하는 키 프레임 영상을 대상으로 수행할 수 있다.
블록 기반의 특징점 추출 단계(S1840)에서, 제어부(150)는, 상기 블록 단위 영상들의 밝기 구배(gradient)의 분포 특성(밝기 변화의 방향 및 변화의 급격한 정도)을 이용하여 특징점을 추출할 수 있다.
본 발명의 일 실시예에 따르면, 블록 단위의 변화량을 사용하여 블록 단위의 영상에 포함되는 특징적인 선분을 더 잘 인식할 수 있어 천장의 특징적인 선분들을 잘 인식할 수 있다. 또한, 블록 안에 전등, 장식물 선분 등의 적어도 일부가 그 형태를 유지한 체 블록에 포함되어, 특징점 추출이 용이하다.
한편, 블록 기반의 특징점 추출 단계(S1840)에서, 제어부(150)는, 상기 블록 단위 영상들의 밝기 구배(gradient)의 분포 특성(밝기 변화의 방향 및 변화의 급격한 정도)에 기초하여 각각의 블록별 디스크립터를 생성할 수 있다.
제어부(150)는, 상기 블록 기반의 특징점 추출 단계(S1840)에서 추출된 특징점을 맵에 등록된 블록 기반의 특징점 정보와 매칭할 수 있고(S1850), 블록 기반의 특징점 매칭 결과에 기초하여 이동 로봇(100)의 현재 위치를 인식할 수 있다(S1860).
블록 기반의 특징점 매칭 단계(S1850)에서, 제어부(150)는, 획득 영상과 비교대상 노드의 영상에 포함되는 블록 단위 영상들의 밝기 구배의 분포 특성을 비교하여 동일한 특징점을 찾아낼 수 있다.
또한, 제어부(150)는, 획득 영상과 비교대상 노드의 영상에 포함되는 블록 단위 영상들의 밝기 구배의 분포 특성에 기초한 블록별 디스크립터를 기저장된 블록별 디스크립터와 비교하여 가장 유사도가 높은 디스크립터를 판별할 수 있다.
본 발명의 일 실시예에 따르면, 현재 위치에서 획득된 인식 영상을 기설정된 크기의 블록들로 구분하고, 각 블록 단위로 특징점을 추출하여(S1840), 기저장된 블록 단위의 특징점 정보와 비교함으로써(S1850), 자기 위치를 인식할 수 있다(S1860).
또한, 영상획득부(120)를 통하여 획득된 영상에서, 추출된 특징점에 기초하여 디스크립터를 산출하고 저장한 경우, 자기 위치 인식시, 현재 위치에서 획득된 인식 영상을 기설정된 크기의 블록 단위로 특징점을 추출하여 디스크립터를 산출하고(S1840), 기저장된 블록 단위의 디스크립터와 유사도를 산출(S1850), 가장 유사한 노드를 현재 자기 위치로 인식할 수 있다(S1860).
본 발명의 실시예에 의하면, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 맵 상 이동 로봇의 위치를 정확하게 인식할 수 있다. 블록(Bolck) 기반의 특징점 추출 및 매칭은 포인트 기반의 특징점 추출 및 매칭보다 천장의 특징적인 선분 추출에 유리하다. 따라서, 조도 환경에서도 동작할 수 있는 비전(Vision) 슬램 기술을 구현할 수 있고, 블록 기반의 특징점 추출 및 매칭을 이용하여 저조도 환경에서도 우수한 슬램 기술을 구현할 수 있다.
또한, 이동 로봇(100)이 청소 작업을 수행하는 경우에, 다양한 환경 변화에 대응할 수 있는 하나의 맵과 정확한 위치 인식에 기초하여 효율적인 주행 및 청소를 수행할 수 있다.
본 발명의 실시예에 의하면, 블록(Bolck) 기반의 특징점 추출 및 매칭을 이용하여 조명, 조도, 시간대, 사물 위치 변화 등의 다양한 환경 변화에 대해 강인한 맵을 생성할 수 있다.
한편, 본 발명은 맵 생성시, 포인트 기반의 특징점 정보와 블록 기반의 특징점 정보를 모두 저장할 수 있다. 이에 따라, 자기 위치 인식에서 포인트 기반의 특징점 정보과 블록 기반의 특징점 정보를 선택적으로 이용하거나 조합하여 이용할 수 있다.
도 19를 참조하면, 본 발명의 일 실시예에 따른 이동 로봇(100)의 제어 방법은, 영상 획득 단계(S1810)에서 획득된 영상에서 포인트 기반의 특징점을 추출하는 포인트(point) 기반의 특징점 추출 단계(S1820)와 상기 포인트 기반의 특징점 추출 단계(S1820)에서 추출된 특징점을 상기 맵에 등록된 포인트 기반의 특징점 정보와 매칭하는 단계(S1830)를 더 포함할 수 있다.
이 경우에, 현재 위치 인식 단계(S1860)에서, 제어부(150)는, 상기 포인트 기반의 특징점 매칭 결과와 상기 블록 기반의 특징점 매칭 결과에 기초하여 상기 현재 위치를 인식할 수 있다.
제어부(150)는, 상기 추출된 특징점 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성에 기초하여 상기 추출된 특징점에 대응하는 디스크립터(descriptor)를 생성할 수 있고, 생성된 디스크립터와 기저장된 디스크립터를 비교하여 현재 위치를 인식할 수 있다(S1860).
또한, 제어부(150)는 포인트 기반의 특징점 정보과 블록 기반의 특징점 정보를 조합하여 현재 위치를 인식할 수 있다(S1860).
예를 들어, 제어부(150)는 포인트 기반의 특징점 매칭 결과와 블록 기반의 특징점 매칭 결과 중 유사도가 가장 높은 노드를 현재 위치로 인식할 수 있다.
한편, 본 발명의 일 실시예에 따르면 조도 환경에 따라 포인트 기반의 특징점 정보과 블록 기반의 특징점 정보를 선택적으로 이용하거나 조합하여 이용할 수 있다.
도 20을 참조하면, 본 발명의 일 실시예에 따른 이동 로봇(100)은 영상획득부(120)를 통하여 주행구역 내 영상을 획득할 수 있다(S2010).
본 발명의 일 실시예에 따른 이동 로봇(100)은 주행 중 주행 감지 센서를 통하여 주행 정보를 모니터링할 수 있다(S2001).
제어부(150)는, 주행 감지 센서의 센싱값에 기초하여 이동 로봇(100)의 이동량을 판별할 수 있다(S2001).
실시예에 따라서, 판별된 이동 로봇(100)의 이동량이 문턱값(th)보다 ㅋ큰 경우에(S2003), 영상획득부(120)는 주행구역 내 키 프레임(key frame) 영상을 획득할 수 있다(S2010).
또는 상기 영상 획득 단계(S2010)에서 영상획득부(120)를 통하여 획득되는 영상들 중, 이전 노드부터의 이동거리가 문턱값(th)보다 큰 위치에 대응하는 영상을 키 프레임(key frame) 영상으로 선택할 수 있다.
한편, 본 발명의 일 실시예에 따르면 이동 로봇(100)의 센서부(170)는 본체(110) 외부의 조도를 센싱하는 조도 센서를 포함할 수 있다.
본 실시예에서, 이동 로봇(100)은 센서부(170)의 조도 센서를 통하여 조도 정보를 획득할 수 있다(S2013).
만약, 상기 조도 정보가 저조도 환경으로 설정된 조건을 만족하지 않으면(S2016), 제어부(150)는, 영상획득부(120)를 통하여 획득된 키 프레임의 전체 영상에서 포인트(point) 기반으로 특징점을 추출하고(S2040), 상기 포인트 기반의 특징점 추출 단계(S2040)에서 추출된 특징점을 상기 맵에 등록된 포인트 기반의 특징점 정보와 매칭함으로써(S2050), 상기 포인트 기반의 특징점 매칭 결과에 기초하여 현재 위치를 인식할 수 있다(S2060).
만약, 상기 조도 정보가 저조도 환경으로 설정된 조건을 만족하면(S2016), 제어부(150)는, 영상획득부(120)를 통하여 획득된 키 프레임의 전체 영상을 복수의 블록으로 나누고, 블록 단위로 특징점을 추출할 수 있다(S2020).
또한, 제어부(150)는, 상기 블록 기반의 특징점 추출 단계(S2020)에서 추출된 특징점을 상기 맵에 등록된 블록 기반의 특징점 정보와 매칭함으로써(S2030), 상기 포인트 기반의 특징점 매칭 결과에 기초하여 현재 위치를 인식할 수 있다(S2060).
실시예에 따라서는, 저조도 환경으로 판별된 경우(S2016), 블록 기반의 특징점 추출(S2020) 및 매칭(S2030)과 포인트 기반의 특징점 추출(S2040) 및 매칭(S2050)를 모두 수행하여, 그 결과를 취합하여 현재 위치를 인식(S2060)하는 것도 가능하다.
본 발명의 실시예에 따르면, 자기 위치 인식(S1860, S2060) 시, 공지된 몬테카를로(MCL) 위치 추정 방법을 이용할 수 있다. 몬테카를로(MCL) 위치 추정 방법은 파티클 필터(particle filter) 알고리즘을 이용하고 있다.
도 21을 참조하면, 제어부(150)는, 블록 기반의 특징점 매칭(S1850, S2020)에 기초하여 위치 후보인 복수의 파티클(particle)을 설정할 수 있다(S2110).
제어부(150)는, 소정 기준에 따라 n개의 파티클을 설정할 수 있다(S2110). 예를 들어, 제어부(150)는, 동일한 가중치를 가지는 기설정된 개수의 파티클을 설정할 수 있다.
이후, 제어부(150)는 상기 복수의 파티클에 대한 가중치(weight)를 산출하며(S2120), 상기 복수의 파티클의 가중치에 기초하여 상기 현재 위치를 결정할 수 있다(S2130).
제어부(150)는, 맵 상에 가정된 위치 후보들인 파티클들 먼지처럼 뿌려놓고(S2110), 가중치를 연산하여(S2120), 현재 위치를 결정할 수 있다(S2130).
제어부(150)는 블록 기반의 특징점 매칭 결과의 유사도에 따라 각 파티클의 가중치를 변경하는 연산을 수행할 수 있다. 예를 들어, 제어부(150)는 유사도에 비례하여 가중치를 증가시키거나 차이에 반비례하여 중치를 증가시킬 수 있다.
제어부(150)는, 파티클의 가중치에 기초하여 특정 파티클을 현재 위치로 결정하거나 가중치가 높은 복수의 파티클의 평균에 기초하여 현재 위치를 결정할 수 있다.
한편, 현재 위치가 결정되면(S2130), 이후의 위치 인식을 위하여, 제어부(150)는, 복수의 파티클을 리샘플링(resampling)할 수 있다(S2140). 예를 들어, 결정된 현재 위치를 기준으로 복수의 파티클을 설정할 수 있다.
실시예에 따라서는, 현재 위치가 결정되지 않으면(S2130), 위치 인식 실패로 판정할 수 있다(S2150).
본 발명에 따른 이동 로봇은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나, 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다.
한편, 본 발명의 실시예에 따른 이동 로봇의 제어 방법은, 프로세서가 읽을 수 있는 기록매체에 프로세서가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 프로세서가 읽을 수 있는 기록매체는 프로세서에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한, 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 프로세서가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
이동 로봇: 100
저장부: 105
본체: 110
영상획득부: 120
입력부: 125
제어부: 150
주행부: 160
센서부: 170
출력부: 180
통신부: 190
저장부: 105
본체: 110
영상획득부: 120
입력부: 125
제어부: 150
주행부: 160
센서부: 170
출력부: 180
통신부: 190
Claims (15)
- 주행 중 주행구역 내 영상을 획득하는 단계;
상기 획득된 영상에서 특징점을 추출하는 포인트(point) 기반의 특징점 추출 단계;
상기 획득된 영상을 기설정된 크기의 블록(Bolck)들로 구분하고, 구분된 각각의 블록 단위 영상들에서 특징점을 추출하는 블록 기반의 특징점 추출 단계;
상기 포인트 기반의 특징점 추출 단계에서 추출된 특징점을 이용하여, 현재 위치에 대응하는 노드 및 상기 현재 위치에 대응하는 노드를 기준으로 기설정된 기준 거리 이내의 노드의 특징점을 매칭(matching)하는 포인트 기반의 특징점 매칭 단계;
상기 블록 기반의 특징점 추출 단계에서 추출된 특징점을 이용하여, 상기 현재 위치에 대응하는 노드 및 상기 현재 위치에 대응하는 노드를 기준으로 상기 기준 거리 이내의 노드의 특징점을 매칭하는 블록 기반의 특징점 매칭 단계;
상기 포인트 기반의 특징점 매칭 결과와 상기 블록 기반의 특징점 매칭 결과에 기초하여 상기 현재 위치를 인식하는 단계; 및,
상기 인식된 현재 위치 정보, 상기 현재 위치에 대응하는 노드의 포인트 기반의 특징점 정보, 및 상기 현재 위치에 대응하는 노드의 블록 기반의 특징점 정보를 맵(map)에 등록하는 단계;를 포함하는 이동 로봇의 제어방법. - 제1항에 있어서,
상기 포인트 기반의 특징점 추출 단계는, 상기 추출된 특징점 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성에 기초하여 상기 추출된 특징점에 대응하는 디스크립터(descriptor)를 생성하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제1항에 있어서,
상기 블록 기반의 특징점 추출 단계는, 상기 블록 단위 영상들의 밝기 구배(gradient)의 분포 특성에 기초하여 각각의 블록별 디스크립터를 생성하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제1항에 있어서,
상기 주행 중 주행 정보를 획득하는 단계;를 더 포함하고,
상기 영상 획득 단계는, 상기 획득된 주행 정보에 기초하여 이전 노드부터의 이동량이 문턱값(threshold)보다 커지면 영상획득부를 통하여 상기 영상을 획득하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제1항에 있어서,
상기 주행 중 주행 정보를 획득하는 단계;
상기 영상 획득 단계에서 영상획득부를 통하여 획득되는 영상들 중, 이전 노드부터의 이동량이 문턱값보다 큰 영상을 키 프레임 영상으로 선택하는 단계;를 더 포함하고,
상기 포인트 기반의 특징점 추출 단계와 상기 블록 기반의 특징점 추출 단계는, 상기 키 프레임 영상을 대상으로 수행하는 것을 특징으로 하는 이동 로봇의 제어방법. - 주행 중 주행구역 내 영상을 획득하는 단계;
상기 획득된 영상을 기설정된 크기의 블록(Bolck)들로 구분하고, 구분된 각각의 블록 단위 영상들에서 특징점을 추출하는 블록 기반의 특징점 추출 단계;
상기 블록 기반의 특징점 추출 단계에서 추출된 특징점을 맵에 등록된 블록 기반의 특징점 정보와 매칭하는 블록 기반의 특징점 매칭 단계; 및,
상기 블록 기반의 특징점 매칭 결과에 기초하여 현재 위치를 인식하는 단계;를 포함하는 이동 로봇의 제어방법. - 제6항에 있어서,
상기 블록 기반의 특징점 추출 단계는, 상기 블록 단위 영상들의 밝기 구배(gradient)의 분포 특성에 기초하여 각각의 블록별 디스크립터를 생성하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제6항에 있어서,
상기 획득된 영상에서 특징점을 추출하는 포인트(point) 기반의 특징점 추출 단계;
상기 포인트 기반의 특징점 추출 단계에서 추출된 특징점을 상기 맵에 등록된 포인트 기반의 특징점 정보와 매칭하는 단계;를 더 포함하고,
상기 현재 위치 인식 단계는, 상기 포인트 기반의 특징점 매칭 결과와 상기 블록 기반의 특징점 매칭 결과에 기초하여 상기 현재 위치를 인식하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제8항에 있어서,
상기 포인트 기반의 특징점 추출 단계는, 상기 추출된 특징점 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성에 기초하여 상기 추출된 특징점에 대응하는 디스크립터(descriptor)를 생성하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제6항에 있어서,
상기 주행 중 주행 정보를 획득하는 단계;를 더 포함하고,
상기 영상 획득 단계는, 상기 획득된 주행 정보에 기초하여 이전 노드부터의 이동량이 문턱값(threshold)보다 커지면 영상획득부를 통하여 상기 영상을 획득하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제6항에 있어서,
상기 주행 중 주행 정보를 획득하는 단계;
상기 영상 획득 단계에서 영상획득부를 통하여 획득되는 영상들 중, 이전 노드부터의 이동량이 문턱값보다 큰 영상을 키 프레임 영상으로 선택하는 단계;를 더 포함하고,
상기 블록 기반의 특징점 추출 단계는, 상기 키 프레임 영상을 대상으로 수행하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제6항에 있어서,
센서부를 통하여 조도 정보를 획득하는 단계;를 더 포함하고,
상기 조도 정보가 저조도 환경으로 설정된 조건을 만족하면, 상기 블록 기반의 특징점 추출 단계를 수행하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제12항에 있어서,
상기 조도 정보가 상기 저조도 환경으로 설정된 조건을 만족하지 않으면, 상기 획득된 영상에서 특징점을 추출하는 포인트(point) 기반의 특징점 추출 단계;
상기 포인트 기반의 특징점 추출 단계에서 추출된 특징점을 상기 맵에 등록된 포인트 기반의 특징점 정보와 매칭하는 단계; 및,
상기 포인트 기반의 특징점 매칭 결과에 기초하여 상기 현재 위치를 인식하는 단계;를 더 포함하는 이동 로봇의 제어방법. - 제13항에 있어서,
상기 포인트 기반의 특징점 추출 단계는, 상기 추출된 특징점 주변의 일정한 구역에 속한 픽셀들의 밝기 구배(gradient)의 분포 특성에 기초하여 상기 추출된 특징점에 대응하는 디스크립터(descriptor)를 생성하는 것을 특징으로 하는 이동 로봇의 제어방법. - 제6항에 있어서,
상기 현재 위치를 인식하는 단계는,
상기 블록 기반의 특징점 매칭에 기초하여 위치 후보인 복수의 파티클(particle)을 설정하고,
상기 복수의 파티클에 대한 가중치(weight)를 산출하며,
상기 복수의 파티클의 가중치에 기초하여 상기 현재 위치를 결정하고,
상기 복수의 파티클을 리샘플링(resampling)하는 것을 특징으로 하는 이동 로봇의 제어방법.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190035040A KR102143349B1 (ko) | 2019-03-27 | 2019-03-27 | 이동 로봇의 제어 방법 |
US16/830,964 US11348276B2 (en) | 2019-03-27 | 2020-03-26 | Mobile robot control method |
AU2020244635A AU2020244635B2 (en) | 2019-03-27 | 2020-03-27 | Mobile robot control method |
PCT/KR2020/004158 WO2020197303A1 (en) | 2019-03-27 | 2020-03-27 | Mobile robot control method |
EP20779632.7A EP3946839A4 (en) | 2019-03-27 | 2020-03-27 | MOBILE ROBOT CONTROL METHOD |
JP2020058988A JP6977093B2 (ja) | 2019-03-27 | 2020-03-27 | 移動ロボットの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190035040A KR102143349B1 (ko) | 2019-03-27 | 2019-03-27 | 이동 로봇의 제어 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102143349B1 true KR102143349B1 (ko) | 2020-08-11 |
Family
ID=72048173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190035040A KR102143349B1 (ko) | 2019-03-27 | 2019-03-27 | 이동 로봇의 제어 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11348276B2 (ko) |
EP (1) | EP3946839A4 (ko) |
JP (1) | JP6977093B2 (ko) |
KR (1) | KR102143349B1 (ko) |
AU (1) | AU2020244635B2 (ko) |
WO (1) | WO2020197303A1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7366373B2 (ja) * | 2020-10-02 | 2023-10-23 | 本田技研工業株式会社 | 移動体制御装置、移動体、移動体制御方法、およびプログラム |
CN112621753B (zh) * | 2020-12-09 | 2022-12-06 | 浙江大华技术股份有限公司 | 机器人定位方法、电子设备及存储介质 |
KR20230092801A (ko) | 2021-12-17 | 2023-06-26 | 한국기계연구원 | 광학식 시차 생성을 이용한 단일 카메라 스테레오 비전의 3차원 형상 측정 방법 및 장치 |
CN114627496B (zh) * | 2022-03-01 | 2023-10-20 | 中国科学技术大学 | 基于高斯过程的去偏批量归一化的鲁棒行人重识别方法 |
TWI815613B (zh) * | 2022-08-16 | 2023-09-11 | 和碩聯合科技股份有限公司 | 適用於機器人之導航方法及其機器人 |
CN116105720B (zh) * | 2023-04-10 | 2023-06-23 | 中国人民解放军国防科技大学 | 低照度场景机器人主动视觉slam方法、装置和设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010108160A (ko) * | 1999-11-29 | 2001-12-07 | 이데이 노부유끼 | 비디오/오디오 신호 처리 방법 및 비디오/오디오 신호처리 장치 |
KR20080024407A (ko) * | 2006-09-13 | 2008-03-18 | 삼성전자주식회사 | 이동 로봇의 자세 추정 장치 및 방법 |
JP2011008687A (ja) * | 2009-06-29 | 2011-01-13 | Sharp Corp | 画像処理装置 |
KR20110011424A (ko) * | 2009-07-28 | 2011-02-08 | 주식회사 유진로봇 | 이동 로봇의 위치 인식 및 주행 제어 방법과 이를 이용한 이동 로봇 |
KR20180023302A (ko) * | 2016-08-25 | 2018-03-07 | 엘지전자 주식회사 | 이동 로봇 및 그 제어방법 |
KR20180043753A (ko) * | 2016-10-20 | 2018-04-30 | 엘지전자 주식회사 | 이동 로봇 및 이동 로봇의 제어방법 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1132253A (ja) | 1997-07-08 | 1999-02-02 | Hitachi Ltd | 画像処理装置 |
JP4136044B2 (ja) | 1997-12-24 | 2008-08-20 | オリンパス株式会社 | 画像処理装置及びその画像処理方法 |
JP4804238B2 (ja) | 2006-06-20 | 2011-11-02 | 三菱電機株式会社 | 動きベクトル検出装置 |
JP4645601B2 (ja) | 2007-02-13 | 2011-03-09 | トヨタ自動車株式会社 | 環境地図の生成方法及び移動ロボット |
KR101072876B1 (ko) | 2009-03-18 | 2011-10-17 | 연세대학교 산학협력단 | 이동 로봇에서 자신의 위치를 추정하기 위한 방법 및 장치 |
EP2460629B1 (en) * | 2009-07-28 | 2022-06-29 | Yujin Robot Co., Ltd. | Control method for localization and navigation of mobile robot and mobile robot using same |
KR101686170B1 (ko) * | 2010-02-05 | 2016-12-13 | 삼성전자주식회사 | 주행 경로 계획 장치 및 방법 |
KR20120021064A (ko) * | 2010-08-31 | 2012-03-08 | 엘지전자 주식회사 | 이동 로봇 및 이의 제어 방법 |
KR101697857B1 (ko) * | 2015-04-08 | 2017-01-18 | 엘지전자 주식회사 | 이동 로봇 및 그의 위치인식방법 |
CN108369420B (zh) * | 2015-11-02 | 2021-11-05 | 星船科技私人有限公司 | 用于自主定位的设备和方法 |
CN108615248B (zh) * | 2018-04-27 | 2022-04-05 | 腾讯科技(深圳)有限公司 | 相机姿态追踪过程的重定位方法、装置、设备及存储介质 |
-
2019
- 2019-03-27 KR KR1020190035040A patent/KR102143349B1/ko active IP Right Grant
-
2020
- 2020-03-26 US US16/830,964 patent/US11348276B2/en active Active
- 2020-03-27 AU AU2020244635A patent/AU2020244635B2/en active Active
- 2020-03-27 EP EP20779632.7A patent/EP3946839A4/en active Pending
- 2020-03-27 JP JP2020058988A patent/JP6977093B2/ja active Active
- 2020-03-27 WO PCT/KR2020/004158 patent/WO2020197303A1/en unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010108160A (ko) * | 1999-11-29 | 2001-12-07 | 이데이 노부유끼 | 비디오/오디오 신호 처리 방법 및 비디오/오디오 신호처리 장치 |
KR20080024407A (ko) * | 2006-09-13 | 2008-03-18 | 삼성전자주식회사 | 이동 로봇의 자세 추정 장치 및 방법 |
JP2011008687A (ja) * | 2009-06-29 | 2011-01-13 | Sharp Corp | 画像処理装置 |
KR20110011424A (ko) * | 2009-07-28 | 2011-02-08 | 주식회사 유진로봇 | 이동 로봇의 위치 인식 및 주행 제어 방법과 이를 이용한 이동 로봇 |
KR20180023302A (ko) * | 2016-08-25 | 2018-03-07 | 엘지전자 주식회사 | 이동 로봇 및 그 제어방법 |
KR20180043753A (ko) * | 2016-10-20 | 2018-04-30 | 엘지전자 주식회사 | 이동 로봇 및 이동 로봇의 제어방법 |
Also Published As
Publication number | Publication date |
---|---|
US11348276B2 (en) | 2022-05-31 |
JP2020161142A (ja) | 2020-10-01 |
AU2020244635B2 (en) | 2023-08-03 |
US20200311970A1 (en) | 2020-10-01 |
JP6977093B2 (ja) | 2021-12-08 |
WO2020197303A1 (en) | 2020-10-01 |
AU2020244635A1 (en) | 2021-11-18 |
EP3946839A4 (en) | 2023-01-25 |
EP3946839A1 (en) | 2022-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102243179B1 (ko) | 이동 로봇 및 그 제어방법 | |
KR102143349B1 (ko) | 이동 로봇의 제어 방법 | |
KR102314539B1 (ko) | 인공지능 이동 로봇의 제어 방법 | |
EP3575046B1 (en) | Mobile robot and method for controlling same | |
US11199852B2 (en) | Mobile robot and control method for controlling the same | |
US11561549B2 (en) | Method of controlling mobile robot | |
US10939791B2 (en) | Mobile robot and mobile robot control method | |
KR102319489B1 (ko) | 이동 로봇 및 그 제어방법 | |
KR20180023301A (ko) | 이동 로봇 및 그 제어방법 | |
KR102024094B1 (ko) | 인공지능을 이용한 이동 로봇 및 그 제어방법 | |
KR20180023302A (ko) | 이동 로봇 및 그 제어방법 | |
KR101922953B1 (ko) | 이동 로봇 및 그 제어방법 | |
KR102147210B1 (ko) | 인공지능 이동 로봇의 제어 방법 | |
KR102147211B1 (ko) | 인공지능 이동 로봇의 제어 방법 | |
KR102048363B1 (ko) | 이동 로봇 | |
KR20200091110A (ko) | 이동 로봇 및 그 제어 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |