KR102333625B1 - 로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법 - Google Patents

로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법 Download PDF

Info

Publication number
KR102333625B1
KR102333625B1 KR1020200091078A KR20200091078A KR102333625B1 KR 102333625 B1 KR102333625 B1 KR 102333625B1 KR 1020200091078 A KR1020200091078 A KR 1020200091078A KR 20200091078 A KR20200091078 A KR 20200091078A KR 102333625 B1 KR102333625 B1 KR 102333625B1
Authority
KR
South Korea
Prior art keywords
robot
identifier
information
service
hardware
Prior art date
Application number
KR1020200091078A
Other languages
English (en)
Inventor
김현숙
한상훈
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Priority to KR1020200091078A priority Critical patent/KR102333625B1/ko
Application granted granted Critical
Publication of KR102333625B1 publication Critical patent/KR102333625B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2247Verification or detection of system hardware configuration
    • 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
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1669Programme controls characterised by programming, planning systems for manipulators characterised by special application, e.g. multi-arm co-operation, assembly, grasping
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0276Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle
    • G05D1/0285Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle using signals transmitted via a public communication network, e.g. GSM network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2294Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by remote test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G05D2201/0217

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mechanical Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Robotics (AREA)
  • Human Computer Interaction (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Automation & Control Theory (AREA)
  • Manipulator (AREA)
  • Stored Programmes (AREA)

Abstract

적어도 하나의 프로세서에 의해 동작하는 로봇 제어 서버가, 상이한 사업장에 각각 설치된 로봇들을 제어하는 방법으로서, 각 로봇으로부터 로봇 식별자, 로봇이 설치된 사업장 식별자, 그리고 사업장에서 로봇이 제공할 서비스에 매핑된 서비스 식별자를 포함하는 로봇 설정 정보를 수신하여 각 로봇을 등록한다. 등록된 각 로봇으로부터 전송되는 로봇 식별자에 대응하는 하드웨어 설정 코드를 전송하고, 하드웨어 설정 코드를 기초로 하드웨어가 설정된 로봇으로부터 서비스 식별자를 포함하는 소프트웨어 설치 요청 신호를 수신하면, 서비스 식별자에 대응하는 적어도 하나의 소프트웨어 컴포넌트를 각 로봇에 전송한다. 소프트웨어 컴포넌트를 이용하여 소프트웨어가 설치된 로봇이 주행을 통해 수집한 환경 변수를 수신하고, 환경 변수를 검증한 검증 결과에 따라 로봇으로 검증 시나리오를 전송한다.

Description

로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법{Robot, robot control server and robot control method using the same}
본 발명은 서버 기반으로 로봇 서비스를 제공하는 로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법에 관한 것이다.
로봇을 이용한 서비스들이 늘어남에 따라, 호텔, 식당, 마트 등 다양한 사업장에서 로봇을 활용하는 사례들이 증가하고 있다. 다양한 사업장에서 로봇을 활용하여 서비스를 제공하기 위해서는, 사업장별로 지도(Map)를 만들고 해당 지도를 이용하여 로봇이 고객에게 서비스를 제공한다.
이때, 사업장의 특성에 따라 로봇이 서비스할 정보가 상이하기 때문에, 현재는 로봇을 관리하는 관리자가 수동으로 로봇에 서비스 정보를 셋팅하고 있다. 로봇에 서비스 정보를 셋팅한 후 사업장 지도를 생성하고, 로봇을 이용하여 고객에게 제공할 서비스를 적용하는 방법으로 설정하고 있으므로, 설정에 따른 시간과 비용이 로봇의 사업 확산에 걸림돌로 작용되고 있다.
예를 들어, 호텔 딜리버리 로봇의 경우에는 트랙킹(tracking) 기능이 필요 없지만, 식당 딜리버리 로봇은 식기 배달/회수 등의 서비스를 제공하기 위해서는 트랙킹 기능이 필수적이다. 따라서, 관리자는 로봇이 설치될 사업장이 호텔인지 아니면 식당인지에 따라 로봇에 기능을 다르게 설정해야 한다.
더욱이, 로봇의 단가가 최적화되게 하드웨어를 구성하고, 이에 맞는 소프트웨어 구성과 서비스 로직을 별도로 개발해야 한다. 따라서, 개발된 소프트웨어 구성과 서비스 로직을 로봇에 적용한 후 현장 검증이 이루어져야 하기 때문에, 관리자의 인위적인 조작이 요구되는 단점이 있다.
또한, 현재에는 로봇에 설치되어야 할 다양한 응용 프로그램들을 서버에서 유니캐스트(Unicast) 방식으로 제공하고 있다. 이와 같은 경우, 서버에 부하가 발생하는 문제점도 있다.
따라서, 본 발명은 서버를 기반으로 원격 제어 스케줄링 방식을 이용하여, 사업장 영업에 방해가 되었던 현장 시험을 무인 검증으로 개선하고, 서버 프로파일링을 이용하여 하드웨어 특성이 다른 복수의 로봇들을 이용하여 서비스를 제공할 수 있도록 하는 로봇 및 이를 이용한 로봇 제어 방법을 제공한다.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 하나의 특징인 적어도 하나의 프로세서에 의해 동작하는 로봇 제어 서버가, 로봇을 제어하는 방법으로서,
로봇 식별자별 하드웨어 설정 정보, 그리고 서비스 식별자별 소프트웨어 컴포넌트들을 관리하는 단계, 로봇으로부터 로봇 식별자, 그리고 상기 로봇이 제공할 서비스에 대한 서비스 식별자를 포함하는 로봇 설정 정보 요청을 수신하는 단계, 상기 로봇 식별자를 기초로 상기 로봇을 구성하는 하드웨어 장치들을 확인하고, 상기 하드웨어 장치들을 동작시키는 하드웨어 설정 정보를 상기 로봇에 전송하는 단계, 상기 하드웨어 설정 정보가 설정된 상기 로봇에, 상기 서비스 식별자에 대응하는 적어도 하나의 소프트웨어 컴포넌트를 전송하는 단계, 그리고 상기 소프트웨어 컴포넌트가 설치된 상기 로봇에게 로봇 설정을 검증하기 위한 검증 시나리오를 전송하는 단계를 포함한다.
상기 로봇 설정 정보 요청을 수신하는 단계는, 상기 로봇이 설치된 사업장에 대응하는 사업장 식별자를 수신하는 단계를 포함할 수 있다.
상기 로봇 설정 정보 요청을 수신하는 단계는, 전원이 인가된 상기 로봇으로부터 상기 로봇 식별자를 수신하고, 수신한 로봇 식별자를 등록하는 단계, 상기 로봇이 설치된 사업장을 포함하는 복수의 사업장 리스트들을 상기 로봇으로 전송하고, 상기 사업장 식별자를 수신하여 상기 로봇 식별자에 매핑되도록 등록하는 단계, 그리고 상기 사업장에서 제공하는 복수의 서비스 리스트를 상기 로봇으로 전송하고, 상기 서비스 식별자를 수신하여 상기 로봇 식별자에 매핑되도록 등록하는 단계를 포함할 수 있다.
상기 하드웨어 설정 정보를 상기 로봇에 전송하는 단계는, 상기 하드웨어 장치들이 수집한 정보를 가공하는 하드웨어 추상화 계층이 설치되도록 메타 정보를 상기 로봇으로 제공하는 단계, 상기 하드웨어 추상화 계층이 설치된 상기 로봇으로부터, 상기 로봇 식별자를 포함하여 상기 하드웨어 장치들을 설정하기 위한 하드웨어 설정 코드 요청 신호를 수신하는 단계, 그리고 상기 하드웨어 설정 코드를 상기 하드웨어 설정 정보로서 상기 로봇에 전송하는 단계를 포함할 수 있다.
상기 소프트웨어 컴포넌트를 전송하는 단계는, 상기 로봇으로부터 상기 서비스 식별자를 포함하는 소프트웨어 리스트 요청 신호를 수신하면, 상기 서비스 식별자에 대응하는 소프트웨어 리스트와 소프트웨어 설정 UI를 전달하는 단계, 상기 소프트웨어 설정 UI가 실행된 상기 로봇으로, 기 설정된 기본 소프트웨어 컴포넌트들을 전송하는 단계, 그리고 상기 기본 소프트웨어 컴포넌트들을 실행한 상기 로봇으로부터 소프트웨어 설치 요청 신호를 수신하고, 상기 서비스 식별자에 따라 선택된 복수의 소프트웨어 패키지를 포함하는 상기 소프트웨어 컴포넌트를 상기 로봇으로 전송하는 단계를 포함할 수 있다.
상기 검증 시나리오를 전송하는 단계는, 상기 로봇으로 기본 성능 측정 시나리오를 전송하는 단계, 상기 기본 성능 측정 시나리오에 따라 상기 로봇이 상기 하드웨어 장치들을 이용하여 측정한 측정 정보들을 수신하는 단계, 상기 측정 정보들을 미리 저장된 기준 검증 정보와 비교하고, 비교 결과에 따라 검증 승인 또는 검증 비승인 중 어느 하나의 정보를 포함하는 검증 결과를 생성하는 단계를 포함할 수 있다.
상기 검증 결과를 생성하는 단계 이후에, 상기 로봇이 상기 검증 비승인 정보가 포함된 검증 결과를 수신하면, 상기 로봇으로부터 검증 시나리오를 요청받는 단계, 그리고 상기 로봇이 재 검증을 위해 시험 주행하도록, 상기 검증 시나리오를 제공하는 단계를 포함할 수 있다.
상기 로봇 제어 서버는, 각 서비스별로 구현된 복수의 소프트웨어 컴포넌트들, 상기 각 소프트웨어 컴포넌트에 대응하여 상기 로봇이 연결해야 할 구성 요소들에 대한 채널 정보를 저장하는 채널 정보 저장 모듈, 등록된 로봇들에 대한 프로파일 정보와 각 사업장의 지도 정보, 그리고 각 서비스 정보와 검증을 위한 시나리오 정보를 저장하는 정보 저장 모듈을 관리할 수 있다.
상기 소프트웨어 컴포넌트들은 각각, 상기 로봇을 원격으로 검증하는 검증 매니저 모듈, 상기 검증 매니저 모듈과 연동하며, 상기 로봇을 검증하기 위한 검증 시나리오를 설정하는 시나리오 디코딩 모듈, 상기 로봇으로 사업장별 지도를 제공하거나 사업장에 특화된 서비스에 대응하는 소프트웨어 컴포넌트를 상기 로봇의 서비스 컨테이너에 이식하는 서비스 매니저 모듈, 상기 로봇에 대응하는 소프트웨어 컴포넌트를 이식하거나 상기 로봇에서 수집한 하드웨어 데이터를 변환하는 하드웨어 매니저로 구성될 수 있다.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 또 다른 특징인 적어도 하나의 프로세서에 의해 동작하며 임의의 사업장에 설치된 로봇이, 네트워크로 연결된 로봇 제어 서버의 제어를 받는 방법으로서,
전원이 인가되면, 로봇의 로봇 식별자 그리고 상기 로봇이 제공할 서비스에 대한 서비스 식별자를 포함하는 로봇 설정 정보를 상기 로봇 제어 서버로 전송하는 단계, 상기 로봇 식별자를 기초로 상기 로봇을 구성하는 하드웨어 장치의 하드웨어 정보를 상기 로봇 제어 서버로 요청하고, 상기 로봇 식별자에 대응하는 하드웨어 설정 코드를 수신하여 하드웨어를 설정하는 단계, 상기 서비스 식별자를 포함하는 소프트웨어 설치 요청 신호를 상기 로봇 제어 서버로 전송하고, 상기 서비스 식별자에 대응하는 적어도 하나의 소프트웨어 컴포넌트를 받아 소프트웨어를 설정하는 단계, 그리고 상기 로봇 제어 서버로부터 상기 소프트웨어가 설정된 로봇의 로봇 설정을 검증하기 위한 검증 시나리오를 수신하는 단계를 포함한다.
상기 로봇 제어 서버로 전송하는 단계는, 상기 임의의 사업장에 대응하는 사업장 식별자를 상기 로봇 제어 서버로 전송하는 단계를 포함할 수 있다.
상기 하드웨어를 설정하는 단계는, 하드웨어 초기화 시작 화면을 디스플레이하는 단계, 상기 로봇 식별자를 포함하여 상기 로봇 제어 서버로 하드웨어 정보를 요청하고, 상기 요청에 따라 하드웨어 추상화 계층 코드 메타 정보와 하드웨어 설정 UI를 수신하는 단계, 상기 하드웨어 추상화 계층 코드 메타 정보에 따라 하드웨어 추상화 계층을 컴파일하고 상기 하드웨어 설정 UI를 실행하는 단계, 상기 로봇 식별자를 포함하여 상기 로봇 제어 서버로 하드웨어 설정 코드를 요청하는 단계, 그리고 상기 로봇 식별자에 대응하는 하드웨어 설정 코드를 수신하면, 상기 컴파일한 하드웨어 추상화 계층을 상기 하드웨어 설정 코드에 따라 재 컴파일하는 단계를 포함할 수 있다.
상기 하드웨어 추상화 계층 코드 메타 정보를 토대로, 상기 로봇을 구성하는 복수의 하드웨어가 각각 수집한 데이터를 상기 하드웨어 추상화 계층에서 정의하는 형태로 컨버팅할 수 있다.
상기 소프트웨어를 설정하는 단계는, 상기 서비스 식별자를 포함하여 상기 로봇 제어 서버로 소프트웨어 리스트를 요청하는 단계, 상기 서비스 식별자에 대응하는 복수의 소프트웨어 리스트들과 소프트웨어 설정 UI를 수신하는 단계, 상기 로봇 제어 서버로부터 기 설정된 기본 소프트웨어 패키지와 소프트웨어 리스트 정보 표출 UI를 수신하는 단계, 그리고 상기 소프트웨어 리스트 정보 표출 UI를 토대로 사용자에 의해 서비스가 선택되면, 상기 선택된 서비스에 대한 소프트웨어 패키지를 상기 로봇 제어 서버로부터 다운로드하여 설치하는 단계를 포함할 수 있다.
상기 기본 소프트웨어 패키지는 상기 사업장의 지도 정보를 수신하기 위한 SLAM(simulation language for alternative modeling) 모듈과 상기 사업장을 주행하기 위한 네비게이션 모듈을 포함할 수 있다.
상기 검증 시나리오를 수신하는 단계는, 상기 로봇 제어 서버로부터 검증을 위한 기본 성능 측정 시나리오를 수신하고, 상기 기본 성능 측정 시나리오를 기초로 주행하는 단계, 주행하며 수집한 센싱 정보들을 상기 로봇 제어 서버로 전송하는 단계, 상기 로봇 제어 서버로부터 상기 센싱 정보들에 대한 검증 결과를 수신하는 단계, 그리고 상기 수신한 검증 결과가 검증 비승인이면 상기 로봇 제어 서버로 상기 검증 시나리오를 재 요청하고, 재 요청한 상기 검증 시나리오에 따라 주행하며 센싱 정보들을 재 수집하는 단계를 포함할 수 있다.
상기 검증 시나리오를 수신하는 단계 이후에, 리셋 버튼의 조작을 인식하면, 기 저장된 프로파일을 삭제하고 서비스 스케줄러를 구동하는 단계, 사용자에 의해 서비스 식별자 또는 사업장 식별자 중 어느 하나가 입력되면, 기 저장된 로봇 식별자와 입력된 서비스 식별자 또는 사업장 식별자를 포함하는 로봇 설정 정보를 생성하고, 상기 로봇 제어 서버로부터 상기 입력된 서비스 식별자 또는 사업장 식별자에 대한 소프트웨어 패키지를 설치하는 단계, 그리고 설치된 소프트웨어 패키지에 따라 기 설치된 하드웨어 추상화 계층을 재 컴파일하는 단계를 포함할 수 있다.
상기 재 컴파일하는 단계 이후에, 상기 로봇 제어 서버로부터 상기 사업장 식별자에 대응하는 지도 정보를 수신하는 단계, 그리고 변경된 서비스 또는 변경된 사업장에서 서비스를 제공하는 단계를 포함할 수 있다.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 또 다른 특징인 임의의 사업장에 설치되고 자율 주행을 통해 서비스를 제공하는 로봇으로서,
로봇 제어 서버와의 통신을 위한 통신 모듈과, 상기 로봇 제어 서버로부터 상기 로봇의 서비스에 대응하는 복수의 소프트웨어 컴포넌트들이 수신되면, 상기 복수의 소프트웨어 컴포넌트들이 이식되는 서비스 컨테이너, 그리고 하드웨어를 포함하고, 상기 하드웨어는, 로봇을 구동시키는 구동 장치, 주행 중 정보를 수집하는 복수의 정보 수집 장치들, 그리고 프로세서를 포함한다.
상기 프로세서는, 상기 로봇 제어 서버로부터 상기 로봇의 로봇 식별자, 상기 임의의 사업장에 대한 사업장 식별자, 그리고 상기 서비스에 대한 서비스 식별자에 대응하는 하드웨어 설정 코드와 복수의 소프트웨어 컴포넌트들을 수신하여 설치하고, 상기 로봇 제어 서버로부터 성능 측정 시나리오를 수신하여 검증을 위한 정보들을 수집할 수 있다.
본 발명에 따르면, 로봇에 적용할 서비스의 종류를 서버에서 지정함으로써, 손쉽게 서버에서 목적에 맞는 로봇의 서비스를 활성화할 수 있다.
또한, 로봇 사용이 일반화되는 상황에서 기존의 유니캐스트 방식의 응용 프로그램 배포 방식을 탈피하여, 다수의 로봇에 용이하게 응용 프로그램을 배포할 수 있다.
또한, 서버를 이용한 로봇의 제어를 통해 로봇 개발에 소용되는 시간/비용을 효율적으로 관리할 수 있고, 특히 서버 기반 원격제어 스케줄링을 통해 사업장 영업에 방해가 되었던 현장시험/튜닝 과정도 무인화할 수 있다.
도 1은 본 발명의 실시예에 따른 복수의 로봇들과 로봇 제어 서버가 적용된 환경의 예시도이다.
도 2는 본 발명의 실시예에 따른 로봇의 구조도이다.
도 3은 본 발명의 실시예에 따른 로봇 제어 서버의 구조도이다.
도 4는 본 발명의 실시예에 따른 로봇의 서비스 컨테이너 상태 변화를 나타낸 예시도이다.
도 5는 본 발명의 실시예에 따른 로봇 제어 방법에 대한 흐름도이다.
도 6은 본 발명의 실시예에 따른 로봇의 초기 설정 방법을 나타낸 흐름도이다.
도 7은 본 발명의 실시예에 따른 로봇의 하드웨어 설정 및 구동 방법에 대한 흐름도이다.
도 8은 본 발명의 실시예에 따른 로봇의 소프트웨어 설정 및 구동 방법에 대한 흐름도이다.
도 9는 본 발명의 실시예에 따른 로봇 상태 검증 방법에 대한 흐름도이다.
도 10은 본 발명의 실시예에 따른 로봇이 서비스별로 어플리케이션을 수신하는 방법에 대한 예시도이다.
도 11은 본 발명의 실시예에 따른 로봇의 서비스 변경 방법을 설명한 흐름도이다.
도 12는 본 발명의 실시예에 따른 검증 매니저 구성의 예시도이다.
도 13은 본 발명의 실시예에 따른 검증 파라미터를 최적화하는 방법에 대한 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 도면을 참조로 하여, 본 발명의 실시예에 따른 서버 기반의 로봇 서비스를 제공하기 위한 로봇, 로봇 제어 서버 및 이를 이용한 애자일 로봇 서비스 제공 방법을 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 복수의 로봇들과 로봇 제어 서버가 적용된 환경의 예시도이다.
도 1에 도시된 바와 같이, 로봇(100, 100-1~100-3)은 다양한 서비스를 제공하는 사업장(10~12)에 설치된다. 본 발명의 실시예에서는 사업장(10~12)으로 호텔, 식당, 그리고 박물관을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다. 각 사업장(10~12)에 설치되는 로봇(100)은 한 사업장에 적어도 한 대 이상 설치될 수 있다.
각 사업장(10~12)에 설치된 로봇(100)은 사업장의 특성에 따라 서로 상이한 서비스를 방문객에게 제공한다. 이때, 종래에는 각 사업장의 특성에 따른 서비스를 로봇(100)이 방문객에게 제공하기 위하여 각 로봇(100)마다 로봇 관리자가 현장에서 설정하고, 설정된 로봇을 각 사업장(10~12)에서 검증하는 절차가 필요하였다.
그러나, 본 발명의 실시예에서는 모든 로봇(100)들에 초기 셋팅 값만 입력해둔다. 로봇 제어 서버(200)은 초기 셋팅 값만 입력된 로봇(100)을 통해 각 사업장(10~12)에서 요구하는 서비스를 제공하기 위하여 설정한다. 그리고 로봇 제어 서버(200)는 로봇(100)을 통해 방문객에게 제공될 수 있도록 로봇 관리자의 현장 관리 없이도 검증 절차를 수행한다.
그리고 로봇(100)은 원격 사용자 인터페이스 서버(이하, ‘원격 UI 서버’라 지칭함)(300)는 원격 UI 기술을 통해, 네트워크로 연결된 원격지의 로봇(100)으로 UI를 제공한다. 본 발명의 실시예에서는 로봇 제어 서버(200)와 원격 UI 서버(300)가 물리적으로 분리된 서버로 표현하였으나, 로봇 제어 서버(200) 내에 원격 UI 서버(300)가 포함된 형태로 구현될 수 있다. 원격 UI 서버(300)는 로봇(100)으로 설정 UI, 소프트웨어 리스트 정보 제공 UI, 서비스 시작 UI 등의 다양한 UI를 제공한다.
예를 들어, 로봇(100)이 원격 UI 서버(300)에 의해 제공되는 사용자 인터페이스를 유선 또는 선으로 연결된 네트워크를 통하여 수신하고, 로봇(100)을 사용하는 사용자에게 원격 UI 서버(300)로부터 수신한 UI를 제공한다고 가정한다. 이 경우 로봇(100)의 입장에서 볼 때 원격 UI 서버(300)는 원격 UI가 된다. 원격 UI 기술은 이미 알려진 것으로, 본 발명의 실시예에서는 원격 UI 서버(300)에서 원격 UI를 제공하는 방법에 대한 상세한 설명은 생략한다.
다음은 각 사업장(10~12)에 설치되어 방문객에게 서비스를 제공하는 로봇(100)의 구조와 로봇 제어 서버(200)의 구조에 대해 도 2 및 도 3을 참조로 설명한다.
도 2는 본 발명의 실시예에 따른 로봇의 구조도이다.
도 2에 도시된 바와 같이, 로봇(100)은 하드웨어(110) 부분과 서비스 컨테이너(120)로 구성된다. 하드웨어(110)는 적어도 하나의 프로세서(111), 메모리(112), 정보 수집 장치(113), 구동 장치(114)를 포함할 수 있고, 버스를 통해 연결될 수 있다. 이외에도 로봇(100)에는 입력 장치 및 출력 장치 등의 하드웨어가 포함될 수 있다. 로봇(100)은 프로그램을 구동할 수 있는 운영 체제를 비롯한 각종 소프트웨어가 서비스 컨테이너(120) 형태로 탑재되어 있다.
프로세서(111)는 로봇(100)의 동작을 제어하는 장치로서, 프로그램에 포함된 명령들을 처리하는 다양한 형태의 프로세서일 수 있고, 예를 들면, CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 등 일 수 있다.
메모리(112)는 본 발명의 동작을 실행하도록 기술된 명령들이 프로세서(111)에 의해 처리되도록 해당 프로그램을 로드한다. 메모리(112)는 예를 들면, ROM(read only memory), RAM(random access memory) 등 일 수 있다.
정보 수집 장치(113)는 본 발명의 동작에 따라 주행 중인 로봇(100)이 정보를 수집하는 다양한 장비(예를 들어, 라이다, 깊이 카메라, 관성 측정 장치(IMU: Inertial Measurement Unit) 등)들에 해당한다. 정보 수집 장치(113)는 설명의 편의를 위하여 하나의 구성 요소로 나타내었으나, 복수의 장비들이 로봇(100)에 설치될 수 있다.
구동 장치(114)는 프로세서(111)의 제어에 따라 로봇(100)을 사업장(10~12) 내외부에서 주행시킨다.
이 외에도 하드웨어(110)에는 로봇(100)의 관리자에 의해 정보를 입력 받거나, 입력된 정보를 관리자가 확인할 수 있도록 하는 입출력 장치를 추가로 포함할 수 있다.
서비스 컨테이너(120)에는 로봇 제어 서버(200)와의 통신을 위한 통신 모듈(121)을 포함한다. 구동 전 로봇(100)의 서비스 컨테이너(120)에는 통신 모듈(121) 이외의 소프트웨어 컴포넌트는 존재하지 않는다. 최초 로봇(100)이 구동되고 로봇(100)과 로봇 제어 서버(200) 사이에 통신이 되면, 로봇(100)이 설치된 사업장과 로봇(100)의 정보를 토대로 로봇 제어 서버(200)로부터 수신한 소프트웨어 컴포넌트들이 서비스 컨테이너(120)에 이식(porting)된다. 이에 대해서는 이후 설명한다.
한편, 로봇(100)이 서비스를 제공할 수 있도록 설정, 소프트웨어 컴포넌트 이식, 검증, 튜닝을 실행하는 로봇 제어 서버(200)에 대해 도 3을 참조로 설명한다.
도 3은 본 발명의 실시예에 따른 로봇 제어 서버의 구조도이다.
도 3에 도시된 바와 같이, 로봇 제어 서버(200)는 소프트웨어 컴포넌트(220)에 접근할 수 있는 모듈(도면 미도시)을 가지는 운영체제(210)를 포함한다. 또한, 로봇 제어 서버(200)는 서비스별로 구현되어 있는 소프트웨어 컴포넌트(220)들을 저장, 관리한다. 본 발명의 실시예에서는 설명의 편의를 위하여 4개의 소프트웨어 컴포넌트(220)들만을 도시하였으나, 반드시 이와 같이 한정되는 것은 아니다. 하나의 서비스를 제공하기 위해 적어도 하나의 소프트웨어 컴포넌트가 사용된다.
각각의 소프트웨어 컴포넌트(220)들은 각각 채널 정보가 저장되어 있는 채널 정보 저장 모듈(230)을 가진다. 여기서 채널 정보라 함은, 하드웨어와 소프트웨어 설정이 완료된 로봇(100)이 실제 서비스를 제공하기 위해 연결해야 하는 다른 구성 요소들(예를 들어, 엘리베이터, CCTV 등)과 연동하여, 정보를 송수신하는 연결 정보를 의미한다.
그리고, 로봇 제어 서버(200)는 서비스별로 특정 멀티캐스트 주소로 어플리케이션 방송을 하는 채널 브로드캐스터(240)를 포함한다. 여기서, 어플리케이션 방송이라 함은, 채널을 통해 서비스(예를 들어, 소프트웨어 컴포넌트 등)를 브로드캐스트 전송하는 것을 의미하며, 반드시 이와 같이 한정되는 것은 아니다. 채널 브로드캐스터(240)를 통해 로봇 제어 서버(200)는 로봇(100)으로 소프트웨어 컴포넌트(220)를 제공한다.
각 소프트웨어 컴포넌트(220)는 검증 매니저, 서비스 매니저, 그리고 하드웨어 매니저를 포함한다.
검증 매니저는 로봇(100)이 로봇 관리자의 관여 없이 스스로 무인 검증하도록 관리하는 모듈로, 검증을 위한 시나리오를 디코딩하는 시나리오 디코딩 모듈과 연동한다.
서비스 매니저는 사업장별 지도를 제공하거나, 사업장에 특화된 서비스에 대한 소프트웨어 컴포넌트를 로봇(100)에 이식하는 모듈로, SLAM(simulation language for alternative modeling) 모듈 및 네비게이션 모듈과 연동한다. 추가로 서비스 매니저는 사업장의 특성에 따라 방문객을 트래킹하는 트래킹 모듈과도 연동한다.
하드웨어 매니저는 로봇(100)에 적합한 소프트웨어 컴포넌트를 이식할 수 있도록, 하드웨어 데이터를 변환하는 모듈로, 하드웨어 추상화 계층 컴파일 모듈과 연동한다.
또한, 로봇 제어 서버(200)는 다양한 정보 저장 모듈(250)을 포함한다. 본 발명의 실시예에서는 프로파일 저장 모듈(251), 지도 저장 모듈(252), 서비스 정보 저장 모듈(253), 그리고 시나리오 저장 모듈(254)을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다.
각각의 소프트웨어 컴포넌트는 채널 정보 저장 모듈(230)과 연동한다. 채널 정보 저장 모듈(230)에는 채널 정보가 저장되어 있다. 따라서, 로봇(100)에 이식될 소프트웨어 컴포넌트가 정해지면, 채널 브로드캐스터(240)를 통해 해당 채널로 소프트웨어 컴포넌트가 로봇(100)으로 전달된다. 로봇(100)은 수신한 소프트웨어 컴포넌트를 받고, 로봇(100) 이외에 연동해야 할 구성 요소들과 연동 절차를 수행한다.
로봇 제어 서버(200)는 다양한 정보들을 저장 관리하기 위하여, 저장 모듈(250)을 포함한다. 본 발명의 실시예에서는 저장 모듈(250)에 프로파일 저장 모듈(251), 지도 저장 모듈(252), 서비스 정보 저장 모듈(253), 그리고 시나리오 저장 모듈(254)이 포함되는 것을 예로 하여 설명하나, 반드시 이와 같이 한정되는 것은 아니다.
프로파일 저장 모듈(251)은 로봇 제어 서버(200)가 로봇(100)에 설정되어 있는 초기 셋팅 정보를 확인하여, 로봇(100)의 하드웨어와 로봇(100)이 설치된 사업장 정보, 그리고 해당 사업장에서 로봇(100)이 제공할 서비스 정보들을 저장, 관리한다.
지도 저장 모듈(252)은 로봇(100)이 설치되어 있는 사업장(10~12)별 지도 정보를 저장, 관리한다.
서비스 정보 저장 모듈(253)은 각 사업장(10~12)별 특화된 서비스 정보를 저장, 관리한다. 예를 들어, 로봇(100)이 설치된 사업장이 호텔이라면, 서비스 정보 저장 모듈(253)은 어메니티를 객실까지 배달하는 서비스를 호텔에 특화된 서비스 정보로 저장, 관리한다. 또한, 로봇(100)이 설치된 사업장이 박물관이라면, 서비스 정보 저장 모듈(253)은 관람객을 트래킹하여 박물관에 전시된 전시물의 설명을 제공하는 서비스를 박물관에 특화된 서비스 정보로 저장, 관리한다.
시나리오 저장 모듈(254)은 서비스를 제공하기 위한 시나리오, 로봇(100)의 검증 스케줄링 시나리오 등의 시나리오들을 저장, 관리한다.
이상에서 설명한 환경에서, 로봇(100)의 전원 인가 전의 서비스 컨테이너 상태와 인가 후의 서비스 컨테이너 상태에 대해 도 4를 참조로 설명한다.
도 4는 본 발명의 실시예에 따른 로봇의 서비스 컨테이너 상태 변화를 나타낸 예시도이다.
도 4의 (a)에 도시된 바와 같이, 로봇(100)에 전원이 인가되어 부팅되기 전에는, 로봇(100) 내부에 로봇 제어 서버(200)와의 통신을 위한 통신 모듈 이외의 소프트웨어 컴포넌트들이 존재하지 않는다. 여기서, 로봇(100)은 사업장에 설치되기 전에 로봇(100)에 부여된 로봇 식별 정보와 로봇(100)이 설치된 사업장의 사업장 식별 정보, 그리고 해당 사업장에서 제공하는 서비스 정보를 나타내는 서비스 식별 정보가 미리 로봇(100) 내부에 입력되어 있다.
로봇(100)에 최초 전원이 인가되어 부팅되면, 로봇(100)은 통신 모듈을 이용하여 로봇 제어 서버(200)로 로봇 식별 정보, 사업장 식별 정보, 그리고 서비스 식별 정보를 포함하는 로봇 서비스 정보를 전달한다. 로봇 제어 서버(200)는 로봇(100)으로부터 전달되는 로봇 서비스 정보를 토대로, 해당 로봇(100)에 제공할 소프트웨어 컴포넌트들을 전달한다.
그러면, 도 4의 (b)에 도시된 바와 같이, 로봇(100)의 서비스 컨테이너에는 로봇 제어 서버(200)로부터 수신한 로봇, 로봇이 설치된 사업장, 그리고 로봇이 제공할 서비스에 대응하는 소프트웨어 컴포넌트들이 적어도 하나 설치된다.
이때, 로봇(100)이 설치된 사업장의 물리적인 환경, 또는 동일 사업장내의 환경이 바뀌는 경우, 또는 로봇(100)이 제공할 서비스가 바뀌는 상황이 발생할 수 있다. 그렇다 하더라도, 로봇 관리자 또는 로봇이 설치된 사업장의 관리자가 로봇(100)의 리셋 버튼을 한 번 조작하는 것만으로, 로봇 제어 서버(200)로부터 상황에 적합한 소프트웨어 컴포넌트들이 로봇(100)에 이식될 수 있다.
다음은, 로봇(100)이 사업장에 설치된 이후부터 서비스를 제공하기까지의 로봇 제어 방법에 대해 도 5를 참조로 설명한다.
도 5는 본 발명의 실시예에 따른 로봇 제어 방법에 대한 흐름도이다.
도 5에 도시된 바와 같이, 로봇(100)이 사업장에 설치되면, 로봇(100)과 로봇 제어 서버(200)는 로봇 식별자, 사용자에 의해 선택된 사업장 식별자, 그리고 로봇(100)을 이용하여 제공하고자 하는 서비스 식별자를 포함하는 로봇 설정 정보를 송수신하면서 로봇(100)의 초기 설정 단계를 수행한다(S100). 초기 설정 단계를 통해, 로봇(100)은 로봇 제어 서버(200)로 로봇 서비스 정보를 등록한다.
초기 설정 단계를 수행한 후, 로봇(100)은 로봇 제어 서버(200)와 로봇 식별자의 송수신, 로봇 식별자에 대응하는 하드웨어 추상화 계층 코드 메타 정보를 송수신하여, 설정 사용자 인터페이스를 실행한다. 여기서 설정 사용자 인터페이스는 도면에 도시되지 않은 원격 사용자 인터페이스 서버로부터 로봇(100)에 제공된 사용자 인터페이스이다.
로봇(100)은 로봇 제어 서버(200)로부터 로봇 식별자에 대응하는 코드를 수신한 후, 하드웨어 추상화 계층을 컴파일하고, 하드웨어 매니저를 실행한다. 이를 통해 하드웨어 설정/구동 단계가 종료된다.
하드웨어 설정/구동 단계 후, 로봇(100)은 로봇 제어 서버(200)와 서비스 식별자를 송수신하여, 서비스 식별자에 대응하는 소프트웨어 리스트 정보를 수신한다. 그리고 로봇(100)은 소프트웨어 리스트 정보에 대응하는 소프트웨어 컴포넌트를 로봇 제어 서버(200)로부터 다운로드받아 설치한다. 로봇(100)은 설치한 소프트웨어 컴포넌트를 설정함으로써, 소프트웨어 설정/구동 절차를 완료한다(S300).
로봇(100)은 하드웨어 설정과 소프트웨어 설정을 완료한 후, 로봇 제어 서버(200)의 제어에 따라 서비스 검증 절차를 수행한다(S400). 서비스 검증이 완료되면, 로봇(100)은 설치된 사업장에서 서비스를 제공한다(S500).
여기서, 각 단계 중, 초기 설정 단계에 대해 먼저 도 6을 참조로 상세히 설명한다.
도 6은 본 발명의 실시예에 따른 로봇의 초기 설정 방법을 나타낸 흐름도이다.
일반적으로 로봇(100)은 제조된 직후 로봇(100)에 고유하게 할당된 식별자가 저장된 상태로 사업장에 출하된다. 따라서 도 6에 도시된 바와 같이, 로봇(100)을 사용하는 사용자가 로봇(100)에 전원을 인가하면(S101), 로봇(100)은 저장된 로봇 식별자를 로봇 제어 서버(200)로 전달한다(S102). 로봇 제어 서버(200)는 로봇(100)으로부터 전송된 로봇 식별자를 등록한다(S103).
이때, 최초 전원이 인가된 로봇(100)과 로봇 제어 서버(200) 사이에 네트워크 연결 방법은 다양한 방법으로 실행될 수 있으므로, 본 발명의 실시예에서는 어느 하나의 방법으로 한정하지 않는다.
로봇 제어 서버(200)는 로봇 식별자가 등록된 로봇(100)으로, 해당 로봇(100)이 서비스를 제공할 수 있는 다양한 사업장 리스트를 전달한다(S104). 로봇(100)은 S104 단계에 따라 로봇 제어 서버(200)로부터 수신한 사업장 리스트를 화면에 표시하고, 사용자에 의해 선택된 사업장 정보를 수신하여 로봇 제어 서버(200)로 전달한다(S105, S106).
로봇 제어 서버(200)는 S106 단계에서 수신한 사업장 식별자를 S103 단계에서 등록한 로봇 식별자에 매핑하여 등록한다(S107). 그리고, 로봇 제어 서버(200)는 사용자에 의해 선택된 해당 사업장에서 로봇(100)을 이용하여 제공할 수 있는 다양한 서비스 리스트들을 로봇(100)으로 전달한다(S108).
로봇(100)은 S108 단계에서 수신한 서비스 리스트들을 화면에 표시하고, 사용자에 의해 선택된 서비스 정보를 수신하여 로봇 제어 서버(200)로 전달한다(S109, S110). 로봇 제어 서버(200)는 S110 단계에서 수신한 서비스 정보를 사업장 식별자가 매핑되어 있는 로봇 식별자에 함께 매핑하여 등록한다(S111). 이를 통해, 로봇(100)의 로봇 식별자, 로봇(100)이 설치된 사업장 식별자, 그리고 해당 사업장에서 로봇(100)이 방문객에게 제공할 서비스 식별자가 로봇 제어 서버(200)에 등록되는 초기 설정 절차가 완료된다.
다음은 도 7을 참조로 하여, 초기 설정 절차가 완료된 로봇(100)의 하드웨어를 설정하고 구동하는 방법에 대해 설명한다.
도 7은 본 발명의 실시예에 따른 로봇의 하드웨어 설정 및 구동 방법에 대한 흐름도이다.
도 7에 도시된 바와 같이, 초기 설정이 완료된 로봇(100)은 사용자로 하여금 로봇(100)의 하드웨어를 초기화하고 설정하는 절차가 수행됨을 알리는 하드웨어 초기화 사용자 인터페이스 화면을 표시한다(S201). 이와 동시에 로봇(100)은 로봇 제어 서버(200)로 로봇 식별자를 포함하여 하드웨어 정보 제공을 요청한다(S202).
로봇 제어 서버(200)는 로봇(100)으로 하드웨어 추상화 계층 코드 메타 정보를 제공한다(S203). 여기서, 하드웨어 추상화 계층 코드 메타 정보라 함은, 로봇(100)을 구성하고 있는 하드웨어(예를 들어, 라이다, IMU 등)는 그 제조사별로 상이한 형태로 정보를 수집하거나 수집한 정보를 출력한다.
본 발명의 실시예에서는 로봇 제어 서버(200)에서 로봇(100)을 검증하거나 상태 파악을 위해 필요한 정보만이 전달되도록, 로봇(100)으로 하드웨어 추상화 계층 코드 메타 정보를 전달한다. 그러므로 로봇(100)은 하드웨어 추상화 계층 코드 메타 정보를 이용하여, 하드웨어를 통해 수집한 정보에서 로봇 제어 서버(200)에서 필요한 정보로 생성하고, 생성한 정보를 로봇 제어 서버(200)로 제공한다.
원격 UI 서버(300)는 로봇(100)으로 하드웨어 설정 UI를 제공한다(S204). 로봇(100)은 S204 단계에서 수신한 설정 UI를 실행하고(S205), 로봇 식별자를 포함하여 로봇(100) 자신의 하드웨어를 설정하기 위한 하드웨어 설정 코드를 요청한다(S206).
로봇 제어 서버(200)는 S206 단계에 포함된 로봇 식별자에 대응하는 하드웨어 설정 코드를 로봇(100)으로 제공한다. 제공된 하드웨어 설정 코드는 다음 표 1에 기재된 예시와 같다. 표 1에는 로봇(100)이 호텔에서 배달 서비스를 제공하고자 하는 경우의 하드웨어 설정 코드를 나타낸 것이다.
로봇 ID, 전시장업장, 안내서비스
Lidar: yujin YRL3
rgbd: Intel DM450
IMU: murata IMU
Sonar: RPLIDAR A2M6
Actuator: XM430-W210-R
Tablet: Apple 8인치
Code
dm450.cpp
lidar_serial.cpp
로봇(100)은 수신한 하드웨어 설정 코드를 이용하여 하드웨어 추상화 계층을 재 설치하고(S208), 하드웨어 매니저를 실행시킨다(S209). 이러한 절차가 완료되면 로봇(100)의 하드웨어 설정이 완료되었음을 알리는 설정 완료 메시지를 표시한다(S210).
상기에서 설명한 절차에 따라 로봇(100)의 하드웨어 설정 및 구동이 완료되면, 로봇(100)은 로봇 제어 서버(200)와의 연동을 통해 소프트웨어 설정 및 구동 절차를 수행한다. 이에 대해 도 8을 참조로 설명한다.
도 8은 본 발명의 실시예에 따른 로봇의 소프트웨어 설정 및 구동 방법에 대한 흐름도이다.
도 8에 도시된 바와 같이, 하드웨어 설정이 완료된 로봇(100)은 소프트웨어초기화 시작 화면을 디스플레이한다(S301). 로봇(100)은 로봇 제어 서버(200)로 서비스 식별자를 포함하여 소프트웨어 리스트를 요청한다(S302).
로봇 제어 서버(200)는 S302 단계에서 수신한 서비스 식별자에 대응하는 소프트웨어 리스트를 로봇(100)에 제공하고(S303), 이와 동시에 원격 UI 서버(300)는 소프트웨어 설정 UI를 로봇(100)으로 전달한다(S304). 로봇(100)은 S304 단계에서 수신한 소프트웨어 설정 UI를 실행하여 초기 화면을 사용자가 인식할 수 있도록 제공한다(S305).
로봇(100)은 로봇 제어 서버(200)로부터 전송되는 기본 소프트웨어를 다운로드한다(S306). 본 발명의 실시예에서는 기본 소프트웨어로 로봇(100)이 설치된 영업장의 지도에 해당하는 SLMA과 네비게이션 설치를 위한 소프트웨어를 예를 들어 설명하나, 반드시 이와 같이 한정되는 것은 아니다.
S306 단계에서 기본 소프트웨어를 다운로드 한 로봇(100)은 서비스 매니저 중 SLAM 매니저와 네비게이션 매니저의 실행을 시작한다(S307). 로봇(100)에 기본 소프트웨어가 설치되면, 원격 UI 서버(300)는 소프트웨어 리스트 정보를 표시하는 UI를 로봇(100)으로 제공하고, 로봇(100)은 제공 받은 소프트웨어 리스트 정보 표시 UI를 실행한다(S308, S309).
사용자가 소프트웨어 리스트 정보 표시 UI를 토대로 적어도 하나의 소프트웨어를 선택하면, 로봇(100)은 로봇 제어 서버(200)로 사용자에 의해 선택된 소프트웨어의 설치를 요청한다(S310). 여기서, 선택된 소프트웨어는 로봇(100)이 설치된 사업장과 로봇(100)을 통해 제공할 서비스에 특화된 소프트웨어를 의미한다.
로봇 제어 서버(200)는 S310 단계의 요청에 따라, 사용자에 의해 선택된 소프트웨어 패키지를 로봇(100)으로 제공한다(S311). 로봇 제어 서버(200)가 선택된 소프트웨어 패키지를 로봇(100)에 다운로드 하면, 로봇(100)은 수신한 소프트웨어 패키지를 설치하고, 서비스를 기동한다(S312).
로봇(100)이 로봇 제어 서버(200)로 로봇 식별자를 포함하여 소프트웨어 설정 정보를 보고하면(S313), 로봇 제어 서버(200)는 로봇 식별자에 매핑하여 현재 로봇(100)에 설치된 소프트웨어 리스트를 등록한다(S314). 이는 추후, 소프트웨어의 갱신이 필요할 경우 해당 소프트웨어가 설치된 로봇(100)으로 용이하게 개신된 소프트웨어를 내려주기 위함이다.
로봇(100)은 소프트웨어의 설정이 완료되었음을 알리는 메시지를 표시한다(S315). 그리고 원격 UI 서버(300)는 로봇(100)으로 서비스 시작 UI를 제공한다(S316).
이와 같이, 로봇(100)의 하드웨어와 소프트웨어가 설정되고 구동되면, 로봇(100)은 로봇 제어 서버(200)와 연동을 통해, 로봇(100)이 서비스를 제공할 수 있는 상태인지 확인하는 검증 절차를 수행한다. 이에 대해 도 9를 참조로 설명한다.
도 9는 본 발명의 실시예에 따른 로봇 상태 검증 방법에 대한 흐름도이다.
도 9에 도시된 바와 같이, 로봇(100)은 최초 하드웨어와 소프트웨어가 설치되거나, 또는 미리 설정된 주기 또는 상태마다 사용자에게 주행 최적화를 수행할 것인지 메시지를 제공한다.
그리고, 사용자가 주행 최적화를 선택하여 최적화 요청을 수신하면(S401), 로봇(100)은 로봇 제어 서버(200)로 기본 성능 측정 시나리오를 요청한다(S402). 여기서, 기본 성능 측정 시나리오에는 로봇(100)이 어떤 경로로 이동할지, 이동하면서 어떠한 정보를 수집할 것인지, 엘리베이터에 탑승할 것인지, 음향을 인식하거나 모션을 측정할 것인지 등의 정보들이 포함되어 있으며, 포함된 정보를 어느 하나로 한정하지 않는다.
로봇 제어 서버(200)는 S402 단계에서의 로봇(100)의 요청에 따라 기 저장되어 있는 기본 성능 측정을 위한 시나리오를 제공한다(S403). 로봇(100)은 기본 성능 측정을 위한 시나리오를 수신하면, 시험 주행을 시작한다(S404).
시험 주행하면서 로봇(100)은 하드웨어를 이용하여 다양한 정보들을 센싱하고, 센싱 정보를 로봇 제어 서버(200)로 전달한다(S405). 로봇(100)이 기본 성능 측정 시나리오에 따라 수집한 센싱 정보들을 검증하고, 검증 결과를 로봇(100)에 전달한다(S408).
여기서, 로봇 제어 서버(200)는 센싱 정보들을 검증할 기준 정보를 저장한다. 예를 들어, 검증 기준 정보로 제1 지점에서 제2 지점으로 이동한 시간이 3분 이내이면 검증에 성공한 것으로 설정한다. 또 다른 예로서 음성 인식율이나 모션 인식율이 90% 이상인 경우 검증에 성공한 것으로 설정한다. 검증 기준 정보는 로봇(100)이 제공할 서비스나 로봇(100)이 설치된 사업장에 따라 다양하게 설정될 수 있으므로, 본 발명의 실시예에서는 기준 정보를 어느 하나로 한정하지 않는다.
로봇(100)은 S408 단계에서 수신한 검증 결과가 제1 결과(OK)인지, 제2 결과(NOK)인지 확인한다(S409). 만약 검증 결과가 제1 결과라면, 로봇(100)은 검증 절차를 종료하고, 도킹 스테이션으로 이동하여 서비스 제공을 준비한다(S410).
그러나, 검증 결과가 제2 결과이면, 로봇(100)은 로봇 제어 서버(200)로 검증 시나리오를 요청한다(S411). 로봇 제어 서버(200)는 로봇(100)의 요청에 따라 검증 시나리오를 제공하고(S412), 검증 시나리오를 수신한 로봇(100)은 S404 단계부터 다시 수행하여 검증 절차를 반복한다.
다음은 로봇(100)이 서비스별로 어플리케이션을 로봇 제어 서버(200)로부터 수신하는 절차에 대해 도 10을 참조로 설명한다.
도 10은 본 발명의 실시예에 따른 로봇이 서비스별로 어플리케이션을 수신하는 방법에 대한 예시도이다.
도 10에 도시된 바와 같이, 초기 부팅 시 로봇(100)은 로봇 제어 서버(200)에 어플리케이션 리스트를 요청 한다. 로봇(100)이 어플리케이션을 요청하고 사용자가 설정한 서비스 코드를 입력하면, 로봇(100)에서는 서비스 코드를 참조하여 로봇 제어 서버(200)로부터 다운로드 받은 어플리케이션 리스트를 매칭한다. 그리고, 매칭한 어플리케이션 리스트에서 로봇(100)에 필요한 IP 주소 세트와 포트 정보를 획득한다.
실시예로, 어플리케이션 A의 IP 주소:포트가 233.234.200.2:5000이라고 가정하면, 로봇(100)은 NHR(Next Hop Router)에 본 IP 주소:포트로 IGMP(Internet Group Management Protocol) 조인(join)한다. 로봇(100)이 조인하는 대상은 서비스 라우터(도면 미도시)가 된다.
서비스 라우터는 IPv4 멀티캐스트 루프(Multicast Loop)를 동작 시켜 RTP 방식의 어플리케이션 슬라이스를 로봇 제어 서버(200)로부터 수신한다. 이 절차는 서비스 리스트에 명시된 모든 어플리케이션이 로봇(100)에 다운로드 완료될 때까지 계속 진행된다. 여기서, 어플리케이션 슬라이스는, 어플리케이션의 전송 단위를 의미한다.
만일 모든 어플리케이션이 로봇(100)에 다운로드되고 체크섬 확인에서 문제가 없다면, 서비스 라우터는 모든 어플리케이션을 압축하여 ROS 패키지를 구성하여 로봇(100)을 부팅시킨다. 여기서, 체크섬 확인은 어플리케이션이 제대로 전송되었는지 즉, 어플리케이션의 슬라이스 순서가 맞게 전송되었는지 또는 누락된 어플리케이션 슬라이스가 있는지 확인하는 것을 의미한다.
또한, 로봇(100)의 수행 미션 변경으로 서비스 변경이 필요한 경우에는, 사용자가 로봇(100)의 리셋 버튼을 조작하여 서비스를 변경할 수 있다. 이에 대해서는 도 11을 참조로 설명한다.
도 11은 본 발명의 실시예에 따른 로봇의 서비스 변경 방법을 설명한 흐름도이다.
도 11에 도시된 바와 같이, 사용자가 로봇(100)에 구비되어 있는 리셋 버튼을 조작하면, 로봇(100)은 리셋 버튼의 조작을 인식한다(S601). 리셋 버튼이 조작된 로봇(100)은 기 저장되어 있는 서비스에 대한 프로파일을 삭제하고(S602), 하드웨어에 구성되어 있는 메인 PC를 재부팅한다(S603).
로봇(100)은 서비스 스케줄러를 기동하고(S604), 사용자에 의해 새로 입력되는 서비스 또는 사업장에 대응하는 서비스 식별자와 사업장 식별자, 그리고 로봇에 저장된 로봇 식별자를 포함하는 로봇 설정 정보를 생성한다(S605). 로봇(100)은 로봇 제어 서버(200)로부터 기 다운로드 받은 소프트웨어 패키지에 조인하여 새로운 서비스에 대한 소프트웨어 패키지를 다운로드 한다(S606, S607). 로봇(100)은 하드웨어 추상화 계층을 재 컴파일한다(S608).
그리고 로봇(100)은 서비스 리스트 XML을 분석한 후, 시스템에 관련된 작업을 수행하는 백그라운드 프로세스인 서비스 데몬을 시작한다(S609). 여기서 로봇(100)이 수행하는 메인 PC 재부팅 방법, 소프트웨어 패키지를 다운로드 하는 방법이나 서비스 데몬을 시작하는 방법은 이미 알려진 것으로, 본 발명의 실시예에서는 상세한 설명을 생략한다.
로봇(100)은 현재의 로봇 상태 정보를 로봇 제어 서버(200)로 전달한다(S610). 이때 로봇 상태 정보에는 로봇의 식별자, 새로 변경된 서비스 식별자, 그리고 로봇(100)이 설치된 사업장 식별자들이 포함되어 있다.
로봇 제어 서버(200)는 로봇(100)으로부터 수신한 로봇 상태 정보를 기초로 로봇 식별자를 조회한다(S611). 그리고 해당 로봇(100)에 제공된 지도 정보와 새로 변경된 서비스 식별자 또는 사업장 식별자에 대응하는 지도 정보가 로봇(100)에 제공되어 등록되었는지 여부를 확인한다(S612).
만약 로봇(100)에 새로운 지도 정보를 제공해야 하는 것으로 판단하면, 로봇 제어 서버(200)는 로봇(100)으로 지도 코드를 제공한다(S613). 그러면 로봇(100)은 지도 코드를 토대로 지도를 저장하고 변경된 서비스를 사용자에게 제공한다(S614). 그러나, 이미 제공된 지도 정보가 있다면, 로봇 제어 서버(200)는 로봇(100)으로 응답 신호만 전송하여, 로봇(100)이 새로운 서비스를 사용자에게 제공할 수 있도록 한다.
다음은, 로봇 제어 서버(200) 기반으로 원격에서 로봇(100)을 검증하는 예에 대해 설명한다. 본 발명의 실시예에서는 로봇(100)이 호텔에 설치되어 있는 경우를 예를 들어 설명한다.
로봇 제어 서버(200)의 기반의 원격 검증 과정을 위해, 로봇 제어 서버(200)는 검증 매니저에 포함된 검증 스케줄러를 통해 로봇(100)을 실시간 또는 사전 예약 형태로 원격 검증할 수 있다. 로봇 제어 서버(200)에 저장된 검증 스케줄러는 시나리오 기반의 XML File DB를 갖추고 있으며, 이를 통해 로봇 제어 서버(200)는 로봇(100)의 검증 과정/결과를 통제할 수 있다.
원격 검증의 목적은 사업장 현장 상황(예를 들어, 사업장별 통로 간격, 엘리베이터 문턱높이 등 물리적인 환경)에 최적화되고 안정적인 서비스를 사용자에게 제공하기 할 수 있도록 로봇 소프트웨어의 파라미터들을 구성하는 것이다. 이는 튜닝의 과정으로 설명될 수 있으며, 원격 검증 결과는 로봇 소프트웨어 튜닝으로 피드백 된다.
로봇(100)이 주행하면서 로봇(100)과 벽면과의 거리, 통로의 길이 등을 라이다 또는 깊이 카메라를 이용하여 각도 별 거리 정보를 측정하면, 로봇(100)은 측정한 정보를 로봇 제어 서버(200)로 전달하여 파라미터 최적화가 이루어지도록 한다.
이때, 로봇 제어 서버(200)가 로봇(100)으로 제공하는 검증 표는 다음 표 2와 같다.
대항목 시험항목 설명
어메니티 딜리버리
Delivering(단층) 18층 전체 객실
1801호 네비게이션 → 19층 E/V 앞에서 call down
1801호 네비게이션 → 19층 E/V 앞에서 도착 메시지 수신
표 2에 나타낸 바와 같이 검증표에는 로봇(100)이 실행해야 할 다음의 과정이 차례대로 명시되어 있다. 만약, 사용자가 UI 상에서 조작이 필요한 시나리오가 있다면는 UI 조작 에뮬레이터를 통해서 수행한다. 이때, 검증표를 분석하여 파라미터를 최적화하는 검증 매니저에 대해 도 12를 참조로 설명한다.
도 12는 본 발명의 실시예에 따른 검증 매니저 구성의 예시도이다.
도 12에 도시된 바와 같이, 로봇(100)의 서버 메시지 파서는 표 2에 나타낸 검증 표에 따라 수집한 정보를 파싱하여 검증 스케줄러로 전달한다. 검증 스케줄러에서는 각 상황에 따른 스케줄을 시간대 별로 생성한다. 검증 스케줄러가 스케줄을 생성하면, 스케줄에 표시된 대로 검증을 수행하며 수행 결과는 LOG 전송 함수를 이용하여 로봇 제어 서버(200)로 전송된다.
로봇(100)이 객실로 이동하면서 취하는 UI 등의 행동들은 UI 신호 생성기(Signal Generator)를 통해 이벤트로 생성된다. 그리고 UI 등의 행동들에 대한 결과를 실시간으로 로봇 제어 서버(200)로 전송한다. 여기서, 로봇(100)과 엘리베이터의 연동, 특정 좌표로의 이동, 도킹 스테이션 이동 등과 같은 단위 행동을 호환(Emulate)하기 위해, 로봇(100)에는 단위 시험을 위한 커맨드 에뮬레이터(Command Emulator)가 포함되어 있다.
구체적으로 검증 파라미터를 최적화하는 방법에 대해 도 13을 참조로 설명한다.
도 13은 본 발명의 실시예에 따른 검증 파라미터를 최적화하는 방법에 대한 흐름도이다.
도 13에 도시된 바와 같이, 로봇(100)은 로봇 제어 서버(200)로부터 수신한 검증 스케줄러에 따라, 환경 변수를 수집하여 로봇 제어 서버(200)로 전송한다(S701, S702). 환경 변수를 수집하기 위해, 로봇(100)은 디폴트로 정해져 저장되어 있는 디폴트 파라미터를 읽어들여 주행을 시작하며, 이 때 얻어지는 환경 변수(예를 들어, 출입문 너비 등)를 측정하여 로봇 제어 서버(200)로 전송한다.
환경 변수의 수집이 완료되면, 로봇(100)은 검증을 위한 주행을 시작한다. 이때, 로봇(100)은 수집한 환경 변수를 기반으로 초기 파라미터를 설정한다.
이와 동시에 로봇 제어 서버(200)는 S702 단계에서 수신한 환경 변수를 정상 상태의 파라미터와 비교하고(S703), 신규 파라미터를 생성한다(S704). 생성한 신규 파라미터는 로봇(100)으로 전달하여, 주행을 통한 환경 변수를 수집할 때 참고한다.
여기서, 신규 파라미터를 생성하는 절차는, 파라미터 최적화 과정에서 초기에 로봇 제어 서버(200)를 통해 주어지는 디폴트 파라미터를 로봇의 환경에 맞게 최적 파리미터로 업데이트하는 과정에 해당한다. 예를 들면, 디폴트 주행 파라미터(주행속도 0.5, 인플레이션 레이어 10, 제동거리 10, 기타 등등)를 실제 환경에 적합하게 신규 파라미터(주행속도 variable, 인플레이션레이어 20, 제동거리 5, 기타 등등)로 갱신하는 것이다.
로봇(100)은 읽어들인 디폴트 파라미터 또는 S704 단계에서 로봇 제어 서버(200)로부터 수신한 신규 파라미터를 토대로, 환경 변수를 검증하기 위하여 주행을 시작하며 환경 변수를 수집하고, 수집한 환경 변수를 로봇 제어 서버(200)로 전달한다(S706). 로봇(100)과 로봇 제어 서버(200)는 환경 변수의 상태가 적합 상태가 될 때까지 즉, 정상 상태(Normal state)와의 오차가 5% 이내가 될 때까지 로봇의 주행속도, 정지거리 등 로봇(100)의 움직임에 변화를 주며 검증을 수행한다(S707).
즉, 로봇 제어 서버(200)는 로봇(100)이 수집한 데이터와 정상 상태 데이터를 비교하고(S708), 정상 상태와의 오차 범위가 미리 설정한 범위 내에 해당하는지 판단한다(S709). 만약 로봇(100)이 수집한 환경 변수와 정상 상태 데이터가 오차 범위 내에 해당하면, 로봇 제어 서버(200)는 S704 단계에서 생성한 신규 파라미터를 저장하고(S712), 검증을 종료한다(S713).
그러나, 로봇(100)이 수집한 환경 변수와 정상 상태 데이터의 차가 오차 범위를 넘어서면, 로봇 제어 서버(200)는 S704 단계에서 생성한 신규 파라미터를 수정한다(S710). 그리고 수정한 신규 파라미터를 로봇(100)으로 전달하여(S711), 로봇(100)이 수정된 신규 파라미터를 토대로 환경 변수를 수집하도록 한다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 적어도 하나의 프로세서에 의해 동작하는 로봇 제어 서버가, 로봇을 제어하는 방법으로서,
    로봇 식별자별 하드웨어 설정 정보, 그리고 서비스 식별자별 소프트웨어 컴포넌트들을 관리하는 단계,
    로봇으로부터 로봇 식별자, 그리고 상기 로봇이 제공할 서비스에 대한 서비스 식별자를 포함하는 로봇 설정 정보 요청을 수신하는 단계,
    상기 로봇 식별자를 기초로 상기 로봇을 구성하는 하드웨어 장치들을 확인하고, 상기 서비스 식별자에 매핑되어 있는 특정 멀티캐스트 채널을 통해 상기 하드웨어 장치들을 동작시키는 하드웨어 설정 정보를 상기 로봇에 전송하는 단계,
    상기 하드웨어 설정 정보가 설정된 상기 로봇에, 상기 서비스 식별자에 대응하는 적어도 하나의 소프트웨어 컴포넌트를 상기 특정 멀티캐스트 채널을 통해 전송하는 단계, 그리고
    상기 소프트웨어 컴포넌트가 설치된 상기 로봇에게 로봇 설정을 검증하기 위한 검증 시나리오를 전송하는 단계
    를 포함하는, 로봇 제어 방법.
  2. 제1항에 있어서,
    상기 로봇 설정 정보 요청을 수신하는 단계는,
    상기 로봇이 설치된 사업장에 대응하는 사업장 식별자를 수신하는 단계
    를 포함하는, 로봇 제어 방법.
  3. 제2항에 있어서,
    상기 로봇 설정 정보 요청을 수신하는 단계는,
    전원이 인가된 상기 로봇으로부터 상기 로봇 식별자를 수신하고, 수신한 로봇 식별자를 등록하는 단계,
    상기 로봇이 설치된 사업장을 포함하는 복수의 사업장 리스트들을 상기 로봇으로 전송하고, 상기 사업장 식별자를 수신하여 상기 로봇 식별자에 매핑되도록 등록하는 단계, 그리고
    상기 사업장에서 제공하는 복수의 서비스 리스트를 상기 로봇으로 전송하고, 상기 서비스 식별자를 수신하여 상기 로봇 식별자에 매핑되도록 등록하는 단계
    를 포함하는, 로봇 제어 방법.
  4. 제2항에 있어서,
    상기 하드웨어 설정 정보를 상기 로봇에 전송하는 단계는,
    상기 하드웨어 장치들이 수집한 정보를 가공하는 하드웨어 추상화 계층이 설치되도록 메타 정보를 상기 로봇으로 제공하는 단계,
    상기 하드웨어 추상화 계층이 설치된 상기 로봇으로부터, 상기 로봇 식별자를 포함하여 상기 하드웨어 장치들을 설정하기 위한 하드웨어 설정 코드 요청 신호를 수신하는 단계, 그리고
    상기 하드웨어 설정 코드를 상기 하드웨어 설정 정보로서 상기 로봇에 전송하는 단계
    를 포함하는, 로봇 제어 방법.
  5. 제2항에 있어서,
    상기 소프트웨어 컴포넌트를 전송하는 단계는,
    상기 로봇으로부터 상기 서비스 식별자를 포함하는 소프트웨어 리스트 요청 신호를 수신하면, 상기 서비스 식별자에 대응하는 소프트웨어 리스트와 소프트웨어 설정 UI를 전달하는 단계,
    상기 소프트웨어 설정 UI가 실행된 상기 로봇으로, 기 설정된 기본 소프트웨어 컴포넌트들을 전송하는 단계, 그리고
    상기 기본 소프트웨어 컴포넌트들을 실행한 상기 로봇으로부터 소프트웨어 설치 요청 신호를 수신하고, 상기 서비스 식별자에 따라 선택된 복수의 소프트웨어 패키지를 포함하는 상기 소프트웨어 컴포넌트를 상기 로봇으로 전송하는 단계
    를 포함하는, 로봇 제어 방법.
  6. 제2항에 있어서,
    상기 검증 시나리오를 전송하는 단계는,
    상기 로봇으로 기본 성능 측정 시나리오를 전송하는 단계,
    상기 기본 성능 측정 시나리오에 따라 상기 로봇이 상기 하드웨어 장치들을 이용하여 측정한 측정 정보들을 수신하는 단계, 그리고
    상기 측정 정보들을 미리 저장된 기준 검증 정보와 비교하고, 비교 결과에 따라 검증 승인 또는 검증 비승인 중 어느 하나의 정보를 포함하는 검증 결과를 생성하는 단계
    를 포함하는, 로봇 제어 방법.
  7. 제6항에 있어서,
    상기 검증 결과를 생성하는 단계 이후에,
    상기 로봇이 상기 검증 비승인 정보가 포함된 검증 결과를 수신하면, 상기 로봇으로부터 검증 시나리오를 요청받는 단계, 그리고
    상기 로봇이 재 검증을 위해 시험 주행하도록, 상기 검증 시나리오를 제공하는 단계
    를 포함하는, 로봇 제어 방법.
  8. 제1항에 있어서,
    상기 로봇 제어 서버는,
    각 서비스별로 구현된 복수의 소프트웨어 컴포넌트들, 상기 각 소프트웨어 컴포넌트에 대응하여 상기 로봇이 연결해야 할 구성 요소들에 대한 채널 정보를 저장하는 채널 정보 저장 모듈, 등록된 로봇들에 대한 프로파일 정보와 각 사업장의 지도 정보, 그리고 각 서비스 정보와 검증을 위한 시나리오 정보를 저장하는 정보 저장 모듈을 관리하는, 로봇 제어 방법.
  9. 제8항에 있어서,
    상기 소프트웨어 컴포넌트들은 각각,
    상기 로봇을 원격으로 검증하는 검증 매니저 모듈,
    상기 검증 매니저 모듈과 연동하며, 상기 로봇을 검증하기 위한 검증 시나리오를 설정하는 시나리오 디코딩 모듈,
    상기 로봇으로 사업장별 지도를 제공하거나 사업장에 특화된 서비스에 대응하는 소프트웨어 컴포넌트를 상기 로봇의 서비스 컨테이너에 이식하는 서비스 매니저 모듈, 그리고
    상기 로봇에 대응하는 소프트웨어 컴포넌트를 이식하거나 상기 로봇에서 수집한 하드웨어 데이터를 변환하는 하드웨어 매니저
    로 구성되는, 로봇 제어 방법.
  10. 적어도 하나의 프로세서에 의해 동작하며 임의의 사업장에 설치된 로봇이, 네트워크로 연결된 로봇 제어 서버의 제어를 받는 방법으로서,
    전원이 인가되면, 로봇의 로봇 식별자 그리고 상기 로봇이 제공할 서비스에 대한 서비스 식별자를 포함하는 로봇 설정 정보를 상기 로봇 제어 서버로 전송하는 단계,
    상기 로봇 식별자를 기초로 상기 로봇을 구성하는 하드웨어 장치의 하드웨어 정보를 상기 로봇 제어 서버로 요청하고, 상기 로봇 식별자에 대응하는 하드웨어 설정 코드를 수신하여 하드웨어를 설정하는 단계,
    상기 서비스 식별자를 포함하는 소프트웨어 설치 요청 신호를 상기 로봇 제어 서버로 전송하고, 상기 서비스 식별자에 대응하는 적어도 하나의 소프트웨어 컴포넌트를 상기 서비스 식별자에 매핑되어 있는 특정 멀티캐스트 채널을 통해 받아 소프트웨어를 설정하는 단계, 그리고
    상기 로봇 제어 서버로부터 상기 소프트웨어가 설정된 로봇의 로봇 설정을 검증하기 위한 검증 시나리오를 수신하는 단계
    를 포함하는, 로봇 제어 방법.
  11. 제10항에 있어서,
    상기 로봇 제어 서버로 전송하는 단계는,
    상기 임의의 사업장에 대응하는 사업장 식별자를 상기 로봇 제어 서버로 전송하는 단계
    를 더 포함하는, 로봇 제어 방법.
  12. 제10항에 있어서,
    상기 하드웨어를 설정하는 단계는,
    하드웨어 초기화 시작 화면을 디스플레이하는 단계,
    상기 로봇 식별자를 포함하여 상기 로봇 제어 서버로 하드웨어 정보를 요청하고, 상기 요청에 따라 하드웨어 추상화 계층 코드 메타 정보와 하드웨어 설정 UI를 수신하는 단계,
    상기 하드웨어 추상화 계층 코드 메타 정보에 따라 하드웨어 추상화 계층을 컴파일하고 상기 하드웨어 설정 UI를 실행하는 단계,
    상기 로봇 식별자를 포함하여 상기 로봇 제어 서버로 하드웨어 설정 코드를 요청하는 단계, 그리고
    상기 로봇 식별자에 대응하는 하드웨어 설정 코드를 수신하면, 상기 컴파일한 하드웨어 추상화 계층을 상기 하드웨어 설정 코드에 따라 재 컴파일하는 단계
    를 포함하는, 로봇 제어 방법.
  13. 제12항에 있어서,
    상기 하드웨어 추상화 계층 코드 메타 정보를 토대로, 상기 로봇을 구성하는 복수의 하드웨어가 각각 수집한 데이터를 상기 하드웨어 추상화 계층에서 정의하는 형태로 컨버팅하는, 로봇 제어 방법.
  14. 제11항에 있어서,
    상기 소프트웨어를 설정하는 단계는,
    상기 서비스 식별자를 포함하여 상기 로봇 제어 서버로 소프트웨어 리스트를 요청하는 단계,
    상기 서비스 식별자에 대응하는 복수의 소프트웨어 리스트들과 소프트웨어 설정 UI를 수신하는 단계,
    상기 로봇 제어 서버로부터 기 설정된 기본 소프트웨어 패키지와 소프트웨어 리스트 정보 표출 UI를 수신하는 단계, 그리고
    상기 소프트웨어 리스트 정보 표출 UI를 토대로 사용자에 의해 서비스가 선택되면, 상기 선택된 서비스에 대한 소프트웨어 패키지를 상기 로봇 제어 서버로부터 다운로드하여 설치하는 단계,
    를 포함하는, 로봇 제어 방법.
  15. 제14항에 있어서,
    상기 기본 소프트웨어 패키지는 상기 사업장의 지도 정보를 수신하기 위한 SLAM(simulation language for alternative modeling) 모듈과 상기 사업장을 주행하기 위한 네비게이션 모듈을 포함하는, 로봇 제어 방법.
  16. 제10항에 있어서,
    상기 검증 시나리오를 수신하는 단계는,
    상기 로봇 제어 서버로부터 검증을 위한 기본 성능 측정 시나리오를 수신하고, 상기 기본 성능 측정 시나리오를 기초로 주행하는 단계,
    주행하며 수집한 센싱 정보들을 상기 로봇 제어 서버로 전송하는 단계,
    상기 로봇 제어 서버로부터 상기 센싱 정보들에 대한 검증 결과를 수신하는 단계, 그리고
    상기 수신한 검증 결과가 검증 비승인이면 상기 로봇 제어 서버로 상기 검증 시나리오를 재 요청하고, 재 요청한 상기 검증 시나리오에 따라 주행하며 센싱 정보들을 재 수집하는 단계
    를 포함하는, 로봇 제어 방법.
  17. 제16항에 있어서,
    상기 검증 시나리오를 수신하는 단계 이후에,
    리셋 버튼의 조작을 인식하면, 기 저장된 프로파일을 삭제하고 서비스 스케줄러를 구동하는 단계,
    사용자에 의해 서비스 식별자 또는 사업장 식별자 중 어느 하나가 입력되면, 기 저장된 로봇 식별자와 입력된 서비스 식별자 또는 사업장 식별자를 포함하는 로봇 설정 정보를 생성하고, 상기 로봇 제어 서버로부터 상기 입력된 서비스 식별자 또는 사업장 식별자에 대한 소프트웨어 패키지를 설치하는 단계, 그리고
    설치된 소프트웨어 패키지에 따라 기 설치된 하드웨어 추상화 계층을 재 컴파일하는 단계
    를 포함하는, 로봇 제어 방법.
  18. 제17항에 있어서,
    상기 재 컴파일하는 단계 이후에,
    상기 로봇 제어 서버로부터 상기 사업장 식별자에 대응하는 지도 정보를 수신하는 단계, 그리고
    변경된 서비스 또는 변경된 사업장에서 서비스를 제공하는 단계
    를 더 포함하는, 로봇 제어 방법.
  19. 임의의 사업장에 설치되고 자율 주행을 통해 서비스를 제공하는 로봇으로서,
    로봇 제어 서버와의 통신을 위한 통신 모듈과, 상기 로봇 제어 서버로부터 상기 로봇의 서비스에 대응하는 복수의 소프트웨어 컴포넌트들이 상기 로봇의 서비스에 대한 서비스 식별자에 매핑된 특정 멀티캐스트 채널을 통해 수신되면, 상기 복수의 소프트웨어 컴포넌트들이 이식되는 서비스 컨테이너, 그리고
    하드웨어
    를 포함하고,
    상기 하드웨어는,
    로봇을 구동시키는 구동 장치,
    주행 중 정보를 수집하는 복수의 정보 수집 장치들, 그리고
    프로세서
    를 포함하는, 로봇.
  20. 제19항에 있어서,
    상기 프로세서는,
    상기 로봇 제어 서버로부터 상기 로봇의 로봇 식별자, 상기 임의의 사업장에 대한 사업장 식별자, 그리고 상기 서비스에 대한 서비스 식별자에 대응하는 하드웨어 설정 코드와 복수의 소프트웨어 컴포넌트들을 수신하여 설치하고, 상기 로봇 제어 서버로부터 성능 측정 시나리오를 수신하여 검증을 위한 정보들을 수집하는, 로봇.
KR1020200091078A 2020-07-22 2020-07-22 로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법 KR102333625B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200091078A KR102333625B1 (ko) 2020-07-22 2020-07-22 로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200091078A KR102333625B1 (ko) 2020-07-22 2020-07-22 로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법

Publications (1)

Publication Number Publication Date
KR102333625B1 true KR102333625B1 (ko) 2021-12-01

Family

ID=78933941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200091078A KR102333625B1 (ko) 2020-07-22 2020-07-22 로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법

Country Status (1)

Country Link
KR (1) KR102333625B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114374551A (zh) * 2021-12-30 2022-04-19 达闼机器人有限公司 一种机器人激活方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070107454A (ko) * 2006-05-03 2007-11-07 주식회사 케이티 가정용 서비스 로봇의 관리 방법 및 시스템
KR100871426B1 (ko) * 2007-07-19 2008-12-03 한국생산기술연구원 네비게이션 알고리즘 소프트웨어의 성능 평가시스템
KR20100073038A (ko) * 2008-12-22 2010-07-01 한국전자통신연구원 개인 맞춤형 웹 브라우징 서비스 제공 시스템 및 방법
KR20120050347A (ko) * 2010-11-10 2012-05-18 한국전자통신연구원 네트워크 로봇의 풀링 방식 기반 로봇 소프트웨어를 관리하기 위한 시스템 및 그 방법
KR20180046631A (ko) * 2016-10-28 2018-05-09 한국과학기술연구원 서비스 개방형 로봇지능 프레임워크 시스템

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070107454A (ko) * 2006-05-03 2007-11-07 주식회사 케이티 가정용 서비스 로봇의 관리 방법 및 시스템
KR100871426B1 (ko) * 2007-07-19 2008-12-03 한국생산기술연구원 네비게이션 알고리즘 소프트웨어의 성능 평가시스템
KR20100073038A (ko) * 2008-12-22 2010-07-01 한국전자통신연구원 개인 맞춤형 웹 브라우징 서비스 제공 시스템 및 방법
KR20120050347A (ko) * 2010-11-10 2012-05-18 한국전자통신연구원 네트워크 로봇의 풀링 방식 기반 로봇 소프트웨어를 관리하기 위한 시스템 및 그 방법
KR20180046631A (ko) * 2016-10-28 2018-05-09 한국과학기술연구원 서비스 개방형 로봇지능 프레임워크 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114374551A (zh) * 2021-12-30 2022-04-19 达闼机器人有限公司 一种机器人激活方法、装置及存储介质
CN114374551B (zh) * 2021-12-30 2023-08-22 达闼机器人股份有限公司 一种机器人激活方法、装置及存储介质

Similar Documents

Publication Publication Date Title
CN109327551B (zh) 将物联网设备接入物联网平台的方法及装置、服务器
US20170315522A1 (en) Virtual simulator and building management system including the same
US8850346B2 (en) Method and device for upgrading a building control system
CN110612521B (zh) 经由单独的客户端设备的自动化助理接口的智能设备配置指导
US10332043B2 (en) System and approach for setting forth a physical view and a network view of a job
US20070294662A1 (en) Integrated Service Method of Distribution Software for Robot Development Based on Open Internet Network
US20090249369A1 (en) Module-to-module association support method, program, and system
EP3767191B1 (en) Centralized control method and system for vrv air conditioning system, and computer readable storage medium
WO2007066843A1 (en) Osgi-based dynamic service management method for context-aware systems
CN103064356A (zh) 工业自动化环境中以多种配置进行的应用的多种部署
CN109669714A (zh) 固件升级方法、装置及计算机可读存储介质
CN103559182A (zh) 用于数据的异步搜索和过滤的系统和方法
CA2539465A1 (en) System and method for management of mutating applications
CN111193602B (zh) 自动化运维管理系统及方法
KR102137642B1 (ko) 스마트 팩토리를 위한 cps 시스템
CN113590101B (zh) 智能设备功能页面配置方法、服务器及客户端
CN107360237A (zh) 一种多人协同工作的dcs图形化组态系统及方法
KR102333625B1 (ko) 로봇, 로봇 제어 서버 및 이를 이용한 로봇 제어 방법
US20200374149A1 (en) Systems and methods for the implementation of an ai/iot hub in the control of electrical devices, electronics and appliances
CN110502217A (zh) 一种基于ros的机器人云平台设计方法
CN106209958B (zh) 云端服务系统及其方法
US11677637B2 (en) Contextual update compliance management
CN108491344A (zh) 机器人控制管理方法、系统、机器人和计算机存储介质
CN110519092B (zh) 边缘网关、配置工具和软plc功能的脚本化实现方法
KR101342827B1 (ko) 클라우드 플랫폼을 이용하여 로봇 컨텐츠 및 어플리케이션을 개발, 검증 및 제공하는 방법 및 그 시스템

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant