KR102369062B1 - 이동 로봇 및 그 제어 방법 - Google Patents

이동 로봇 및 그 제어 방법 Download PDF

Info

Publication number
KR102369062B1
KR102369062B1 KR1020190105211A KR20190105211A KR102369062B1 KR 102369062 B1 KR102369062 B1 KR 102369062B1 KR 1020190105211 A KR1020190105211 A KR 1020190105211A KR 20190105211 A KR20190105211 A KR 20190105211A KR 102369062 B1 KR102369062 B1 KR 102369062B1
Authority
KR
South Korea
Prior art keywords
tracking
data
mobile robot
scan data
image
Prior art date
Application number
KR1020190105211A
Other languages
English (en)
Other versions
KR20210025327A (ko
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 KR1020190105211A priority Critical patent/KR102369062B1/ko
Priority to PCT/KR2020/008496 priority patent/WO2021040214A1/ko
Publication of KR20210025327A publication Critical patent/KR20210025327A/ko
Application granted granted Critical
Publication of KR102369062B1 publication Critical patent/KR102369062B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J11/00Manipulators not otherwise provided for
    • B25J11/008Manipulators for service tasks
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J11/00Manipulators not otherwise provided for
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/021Optical sensing devices
    • B25J19/022Optical sensing devices using lasers
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/021Optical sensing devices
    • B25J19/023Optical sensing devices including video camera means
    • 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/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • 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

Abstract

이동 로봇 및 그 제어 방법이 제공된다. 이동 로봇은, 상기 이동 로봇의 소정 위치에 설치되어, 화각 내 스캔을 통하여 생성한 레이저 스캔 데이터를 스캔 단위로 출력하는 레이저 스캐너, 상기 적어도 하나의 영상 생성부 및 상기 레이저 스캐너를 이용한 객체 인식 및 객체 추적을 수행하는 프로그램이 저장된 메모리, 그리고 상기 프로그램을 실행하는 적어도 하나의 프로세서를 포함하고, 상기 프로그램은, 상기 적어도 하나의 영상 생성부가 생성한 영상을 스켈레톤화하여 스켈레톤 영상을 생성하여 저장하고, 상기 레이저 스캔 데이터를 기초로 추적 대상인 객체를 검출하며, 노이즈 또는 간섭이 발생하거나 또는 객체 추적에 실패하면, 상기 적어도 하나의 영상 생성부를 구동하여 현 시점에 촬영된 영상으로부터 스켈레톤 영상을 생성하고, 현 시점의 스켈레톤 영상과 기 저장된 스켈레톤 영상이 일치하면, 현 시점에 출력된 레이저 스캔 데이터를 기초로 객체를 재검출하는 명령어들을 포함한다.

Description

이동 로봇 및 그 제어 방법{MOVING ROBOT AND METHOD FOR CONTROL OF THE MOVING ROBOT}
본 발명은 이동 로봇 및 그 제어 방법에 관한 것이다.
물류 시장의 자동화가 확장됨에 따라 물류 현장에서 사용중인 수동 카트 또는 대차에 객체를 인식해서 자동으로 따라다니는 객체 추적 주행 기술을 적용하는 사례가 증가하고 있다. 객체 추적 주행 기술은 다양한 분야에 활용되는데 대표적으로 안내 서비스 로봇이 있다. 안내 서비스 로봇은 고객을 따라다니면서 위치를 안내하거나 고객 또는 객체의 짐을 운반하는 역할을 한다. 그러나 이러한 객체 추적 주행 기술은 고비용의 센서를 기반으로 동작하거나 제약된 환경 내에서 주행하여 상용화 확산에 어려움이 있다.
통상적으로, 객체의 추적을 위해서 고비용의 센서, 예를들면, 라이다(LiDAR) 센서 등을 여러개 사용하고, 위치 측위를 위해서 지도 정보 및 측위 인프라를 활용하기에 비용의 증대와 유지 보수의 어려움이 있다.
또한, 개인 여행용 가방 사례와 같이 근거리 무선통신 기반의 추적 기술은 사용자가 웨어러블 디바이스를 착용하면 일대일 맵핑하여 따라 다니므로 다수의 객체와 고객이 이용하는데 있어서 제약사항이 많다.
또한, 종래에 깊이 카메라를 사용한 객체 추적 방식은 깊이 카메라의 낮은 해상도와 좁은 인식 영역으로 인하여 객체를 놓치는 경우가 종종 발생한다.
본 발명이 해결하고자 하는 과제는 레이저 스캐너 및 영상 촬영부를 활용하여 위치 측위 인프라의 도움 없이도 효율적인 객체 인식 및 추적 기능을 가진 이동 로봇 및 그 제어 방법을 제공하는 것이다.
본 발명의 하나의 특징에 따르면, 이동 로봇으로서, 상기 이동 로봇의 소정 위치에 설치되는 적어도 하나의 영상 촬영부, 상기 이동 로봇의 소정 위치에 설치되는 레이저 스캐너, 상기 적어도 하나의 영상 촬영부 및 상기 레이저 스캐너를 이용한 객체 인식 및 객체 추적을 수행하는 프로그램이 저장된 메모리, 그리고 상기 프로그램을 실행하는 적어도 하나의 프로세서를 포함하고, 상기 프로그램은, 상기 적어도 하나의 영상 촬영부가 생성한 영상을 기초로 추적 대상인 객체를 인식하고, 상기 레이저 스캔 데이터를 통해 추적 대상인 객체를 검출하여 추적하며, 객체 추적에 실패할 경우, 상기 적어도 하나의 영상 촬영부를 구동하여 현 시점에 촬영된 영상과, 기 저장된 영상을 비교하고, 현 시점에 출력된 레이저 스캔 데이터를 기초로 객체를 재검출하는 명령어들을 포함한다.
상기 프로그램은, 제1 시점에 수집된 레이저 스캔 데이터로부터 검출된 복수의 객체 영역과 상기 제1 시점보다 나중 시점인 제2 시점에 수집된 레이저 스캔 데이터로부터 검출된 복수의 객체 영역을 교차시키고, 교차 영역의 비율이 가장 큰 객체를 추적 객체로 인식하는 명령어를 포함할 수 있다.
상기 프로그램은, 2차원 배열된 레이저 스캔 데이터에 모폴로지 연산을 적용하여 노이즈를 제거하는 명령어를 포함할 수 있다.
상기 프로그램은, 노이즈가 제거된 레이저 스캔 데이터를 레이블링하여, 동일한 레이블을 가진 적어도 하나의 영역을 각각의 객체로 검출하고, 상기 각각의 객체로 검출된 영역을 상기 영상과 비교하여 일치하는 객체를 추적 객체로 선별하는 명령어를 포함할 수 있다.
상기 프로그램은, 정해진 스캔 영역에서 수집한 레이저 센서 데이터를 기초로, 객체를 검출하는 명령어를 포함하고, 상기 정해진 스캔 영역은, 지면으로부터 사람의 신체 부위별 설정된 높이에 해당하는 범위를 가질 수 있다.
상기 프로그램은, 상기 정해진 스캔 영역 별로 그룹핑된 레이저 센서 데이터에서, 상기 그룹핑된 레이저 센서 데이터를 구성하는 점군 간의 최단 거리를 기준으로 데이터 그룹을 분할하고, 분할한 데이터 그룹 내에서 스캔 영역 별로 특징 변수를 계산하는 명령어들을 포함할 수 있다.
상기 특징 변수는, 상기 점군 들이 포함된 그룹 데이터의 전체 너비, 인접한 두 점군 사이의 거리들, 상기 그룹의 폭 및 상기 거리들의 평균을 포함할 수 있다.
본 발명의 다른 특징에 따르면, 이동 로봇의 제어 방법으로서, 레이저 스캔 데이터를 수집하는 단계, 극좌표계로 구성된 레이저 스캔 데이터를 직교 좌표계의 위치 값을 가지는 복수개의 점군 형태로 변환하는 단계, 점군 형태로 변환된 레이저 스캔 데이터를 카메라로 촬영한 영상 데이터와 비교하여, 점군 별로 해당하는 영상의 픽셀값을 이용하여 이진화하는 단계, 상기 레이저 스캔 데이터를 레이블링하여 복수개의 객체를 검출하는 단계, 검출된 복수개의 객체를 상기 영상 데이터와 비교하여 일치하는 객체를 추적 객체로 선별하는 단계, 그리고 상기 추적 객체를 향하여 주행하는 단계를 포함한다.
상기 레이저 스캔 데이터를 수집하는 단계는 모폴로지 마스크를 적용하여 노이즈를 제거하는 단계를 더 포함하고, 상기 모폴로지 마스크는, 사람의 보폭을 커버할 수 있는 크기로 사전에 설정될 수 있다.
상기 주행하는 단계는, 제1 스캔 시점의 레이저 스캔 데이터로부터 검출된 복수개의 객체를 상기 제1 스캔 시점보다 나중인 제2 스캔 시점의 레이저 스캔 데이터로부터 검출된 복수개의 객체와 비교하여 교차하는 영역의 비율이 가장 큰 객체를 추적 객체로 인식하는 단계를 더 포함할 수 있다.
상기 교차하는 영역의 비율이 가장 큰 객체를 추적 객체로 인식하는 단계는, 사전에 설정된 조건에 따라 선택적으로 구동될 수 있다.
상기 레이저 스캔 데이터를 수집하는 단계는, 상기 레이저 스캔 데이터 중에서, 사람의 신체 부위 별로 설정된 높이에 해당하는 스캔 데이터를 필터링하는 단계를 더 포함할 수 있다.
상기 검출하는 단계는, 상기 이진화된 레이저 스캔 데이터를 레이블링 대상으로 적용하는 단계, 상기 레이블링 대상으로 적용된 상기 데이터에서, 각 점군 사이의 거리를 기준으로 상기 데이터를 분할하여 그룹핑하는 단계, 그리고 그룹핑된 점군들을 동일한 객체로 구분하기 위한 레이블링을 수행하는 단계를 포함할 수 있다.
본 발명의 또 다른 특징에 따르면, 이동 로봇의 동작 방법으로서, 원격지 서버와 연동하여 객체 추적을 위한 인증을 수행하는 단계, 상기 인증에 성공하면, 전방을 촬영하여 영상을 생성하고, 생성한 영상을 스켈레톤화하여 스켈레톤 영상을 생성하는 단계, 사용자 데이터베이스에 사전에 등록된 제1 사용자들의 스켈레톤 영상과 상기 생성한 스켈레톤 영상을 비교하여 상기 생성한 스켈레톤 영상이 제1 사용자인지 판별하는 단계, 제1 사용자로 판단되면, 레이저 스캐너를 이용하여 상기 제1 사용자를 추적하면서 제1 사용자의 요청에 따른 작업을 수행하고, 작업 이력을 저장하는 단계, 그리고 제1 사용자가 아니라고 판단되면, 제2 사용자 정보 및 목적지 정보의 입력을 요구하여 입력받고, 상기 레이저 스캐너를 이용하여 제2 사용자를 추적하면서 입력받은 목적지까지 길 안내를 수행하는 단계를 포함한다.
상기 레이저 스캐너를 이용한 제1 사용자 추적 또는 제2 사용자 추적은, 극좌표계로 구성된 레이저 스캔 데이터를 직교 좌표계의 위치 값을 가지는 복수개의 점군 형태로 변환하고, 점군 형태로 변환된 레이저 스캔 데이터를 카메라로 촬영한 영상 데이터와 비교하여 점군 별로 해당하는 영상의 픽셀값을 이용하여 이진화하며, 이진화된 레이저 스캔 데이터를 레이블링하여 검출한 복수개의 객체를 상기 영상 데이터와 비교하여 일치하는 객체를 추적 객체로 선별하는 방식으로 이루어질 수 있다.
상기 저장하는 단계는, 상기 제1 사용자로 판단되면, 촬영 영상으로부터 특징점 정보를 추출하여 등록하는 단계, 제1 사용자가 요청한 작업을 수행하고 작업 이력을 저장하는 단계, 상기 레이저 스캐너를 이용하여 제1 사용자를 추적하는 단계, 상기 제1 사용자의 추적에 실패하면, 현 시점의 전방을 촬영하여 획득한 영상으로부터 특징점 정보를 추출하고, 추출한 특징점 정보를 상기 등록한 특징점 정보와 비교하여 일치하는 지점의 객체를 제1 사용자로 판별하는 단계, 그리고 판별한 제1 사용자의 위치로 이동하여 이전 작업 이력을 안내하고 추적 의사가 있는지 질의하여, 추적을 수락하면 추적을 지속하고 추적을 거절하면 객체 추적을 종료하고 시작 위치로 이동하는 단계를 포함할 수 있다.
상기 길 안내를 수행하는 단계 이후, 상기 제2 사용자의 추적에 실패하면, 로봇의 전방을 촬영하여 생성한 영상을 스켈레톤화하여 현 시점의 스켈레톤 영상을 생성하는 단계, 그리고 기 생성한 스켈레톤 영상과 상기 현 시점의 스켈레톤 영상을 비교하여 일치하는 객체를 탐색하고, 탐색된 객체를 추적하는 단계를 더 포함할 수 있다.
실시예에 따르면, 수백~수천만원의 라이다(LiDAR) 센서를 대신하여 상대적으로 저렴한 레이저 스캐너 및 영상 촬영부를 활용함으로써, 영상 촬영부를 이용한 객체 인식/추적 알고리즘과 레이저 스캐너를 이용한 객체 인식/추적 알고리즘을 결합하여 객체 추적률을 향상시킨다. 즉, 영상 촬영부의 인식 범위 및 처리 속도를 레이저 스캐너를 통해 보완할 수 있다.
또한, 카메라의 낮은 해상도와 화각이 좁음으로써 발생하는 추적 실패의 문제점을 전방의 대부분을 커버할 수 있는 화각을 가진 레이저 스캐너를 사용하여 보완한다.
또한, 레이저 스캐너로 수집된 데이터를 효율적으로 처리함으로써, 지속적 추적 성능을 향상시킨다.
또한, 객체 추적시 실내외 위치를 측위하는 인프라의 도움 없이 소프트웨어만으로 추적이 가능하므로 실제 현장에 적용시에 가격 경쟁력과 유지 보수의 효율 성능을 제고할 수 있다.
도 1은 본 발명의 한 실시예에 따른 이동 로봇의 구성을 나타낸 블록도이다.
도 2는 도 1의 이동 로봇의 화각을 설명하는 도면이다.
도 3은 본 발명의 실시예에 따른 2차원으로 변환된 스캔 데이터의 예시이다.
도 4는 본 발명의 실시예에 따른 이동 로봇의 영역 설정 예시도이다.
도 5는 본 발명의 한 실시예에 따른 이동 로봇의 동작을 나타낸 순서도이다.
도 6은 본 발명의 한 실시예에 따른 이동 로봇의 객체 인식/추적 동작을 나타낸 순서도이다.
도 7은 본 발명의 다른 실시예에 따른 이동 로봇의 객체 인식/추적 동작을 나타낸 순서도이다.
도 8은 본 발명의 실시예에 따른 레이블링 과정을 통해 객체를 검출하는 과정을 나타낸 순서도이다.
도 9는 본 발명의 실시예에 따른 레이저 스캔 영역을 설명하는 도면이다.
도 10은 본 발명의 실시예에 따른 이동 로봇을 기점으로 레이저 스캔 데이터를 수집하는 좌표계를 설명하는 도면이다.
도 11은 본 발명의 실시예에 따른 레이블링된 레이저 스캔 데이터에서 신뢰할 수 있는 데이터를 추출하는 과정을 설명하는 도면이다.
도 12는 본 발명의 실시예에 따른 레이저 스캔 데이터로부터 특징 변수를 설명하는 도면이다.
도 13은 본 발명의 실시예에 따른 특징 변수를 기초로 객체를 분할하는 과정을 설명하는 도면이다.
도 14는 본 발명의 실시예에 따른 프레임 매칭 기술을 설명하는 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "…부", "…기", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 발명에서 설명하는 장치들은 적어도 하나의 프로세서, 메모리 장치, 통신 장치 등을 포함하는 하드웨어로 구성되고, 지정된 장소에 하드웨어와 결합되어 실행되는 프로그램이 저장된다. 하드웨어는 본 발명의 방법을 실행할 수 있는 구성과 성능을 가진다. 프로그램은 도면들을 참고로 설명한 본 발명의 동작 방법을 구현한 명령어(instructions)를 포함하고, 프로세서와 메모리 장치 등의 하드웨어와 결합하여 본 발명을 실행한다.
본 명세서에서 "전송" 또는 "제공"은 직접적인 전송 또는 제공하는 것 뿐만 아니라 다른 장치를 통해 또는 우회 경로를 이용하여 간접적으로 전송 또는 제공도 포함할 수 있다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
본 명세서에서 이동 로봇은 다양한 감지 센서 및 자율적인 주행 제어 알고리즘을 탑재하여 장애물을 피해가면서 원하는 방향으로 주행하도록 구성된다. 이동 로봇은 실내 인프라 구축이나 웨어러블 디바이스와 같은 추가 장비 착용이 불필요하여 물류 분야 뿐만 아니라 호텔 룸서비스, 쇼핑 카트 등 많은 분야에 응용될 수 있다.
이제, 도면을 참고하여 본 발명의 실시예에 따른 이동 로봇 및 그 제어 방법에 대하여 설명한다.
도 1은 본 발명의 실시예에 따른 이동 로봇의 구성을 나타낸 블록도이고, 도 2는 도 1의 이동 로봇의 화각을 설명하는 도면이며, 도 3은 본 발명의 실시예에 따른 2차원으로 변환된 스캔 데이터의 예시이고, 도 4는 본 발명의 실시예에 따른 이동 로봇의 영역 설정 예시도이다.
도 1을 참조하면, 이동 로봇(100)은 영상 촬영부(101), 레이저 스캐너(103), 주행 장치(105), 입력 장치(107), 출력 장치(109), 통신 장치(111), 저장 장치(113), 메모리(115) 및 제어부(117)를 포함한다.
영상 촬영부(101)는 이동 로봇(100)의 외부에 부착되고, 이동 로봇(100)의 외부를 촬영하여 영상을 생성한다. 영상 촬영부(101)는 1개 설치될 수 있으나, 실시예에 따라서는 복수개가 설치될 수도 있다.
한 실시예에 따르면, 영상 촬영부(101)는 RGB 카메라와 뎁스(depth) 센서를 결합한 깊이 카메라가 사용될 수 있다.
레이저 스캐너(103)는 영상 촬영부(101)와 겹치는 화각에 설치될 수 있다. 레이저 스캐너(103)는 이동 로봇(100)의 외부에 부착되어 빠르게 회전하는 레이저 측정 빔을 이용하여 레이저 스캐너의(103) 주변을 감지한다.
이때, 레이저 스캐너(103)는 이동 로봇(100)에 탑재된 채로 이동 로봇(100)이 이동하는 동안 스캔 방향으로 레이저를 조사하고 스캔 방향에 위치하는 객체의 표면을 스캔하여 스캔 데이터를 획득한다.
도 2를 참조하면, 영상 촬영부(101)는 이동 로봇(101)의 전면에 설치되어 이동 로봇(101)의 현재 위치에서 전방을 촬영한다. 영상 촬영부(101)는 1개 설치된 것으로 설명하나, 실시예에 따라 복수개가 설치될 수도 있다.
영상 촬영부(101)는 객체의 전체 스켈레톤을 인식하기 위해 이동 로봇(100)의 상단에 설치될 수 있다.
레이저 스캐너(103)는 영상 촬영부(101)와 겹쳐지는 화각에 복수개가 설치될 수 있다. 예를들어, 레이저 스캐너(103)는 이동 로봇(101)의 전면에 2개, 후면에 1개가 설치될 수 있다.
이때, 영상 촬영부(101)의 화각은 대략 120도이고, 레이저 스캐너(103)는 영상 촬영부(101)의 화각보다 넓은 화각을 가지는데, 대략 360도의 화각일 수 있다.
따라서, 추적중인 객체가 영상 촬영부(101)의 화각을 벗어나도 레이저 스캐너(103)를 통하여 객체 추적을 유지할 수 있다.
다시, 도 1을 참조하면, 주행 장치(105)는 이동 로봇(101)을 주행하게 하는 장치로서, 이동 로봇(100)을 주행시키기 위하여 복수개의 바퀴, 모터 등과 같은 주행 수단과, 주행 수단에 구동력을 제공하기 위한 구동원을 포함할 수 있다. 이러한 주행 장치(105)는 널리 공지된 기술에 속하는 것으로 여기서는 그에 대한 상세한 설명을 생략한다.
입력 장치(107)는 사용자 명령을 입력받는 수단이다. 입력 장치(107)는 키보드, 터치패드, 광 조이스틱, 마우스 등의 장치를 포함할 수 있다.
출력 장치(109)는 입력 장치(107)로부터 전달되는 사용자 명령에 따라 시각적 출력 또는 청각적 출력을 할 수 있다. 출력 장치(109)는 디스플레이 장치나 스피커 등과 같은 출력 장치를 포함할 수 있다. 출력 장치(109)는 사용자 인터페이스(User Interface, 이하, 'UI'라 통칭함) 화면을 출력할 수 있다. 출력 장치(109)는 음성, 사운드 등을 출력할 수 있다.
입력 장치(107) 및 출력 장치(109)는 터치스크린으로 구현될 수 있다. 즉, 화면 상에 터치 키패드, 터치 버튼 등이 활성화되어 사용자 명령을 입력받고 다양한 정보가 출력될 수 있다.
통신 장치(111)는 통신망(미도시)을 통해 원격지 서버(미도시)와 연결되어, 데이터를 송수신한다.
저장 장치(113)는 이동 로봇(100)의 동작에 필요한 데이터, 통신 장치(111)를 통해 송수신되는 데이터를 저장한다.
메모리(115)는 이동 로봇(100)의 동작에 필요한 프로그램 및 데이터를 저장한다. 이러한 프로그램은 이동 로봇(100)의 동작 및 제어를 수행하는 명령어들(Instructions)로 구성된다.
제어부(117)는 적어도 하나의 프로세서로서, 메모리(115)에 저장된 프로그램을 실행한다.
제어부(117)는 ROS(Robot Operating System) 기반에서 동작하며, 세부적으로, 객체 추적부(119), 주행 제어부(121), UI(User Interface) 제어부(123), 원격 제어부(125) 및 작업 관리부(127)를 포함한다.
객체 추적부(119)는 영상 촬영부(101) 및 레이저 스캐너(103)와 연동하여 객체를 인식 및 추적한다. 객체 추적부(119)는 객체 인식 및 추적 과정에서 장애물을 탐지하여 회피하거나, 속도를 줄이거나 또는 비상 정지하도록 주행 제어부(121)에게 요청한다. 객체 추적부(119)는 이동 로봇(100)의 네비게이션을 위한 작업장 지도를 생성하고, 네비게이션 기능을 처리한다. 여기서, 작업장은 이동 로봇(100)이 주행하는 환경을 지칭한다. 객체 추적부(119)는 추적 모드와 주행 모드로 구분하여 동작할 수 있다.
객체 추적부(119)는 객체 인식 및 추적에 사용할 수 있도록 영상 촬영부(101)와 레이저 스캐너(103)로부터 원시 데이터를 수신하고 가공 처리한다.
객체 추적부(119)는 영상 촬영부(101)가 생성한 영상으로부터 깊이맵(depth map)과 스켈레톤 데이터(skeleton data)를 추출한다.
객체 추적부(119)는 객체를 인식하고 이를 지속적으로 추적하여 지정된 객체만 따라가도록 주행 제어부(121)를 구동한다. 여기서, 객체는 움직이는 대상으로서, 본 발명에서 객체는 추적하고자 하는 사람을 의미한다. 한 실시예에 따르면, 이동 로봇이 호텔에서 사용되는 경우, 객체는 직원과 손님이 될 수 있다.
객체 추적부(119)는 영상 촬영부(101)로부터 수신한 영상을 기초로 추적할 객체를 식별하고, 식별한 객체를 레이저 스캐너(103)로부터 수신한 스캔 데이터를 이용하여 추적한다. 이처럼, 객체 추적부(119)는 영상 촬영부(101)와 레이저 스캐너(103)를 결합하여 객체를 인식 및 추적함으로써, 객체 추적률을 향상시킬 수 있다.
객체 추적부(119)는 영상 촬영부(101)로부터 수신한 영상을 이용하여 객체의 스켈레톤(skeleton) 위치를 파악하여 객체를 인식한다.
객체 추적부(119)는 영상 촬영부(101)로부터 수신한 영상을 스켈레톤화(skeletonization)하여 스켈레톤 영상을 생성한다. 스켈레톤화는 비교적 변형되지 않는 신체부위들의 위치와 그 신체부위들 사이의 연결정보를 기본으로 표현하는 방법으로 공지된 다양한 알고리즘을 사용할 수 있다.
이때, 객체 추적부(119)는 스켈레톤 영상은 한 사람에 대한 것으로 가정한다. 객체 추적부(119)는 초기 스켈레톤 영상 생성시, 복수개의 스켈레톤이 검출되면, 에러 처리하고 재인식을 요구할 수 있다. 그리고 입력 장치(107)를 통해 사용자로부터 복수개의 스켈레톤 중 하나를 선택하는 입력을 받을 수 있다. 이때, 선택된 스켈레톤이 추적 객체로 결정된다.
객체 추적부(119)는 레이저 스캐너(103)로부터 초단위로 스캐닝한 레이저 스캔 데이터를 수집한다. 그리고 수집한 레이저 스캔 데이터 중에서, 기 설정된 영역의 레이터 스캔 데이터만 추출하는 1차 필터링을 한다. 이때, 기 설정된 영역은 사람의 다리, 엉덩이 및 등에 해당하는 높이로 설정될 수 있다.
객체 추적부(119)는 1차 필터링된 레이저 스캔 데이터 중에서 필터링 기준에 따라 2차 필터링을 한다. 이때, 1차 필터링된 레이저 스캔 데이터의 중심에 위치하는 점군 데이터를 기초로 각 영역 별로 소정 개수의 점군 데이터만 남기는 2차 필터링을 한다. 여기서, 소정 개수는 다리 높이, 엉덩이 높이, 등 높이 별로 각각 다르게 설정된다.
객체 추적부(119)는 2차 필터링된 레이저 스캔 데이터를 대상으로 이진화 작업을 한다. 그리고 이진화된 레이저 스캔 데이터를 대상으로 모폴로지 마스크 및 레이블링을 적용하여 복수개의 객체를 검출한다.
객체 추적부(119)는 복수개의 객체 영역을 스켈레톤 영상과 비교해서 스켈레톤 영상(형태)과 동일한 객체를 추적 객체로 선정한다. 스켈레톤 영상은 일종의 형태 데이터라 볼 수 있으므로, 객체 추적부(119)는 이러한 스켈레톤 영상과 일치하는 객체 영역을 추적 객체로 선정한다.
이상의 과정을 통해 객체를 인식하고 나면, 이후 객체 추적부(119)는 이전 객체 영역과 다음 객체 영역을 비교해서 그 교차 비율이 가장 큰 객체를 추적 객체로 인식한다. 여기서, "이전"과 "다음"은 레이저 스캔 데이터의 수집 시점으로 볼 수 있다.
객체 추적부(119)는 레이저 스캐너로 스캔한 스캔 데이터를 전/후처리 과정을 거쳐서 오브젝트화시켜 객체를 추적한다.
객체 추적부(119)가 레이저 스캐너(103)에서 획득한 스캔 데이터는 거리(radius)와 각도(angle)로 이루어진 극좌표(Polar coordinate)계로 구성된다.
객체 추적부(119)는 극좌표계의 스캔 데이터를 X, Y로 구성된 직교 좌표(rectangular coordinate)계로 변환한다. 이러한 스캔 데이터는 X, Y의 위치 좌표를 각각 가지는 수많은 측점, 즉, 점군(Point Cloud) 형태를 이룬다.
이처럼, 극좌표 형태의 스캔 데이터가 직교 좌표 형태의 스캔 데이터로 변환되는 코드 예시는 표 1과 같을 수 있다.
Cartesian:: Cartesian(const Polar &polar) {
double radius = polar.radius();
double angle = polar.angle();

x=radius * cos(angle);
y=radius & sin(angle);
}
객체 추적부(119)는 이동 로봇(100)이 객체를 원활히 추적할 수 있도록 최소 1센티미터(cm) 단위로 스캔 데이터를 생성한다. 여기서, 스캔 데이터 생성 단위는 이동 로봇(100)의 이동 거리를 말한다. 즉, 이동 로봇(100)이 1센티미터 단위로 이동할때마다 스캔 데이터를 생성할 수 있다. 또한, 초기 객체 인식을 위한 스캔 거리는 2미터 이내로 확보할 수 있다.
객체 추적부(119)는 극좌표계의 스캔 데이터를 직교 좌표계의 2차원 데이터로 변환하는데, 변환된 2차원 데이터는 도 3과 같이 표현된다.
도 3을 참조하면, 2차원 데이터는 0 또는 1의 값을 가진다. 즉, 객체 추적부(119)는 극좌표계의 스캔 데이터를 이진화하는 작업을 한다. 이때, 객체 추적부(119)는 X, Y의 위치 좌표를 각각 가지는 수많은 측점을 영상 촬영부(101)로부터 획득한 이미지에 매핑시켜 그 이미지에서 각 측점에 해당하는 픽셀의 값을 기초로 0 또는 1로 표현할 수 있다. 객체 추적부(119)는 레이저 스캔 데이터에 RGB 함수를 적용하여 R=255, G=255, B=255로 구성된 영역은 해당 2차원 배열의 픽셀의 값으로 1을 부여하고 이외의 RGB값을 지닌 영역은 0으로 설정할 수 있다.
예를들어, 기준 픽셀값(예, 255)을 정하고, 각 측점에 해당하는 픽셀값이 기준 픽셀값보다 작으면 0으로 표시하고 기준 픽셀값보다 크면 1로 표시할 수 있다.
X, Y의 위치 좌표와 0 또는 1의 값을 가지는 각 측점을 픽셀로 정의한다. 그리고 이러한 측점을 2차원 좌표계에 배열한 도 3과 같은 스캔 데이터에 모폴로지(morphology) 연산을 수행하여, 노이즈 제거 및 결측치에 대한 보완을 한다. 일반적으로, 모폴로지 연산은 영상 처리에서 많이 쓰이는 기법이다. 모폴로지 연산 중 하나인 팽창(dilation) 연산은 근접한 두 객체를 합치고 객체 내부의 구멍을 메우는 방식이다. 침식(erotion) 연산은 객체 경계의 노이즈와 돌기둥을 제거한다.
한 실시예에 따르면, 객체의 보폭을 커버하기 위해서 21×21 크기의 모폴로지 마스크를 사용할 수 있다. 이 마스크는 사람의 통상적인 보폭인 40센티미터를 커버할 수 있다. 물론, 모폴로지 마스크가 이것으로 한정되는 것은 아니며, 다양한 크기의 모폴로지 마스크가 사용될 수 있다.
객체 추적부(119)의 모폴로지 연산은 다음 표 2와 같은 코드 예시를 사용할 수 있다.
*Morphology 연산(mpc_obstacle_detector.cpp)

- input: scan_array, result_array, row, col, mask_size
- output: morphology_array
- method: ObstacleDetector::detectMorphology()
- data: int array[][]

FOR each y < row
FOR each x < row
IF scan_array[y][x] == 1 THEN
FOR each y < expansion_mask_size
calculate x position
calculate y position
morphology_array[y][x] = 1;
END FOR
END FOR
END FOR
END FOR
객체 추적부(119)는 초기 인식 속도를 빠르게 하기 위해서 레이저 스캐너(103)로부터 획득한 스캔 데이터를 사용하여 추적하고자 하는 객체와 비추적 대상 객체를 구분하여 레이블링(Labeling)을 한다. 그리고 추적 객체를 중심으로 다른 객체들은 관심 객체 리스트에서 제거한다. 추적 객체를 제외하고 나머지 객체를 제거하는 코드 예시는 표 3과 같을 수 있다.
//추적 객체 중심 객체 제거

- input : scan_array, row, col
- output : scan_array
- method : ObstacleDetector::removeObject()
- data : int array[][]

IF object size > 2 THEN
FOR each object size
calculate furthermost object
END FOR

IF Users[i].far_distance_label == true THEN
FOR each y < row
FOR each x < col
Scan_array[y][x] = 0;
END FOR
END FOR
END IF
END IF
레이블링 기법은 특히 객체 인식을 위한 전처리 과정으로 많이 사용된다. 객체 추적부(119)는 도 3과 같은 스캔 데이터에서 픽셀값이 1인 인접한 픽셀들의 집합을 객체로 규정할 수 있다. 하나의 객체는 하나 이상의 인접한 픽셀로 이루어진다. 하나의 스캔 데이터에는 다수의 객체가 존재할 수 있고, 동일 객체에 속한 모든 픽셀에 고유한 번호를 매기는 작업이 레이블링이다.
한 실시예에 따르면, 객체 추적부(119)는 4-이웃 연결성 마스크를 사용하여 레이블링을 수행할 수 있다. 그러므로 대각선 관계로 위치한 픽셀은 서로 다른 레이블을 갖는다. 임의의 위치(X, Y)의 픽셀과 인접한 이웃 픽셀들 중에서 두개의 인접한 이웃 픽셀은 다음과 같이 네가지 경우로 분류할 수 있다.
1. 이웃한 2개의 픽셀에 레이블이 아직 존재하지 않은 경우,
- 새로운 고유 레이블을 부여
- 생성된 레이블에 대해 새로운 등가테이블 내의 항목을 생성

2. 이웃한 2개의 픽셀 중 하나에만 레이블이 이미 존재하는 경우,
- 이웃한 픽셀과 동일한 레이블 부여

3. 이웃한 2개의 픽셀 모두에 레이블이 존재하고 동일한 경우,
- 이웃한 픽셀과 동일한 레이블 부여

4. 이웃한 2개의 픽셀 모두에 레이블이 존재하고 서로 다른 경우,
- 2개의 레이블 중에 작은 번호의 레이블 부여
- 2개의 레이블 중에 큰 번호의 레이블 항목이 작은 번호의 레이블 항목을 가리키도록 등가테이블 내의 항목을 조정
객체 추적부(119)는 첫번째 스캔에서 레이블을 전파하며 등가 테이블을 작성하고, 두번째 스캔에서 등가 테이블에 있는 레이블을 참고하여 객체에 해당하는 픽셀에 고유한 레이블을 부여한다.
객체 추적부(119)는 레이블링이 완료되면, 동일한 레이블을 가진 픽셀들로 구성된 객체를 인식한다. 그리고 인식한 복수의 객체를 스켈레톤 영상에 매칭시켜 복수의 객체 중에서 추적 객체를 선정한다.
객체 추적부(119)는 추적 객체 인식에 실패하는 경우가 발생할 수 있다. 이를 보완하기 위해서 객체 추적부(119)는 추적하는 객체와 타 객체를 분류하기 위해 프레임 간의 매칭 알고리즘을 사용한다. 객체 추적부(119)는 프레임 간의 매칭을 효율적으로 하기 위해서 이전에 검출된 객체가 갑자기 먼거리로 이동하거나 사라지지 않는다는 가정을 한다. 스캔 데이터에서 사람이 감지된 부분을 공간으로 식별하고 사람의 보폭을 감안하면 다음 프레임에서 일정 범위 공간내에 사람이 존재하기 때문에 공간 영역 매칭으로 사람을 인식할 수 있다. 스캔 데이터는 초당 프레임 단위로 생성되므로, 중복 영역이 크게 발생한다. 객체 추적부(119)는 공간 영역 매칭 기법을 통해서 일시적으로 추적 객체를 놓치게 될 경우 빠른 보정 작업을 수행할 수 있다.
객체 추적부(119)는 이전 프레임에서 검출된 객체 및 현재의 프레임에서 검출된 객체 중에서 교차되는 영역의 비율이 가장 큰 객체를 추적하는 방식을 사용한다.
객체 추적부(119)는 객체 인식에 성공하면, 레이저 스캐너(103)를 통해 인식한 객체를 추적하며 실시간으로 획득한 레이저 스캔 데이터를 프레임 단위로 교차 비교한다. 이전 프레임과 현재 프레임에서 추적 객체가 인지되는 영역을 교차 비교해서 교차되는 영역이 가장 큰 객체를 추적한다. 이러한 공간 영역 매칭 기법의 다른 이름은 최적의 매칭(Best matching) 방법이다. 이때, 검출된 객체가 갑자기 먼거리로 이동하거나 사라지지 않는다는 가정을 한 후에 최적의 매칭 알고리즘을 사용한다. 이러한 방법으로 객체의 반복적인 검출 필요없이 객체가 이동한 경로를 예상하여 추적한다. 이때, 칼만 필터라는 알고리즘도 추가로 사용할 수 있다.
객체 추적부(119)는 추적 주행 중에 조건에 따라 공간 영역 매칭 기법을 비활성화할 수 있다. 예를들어, 이동 로봇(100)과 객체, 즉, 사람이 엘리베이터 등과 같은 공간에서 대기할 경우와 같이 이동 로봇(100)의 움직임이 없는 경우, 이동 로봇(100)의 주변에서 타 객체가 검출될 수 있다. 이때, 추적 객체를 타 객체로 변경하면 서비스에 문제가 발생하므로, 이런 경우, 공간 영역 매칭 기법을 비활성화한다.
객체 추적부(119)는 추적 주행 중에 조건에 따라 비활성화 될 수 있다. 상기 예를 들면 로봇과 작업자가 엘리베이터 등 공간에서 대기하는 상황이 있을 때 카메라와 레이저 센서 주변으로 다른 작업자 또는 고객이 노출될 수 있다. 이때 추적 대상을 변경하면 서비스에 문제가 되므로 비활성화 조건에 추가할 수 있다.
객체 추적부(119)는 추적에 실패한 객체를 재인식할 경우, 추적에 실패한 객체 영역에서 거리 변화가 최소일 거라 가정한다. 이를 수식으로 나타내면, 수학식 1과 같다.
Figure 112019088106591-pat00001
수학식 1에 따르면, 객체의 이전 좌표(previous.coordicate)와 현재 좌표(current.coordinate)의 변화값이 임계치(threshold)보다 작으면, 추적 객체(trackingUser)로 인식하고, 그렇지 않으면, 타 객체(otherUser)로 인식하는 공간 매칭 알고리즘을 나타낸다.
또한, 객체 추적부(119)는 객체의 현재 좌표가 교차 영역(matching area) 보다 작으면 이 객체를 추적 객체로 인식하며, 이를 수식으로 나타내면, 수학식 2와 같다.
Figure 112019088106591-pat00002
수학식 2에 따르면, 추적 객체(user(s))는 추적 객체(user(s))의 현재 좌표(urrentUserPosition(x,y,z))가 교차 영역보다 작은 경우를 나타낸다.
객체 추적부(119)는 레이저 스캔 데이터를 기초로 사람이 있는 영역을 인식하고, 사람의 구체적인 식별한 경우에 영상을 사용할 수 있다. 객체 추적부(119)는 사람, 즉, 객체로 인식된 영역에서 추적 객체 이외의 다른 객체는 장애물과 같은 비추적 객체로 분류한다. 추적 객체가 선택되면, 선택된 객체를 중심으로 이외의 객체들은 추적 대상이 아니라고 판단하기 위해서 비추적 객체의 정보를 삭제 처리한다.
레이저 스캐너(103)를 사용한 객체 인식 및 추적을 할 경우, 추적 속도가 빠르고 화각이 넓어서 좋지만 객체 식별 수준을 높이기 어렵고 놓치는 경우가 발생한다. 이때, 객체 추적부(119)는 레이저 스캐너(103)로 인식한 객체와 스켈레톤 영상을 매칭하여 재인식 과정을 최소화하면서 지속적으로 추적할 수 있다.
객체 추적부(119)는 거리 센서들을 사용하여 대상 장면의 영상에 대한 3차원의 정보를 실시간으로 획득할 수 있다.
객체 추적부(119)에서 인식된 객체의 상태는 "New", "Visible", "Tracked", "NotVisible", "Lost" 상태로 정의된다. "New" 상태는 새롭게 객체가 검출된 상태이며, 객체 인식의 시작을 알 수 있는 상태이다. "Visible" 상태는 화각 내에 객체가 검출된 상태이다. "Tracked" 상태는 객체를 추적중인 상태이며 스켈레톤 정보를 이용할 수 있다. "NotVisible" 상태는 객체를 검출할 수 없는 상태이며 화각 내에 보이지 않는 상태이다. "Lost" 상태는 객체를 완전히 잃어버린 상태이다.
객체 추적부(119)는 이러한 객체 상태들을 기초로, 객체를 추적하면서 현재 객체 추적 상태를 업데이트한다.
객체 추적부(119)는 객체가 영상 촬영부(101)의 화각을 벗어나면 "NotVisible" 상태로 처리할 수 있다.
또한, 객체 추적부(117)는 객체 추적에 실패했을 때 타 객체를 재인식하고 객체 추적을 실패하는 경우도 발생할 수 있다. 객체 추적부(119)는 객체가 화각 내에 존재함에도 불구하고, 객체의 자세나 상황에 따라 놓치는 경우가 발생할 수 있다. 이로 인해 객체 추적을 실패한 후, 약 10초 이상 화각 내에 객체가 보이지 않을 경우, 객체를 잃어버린 것으로 판단하고 "Lost" 상태로 처리할 수 있다.
객체 추적부(119)는 추적에 실패한 객체를 재인식 했을 경우 객체의 ID를 이전과 같게 할당 받는 경우, "Tracked" 상태로 처리할 수 있다.
객체 추적부(119)는 객체를 새로운 ID로 할당 받을 수 있는 상황이 발생하면, "New" 상태로 처리할 수 있다.
객체 추적부(119)는 객체가 화각 내에서 검출되면, "Visible" 상태로 처리할 수 있다.
또한, 객체 추적부(119)는 놓쳤던 객체의 공간 상의 좌표값(X, Y, Z)을 기준으로 기 설정된 반경, 예를들어, 1m 이내의 새로운 객체를 주 객체로 인식하여 추적을 진행한다. 만약, 객체 인식이 일정 시간동안 이루어지지 않으면, "Lost" 상태로 처리하고, 주행 제어부(121)로 비상 정지를 요청한다. 또한, UI 제어부(123)로 비상 정지 알람을 요청할 수 있다.
이때, 이동 로봇(100)이 제공하는 서비스에 따라서 다양한 알람이 발생할 수 있다. 예를들어, 객체 추적부(119)는 호텔 직원을 추적하는 도중에 객체 추적 실패로 비상 정지를 요청한 경우, UI 제어부(123)를 통해 외부에 정지 알람을 출력하여 직원이 객체 재인식을 위한 조치를 취하도록 한다. 예컨대, 직원이 객체 추적 반경 이내로 이동하도록 스피커 알람을 출력 할 수 있다.
또한, 객체 추적부(119)는 호텔을 이용하는 고객을 추적하는 도중에 실패하면, 원격 제어부(125)에게 원격지에 위치한 서버(미도시)에 알람을 요청하도록 지시하고 주행 제어부(121)에게 사전에 설정된 지정 위치로 복귀하도록 요청다. 또한, 고객이 목적지를 설정한 경우, 객체 추적부(119)는 목적지 주변 일정 반경 이내에서는 객체가 검출되지 않더라도 객체 이탈로 간주하지 않고 목적지에 도달하면, 정상 도착으로 처리한 후 사전에 설정된 지정 위치로 복귀하도록 주행 제어부(121)에게 요청할 수 있다.
또한, 작업자 추적시 일정한 거리를 유지하기 위하여 객체 추적부(119)는 동적인 거리 계산 및 속도 제어를 수행한다. 이를 위해서 객체와 이동 로봇(100) 간의 거리가 얼마나 떨어졌는지에 따라 3가지 거리 상태, 즉, "Far", "Near", "InZone"가 정의된다.
파라미터 정의
User distance 객체와 이동 로봇 간 거리
Max(d) 최대거리 값
Min(d) 최소거리 값
표 3에서, 한 실시예에 따르면, Max(d)와, Min(d) 값은 각각 1.1m, 1.0m로 설정될 수 있다.
레이저 스캐너(103)가 초당 실시간으로 스캔을 하므로, 객체 추적부(119)는 이동 로봇(100)과 추적 객체와의 거리를 초단위로 "Far", "Near", "InZone" 중에 하나로 구분한다. 이를 수식으로 나타내면, 다음 수학식 3과 같다.
Figure 112019088106591-pat00003
수학식 3에 따르면, "Far"는 user distance(객체와 이동 로봇 간 거리)가 Max(d)보다 큰 경우로 정의된다. "Near"는 user distance가 Min(d) 보다 작은 경우로 정의된다. "inZone"은 user distance가 Min(d)보다 크고 Max(d)보다 작은 경우로 정의된다.
객체 추적부(119)는 user distance의 상태를 판별하고, 이를 주행 제어부(121)로 제공한다. 주행 제어부(121)는 user distance의 상태 별로 주행 제어 정보가 사전에 지정되어 있다. 이를 기초로, 주행 제어부(121)는 user distance의 상태가 "Far"인 경우, 이동 로봇(100)의 구동 속도를 증가시킨다. 또한, 주행 제어부(121)는 user distance의 상태가 "inZone"인 경우, 이동 로봇(100)의 구동 속도를 유지한다. 또한, 주행 제어부(121)는 user distance의 상태가 "Near"인 경우, 이동 로봇(100)의 구동 속도를 감소시키거나 또는 비상 정지할 수 있다.
도 4를 참조하면, 이동 로봇(100)을 기점으로 장애물 영역(obstacle zone)과 추적 영역(tracking zone)으로 구분된다. 이때, 장애물 영역에서 객체가 검출되면, 객체 추적부(119)는 주행 제어부(121)에게 비상 정지를 요청한다.
한 실시예에 따르면, 장애물 영역은 a=0.8m, b=0.3m~0.4m이고, 추적 영역은 c=4.2m, d=1.1m 일 수 있다. 여기서, 장애물 영역 및 추적 영역은 실시예에 따라 변경될 수 있고, 추적 환경에 따라 다르게 설정될 수 있다.
또한, 레이저 스캐너(103)의 성능에 따라 최대 10미터까지 객체를 추적할 수 있으나, 본 발명에서 객체 추적부(119)는 추적할 대상으로 선택된 객체의 거리보다 먼 곳에 있는 객체는 스캔하지 않도록 스캔 영역을 동적으로 제한할 수 있다. 이러한 스캔 영역의 제한을 통해 불필요한 스캔 및 연산을 최소화하고 스캔 데이터의 정확도를 높일 수 있다. 스캔 영역을 제한하는 코드 예시는 표 6과 같을 수 있다.
//추적 객체 중심 스캔 영역 제한

- input : scan_array, row, col
- output : scan_array
- method : ObstacleDetector::limitDetecArea()
- data : int array[][]

FOR each y < row
FOR each x < col
IF distance_x < zone_user.center_point.x-0.5 & distance_x > zone_user.center_point.x+0.5 THEN
Scan_array[y][x] = 0;
IF distance_y < zone_user.center_point.y-0.5 & distance_y > zone_user.center_point.y+0.5 THEN
Scan_array[y][x] = 0;
END FOR
END FOR
객체 추적부(119)는 SLAM(Simultaneous localization and mapping) 기술을 통해 맵을 생성하고 자기 위치를 인식할 수 있다.
객체 추적부(119)는 거리 센서를 통해 측정한 이동 로봇(100)의 위치와 맵상에서 이동 로봇(100)의 위치 정보가 일치하는지를 판단한다.
객체 추적부(119)는 이동 로봇(100)의 초기 위치를 결정한다. 이 위치는 이동 로봇(100)이 배터리를 충전하는 충전 스테이션(미도시)과의 거리를 기준으로 충전 스테이션(미도시)으로부터 이동 로봇(100)이 얼마만큼 떨어져있는지를 바퀴 회전수(엔코더라는 센서에서 수집)와 자이로 센서에서 수집한 회전각으로 결정된다. 즉, 이동 로봇(100)의 초기 위치 정보는 (x, y, radian)으로 구성되며 radian이 회전각을 나타낸다.
이동 로봇(100) 자신의 초기 위치가 정확하지 않으면 추적 객체의 좌표 정보도 정확하지 않으므로, 이동 로봇(100)의 초기 위치 정합이 필요하다.
객체 추적부(119)는 이동 로봇(100)의 초기 위치가 정합되면, 객체가 이동 로봇(100)으로부터 얼마만큼 떨어져있는지 거리 정보를 레이저 스캐너(103)를 통해 획득하고, 이 거리 정보와 초기 위치를 이용하여 이동 로봇(100) 대비 상대적인 위치값으로 객체의 위치를 산출할 수 있다.
다시, 도 1을 참조하면, 주행 제어부(121)는 로봇 어댑터로서, 선속도/각속도 연산, 모터 RPM(revolutions per minute) 연산, 속도 제어, 엔코더 주행 거리 연산, 로봇 상태값 관리 등을 수행한다.
주행 제어부(121)는 이동 로봇(100)의 하드웨어를 구동 및 제어하기 위한 컨트롤러 및 인터페이스를 포함한다. 주행 제어부(121)는 객체 인식부(119)로부터 출력되는 추적 객체와의 거리에 따라 선속도를 계산하여 가감속을 수행한다. 그리고 객체의 이동 방향에 따라 각속도를 계산하여 차동 모터에 대한 RPM(revolutions per minute)을 계산하고 이를 기초로 주행 장치(105)를 제어한다.
주행 제어부(121)는 주행 장치(105)로 회전 방향, 그리고 선속도 및 각속도를 기초로 변환된 좌측 모터 및 우측 모터의 RPM을 실시간 전송하여 이동 로봇(100)을 목표 위치로 안전하고 부드럽게 이동시킬 수 있다. 또한, 안전을 위해 이동 로봇(100)의 전방 및 후방 범퍼의 충돌 여부 등 이동 로봇(100)의 상태값과 이동 로봇(100)의 좌우 모터 회전 엔코더 값을 주행 장치(105)에 전송함으로써 피드백 제어, 이동 로봇(100)의 이동 거리 및 회전 방향을 계산하여 지도 작성, 이동 로봇(100)의 이동 경로 추적에 필요한 기반 정보로 사용할 수 있다.
UI 제어부(123)를 통해 출력되는 화면 또는 음성 인식을 통해 인지한 목적지 정보를 주행 제어부(121)로 전달한다. 주행 제어부(121)는 맵 상에서 자신의 위치와 객체의 위치를 계산한 결과를 기초로 회전 방향, 선속도, 각속도 등의 주행 명령을 주행 장치(105)로 출력한다.
주행 제어부(121)는 구동부 속도 제어를 L1 ~ L7(사람이 빠르게 걷는 속도, 예: 6km/h)까지로 구분할 수 있다.
UI 제어부(123)는 이동 로봇(100)을 이용한 작업에 필요한 내용을 출력 장치(109)로 출력한다. 그리고 입력 장치(107)로부터 입력받은 데이터를 화면에 출력할 수 있다. 예를들어, UI 제어부(123)는 물류 목록, 물품 검수, 운송 경로 등 작업자가 이동 로봇을 이용하여 작업의 효율성을 향상할 수 있는 UI를 제공할 수 있다.
한 실시예에 따르면, UI 제어부(123)는 바코드 인식, 물품 정보, 오더정보, 경로 탐색 등의 UI를 제공할 수 있다.
원격 제어부(125)는 통신 장치(111)를 통해 원격 서버(200)와 접속되어, 원격 서버(200)와 연동하여 이동 로봇(100)의 상태 및 제어를 수행하기 위한 동작을 수행한다. 한 실시예에 따르면, 원격 제어부(125)는 객체 인식부(119)에 의해 결정된 객체 인식 상태(5가지)를 원격 서버(200)에게 제공하여 원격지에서 이동 로봇(100)의 객체 인식 상태를 조회할 수 있게 한다. 원격 제어부(125)는 원격 서버(200)의 제어 명령을 수신하고 이를 기초로 이동 로봇(100)이 동작하도록 제어할 수 있다.
작업 관리부(127)는 실시간 모니터링, 작업 관리, 운영 현황 관리, 자동화 정보 시스템 연계를 통하여 이동 로봇(100)의 효율적 운영을 담당한다.
작업 관리부(127)는 추적 권한을 관리할 수 있다. 추적 권한은 일반 사용자와 같은 불특정 다수가 아니라 호텔 직원과 같이 특정 사용자가 사용하는 경우 추적 모드로 업무를 하는 도중이나 업무가 종료되어 다른 직원에게 연결해줄 때 사용된다. 이때, 변경된 추적 대상자 이외에는 사용이 불가능하도록 설정된다.
그러면, 이제 이동 로봇(100)의 동작에 대해 설명한다.
먼저, 도 5는 본 발명의 한 실시예에 따른 이동 로봇의 동작을 나타낸 순서도로서, 이동 로봇이 설치된 특정 장소에서의 서비스 시나리오에 따른 동작을 나타낸다. 여기서, 특정 장소는 호텔 등이 될 수 있으나 이로 한정되는 것은 아니다.
도 5를 참조하면, 이동 로봇(100)의 저장 장치(113) 또는 원격 서버(200)에 제1 사용자(예, 직원들, 이하, 설명의 편의를 위해 "직원"으로 통칭함)의 스켈레톤 영상 DB가 구축된다(S101).
이동 로봇(100)의 제어부(117)는 객체 인식/추적을 시작하기 전에 인증을 수행한다(S103). 예를들어, 제어부(117)는 저장 장치(113)에 저장된 인증 정보(예, 지문, 얼굴 등과 같은 생체 인증 정보, 비밀번호 등)의 입력을 요구하여 인증을 수행할 수 있다. 또는 제어부(117)는 원격 서버(200)에 저장된 인증 정보의 입력을 요구하여 인증을 수행할 수 있다.
인증에 성공하면, 이동 로봇(100)의 영상 촬영부(101)는 전방을 촬영하여 영상을 생성한다(S105).
이동 로봇(100)의 객체 추적부(119)는 생성(S105)한 영상을 스켈레톤화하여 스켈레톤 영상을 생성한다(S107).
이동 로봇(100)의 객체 추적부(119)는 생성(S107)한 스켈레톤 영상을 직원 DB에 등록된 스켈레톤 영상과 비교(S109)하여 스켈레톤 영상이 직원을 나타내는지 판단한다(S111).
직원으로 판단되면, 이동 로봇(100)의 객체 추적부(119)는 S105 단계에서 생성된 영상으로부터 특징점 정보를 추출 및 등록한다(S113). 여기서, 특징점 정보는 특정 사용자를 나타내는 특징 정보라 할 수 있다. 예를들어, 직원의 유니폼 색상, 마크 등의 정보를 포함할 수 있다. 마크는 유니폼에 기재된 호텔 라벨, 명찰 등을 포함할 수 있다. 또한, 특징점 정보는 S107 단계에서 생성한 스켈레톤 영상일 수 있다.
이동 로봇(100)의 작업 관리부(127)는 직원의 요청에 따른 작업을 수행하고 작업 이력을 저장한다(S115). 작업 내역은 주행을 위한 맵을 생성하거나, 짐을 운반하며 사람을 추적하는 작업이 있다.
이동 로봇(100)의 객체 추적부(119)는 레이저 스캐너(103)를 이용하여 인식(S109)한 직원을 추적한다(S117). 여기서, 레이저 스캐너(103)를 이용한 직원 추적은 앞서 설명한 바와 같이, 객체 추적부(119)의 동작에 해당한다.
이동 로봇(100)의 객체 추적부(119)는 추적 중인 직원의 이탈 여부, 즉, 객체 추적 실패 여부를 판단(S119)한다.
객체 추적에 실패하지 않으면, S117 단계부터 다시 수행한다.
반면, 객체 추적에 실패로 판단되면, 객체 추적부(119)는 현 시점에 영상 촬영부(101)가 촬영한 영상으로부터 특징점을 추출하고, 이를 기 등록(S113)된 특징점과 비교하여 일치하는 객체, 즉, 직원을 탐색한다(S121). 즉, 카메라를 통해 일정 주변 반경 내 동일한 특징점 정보를 지닌 사람을 탐색한다. 혹은, 스켈레톤 영상을 생성하고 기 등록(S113)한 스켈레톤 영상과 일치하는 객체를 탐색할 수 있다.
객체 추적부(119)는 탐색한 특징점이 발견된 위치로 이동 로봇(100)을 이동시키도록 주행 제어부(121)에게 요청한다(S123). 그리고 작업 관리부(127)는 기 저장(S115)한 작업 이력을 UI 제어부(123)를 통해 직원에게 안내하고, 추적 의사 수락 여부를 질의한다(S123). 즉, 이전 작업 이력을 음성 또는 화면으로 알려주고 추적 의사 여부를 확인한다.
이때, UI 제어부(123)가 추적 의사에 수락하는 응답을 수신하는 경우, 객체 추적부(119)는 S115 단계부터 다시 시작한다.
반면, 추적 의사를 거부하면 객체 추적부(119)는 주행 제어부(121)에게 요청하여 객체 추적을 종료하고 시작 위치로 이동시킨다(S127). 혹은, 직원을 호출할 수도 있다.
한편, S111 단계에서 직원이 아니라고 판단되면, 제2 사용자(예, 고객, 이하, 설명의 편의를 위해 "직원"에 대응하는 "고객"으로 통칭함)로 판단되면, 작업 관리부(127)는 투숙객 추가 정보 및 목적지 정보를 UI 제어부(123)를 통해 고객에게 질의한다(S129). 여기서, 투숙객 추가 정보는 룸넘버 등일 수 있다.
객체 추적부(119)는 S105 단계에서 생성된 영상으로부터 특징점 정보를 추출 및 임시 등록한다(S131). 여기서, 특징점 정보는 S107 단계에서 생성한 스켈레톤 영상일 수 있다.
그리고 객체 추적부(119)는 UI 제어부(123)가 응답받은 내용을 기초로 목적지까지 네비게이션 정보를 생성하여 길 안내를 시작한다(S133).
또한, 객체 추적부(119)는 레이저 스캐너(103)를 이용하여 S109 단계에서 판별된 고객, 즉, 객체 추적을 한다(S135). 여기서, 레이저 스캐너(103)를 이용한 고객 추적은 앞서 설명한 바와 같이, 객체 추적부(119)의 동작에 해당한다.
객체 추적부(119)는 목적지까지 주행 중에 고객이 이탈하는지 판단(S137)하고, 고객이 이탈하지 않으면, S135 단계부터 다시 시작한다.
반면, 고객이 이탈하면, 영상 촬영부(101)를 통해 전방을 촬영하여 생성한 영상을 스켈레톤화하고 기 생성한 스켈레톤 영상과 일치하는 객체를 탐색한다(S139).
탐색에 성공하는지를 판단(S141)하고, 탐색에 성공하면, 즉, 그 스켈레톤이 검출된 영역을 객체, 즉, 고객으로 인식하고 S135 단계부터 다시 시작한다.
반면, 탐색에 실패하면, 객체 추적부(119)는 UI 제어부(123)를 통해 직원을 호출하거나 또는 객체 추적을 종료하고 시작 위치로 이동하도록 주행 제어부(121)에게 요청한다(S143).
객체 추적부(119)는 레이저 신호로 대상을 추적하는 도중 노이즈 또는 간섭이 발생하면 영상 신호로 스켈레톤 데이터를 생성하여 재인식한다.
예를들어, 추적 중 다수의 사람이 인식되는 경우, 추적에 실패할 수 있다. 엘리베이터에 승차하거나 또는 호텔 로비에서는 다수의 사람이 레이즈 스캔 범위 내에 계속 유입될 수 있으므로, 이 경우, 레이저 스캔만으로 객체 식별이 어려울 수 있다. 또는 객체 추적 중 레이저 스캔 데이터가 장애물 또는 노이즈에 의해 왜곡되는 경우, 객체 추적에 실패할 수 있다. 예를들어, 반사율이 심한 벽이나 유리 또는 갑작스럽게 등장한 장애물 때문일 수 있다.
이와 같이, 레이저 스캔으로 객체 추적에 실패하는 경우, 앞서 설명한 바와 같이, 스켈레톤 데이터를 생성하여 등록된 스켈레톤 데이터를 객체로 재인식한다.
이때, 재인식에 성공하면 레이저 스캐너로 객체 인식과 추적을 수행하여 목적지까지 추적한다. 이에 대해 설명하면, 도 6과 같다.
도 6은 본 발명의 한 실시예에 따른 이동 로봇의 객체 인식/추적 동작을 나타낸 순서도이다.
도 6을 참조하면, 영상 촬영부(101)는 이동 로봇(100)의 전방을 촬영하여 영상을 생성한다(S201). 객체 추적부(119)는 S201 단계에서 생성된 영상을 스켈레톤화하여 스켈레톤 영상을 생성한다(S203).
객체 추적부(119)는 S203 단계에서 생성한 스켈레톤 영상이 등록된 영상인지 판단한다(S205). 여기서, S205는 추적 대상으로 등록이 되었는지를 판단하는 것이다. 추적 대상으로 등록이 되어 있지 않다면, S203 단계에서 생성한 스켈레톤 영상을 추적 후보 객체로 등록(S207)한 후, S205 단계를 다시 시작한다.
S205 단계에서 등록된 스켈레톤 영상으로 판단되면, 객체 추적부(119)는 레이저 스캐너(103)로 객체를 인식(S209)하고, 객체를 추적한다(S211).
이때, 객체를 추적하는 과정에서, 노이즈 또는 간섭이 발생하는지 판단한다(S213). 노이즈 또는 간섭이 발생하지 않으면, S211 단계로 돌아간다.
반면, 노이즈 또는 간섭이 발생하면, 현 시점에 생성(S215)한 촬영 영상을 스켈레톤화(S217)한 스켈레톤 영상이 S203 단계에서 생성 또는 S207 단계에서 등록한 스켈레톤 영상인지 비교하여 추적 중인 객체인지 판단한다(S219).
추적중인 객체로 판단되면, S209 단계부터 다시 시작한다. 반면, 추적 중인 객체가 아니면, 객체 추적을 종료하고 시작 위치로 이동한다(S221).
객체 추적부(119)가 영상 생성부(101)와 레이저 스캐너(103)를 결합하여 객체 인식/추적하는 과정에 대해 설명하면, 다음과 같다.
도 7은 본 발명의 다른 실시예에 따른 이동 로봇의 객체 인식/추적 동작을 나타낸 순서도이고, 도 8은 본 발명의 실시예에 따른 레이블링 과정을 통해 객체를 검출하는 과정을 나타낸 순서도이며, 도 9는 본 발명의 실시예에 따른 레이저 스캔 영역을 설명하는 도면이고, 도 10은 본 발명의 실시예에 따른 이동 로봇을 기점으로 레이저 스캔 데이터를 수집하는 좌표계를 설명하는 도면이며, 도 11은 본 발명의 실시예에 따른 레이블링된 레이저 스캔 데이터에서 신뢰할 수 있는 데이터를 추출하는 과정을 설명하는 도면이고, 도 12는 본 발명의 실시예에 따른 레이저 스캔 데이터로부터 특징 변수를 설명하는 도면이며, 도 13은 본 발명의 실시예에 따른 특징 변수를 기초로 객체를 분할하는 과정을 설명하는 도면이고, 도 14는 본 발명의 실시예에 따른 프레임 매칭 기술을 설명하는 도면이다.
먼저, 도 7을 참조하면, S301 단계 ~ S313 단계는 도 6에서 S209 단계, 즉, 객체 인식 단계에 해당한다. 그리고 S315 단계 ~ S329 단계는 도 6에서 S211 단계, 즉, 객체 추적 단계에 해당한다.
객체 추적부(119)는 t1 시점의 레이저 스캔 데이터를 레이저 스캐너(103)로부터 획득한다(S301).
객체 추적부(119)는 획득(S301)한 레이저 스캔 데이터를 필터링(S303)하고, 필터링한 레이저 스캔 데이터를 대상으로 이진화 작업을 한다(S305).
객체 추적부(119)는 이진화 작업을 거친 레이저 스캔 데이터에 모폴로지 연산을 적용하여 노이즈를 제거한다(S307).
객체 추적부(119)는 노이즈가 제거된 레이저 스캔 데이터에 레이블링 처리를 한다(S309). 객체 추적부(119)는 레이블링 처리된 복수의 객체를 스켈레톤 영상 데이터와 비교하여, 일치하는 객체를 추적 객체로 선택한다(S311). 한 예시로, 레이블링 처리된 객체의 거리 및 영역을 계산하고, 이를 동일 차원의 평면 상에서 스켈레톤 형태와 일치하는 객체를 검출할 수 있다.
객체 추적부(119)는 레이블링된 복수의 객체 중에서 S307 단계에서 선택된 추적 객체를 제외한 나머지 객체들을 삭제한다(S313).
이후, 객체 추적부(119)는 t2 시점의 레이저 스캔 데이터를 획득한다(S315). 여기서, t1, t2는 스캔 시간 단위를 의미하는데, 예를들어, 초 단위일 수 있다.
객체 추적부(119)는 t2 시점의 레이저 스캔 데이터에 대해서 필터링(S317), 이진화 작업(S319)을 거치고, 필터링 및 이진화된 레이저 스캔 데이터를 대상으로 모폴로지 연산 및 레이블링 처리를 적용(S321, S323)한다.
객체 추적부(119)는 t1 시점에서 레이블링된 객체들과 t2 시점에 레이블링된 객체들이 교차하는 영역의 비율을 계산한다(S325). 그리고 계산된 교차 영역의 비율이 가장 큰 객체를 추적 객체로 인식한다(S327).
객체 추적부(119)는 레이저 스캔 방식으로 산출한 추적 객체의 위치를 칼만 필터로 보정한다(S329). 여기서, 추적 객체의 위치는 앞서 설명한 것처럼, 이동 로봇(100)의 초기 위치와, 이동 로봇(100)으로부터 추적 객체까지의 거리 정보를 이용하여 이동 로봇(100)으로부터의 상대적인 위치로 산출된다. 여기서, 거리 정보는 레이저 스캐너(103)가 조사한 빔이 객체로부터 반사되어 도착하는 시간을 통해 산출되는 것이 일반적이나, 이로 한정되는 것은 아니고 다양한 방식이 사용될 수 있다.
객체 추적부(119)의 필터링 과정(S303, S317)을 상세히 나타내면, 도 8과 같다.
도 8을 참조하면, 객체 추적부(119)는 레이저 스캐너(103)로부터 수집한 레이저 스캔 데이터에서 스캔 영역으로 지정된 높이의 데이터만 1차 필터링한다(S401).
객체 추적부(119)는 각 사람을 구분하기 위해 사람의 세부위를 추적 객체 식별을 위한 레이저 스캔 영역으로 정의할 수 있다. 첫번째 영역은 다리이다. 다른 신체 부위와의 간섭이 가장 낮은 부분으로 특징을 추출하기에 적합하다. 하지만 사람이 많아 가까이 붙어 있는 경우 다리만으로는 타겟 추적이 어려울 수 있다. 이를 보완하기 위하여 엉덩이와 등을 추가적으로 분석하여 사람에 해당하는 추적 객체를 추출한다.
도 9의 (a)는 추적 객체의 식별을 위한 각 부위, 즉, 다리, 엉덩이, 등까지의 주요 높이를 표시한 것이다. 도 9의 (b)는 레이저 스캐너(103)로부터 수집한 레이저 스캔 데이터이다. 도 9의 (c)는 수집한 레이저 스캔 데이터 중에서 스캔 영역에 해당하는 데이터를 제외한 나머지 데이터를 모두 필터링한 스캔 데이터를 나타낸다. 즉, 도 9의 (b)와 비교할때, 도 9의 (c)는 무릎 높이의 스캔 데이터, 골반 높이의 스캔 데이터, 등 높이의 스캔 데이터를 제외한 나머지 스캔 데이터는 모두 삭제되어 있다. 따라서, 불필요한 스캔 데이터는 연산에서 제외되도록 한다.
객체 추적부(119)는 레이저 스캔 데이터를 스캔 영역 별 높이(h1, h2, h3)와 비교하고 오차 한계값 Wthreshold을 넘지 않으면 해당 높이의 데이터로 저장한다. 객체 추적부(119)는 3개(다리, 엉덩이, 등)의 높이로 분류된 데이터 중 같은 높이 데이터들을 그룹 데이터라 한다.
도 10을 참조하면, 이러한 레이저 스캔 데이터는 이동 로봇(100)을 원점으로 한 좌표계(x, y)로 나타낼 수 있다.
객체 추적부(119)는 레이저 스캐너(103)로부터 수집되어 스캔 영역으로 필터링된 그룹 데이터를 각기 다른 특성을 가진 객체를 구분하기 위하여 특성이 유사한 데이터끼리 그룹핑하는 레이블링을 처리한다. 특성이 유사하다는 기준은 레이저 스캔 데이터의 데이터(점 군집) 형태에 따라 사람의 신체 부위를 판단할 수 있다. 또한, 군집된 형태에 따라 각각 사람을 구분하고 그룹화할 수 있다.
객체 추적부(119)는 신뢰할 수 있는 레이저 스캔 데이터로부터 특징 후보의 라벨링을 위해 고려할 수 있는 변수를 표 7과 같이 정의한다. 이러한 변수는 도 12에 나타내었다.
표기(Notation) 설명
d 그룹의 너비
p 그룹의 양 끝 두 점과 그 사이의 점들과의 거리들(p1, p2)의 합의 평균
Δd 인접한 두 센서 데이터 사이의 거리
h 그룹의 폭
∑(Δd) 그룹의 둘레
표 7에서, 그룹의 너비(d), 폭(h), p값으로 객체를 식별할 수 있으므로, 특징 변수는 d, h, p이다. 이를 유도하면, 수학식 4와 같다.
Figure 112019088106591-pat00004
다시, 도 8을 참조하면, 객체 추적부(119)는 지정된 높이에서 인접한 두 점의 최단 거리(Δd, D)를 기준점으로 그룹 데이터를 분할한다(S403).
도 13을 참조하면, D는 연속된 점들 중 인접한 두 점의 거리를 의미하며 각 높이에서 두 점의 거리 한계치(Dleg, Dhip, Dback)을 넘는 경우 데이터 분할, 즉, 다른 객체로 검출하기 위한 데이터 분할이 이루어진다.
즉, 인접한 두 점 사이의 거리(D)가 한계치를 넘는 경우, 다른 그룹에 속한 것으로 인지한다. 여기서, 한계치(Dleg, Dhip, Dback)는 사람의 신체 중 인접한 부분이 최대로 떨어질 수 있는 거리로 설정한다. 이렇게 분류된 데이터 그룹 안에서 신뢰할 수 있는 데이터를 추출한다(S405). 즉, 분할된 데이터 그룹 내에서 필터링 기준을 적용하여 불필요한 데이터를 제거하는 2차 필터링을 한다(S405). 이에 대하여 설명하면, 다음과 같다.
도 11을 참조하면, 각 높이 별 그룹 데이터에서 신뢰할 수 있는 데이터를 추출하는 과정을 나타낸다. 여기서, 삼각형은 불필요한 데이터를 나타내고, 중앙에 있는 센서 데이터는 A이다. 이렇게 추출된 레이저 스캔 데이터를 이용하여 객체 추적부(119)는 객체 식별을 위한 특징으로 고려할 변수 값을 도출한다.
특징 분석과 라벨링의 시작은 라벨링된 레이저 스캔 데이터의 중앙에 있는 센서 데이터로부터 신뢰할 수 있는 데이터의 수만큼을 추출하는 것이다.
이때, 객체 추적부(119)는 신뢰할 수 있는 데이터의 수를 선정할 때, 신체 부위마다 다르게 적용한다. 즉, 추적 대상의 다리와 등의 경우 그룹 데이터 내에 불필요한 데이터가 존재한다. 따라서, 객체 추적부(119)는 그룹 데이터의 양 끝단에서 일정 개수의 데이터를 제거한 후 남은 데이터에서, 중심으로부터 신뢰할 수 있는 데이터 개수가 정해진다. 반면, 엉덩이의 경우, 팔과 엉덩이 데이터가 같이 추출되는 경우가 많다. 팔이 같은 그룹으로 분류되는 경우 팔의 움직임에 따라 불필요한 데이터의 수가 크기 때문에 객체 추적부(119)는 불필요한 데이터의 최대값을 적용하여 그룹 데이터의 수에서 뺀 후 남은 데이터의 수를 토대로 신뢰할 수 있는 데이터 수를 선정한다.
그룹 데이터에서 양 끝단은 수평 방향이다. 도 11에서 불필요한 데이터의 개수가 6개이고 엉덩이 부분의 스캔 데이터와 팔이 같이 스캔되면서 불필요한 데이터수가 증가할 수 있으므로, 미리 제거해야하는 데이터 개수를 크게 설정할 수 있다. 수학식 5는 다리와 등 높이의 데이터 분석을 정의하는 수식이다.
Figure 112019088106591-pat00005
여기서, Ntrust는 선정된 신뢰할 수 있는 데이터의 개수이고, Ngroup은 그룹 데이터의 전체 개수이며, Noutloer은 그룹 데이터에서 제외된 데이터의 개수이다. 즉, 수학식 4는 고정적으로 나타나는 불필요한 데이터의 수를 그룹 전체 데이터에서 뺌으로써 신뢰할 수 있는 데이터를 선정함을 나타낸다.
수학식 5를 사용하면, 고정적으로 나타나는 불필요한 데이터의 수를 그룹 전체 데이터에서 뺌으로써 신뢰할 수 있는 데이터를 기반으로 분석이 가능하다. 그리고 신뢰할 수 있는 데이터의 수가 가변적이기 때문에 각 사람마다 특성을 반영할 수 있다.
수학식 6은 사람의 엉덩이 높이의 데이터 분석을 정의하는 수식이다.
Figure 112019088106591-pat00006
여기서, Ntrust는 선정된 신뢰할 수 있는 데이터의 개수이고, Ngroup은 그룹 데이터의 전체 개수이며, outliermax는 제외시킬 수 있는 데이터의 최대 개수이다.
즉, 수학식 6은 신뢰할 수 있는 데이터의 최대 개수를 고정적으로 사용함을 나타낸다. 이 경우 불필요한 데이터가 발생되는 상황으로부터 일관된 특징을 도출할 수 있다.
다시, 도 7을 참고하면, 객체 추적부(119)의 S325, S327에 대해 설명하면, 도 14와 같다.
도 14를 참고하면, 객체 추적부(119)는 프레임간의 매칭 기술을 통해 검출된 객체의 연속적인 추적을 수행한다. 객체 추적부(119)의 프레임 매칭 코드 예시는 표 8과 같다.
//Frame 간 교차 비율 매칭
- input : TrackerUser_a, TrackerUser_b
- output : float ratio
- method : Tracker::intersection_over_union()
Tracker::overlapping_area()
Tracker::area()
- data : float intersection_area, union_area

CALL overlapping_area(user_a, user_b)
CALL area(user_a), area(user_b)
Union_area=area_a+area_b-intersection_area

IF union_area > 0 THEN
return intersection_area/union_area;
ELSE THEN
Return 0;
END IF
객체 추적부(119)는 이전 프레임(P10)과 현재 프레임(P20)이 서로 교차하는 영역(overlapping area)을 산출한다. 이때, ①, ②, ③, ④의 좌표를 통해 delta_x(a)와 delta_y(b)를 측정하고, delta_x(a)와 delta_y(b)의 곱으로 교차 영역을 산출한다. 이를 수식화하면, 수학식 7과 같다.
여기서, ①, ②, ③, ④의 좌표는 공지된 수학적 이론을 통해 산출되는 것으로서, 사전에 제공되는 값인 것을 전제로 한다.
Figure 112019088106591-pat00007
현재 검출된 객체 중에 이전 프레임에서 검출된 객체와의 intersection over union이 가장 크게 매칭된 객체를 추적할 객체로 선정하며, 이를 수식화하면, 수학식 8과 같다.
Figure 112019088106591-pat00008
수학식 8의 "intersection over union"은 교차 영역의 비율을 두 객체 영역에서 교차되는 영역을 뺀 값으로 나눠서 구한다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (17)

  1. 이동 로봇으로서,
    상기 이동 로봇의 소정 위치에 설치되는 적어도 하나의 영상 촬영부,
    상기 이동 로봇의 소정 위치에 설치되는 레이저 스캐너,
    상기 적어도 하나의 영상 촬영부 및 상기 레이저 스캐너를 이용한 객체 인식 및 객체 추적을 수행하는 프로그램이 저장된 메모리, 그리고
    상기 프로그램을 실행하는 적어도 하나의 프로세서를 포함하고,
    상기 프로그램은,
    상기 적어도 하나의 영상 촬영부가 생성한 영상을 기초로 추적 대상인 객체를 인식하고, 레이저 스캔 데이터를 통해 추적 대상인 객체를 검출하여 추적하며, 객체 추적에 실패할 경우, 상기 적어도 하나의 영상 촬영부를 구동하여 현 시점에 촬영된 영상과, 기 저장된 영상을 비교하고, 현 시점에 출력된 레이저 스캔 데이터를 기초로 객체를 재검출하며,
    제1 시점에 수집된 레이저 스캔 데이터로부터 검출된 복수의 객체 영역과 상기 제1 시점보다 나중 시점인 제2 시점에 수집된 레이저 스캔 데이터로부터 검출된 복수의 객체 영역을 교차시키고, 교차 영역의 비율이 가장 큰 객체를 추적 객체로 인식하는 명령어들을 포함하는, 이동 로봇.
  2. 삭제
  3. 제1항에서,
    상기 프로그램은,
    2차원 배열된 레이저 스캔 데이터에 모폴로지 연산을 적용하여 노이즈를 제거하는 명령어를 포함하는, 이동 로봇.
  4. 제3항에서,
    상기 프로그램은,
    노이즈가 제거된 레이저 스캔 데이터를 레이블링하여, 동일한 레이블을 가진 적어도 하나의 영역을 각각의 객체로 검출하고,
    상기 각각의 객체로 검출된 영역을 상기 영상과 비교하여 일치하는 객체를 추적 객체로 선별하는 명령어를 포함하는, 이동 로봇.
  5. 제1항에서,
    상기 프로그램은,
    정해진 스캔 영역에서 수집한 레이저 센서 데이터를 기초로, 객체를 검출하는 명령어를 포함하고,
    상기 정해진 스캔 영역은,
    지면으로부터 사람의 신체 부위별 설정된 높이에 해당하는 범위를 가지는, 이동 로봇.
  6. 제5항에서,
    상기 프로그램은,
    상기 정해진 스캔 영역 별로 그룹핑된 레이저 센서 데이터에서, 상기 그룹핑된 레이저 센서 데이터를 구성하는 점군 간의 최단 거리를 기준으로 데이터 그룹을 분할하고, 분할한 데이터 그룹 내에서 스캔 영역 별로 특징 변수를 계산하는 명령어들을 포함하는, 이동 로봇
  7. 제6항에서,
    상기 특징 변수는,
    상기 점군 들이 포함된 그룹 데이터의 전체 너비, 인접한 두 점군 사이의 거리들, 상기 그룹의 폭 및 상기 거리들의 평균을 포함하는, 이동 로봇
  8. 이동 로봇의 제어 방법으로서,
    레이저 스캔 데이터를 수집하는 단계,
    극좌표계로 구성된 레이저 스캔 데이터를 직교 좌표계의 위치 값을 가지는 복수개의 점군 형태로 변환하는 단계,
    점군 형태로 변환된 레이저 스캔 데이터를 카메라로 촬영한 영상 데이터와 비교하여, 점군 별로 해당하는 영상의 픽셀값을 이용하여 이진화하는 단계,
    상기 레이저 스캔 데이터를 레이블링하여 복수개의 객체를 검출하는 단계,
    검출된 복수개의 객체를 상기 영상 데이터와 비교하여 일치하는 객체들을 추적 객체 후보로 선별하는 단계,
    상기 추적 객체 후보 중에서 제1 스캔 시점의 레이저 스캔 데이터로부터 검출된 복수개의 객체를 상기 제1 스캔 시점보다 나중인 제2 스캔 시점의 레이저 스캔 데이터로부터 검출된 복수개의 객체와 비교하여 교차하는 영역의 비율이 가장 큰 객체를 추적 객체로 인식하는 단계, 그리고
    상기 인식한 추적 객체를 향하여 주행하는 단계
    를 포함하는, 제어 방법.
  9. 제8항에서,
    상기 레이저 스캔 데이터를 수집하는 단계는,
    모폴로지 마스크를 적용하여 노이즈를 제거하는 단계를 더 포함하고,
    상기 모폴로지 마스크는,
    사람의 보폭을 커버할 수 있는 크기로 사전에 설정되는, 제어 방법.
  10. 삭제
  11. 제8항에서,
    상기 교차하는 영역의 비율이 가장 큰 객체를 추적 객체로 인식하는 단계는,
    사전에 설정된 조건에 따라 선택적으로 구동되는, 제어 방법.
  12. 제8항에서,
    상기 레이저 스캔 데이터를 수집하는 단계는,
    상기 레이저 스캔 데이터 중에서 사람의 신체 부위 별로 설정된 높이에 해당하는 스캔 데이터를 필터링하는 단계
    를 더 포함하는, 제어 방법.
  13. 제8항에서,
    상기 검출하는 단계는,
    상기 이진화된 레이저 스캔 데이터를 레이블링 대상으로 적용하는 단계,
    상기 레이블링 대상으로 적용된 상기 데이터에서, 각 점군 사이의 거리를 기준으로 상기 데이터를 분할하여 그룹핑하는 단계, 그리고
    그룹핑된 점군들을 동일한 객체로 구분하기 위한 레이블링을 수행하는 단계
    를 포함하는, 제어 방법
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
KR1020190105211A 2019-08-27 2019-08-27 이동 로봇 및 그 제어 방법 KR102369062B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190105211A KR102369062B1 (ko) 2019-08-27 2019-08-27 이동 로봇 및 그 제어 방법
PCT/KR2020/008496 WO2021040214A1 (ko) 2019-08-27 2020-06-30 이동 로봇 및 그 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190105211A KR102369062B1 (ko) 2019-08-27 2019-08-27 이동 로봇 및 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20210025327A KR20210025327A (ko) 2021-03-09
KR102369062B1 true KR102369062B1 (ko) 2022-02-28

Family

ID=74684506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190105211A KR102369062B1 (ko) 2019-08-27 2019-08-27 이동 로봇 및 그 제어 방법

Country Status (2)

Country Link
KR (1) KR102369062B1 (ko)
WO (1) WO2021040214A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102546156B1 (ko) * 2021-12-21 2023-06-21 주식회사 트위니 자율 주행 물류 운송 로봇
KR102474868B1 (ko) * 2022-02-25 2022-12-06 프로그라운드 주식회사 실시간 운동 지원 시스템
CN114422712B (zh) * 2022-03-29 2022-06-24 深圳市海清视讯科技有限公司 球体检测跟踪方法、装置、电子设备及存储介质
CN117021117B (zh) * 2023-10-08 2023-12-15 电子科技大学 一种基于混合现实的移动机器人人机交互与定位方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101188584B1 (ko) * 2007-08-28 2012-10-05 주식회사 만도 카메라와 레이저 스캐너를 이용한 차량 전방 물체 판별장치
KR101486308B1 (ko) * 2013-08-20 2015-02-04 인하대학교 산학협력단 이동 객체를 추종하기 위한 이동로봇 제어 장치, 방법 및 이동로봇

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4413957B2 (ja) * 2007-08-24 2010-02-10 株式会社東芝 移動物体検出装置および自律移動物体
KR20180080498A (ko) * 2017-01-04 2018-07-12 엘지전자 주식회사 공항용 로봇 및 그의 동작 방법
KR102049960B1 (ko) * 2017-01-13 2019-11-28 주식회사 웨이브엠 사물인터넷 기반 운송 로봇 및 운송 로봇의 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101188584B1 (ko) * 2007-08-28 2012-10-05 주식회사 만도 카메라와 레이저 스캐너를 이용한 차량 전방 물체 판별장치
KR101486308B1 (ko) * 2013-08-20 2015-02-04 인하대학교 산학협력단 이동 객체를 추종하기 위한 이동로봇 제어 장치, 방법 및 이동로봇

Also Published As

Publication number Publication date
KR20210025327A (ko) 2021-03-09
WO2021040214A1 (ko) 2021-03-04

Similar Documents

Publication Publication Date Title
KR102369062B1 (ko) 이동 로봇 및 그 제어 방법
CN107272710B (zh) 一种基于视觉定位的医用物流机器人系统及其控制方法
KR100773184B1 (ko) 자율 이동로봇
JP5296746B2 (ja) マップ作成方法および装置とそのマップを利用した定位方法
EP2888603B1 (en) Robot positioning system
Leigh et al. Person tracking and following with 2d laser scanners
CN110926476B (zh) 一种智能机器人的伴随服务方法及装置
US11688081B2 (en) Method of performing simultaneous localization and mapping with respect to a salient object in an image
US11554495B2 (en) Method of localization using multi sensor and robot implementing same
US20090148034A1 (en) Mobile robot
Eppenberger et al. Leveraging stereo-camera data for real-time dynamic obstacle detection and tracking
CN109362237B (zh) 用于检测被监测体积内入侵的方法和系统
JP6997057B2 (ja) 不動物体情報から端末位置を推定する装置、プログラム及び方法
CN115346256A (zh) 机器人寻人方法及系统
Fukuda et al. Navigation system based on ceiling landmark recognition for autonomous mobile robot-landmark detection based on fuzzy template matching (ftm)
Kristou et al. Target person identification and following based on omnidirectional camera and LRF data fusion
Zheng et al. Vision-based autonomous navigation in indoor environments
Luo et al. Autonomous mobile robot navigation and localization based on floor plan map information and sensory fusion approach
KR102293526B1 (ko) 3d 스캐닝 장비를 이용한 시설물 유지관리 시스템 및 그 방법
JP2012203646A (ja) 流れ状態判別装置、流れ状態判別方法、流れ状態判別プログラムおよびそれらを用いたロボット制御システム
Qian et al. Real-time power line safety distance detection system based on LOAM SLAM
KR101784584B1 (ko) 레이저 회전을 이용하여 3차원 물체를 판별하는 장치 및 방법
Yeremia et al. Design of a Lightweight Obstacle Detection System for Mobile Robot Platforms with a LiDAR Camera
KR102445846B1 (ko) 장애물 추적 시스템 및 장애물 추적 방법
JP7031991B2 (ja) 位置選択装置、位置選択方法、及び位置選択プログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant