KR102442064B1 - 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버 - Google Patents

서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버 Download PDF

Info

Publication number
KR102442064B1
KR102442064B1 KR1020200163830A KR20200163830A KR102442064B1 KR 102442064 B1 KR102442064 B1 KR 102442064B1 KR 1020200163830 A KR1020200163830 A KR 1020200163830A KR 20200163830 A KR20200163830 A KR 20200163830A KR 102442064 B1 KR102442064 B1 KR 102442064B1
Authority
KR
South Korea
Prior art keywords
robot
command
service
service application
data
Prior art date
Application number
KR1020200163830A
Other languages
English (en)
Other versions
KR20220075582A (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 KR1020200163830A priority Critical patent/KR102442064B1/ko
Priority to JP2021171001A priority patent/JP7353341B2/ja
Priority to US17/514,499 priority patent/US20220171392A1/en
Publication of KR20220075582A publication Critical patent/KR20220075582A/ko
Priority to KR1020220111994A priority patent/KR102545241B1/ko
Application granted granted Critical
Publication of KR102442064B1 publication Critical patent/KR102442064B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • 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/028Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle using a RF signal
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/0405Programme-control specially adapted for machine tool control and not otherwise provided for
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/006Controls for manipulators by means of a wireless system for controlling one or several manipulators
    • 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/42Recording and playback systems, i.e. in which the programme is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
    • G05B19/425Teaching successive positions by numerical control, i.e. commands being entered to control the positioning servo of the tool head or end effector
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/0011Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot associated with a remote control arrangement
    • G05D1/0022Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot associated with a remote control arrangement characterised by the communication link
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/0088Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0217Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory in accordance with energy consumption, time reduction or distance reduction criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60LPROPULSION OF ELECTRICALLY-PROPELLED VEHICLES; SUPPLYING ELECTRIC POWER FOR AUXILIARY EQUIPMENT OF ELECTRICALLY-PROPELLED VEHICLES; ELECTRODYNAMIC BRAKE SYSTEMS FOR VEHICLES IN GENERAL; MAGNETIC SUSPENSION OR LEVITATION FOR VEHICLES; MONITORING OPERATING VARIABLES OF ELECTRICALLY-PROPELLED VEHICLES; ELECTRIC SAFETY DEVICES FOR ELECTRICALLY-PROPELLED VEHICLES
    • B60L53/00Methods of charging batteries, specially adapted for electric vehicles; Charging stations or on-board charging equipment therefor; Exchange of energy storage elements in electric vehicles
    • B60L53/30Constructional details of charging stations
    • B60L53/35Means for automatic or assisted adjustment of the relative position of charging devices and vehicles
    • B60L53/36Means for automatic or assisted adjustment of the relative position of charging devices and vehicles by positioning the vehicle

Abstract

클라우드 서버에 의해 수행되는, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법으로서, 서비스 어플리케이션으로부터 서비스를 제공하기 위한 명령을 수신하고, 수신된 명령에 기반하여 복수의 서브 명령들을 생성하고, 로봇에 서브 명령을 전송하여 서브 명령에 기반하여 로봇이 제어되도록 하는 로봇의 제어 방법이 제공된다.

Description

서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버{METHOD AND CLOUD SEVER FOR CONTROLLING ROBOT PROVIDING SERVICE IN ASSOCIATION WITH SERVICE APPLICATION}
아래의 설명은 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버에 관한 것이다.
자율 주행 로봇은 스스로 주변을 살피고 장애물을 감지하면서 바퀴나 다리를 이용하여 목적지까지 최적 경로를 찾아가는 로봇으로, 자율 주행 차량이나, 물류, 호텔 서비스, 청소 서비스 등 다양한 분야에 해당하는 서비스를 제공하는 로봇으로서 개발 및 활용되고 있다.
예를 들어, 한국공개특허 제10-2005-0024840호는 자율이동 로봇을 위한 경로 계획 방법에 관한 기술로서, 가정이나 사무실에서 자율적으로 이동하는 이동로봇이 장애물을 회피하면서 목표점까지 안전하고 빠르게 이동할 수 있는 최적경로를 계획하는 방법에 대해 개시하고 있다.
상기에서 설명된 정보는 단지 이해를 돕기 위한 것이며, 종래 기술의 일부를 형성하지 않는 내용을 포함할 수 있다.
클라우드 서버에 의해 수행되는, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법으로서, 서비스 어플리케이션으로부터 수신된 추상화된 명령을 구체화하여 복수의 서브 명령들을 생성하고, 구체화된 서브 명령을 로봇에 전송하여 로봇이 제어되도록 하는 로봇 제어 방법을 제공할 수 있다.
로봇으로부터 수신된 데이터를 분석하여 추상화된 데이터를 생성하고, 추상화된 데이터를 서비스 어플리케이션으로 전송하고, 해당 추상화된 데이터에 기반하여, 서비스 어플리케이션에서 로봇을 제어하기 위한 명령이 생성되거나 로봇에 대한 모니터링 정보가 생성될 수 있도록 하는 로봇 제어 방법을 제공할 수 있다.
일 측면에 있어서, 클라우드 서버에 의해 수행되는, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법에 있어서, 상기 서비스 어플리케이션으로부터 상기 서비스를 제공하기 위한 명령을 수신하는 단계, 상기 수신된 명령을 구체화하여 복수의 서브 명령들을 생성하는 단계 및 상기 로봇에 상기 서브 명령들의 각 서브 명령을 전송하는 단계를 포함하고, 상기 로봇은 수신된 상기 각 서브 명령에 기반하여 제어되는, 로봇 제어 방법이 제공된다.
상기 로봇 제어 방법은, 상기 서비스 어플리케이션으로부터의 명령이 바이패스 대상 명령인지 여부를 판정하는 단계를 더 포함하고, 상기 서브 명령들을 생성하는 단계는, 상기 서비스 어플리케이션으로부터의 명령이 바이패스 대상 명령이 아닌 경우 수행될 수 있다.
상기 로봇 제어 방법은, 상기 서비스 어플리케이션으로부터의 명령이 바이패스 대상 명령이면, 상기 서비스 어플리케이션으로부터의 명령을 상기 로봇으로 바로 전달하는 단계를 더 포함하고, 상기 로봇은 상기 전달된 명령에 기반하여 제어될 수 있다.
상기 바이패스 대상 명령은 상기 로봇의 UX (User Experience)와 관련된 구성을 제어하기 위한 명령일 수 있다.
상기 각 서브 명령은 상기 로봇이 수행 가능한 단위 명령이고, 상기 서브 명령들을 생성하는 단계는, 상기 수신된 명령을 복수의 단위 명령들로 분할함으로써 상기 서브 명령들을 생성할 수 있다.
상기 서비스 어플리케이션으로부터의 명령은 목적지로 상기 로봇을 이동시키도록 하는 명령이고, 상기 서브 명령들을 생성하는 단계는, 상기 로봇의 현재 위치로부터 상기 목적지까지 상기 로봇이 이동해야 하는 복수의 웨이 포인트들을 결정하는 단계 및 상기 웨이 포인트들의 각 웨이 포인트로 상기 로봇을 이동시키는 명령을 상기 각 서브 명령으로서 상기 로봇에 전송하는 단계를 포함하고, 상기 로봇은 상기 웨이 포인트들로의 이동에 대응하는 상기 서브 명령들에 따라 제어됨으로써 상기 목적지로 이동될 수 있다.
상기 각 서브 명령을 전송하는 단계는, 상기 각 서브 명령을 순차적으로 전송하되, 상기 서브 명령들 중 제1 서브 명령을 상기 로봇에 전송하는 단계, 상기 제1 서브 명령에 따른 상기 로봇의 제어가 완료된 후, 상기 로봇으로부터 완료 리포트를 수신하는 단계 및 상기 완료 리포트가 수신된 후, 상기 서브 명령들 중 상기 제1 서브 명령 다음에 해당하는 제2 서브 명령을 상기 로봇으로 전송하는 단계를 포함할 수 있다.
상기 각 서브 명령을 전송하는 단계는, 상기 로봇의 상태를 모니터링하는 단계 및 상기 로봇의 상태에 기반하여, 상기 서브 명령들 중 상기 로봇에 의한 상기 서비스의 제공을 위해 필요한 서브 명령을 상기 로봇에 전송하거나, 기 전송된 서브 명령을 취소하기 위한 취소 명령을 상기 로봇에 전송하는 단계를 포함할 수 있다.
상기 로봇 제어 방법은, 상기 로봇으로부터 상기 로봇이 수집한 데이터를 수신하는 단계, 상기 데이터를 분석하여 추상화된 데이터를 생성하는 단계 및 상기 추상화된 데이터를 상기 서비스 어플리케이션으로 전송하는 단계를 포함하고, 상기 추상화된 데이터에 기반하여, 상기 서비스 어플리케이션에서는 상기 로봇을 제어하기 위한 명령이 생성되거나 상기 로봇에 대한 모니터링 정보가 생성될 수 있다.
상기 로봇 제어 방법은, 상기 로봇으로부터의 데이터가 바이패스 대상 데이터를 포함하는지 여부를 판정하는 단계 및 상기 로봇으로부터의 데이터 중 상기 바이패스 대상 데이터를 상기 서비스 어플리케이션으로 바로 전달하는 단계를 더 포함하고, 상기 바이패스 대상 데이터는, 상기 로봇의 제1 상태를 나타내는 데이터를 포함할 수 있다.
상기 추상화된 데이터를 생성하는 단계는, 상기 로봇으로부터의 데이터를 분석하여 상기 로봇이 제2 상태를 나타내는지 여부를 판정하는 단계, 및 상기 판정의 결과에 따라, 상기 로봇이 제2 상태를 나타내는지 여부를 나타내는 정보를 상기 추상화된 데이터로서 상기 서비스 어플리케이션으로 전송하는 단계를 포함할 수 있다.
상기 로봇 제어 방법은, 상기 서비스 어플리케이션으로부터의 명령과는 독립적으로 상기 로봇을 제어하기 위한 독립 명령을 생성하는 단계 및 상기 로봇 또는 다른 로봇에 상기 독립 명령을 전송하는 단계를 더 포함하고, 상기 독립 명령은, 상기 로봇에 대해 충전을 요구하는 명령, 상기 로봇의 특정 지점으로의 이동의 경로를 갱신하는 명령, 또는 상기 로봇이 상기 서비스를 제공할 수 없게 된 때, 상기 다른 로봇에 대해 상기 서비스를 제공하도록 요청하는 명령을 포함할 수 있다.
상기 서비스 어플리케이션은 상기 로봇과는 네트워크를 통해 구분되는 서버 또는 클라이언트 상에서 구현되고, 상기 서비스 어플리케이션으로부터의 상기 명령은 상기 서비스를 제공하도록 상기 로봇을 직접적으로 제어할 수 없는 추상화된 명령이고, 상기 각 서브 명령은 상기 로봇을 직접적으로 제어할 수 있도록 상기 추상화된 명령이 구체화된 명령이고, 상기 로봇으로 전송되는 상기 각 서브 명령은 상기 서비스와 연관된 컨텍스트 정보를 포함하지 않을 수 있다.
상기 서비스 어플리케이션이 상기 로봇에 대해 플러그-인(plug-in)됨으로써, 상기 로봇은 상기 서비스 어플리케이션과 연계하여 상기 서비스를 제공하도록 구현되고, 상기 서비스 어플리케이션은 복수이고, 상기 클라우드 서버는, 복수의 서비스 어플리케이션들 중 다른 서비스 어플리케이션이 상기 로봇과 플러그-인 되도록 함으로써, 상기 로봇이 상기 다른 서비스 어플리케이션과 연계하여 다른 서비스를 제공하도록 제어할 수 있다.
상기 서비스 어플리케이션, 상기 클라우드 서버 및 상기 로봇에 대해서는 서로 상이한 보안 정책이 설정될 수 있다.
다른 일 측면에 있어서, 클라우드 서버 및 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법에 있어서, 상기 클라우드 서버로부터, 상기 서비스 어플리케이션으로부터 상기 클라우드 서버에 전송된 상기 서비스를 제공하기 위한 명령이 구체화됨에 따라 생성된 복수의 서브 명령들의 각 서브 명령을 수신하는 단계 및 수신된 상기 각 서브 명령에 기반하여 상기 로봇을 제어하는 단계를 포함하고, 상기 서비스 어플리케이션은 상기 로봇과는 네트워크를 통해 구분되는 서버 또는 클라이언트 상에서 구현되고, 상기 서비스 어플리케이션으로부터의 상기 명령은 상기 서비스를 제공하도록 상기 로봇을 직접적으로 제어할 수 없는 추상화된 명령이고, 상기 각 서브 명령은 상기 로봇을 직접적으로 제어할 수 있도록 상기 추상화된 명령이 구체화된 명령이고, 상기 로봇으로 전송되는 상기 각 서브 명령은 상기 서비스와 연관된 컨텍스트 정보를 포함하지 않는, 로봇 제어 방법이 제공된다.
상기 로봇 제어 방법은, 상기 로봇의 제어와 연관된 데이터를 수집하는 단계 및 상기 클라우드 서버로 상기 수집된 데이터를 전송하는 단계를 더 포함하고, 상기 클라우드 서버로 전송된 데이터는, 상기 클라우드 서버에서 분석됨으로써 추상화된 데이터로 가공되어, 상기 서비스 어플리케이션으로 전송되고, 상기 추상화된 데이터에 기반하여, 상기 서비스 어플리케이션에서는 상기 로봇을 제어하기 위한 명령이 생성되거나 상기 로봇에 대한 모니터링 정보를 나타내는 정보가 생성될 수 있다.
상기 로봇은 상기 서비스 어플리케이션이 플러그-인(plug-in)됨으로써, 상기 서비스 어플리케이션과 연계하여 상기 서비스를 제공하도록 구현되고, 상기 클라우드 서버에 의해, 상기 서비스 어플리케이션이 아닌 다른 서비스 어플리케이션이 플러그-인 됨으로써, 상기 로봇은 상기 다른 서비스 어플리케이션과 연계하여 다른 서비스를 제공하도록 제어될 수 있다.
다른 일 측면에 있어서, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 클라우드 서버에 있어서, 컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 서비스 어플리케이션으로부터 상기 서비스를 제공하기 위한 명령을 수신하고, 상기 수신된 명령을 구체화하여 복수의 서브 명령들을 생성하고, 상기 로봇에 상기 서브 명령들의 각 서브 명령을 전송하고, 상기 로봇은 수신된 상기 각 서브 명령에 기반하여 제어되는, 클라우드 서버가 제공된다.
로봇이 제공하는 서비스와 연관되는 서비스 로직을 포함하는 서비스 어플리케이션을 로봇으로부터 분리할 수 있다. 서비스 어플리케이션은 로봇과는 네트워크를 통해 구분되는 서버 또는 클라이언트 상에서 구현될 수 있다.
클라우드 서버가, 서비스 어플리케이션으로부터 수신되는 (로봇을 직접적으로 제어할 수 없는) 추상화된 명령에 기반하여 로봇을 직접 제어하기 위한 단위 명령에 해당하는 구체화된 서브 명령들을 생성하고, 생성된 서브 명령에 따라 서비스를 제공하도록 로봇을 제어할 수 있다.
로봇 측에서는 로봇이 제공하는 서비스에 대한 컨텍스트 정보를 파악할 필요가 없게 되고, 서비스 어플리케이션 측에서는 로봇의 세부적인 기능의 제어 방법을 파악할 필요가 없게 되는 바, 서비스 어플리케이션의 개발의 복잡성을 낮추고 확장성을 용이하게 할 수 있다.
다양한 어플리케이션을 로봇에 플러그-인할 수 있음으로써 상이한 서비스를 제공하는 로봇으로의 스위칭을 용이하게 할 수 있다.
도 1은 일 실시예에 따른, 클라우드 서버에 의해 수행되는, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법을 나타낸다.
도 2는 일 실시예에 따른, 서비스를 제공하는 로봇을 나타내는 블록도이다.
도 3 및 도 4는 일 실시예에 따른, 로봇을 제어하는 클라우드 서버를 나타내는 블록도이다.
도 5는 일실시예에 따른, 서비스 어플리케이션이 탑재된 장치를 나타내는 블록도이다.
도 6은 일 실시예에 따른, 클라우드 서버에 의해 수행되는, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법을 나타내는 흐름도이다.
도 7 및 도 8은 일 예에 따른, 추상화된 명령에 기반하여, 추상화된 명령이 구체화된 서브 명령을 생성하는 방법을 나타내는 흐름도이다.
도 9 및 도 10은 일 예에 따른, 로봇으로부터의 데이터를 처리하고, 해당 데이터에 기반하여 추상화된 데이터를 생성 및 처리하는 방법을 나타내는 흐름도이다.
도 11은 일 예에 따른, 클라우드 서버 측에서 로봇에 대해 독립적으로 제공하는 독립 명령을 생성 및 처리하는 방법을 나타내는 흐름도이다.
도 12 및 도 13은 일 예에 따른, 서비스 어플리케이션으로부터의 추상적인 명령에 기반하여 구체화된 서브 명령들을 생성하여 로봇을 제어하는 방법을 나타낸다.
도 14는 일 예에 따른, 클라우드 서버, 로봇 및 서비스 어플리케이션 간의 N:1:K의 관계를 나타낸다.
도 15는 일 예에 따른, 데이터 흐름의 관점에서, 클라우드 서버, 로봇 및 서비스 어플리케이션 간의 관계를 나타낸다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 일 실시예에 따른, 클라우드 서버에 의해 수행되는, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법을 나타낸다.
도 1에서는, 로봇(100)을 통해 서비스를 제공함(또는 로봇(100)을 제어함)에 있어서, 클라우드 서버(120)가 서비스 어플리케이션(110)으로부터의 명령(추상화되어 있는 명령)을 수신하고 수신된 명령을 구체화하여, 구체화된 명령을 통해 로봇(100)을 제어하는 방법이 설명되고 있다.
또한, 도 1에서는 로봇(100)이 제어됨에 따라, 클라우드 서버(120)가 로봇(100)으로부터 로봇(100)이 수집한 데이터(예컨대, 로봇(100)의 제어와 연관된 데이터)를 수신하고 데이터를 추상화하여, 추상화된 데이터를 서비스 어플리케이션(110)으로 전송하는 방법이 설명되고 있다.
클라우드 서버(120)는 서비스 어플리케이션(110)으로부터의 명령이 구체화가 요구되지 않는 바이패스 대상 명령에 해당하는지 여부를 판정할 수 있고, 명령이 바이패스 대상 명령인 경우 해당 명령을 바로 로봇(100)으로 전달(라우팅 또는 포워딩)할 수 있다.
또한, 클라우드 서버(120)는 로봇(100)으로부터의 데이터가 추상화가 요구되지 않는 바이패스 대상 데이터를 포함하는지 여부를 판정할 수 있고, 바이패스 대상 데이터의 경우에는 해당 데이터를 바로 서비스 어플리케이션(110)으로 전달(라우팅 또는 포워딩)할 수 있다.
일례로, 도시된 것처럼 서비스 어플리케이션(110)으로부터의 명령이 "눈 깜박이고 인사하기"와 같이 로봇(100)의 UX (User Experience)와 관련된 장치(105)(예컨대, 로봇(100)의 눈에 대응하는 LED 또는 기타 사운드 출력 장치 등)를 제어하기 위한 것인 경우, 클라우드 서버(120)는 이러한 명령을 바이패스 대상 명령에 해당하는 것으로 판단할 수 있다. 이 때, 명령은 로봇(100)으로 전달될 수 있고, 로봇(100)은 장치(105)를 통해 인사에 해당하는 표정 및 사운드("안녕하세요!")를 출력할 수 있다.
실시예에서는, 로봇(100)이 제공하는 서비스와 연관되는 서비스 로직을 포함하는 서비스 어플리케이션의 부분이 로봇(100)으로부터 분리되어 구현될 수 있다. 말하자면, 실시예에서는, 특정한 서비스를 제공하기 위한 로봇(100)을 구현하기 위해 서비스 또는 해당 서비스와 연관된 기능들을 포함하는 어플리케이션을 로봇(100) 내부에 탑재시켜 두어야 했던 기존의 기술에 비해, (서비스를 운용 및/또는 요청하는 측의) 서비스 어플리케이션(110)의 복잡도를 감소시킬 수 있으며 로봇(100)의 확장성을 증대시킬 수 있다.
상기 기존의 기술의 경우, 로봇(100)에 로봇(100)이 제공하는 서비스와 관련되는 서비스 로직이 서비스 어플리케이션으로서 탑재되고, 이러한 로봇에 탑재된 서비스 어플리케이션이 (서비스를 운용 및/또는 요청하는 측의) 서비스 어플리케이션(110)과 상호작용하여 서비스를 제공한다.
이에 비해, 실시예의 경우, 로봇(100)에는 서비스 로직을 포함하는 서비스 어플리케이션이 탑재되지 않는 바, 로봇(100) 측에서는 서비스와 연관된 컨텍스트 정보가 파악되지 않고, 로봇(100)은 단지 클라우드 서버(120)를 통해 로봇(100)의 움직임 및 로봇(100)이 제공하는 기능을 제어하기 위한 명령(즉, 로봇(100)이 수행 가능한 단위 명령)만을 수신하여 동작하게 될 수 있다.
한편, 명령을 내리는 서비스 어플리케이션(110) 측에서는 (로봇을 직접적으로 제어하기 위한 구체화된 명령이 아닌) 추상화된 명령을 클라우드 서버(120)로 송신할 수 있고, 클라우드 서버(120) 측에서 이러한 추상화된 명령에 기반하여 로봇(100)을 직접 제어하기 위한 구체화된 명령을 생성할 수 있다. 따라서, 서비스 어플리케이션(110)의 개발자는 로봇(100)의 세부적인 기능의 제어 방법을 파악할 필요 없이, 로봇(100)을 통해 서비스를 제공하기 위한(즉, 추상화된 명령만으로 로봇(100)을 제어할 수 있는) 어플리케이션을 개발할 수 있다.
서비스 어플리케이션(110)은 로봇(100)과는 네트워크를 통해 구분되는 서버 또는 클라이언트 상에서 구현될 수 있다. 또한, 서비스 어플리케이션(110)은 실시예에 따라서는 로봇(100)에 결합되거나 로봇(100)에 포함되는 장치 내에서 구현될 수도 있다. 이러한 실시예의 경우에도, 서비스 어플리케이션(110)과 로봇(100)은 네트워크를 통해 구분되어 있을 수 있다.
로봇(100), 서비스 어플리케이션(110) 및 클라우드 서버(120)의 구체적인 동작과, 자세한 로봇(100)의 제어 방법에 대해서는 후술될 도 2 내지 도 15를 참조하여 더 자세하게 설명된다.
도 2는 일 실시예에 따른, 서비스를 제공하는 로봇을 나타내는 블록도이다.
도 2에서는 클라우드 서버(120)에 의해, 서비스 어플리케이션(110)과 연계하여 서비스를 제공하는 로봇(100)이 도시되었다. 로봇(100)은 예컨대, 건물의 실내 등과 같은 공간 내에서 클라우드 서버(120)에 의한 제어에 따라 서비스를 제공하는 서비스 로봇일 수 있다. 공간은 실내의 공간으로 한정되지 않고 실외의 공간을 나타낼 수도 있다. 말하자면, 공간은 범위가 특정되어 있는 실내 또는 실외의 공간이나 실내 및 실외가 함께 포함된 공간일 수 있다.
공간은 예컨대, 로봇(100)을 통해, 물건의 배달이 수행되는 건물(회사 등), 음식물의 배달이 수행되는 카페, 안내 서비스가 제공되는 실내/실외 공간 등일 수 있다.
로봇(100)은 공간을 주행함으로써 공간 내의 사용자에게 서비스를 제공할 수 있다. 로봇(100)은 서비스 어플리케이션(110)으로부터의 명령(추상화된 명령)에 기반하여 서비스를 제공할 수 있다. 서비스 어플리케이션(110)으로부터의 명령은 클라우드 서버(120)에 의해 구체화되어 로봇(100)에 전달될 수 있고, 로봇(100)은 이러한 구체화된 명령에 기반하여 제어될 수 있다.
로봇(100)은 서비스를 제공함에 있어서 요구되는 구체적인 연산을 수행하지 않고, 이를 수행하기 위한 센싱 데이터를 비롯한 로봇의 제어와 연관된 데이터(또는, 로봇(100)이 수집한 데이터)를 클라우드 서버(120)로 제공할 뿐이라는 점에서, 브레인리스 로봇에 해당할 수 있다.
로봇(100)이 제공하는 서비스는 공간 내에서 음료와 같은 음식물이나 공산품과 같은 상품 또는 택배를 배달하는 배달 서비스를 포함할 수 있다. 즉, 로봇(100)은 배달 서비스 로봇 또는 서빙 서비스 로봇일 수 있다. 또한, 로봇(100)이 제공하는 서비스는 사용자를 공간 내의 특정한 위치로 안내하는 길 안내 서비스를 포함할 수 있다. 또한, 로봇(100)이 제공하는 서비스는 경비 서비스, 이벤트/뉴스 등의 정보 제공 서비스, 및 공간 내에 위치된 식물들에 대한 관리 서비스를 포함할 수 있다.
로봇(100)은 물리적인 장치일 수 있으며, 도시된 바와 같이, 제어부(104), 구동부(108), 센서부(106) 및 통신부(102)를 포함할 수 있다. 또한, 로봇(100)은 서비스 제공을 위한 물건 등을 탑재하기 위한 탑재부를 더 포함할 수도 있다.
제어부(104)는 로봇(100)에 내장된 물리적인 프로세서일 수 있으며, 경로 계획 처리 모듈(211), 맵핑 처리 모듈(212), 구동 제어 모듈(213), 로컬리제이션 처리 모듈(214), 데이터 처리 모듈(215) 및 명령 처리 모듈(216)을 포함할 수 있다. 이 때, 경로 계획 처리 모듈(211), 맵핑 처리 모듈(212) 및 로컬리제이션 처리 모듈(214)은 클라우드 서버(120)과 통신이 이루어지지 않는 경우에도 로봇(100)의 자율 주행이 이루어질 수 있도록 하기 위해 실시예에 따라 선택적으로 제어부(104)에 포함되는 것일 수 있다.
통신부(102)는 로봇(100)이 다른 장치(다른 로봇 또는 클라우드 서버(120) 등)와 통신하기 위한 구성일 수 있다. 말하자면, 통신부(102)는 다른 장치에 대해 데이터 및/또는 정보를 전송/수신하는, 로봇(100)의 안테나, 데이터 버스, 네트워크 인터페이스 카드, 네트워크 인터페이스 칩 및 네트워킹 인터페이스 포트 등과 같은 하드웨어 모듈 또는 네트워크 디바이스 드라이버(driver) 또는 네트워킹 프로그램과 같은 소프트웨어 모듈일 수 있다.
구동부(108)는 로봇(100)의 이동을 제어하며 이동을 가능하게 하는 구성으로서 이를 수행하기 위한 장비를 포함할 수 있다. 예컨대, 구동부(108)는 바퀴를 포함할 수 있다. 구동부(108)는 명령 처리 모듈(216)로부터 처리된 명령에 따라 로봇(100)의 움직임 및/또는 기능을 제어할 수 있다.
센서부(106)는 로봇(100)의 자율 주행 및 서비스 제공에 있어서 요구되는 데이터를 수집하기 위한 구성일 수 있다. 센서부(106)는 고가의 센싱 장비(스캔 장비)를 포함하지 않을 수 있고, 단지 저가형 초음파 센서 및/또는 저가형 카메라 등과 같은 센서를 포함할 수 있다. 센서부(106)는 주행 방향에 위치하는 장애물/사람을 식별하기 위한 센서를 포함할 수도 있다.
또한, 센서부(106)는 도시되지는 않았으나 카메라를 포함할 수 있다. 카메라는 로봇(100)의 주위에 위치하는 사용자 또는 장애물을 인식할 수 있도록 배치될 수 있다. 카메라는 RGB 카메라 또는 단안 카메라일 수 있다. 또는, 카메라는 깊이(depth) 카메라를 포함할 수도 있다.
제어부(104)의 처리 예시로서, 제어부(104)의 데이터 처리 모듈(215)은 센서부(106)로부터의 센싱 값(예컨대, 센서들로부터의 출력 값)을 포함하는 센싱 데이터를 통신부(102)를 통해 클라우드 서버(120)으로 전송할 수 있다. 클라우드 서버(120)는 공간 내의 (실내) 지도를 사용하여 생성된 경로 데이터를 로봇(100)으로 전송할 수 있다. 상기 경로 데이터는 로봇(100)이 서비스를 제공하기 위한 경로를 나타내는 데이터일 수 있다. 경로 데이터는 통신부(102)를 통해 데이터 처리 모듈(215)로 전달될 수 있다. 데이터 처리 모듈(215)은 경로 데이터를 바로 구동 제어 모듈(213)로 전달할 수 있고, 구동 제어 모듈(213)은 경로 데이터에 따라 구동부(108)를 제어하여 로봇(100)의 자율 주행을 제어할 수 있다.
로봇(100)과 클라우드 서버(120)가 통신할 수 없게 된 경우, 데이터 처리 모듈(215)은 센싱 데이터를 로컬리제이션 처리 모듈(214)로 전송하고, 경로 계획 처리 모듈(211)와 맵핑 처리 모듈(212)을 통해 경로 데이터를 생성하여 로봇(100)의 자율 주행을 직접 처리할 수도 있다. 예컨대, 제어부(104)는 경로 계획 처리 모듈(211)과 맵핑 처리 모듈(212)을 사용하여 지도로부터 서비스를 제공할 위치를 식별할 수 있고, 식별된 위치에서 서비스를 제공하기 위한 경로를 나타내는 데이터로서의 경로 데이터를 생성할 수 있고, 이러한 경로 데이터에 따른 경로를 주행하도록 로봇(100)의 자율 주행을 제어할 수 있다.
로봇(100)은 클라우드 상에 저장된 지도를 사용하여 서비스를 제공하기 위한 위치로 자율 주행을 통해 이동할 수 있고, 주행 시 장애물 회피, 문턱 넘기, 엘레베이터 승하차, 비상 정지 등을 수행하도록 제어될 수 있다.
한편, 로봇(100)은 공간 내의 지도를 생성하기 위해 사용되는 맵핑 로봇과는 구별되는 것일 수 있다. 이 때, 로봇(100)은 고가의 센싱 장비(스캔 장비)를 포함하지 않기 때문에 저가형 초음파 센서 및/또는 저가형 카메라 등과 같은 센서의 출력값을 이용하여 자율 주행을 처리할 수 있다. 로봇(100)이 기존에 클라우드 서버(120)과의 통신을 통해 자율 주행을 처리한 적이 있다면, 클라우드 서버(120)으로부터 기존에 수신한 경로 데이터가 포함하는 맵핑 데이터 등을 더 활용함으로써 저가의 센서들을 이용하면서도 보다 정확한 자율 주행이 가능하게 될 수 있다. 실시예에 따라서는, 로봇(100)은 상기 맵핑 로봇을 겸할 수도 있다.
실시예에서, 로봇(100)에는 로봇(100)이 제공하는 서비스와 연관된 서비스 로직을 포함하는 서비스 어플리케이션이 탑재되지 않을 수 있다. 따라서, 로봇(100)은 서비스 어플리케이션(110)으로부터의 서비스의 제공을 위한 추상화된 명령에 의해서는 직접적으로 제어되지 않고, 클라우드 서버(120)에 의해 해당 명령이 구체화됨에 따라 생성된 단위 명령(서브 명령)을 통해서만 제어될 수 있다. 클라우드 서버(120)로부터 로봇(100)으로 전송되는 서브 명령은 서비스와 연관된 컨텍스트 정보를 포함하지 않을 수 있다. 예컨대, 서브 명령은 서비스의 종류를 나타내는 정보나, 서비스의 식별자 등 서비스와 관련된 정보를 포함하지 않을 수 있다. 따라서, 로봇(100)의 제어는 서비스의 컨텍스트에는 의존하지 않게 될 수 있다.
명령 처리 모듈(216)은 클라우드 서버(120)을 통해 수신되는 명령(즉, 구체화된 명령)을 통신부(102)를 통해 또는 통신부(102)와 데이터 처리 모듈(215)을 통해 전달받을 수 있다. 제어부(104)는 전달된 명령에 기반하여 로봇(100)을 제어할 수 있다. 로봇(100)은 클라우드 서버(120)로부터 수신된 구체화된 명령에 따라 제어됨으로써, 사용자에게 서비스를 제공할 수 있다.
한편, 구동부(108)는 로봇(100)의 이동을 위한 장비뿐만 아니라, 로봇(100)이 제공하는 서비스와 관련된 장비를 더 포함할 수 있다. 예컨대, 구동부(108)는 전술된 탑재부와, 서비스와 관련된 물건을 파지하거나 이동시키기 위한 구성(일례로, 로봇 암(arm))을 포함할 수 있다. 클라우드 서버(120)로부터 수신된 구체화된 명령에 따라서는, 서비스 제공을 위해, 구동부(108)가 제어될 수도 있다.
또한, 로봇(100)은 정보/콘텐츠의 제공을 위한 스피커 및/또는 디스플레이, 또는 LED 등을 더 포함할 수 있다. 이들 장치는 도 1을 참조하여 전술한 UX 와 관련된 장치(105)를 구성할 수 있다. 명령 처리 모듈(216)은 클라우드 서버(120)로부터 수신된 명령에 따라 UX 와 관련된 장치(105)가 제어되도록 로봇(100)을 제어할 수 있다.
실시예에서는, 서비스 어플리케이션(110)에는 로봇(100)의 UI 및 서비스 시나리오를 제어하는 로직이 탑재되어 있고, 로봇(100)에는 로봇(100)의 동작에 요구되는 최소한의 로직(예컨대, 안전 관련 로직)만이 탑재될 수 있다. 서비스 어플리케이션(110)으로부터의 추상화된 명령(예컨대, 이동 명령)에 따라, 클라우드 서버(120)는 해당 명령에 해당하는 상세 이동 계획을 결정할 수 있고, 로봇(100)을 제어할 수 있다. 로봇(100)은 이러한 결정된 이동 계획에 따라 주행할 수 있다.
클라우드 서버(120)로부터 명령을 수신하고, 수신된 명령에 따라 로봇(100)이 제어되는 구체적인 방법에 대해서는 후술될 도 3 내지 도 15를 참조하여 더 자세하게 설명된다.
이상 도 1을 참조하여 전술된 기술적 특징에 대한 설명은, 도 2에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 3 및 도 4는 일 실시예에 따른, 로봇을 제어하는 클라우드 서버를 나타내는 블록도이다.
클라우드 서버(120)는 전술된 로봇(100)의 공간 내에서의 이동(즉, 주행) 및 로봇(100)에 의해 제공되는 기능을 제어하는 장치일 수 있다. 클라우드 서버(120)는 로봇(100)이 복수인 경우 복수의 로봇들 각각의 이동 및 로봇들 각각의 기능을 제어할 수 있다. 클라우드 서버(120)는 로봇(100)과의 통신을 통해, 로봇(100)이 서비스를 제공하기 위해 이동해야 할 경로를 설정할 수 있고, 이러한 경로에 관한 정보를 로봇(100)에게 전달할 수 있다. 로봇(100)은 수신된 경로에 관한 정보에 따라 주행할 수 있고, 사용자에 대해 서비스를 제공할 수 있다. 즉, 클라우드 서버(120)는 설정된 경로에 따라 로봇이 이동(주행)하도록 로봇(100)의 이동을 제어할 수 있다.
클라우드 서버(120)는 로봇 제어 시스템이거나 그 일부를 구성할 수 있다.
클라우드 서버(120)는 적어도 하나의 컴퓨팅 장치를 포함할 수 있고, 공간 내 또는 공간 외부에 위치하는 서버로 구현될 수 있다.
클라우드 서버(120)는 도시된 것처럼, 메모리(330), 프로세서(320), 통신부(310) 및 입출력 인터페이스(340)를 포함할 수 있다.
메모리(330)는 컴퓨터에서 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM과 비소멸성 대용량 기록장치는 메모리(330)와 분리되어 별도의 영구 저장 장치로서 포함될 수도 있다. 또한, 메모리(330)에는 운영체제와 적어도 하나의 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(330)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신부(310)를 통해 메모리(330)에 로딩될 수도 있다.
프로세서(320)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(330) 또는 통신부(310)에 의해 프로세서(320)로 제공될 수 있다. 예를 들어, 프로세서(320)는 메모리(330)에 로딩된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다. 이러한 프로세서(320)는 도 4에서 도시된 것과 같은 구성들(410 내지 440)을 포함할 수 있다.
프로세서(320)의 구성들(410 내지 440) 각각은 프로세서(320)의 일부로서 소프트웨어 및/또는 하드웨어 모듈일 수 있고, 프로세서에 의해 구현되는 기능(기능 블록)을 나타낼 수 있다. 프로세서(320)의 구성들(410 내지 440)에 대해서는 도 4를 참조하여 후술한다.
통신부(310)는 클라우드 서버(120)이 다른 장치(로봇(100) 또는 서비스 어플리케이션(110)이 탑재된 장치 등)와 통신하기 위한 구성일 수 있다. 말하자면, 통신부(310)는 다른 장치에 대해 데이터 및/또는 정보를 전송/수신하는, 클라우드 서버(120)의 안테나, 데이터 버스, 네트워크 인터페이스 카드, 네트워크 인터페이스 칩 및 네트워킹 인터페이스 포트 등과 같은 하드웨어 모듈 또는 네트워크 디바이스 드라이버(driver) 또는 네트워킹 프로그램과 같은 소프트웨어 모듈일 수 있다.
입출력 인터페이스(340)는 키보드 또는 마우스 등과 같은 입력 장치 및 디스플레이나 스피커와 같은 출력 장치와의 인터페이스를 위한 수단일 수 있다.
실시예들에 따라 클라우드 서버(120)는 도시된 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다.
실시예에서, 클라우드 서버(120)는, 서비스 어플리케이션(110)으로부터 로봇(100)에 의한 서비스 제공을 위한 명령(추상화된 명령)을 수신할 수 있고, 수신된 명령을 처리하여(즉, 구체화하여) 로봇(100)을 제어하기 위한 서브 명령들(즉, 구체화된 명령들)을 생성할 수 있다.
도 4를 참조하여 프로세서(320)의 구성들(410 내지 440)에 대해 더 자세하게 설명한다. 프로세서(320)는 도시된 것처럼, 맵 생성 모듈(410), 로컬리제이션 처리 모듈(420), 경로 계획 처리 모듈(430) 및 명령 처리 모듈(440)을 포함할 수 있다. 이러한 프로세서(320)가 포함하는 구성요소들은, 운영체제의 코드나 적어도 하나의 컴퓨터 프로그램의 코드에 따른 제어 명령(instruction)에 따라 프로세서(320)이 포함하는 적어도 하나의 프로세서가 수행하는 서로 다른 기능들(different functions)의 표현들일 수 있다.
맵 생성 모듈(410)은 건물 내부에서 자율 주행하는 (도시되지 않은) 맵핑 로봇이 목표 시설물(예컨대, 건물의 내부)에 대해 생성한 센싱 데이터를 이용하여 목표 시설물의 실내 지도를 생성하기 위한 구성요소일 수 있다.
이 때, 로컬리제이션 처리 모듈(420)은 로봇(100)으로부터 네트워크를 통해 수신되는 센싱 데이터와 맵 생성 모듈(410)을 통해 생성된 목표 시설물의 실내 지도를 이용하여 목표 시설물(건물 또는 건물의 층) 내부에서의 로봇(100)의 위치를 결정할 수 있다.
경로 계획 처리 모듈(430)은 상술한 로봇(100)으로부터 수신된 센싱 데이터와 생성된 실내 지도를 이용하여 로봇(100)의 자율 주행을 제어하기 위한 제어 신호를 생성할 수 있다. 예컨대, 경로 계획 처리 모듈(430)은 로봇(100)의 주행을 위한 경로(즉, 경로 데이터)를 생성할 수 있다. 생성된 경로(경로 데이터)는 해당 경로를 따르는 로봇(100)의 주행을 위해 로봇(100)에 대해 설정될 수 있다. 클라우드 서버(120)는 생성된 경로에 관한 정보를 네트워크를 통해 로봇(100)으로 전송할 수 있다. 일례로, 경로에 관한 정보는 로봇(100)의 현재 위치를 나타내는 정보, 현재 위치와 실내 지도를 맵핑하기 위한 정보, 그리고 경로 계획 정보를 포함할 수 있다. 경로 계획 처리 모듈(430)은 로봇(100)을 위한 경로를 생성하여 로봇(100)에 대해 설정할 수 있다. 클라우드 서버(120)는 이러한 설정된 경로에 따라(즉, 설정된 경로를 따라) 로봇(100)이 이동하도록 로봇(100)의 이동을 제어할 수 있다.
생성된 경로는 공간 내에서 로봇(100)이 서비스를 제공하기 위해 주행하는 경로일 수 있다. 경로 계획 처리 모듈(430)은 지도로부터 공간 내에서 서비스를 제공할 위치를 식별할 수 있고, 해당 위치에서 서비스를 제공할 수 있도록 하는 경로를 생성할 수 있다.
명령 처리 모듈(440)은 서비스 어플리케이션(110)으로부터 로봇(100)에 의한 서비스 제공을 위한 명령(추상화된 명령)을 수신할 수 있고, 수신된 명령을 처리하여(즉, 구체화하여) 로봇(100)을 제어하기 위한 서브 명령들(즉, 구체화된 명령들)을 생성할 수 있다. 또한, 명령 처리 모듈(440)은 생성된 서브 명령들을 로봇(100)으로 전송하여, 서브 명령들에 따라 로봇(100)을 제어할 수 있다.
실시예에서는, 로봇(100)에는 로봇(100)이 제공하는 서비스와 연관된 서비스 로직을 포함하는 서비스 어플리케이션이 탑재되지 않고, 로봇(100)은 서비스 어플리케이션(110)으로부터의 서비스의 제공을 위한 추상화된 명령에 의해서는 직접적으로 제어되지 않을 수 있다.
로봇(100)의 움직임 및 기능은 클라우드 서버(120)에 의해 제공되는 구체화된 명령에 의해서만 제어될 수 있다. 명령 처리 모듈(440)은 서비스 어플리케이션(110)으로부터 수신되는 추상화된 명령을 로봇이 수행 가능한 단위 명령들로 구체화함으로써 해당 단위 명령들에 대응하는 서브 명령들을 생성할 수 있고, 이러한 서브 명령들의 각각을 로봇(100)으로 전송함으로써, 로봇(100)을 제어할 수 있다.
또한, 명령 처리 모듈(440)은 서비스 어플리케이션(110)으로부터 수신된 명령의 타입에 따라 명령을 로봇(100)으로 바로 전달할 수도 있고, 해당 명령을 구체화 한 후 구체화된 서브 명령들을 로봇(100)으로 전송할 수도 있다.
실시예에서는, 로봇(100)이 서비스 어플리케이션에 대응하는 서비스 로직의 부분을 탑재하지 않음으로써, 서비스 어플리케이션(110)의 개발자는 로봇(100)의 세부적인 기능의 제어 방법을 파악할 필요 없이 로봇(100)을 통해 서비스를 제공하기 위한 어플리케이션을 개발할 수 있다. 또한, 로봇(100)에는 상이한 서비스를 제공하는 다양한 서비스 어플리케이션들이 쉽게 플러그-인 될 수 있다.
또한, 명령 처리 모듈(440)은 로봇(100)으로부터 로봇(100)이 수집한 데이터(예컨대, 로봇(100)의 제어와 연관된 데이터)를 수신할 수 있다. 명령 처리 모듈(440)은 수신된 데이터의 타입에 따라 데이터를 서비스 어플리케이션(110)으로 전달하거나, 해당 데이터를 추상화한 후 추상화된 데이터를 서비스 어플리케이션(110)으로 전송할 수 있다.
로봇(100), 서비스 어플리케이션(110) 및 클라우드 서버(120)의 보다 구체적인 동작과 로봇(100)의 제어 방법에 대해서는 후술될 도 5 내지 도 15를 참조하여 더 자세하게 설명된다.
이상 도 1및 도 2를 참조하여 전술된 기술적 특징에 대한 설명은, 도 3 및 4에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 5는 일실시예에 따른, 서비스 어플리케이션이 탑재된 장치를 나타내는 블록도이다.
전술된 것처럼, 서비스 어플리케이션(110)은 로봇(100)과는 네트워크를 통해 구분되는 서버 또는 클라이언트 상에서 구현될 수 있다. 장치(500)는 이러한 서버 또는 클라이언트에 대응될 수 있다. 실시예에 따라서는 이러한 장치(500)는 로봇(100)에 결합되거나 로봇(100)에 포함되는 장치 내에서 구현될 수도 있다. 또한, 장치(500)는 클라우드 서버(120)에 결합되거나 클라우드 서버(120)에 포함되는 장치 내에서 구현될 수도 있다. 이러한 실시예의 경우에도, 서비스 어플리케이션(110)과 로봇(100)은 네트워크를 통해 구분되어 있을 수 있다.
장치(500)는 PC(personal computer), 노트북 컴퓨터(laptop computer), 스마트폰(smart phone), 태블릿(tablet), 웨어러블 컴퓨터(wearable computer), 사물 인터넷(Internet Of Things) 기기 등을 포함할 수 있는 여하한 단말 장치 또는 전자 장치를 의미할 수 있다. 장치(500)는 로봇(100)에 의해 제공되는 서비스를 운용 및/또는 요청하는 사용자가 사용하는 단말일 수 있다.
장치(500)에 탑재된 서비스 어플리케이션(110)을 통해, 사용자는 로봇(100)에게 서비스를 제공하도록 명령할 수 있다. 이러한 명령은 클라우드 서버(120)를 통해 로봇(100)에 전달되거나, 클라우드 서버(120)에 의한 처리에 의해 구체화된 후 로봇(100)으로 전송될 수 있다.
또한, 장치(500)는 탑재된 서비스 어플리케이션(110)을 통해, 로봇(100)으로부터의 데이터를 수신할 수 있다. 데이터는 클라우드 서버(120)를 통해 서비스 어플리케이션(110)으로 전달되거나, 클라우드 서버(120)에 의한 처리에 의해 추상화된 후 서비스 어플리케이션(110)으로 전송될 수 있다.
장치(500)는 도시된 것처럼 통신부(510) 및 프로세서(520)를 포함할 수 있다. 통신부(510)는 장치(500)가 클라우드 서버(120)(혹은, 로봇(100))과 통신하기 위한 장치일 수 있다. 말하자면, 통신부(510)는 이러한 다른 장치에 대해 데이터 및/또는 정보를 전송/수신하는, 네트워크 인터페이스 카드, 네트워크 인터페이스 칩 및 네트워킹 인터페이스 포트 등과 같은 하드웨어 모듈 또는 네트워크 디바이스 드라이버(driver) 또는 네트워킹 프로그램과 같은 소프트웨어 모듈일 수 있다.
프로세서(520)는 장치(500)의 구성 요소들을 관리할 수 있고, 사용자 단말(110)이 사용하는 프로그램 또는 어플리케이션을 실행할 수 있다. 예컨대, 프로세서(520)는, 로봇(100)에 의한 서비스의 제공을 위한 명령을 생성 및 송신하기 위한 서비스 어플리케이션(110)을 설치 및 실행할 수 있고, 서비스 어플리케이션(110)의 실행과 데이터의 처리 등에 필요한 연산을 수행할 수 있다. 프로세서(520)는 적어도 하나의 프로세서 또는 프로세서 내의 적어도 하나의 코어(core)일 수 있다.
장치(500)는 도시되지는 않았으나 메모리를 포함할 수 있다. 메모리는 컴퓨터에서 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM과 비소멸성 대용량 기록장치는 메모리와 분리되어 별도의 영구 저장 장치로서 포함될 수도 있다. 또한, 메모리에는 운영체제와 적어도 하나의 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신부(510)를 통해 메모리에 로딩될 수도 있다.
프로세서(520)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리 또는 통신부(510)에 의해 프로세서(520)로 제공될 수 있다. 예를 들어, 프로세서(520)는 메모리에 로딩된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
장치(500)가 서비스를 운용 및/또는 요청하는 사용자의 단말인 경우, 장치(500)는 디스플레이를 포함할 수 있다. 디스플레이는 로봇(100)의 제어 상태, 로봇(100)의 관리를 위한 정보 및 로봇(100)에 의한 서비스 제공의 상태를 포함할 수 있는, 로봇(100)에 대한 모니터링 정보를 표시할 수 있다. 디스플레이는 터치 스크린을 포함할 수 있다.
실시예에서는, 서비스 제공을 위한 추상화된 명령을 생성하는 주체인 서비스 어플리케이션(110)과 해당 명령을 구체화하여 로봇(100)에 전송하는 주체인 클라우드 서버(120)가 분리될 수 있다.
따라서, 서비스 어플리케이션(110)에 해당하는 레이어와, 클라우드 서버(120)에 해당하는 레이어 및 로봇(100)에 해당하는 레이어가 서로 구분될 수 있다. 이에 따라, 서비스 어플리케이션(110), 클라우드 서버(120) 및 로봇(100)에 대해서는 보안 정책이 서로(또는 이들 중 적어도 2개의 보안 정책이) 상이하게 설정될 수 있고, 상대적으로 빈번하게 업데이트가 요구되는 레이어만이 분리하여 관리될 수 있다.
또한, 실시예에서는 서비스 어플리케이션(110)에 해당하는 레이어만을 업데이트 하는 것을 통해, 로봇(100)이 업데이트된 서비스를 제공하도록 구현될 수 있다.
또한 상이한 서비스 어플리케이션을 용이하게 로봇(100)에 대해 플러그-인 시킬 수 있음으로써 로봇(100)이 제공하는 기능의 범위를 넘지 않는 한 다양한 서비스를 제공하는 로봇(100)을 구현할 수 있다.
서비스 어플리케이션(110)의 개발자는 로봇(100)에 대한 세부적인 도메인 지식 없이(즉, 불필요한 트러블 슈팅이나 로봇의 구동/운용에 관한 이슈에 대응할 필요 없이) 로봇(100)이 제공하는 서비스를 서비스 어플리케이션(110)내에 구현할 수 있다.
따라서, 로봇(100)과 서비스 어플리케이션(110)에 있어서의 확장성이 증대될 수 있다.
이상, 도 1 내지 도 4를 참조하여 전술된 기술적 특징에 대한 설명은, 도 5에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
후술될 상세한 설명에서, 로봇(100), 클라우드 서버(120) 또는 서비스 어플리케이션(110)(예컨대, 로봇(100), 클라우드 서버(120) 또는 장치(500)의 프로세서)들에 의해 수행되는 동작은 설명의 편의상 로봇(100), 클라우드 서버(120) 또는 서비스 어플리케이션(110)에 의해 수행되는 동작으로 설명될 수 있다.
도 6은 일 실시예에 따른, 클라우드 서버에 의해 수행되는, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법을 나타내는 흐름도이다.
단계(610)에서, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터 서비스를 제공하기 위한 명령을 수신할 수 있다. 서비스 어플리케이션(110)으로부터 수신되는 명령은 로봇(100)에
대해 특정한 동작 및/또는 기능의 수행을 요청하는 것으로서, 추상화된 명령일 수 있다. 추상화된 명령은 (구체화되지 않고는) 서비스를 제공하도록 로봇(100)을 직접적으로 제어할 수 없는 명령일 수 있다. 추상화된 명령은 물건을 예컨대, 배달하는 서비스에서 배달 또는 픽업 위치로 로봇을 이동시키는 명령, 길 안내 서비스에서 사용자를 특정 위치로 안내하는 명령, 또는, 로봇(100)에게 특정한 기능의 수행을 요청하는 명령 등을 포함할 수 있다.
단계(615)에서, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터의 명령이 바이패스 대상 명령인지 여부를 판정할 수 있다.
단계(620)에서, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터의 명령이 바이패스 대상 명령이면, 서비스 어플리케이션(110)으로부터의 명령을 로봇(100)으로 바로 전달할 수 있다. 단계(622)에서, 로봇(100)은 이러한 전달된 바이패스 대상 명령에 따라 제어될 수 있다.
바이패스 대상 명령은 클라우드 서버(120)에 의한 구체화가 요구되지 않는 단순 명령으로 서비스 어플리케이션(110)으로부터 클라우드 서버(120)를 통해 로봇(100)으로 바로 전달(라우팅)될 수 있는 명령일 수 있다. 바이패스 대상 명령은 예컨대, 로봇(100)의 UX (User Experience)와 관련된 구성(105)을 제어하기 위한 명령일 수 있다. 일례로, 바이패스 대상 명령은 로봇(100)에 포함된 LED 또는 인디케이터(예컨대, 로봇의 gaze에 대응하는 LED 또는 기타 시각적 인디케이터)의 온/오프를 제어하는 명령 또는 로봇(100)에 포함된 스피커에서 특정한 사운드를 출력하도록 하는 명령을 포함할 수 있다. 또한, 로봇(100)의 움직임(이동)을 수동으로 제어하기 위한 명령은 바이패스 대상 명령이 될 수 있다.
클라우드 서버(120)는 서비스 어플리케이션(110)으로부터의 명령의 타입을 분석함으로써, 해당 명령이 바이패스 대상 명령인지 여부를 판정할 수 있다. 예컨대, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터의 명령의 프로토콜을 분석함으로써 명령이 바이패스 대상 명령인지 여부를 판정할 수 있다. 즉, 클라우드 서버(120)는 수신된 명령의 프로토콜단을 해석함으로써 명령을 로봇(100)으로 바이패스할지 여부를 결정할 수 있다.
단계(625)에서, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터 수신된 명령을 구체화하여 복수의 서브 명령들을 생성할 수 있다. 서브 명령들을 생성하는 단계는, 서비스 어플리케이션(110)으로부터의 명령이 바이패스 대상 명령이 아닌 경우에 수행될 수 있다. "명령의 구체화"는 서비스 어플리케이션(110)으로부터의 추상화된 명령을 로봇(100)을 직접적으로 제어할 수 있도록 하는 명령들로 분할하는 것을 의미할 수 있다. 말하자면, 단계(625)에 의해 생성된 각 서브 명령은 로봇(100)을 직접적으로 제어할 수 있도록 서비스 어플리케이션(110)으로부터의 추상화된 명령이 구체화된 것일 수 있다.
단계(630)에서, 클라우드 서버(120)는 로봇(100)에 생성된 서브 명령들의 각 서브 명령을 전송할 수 있다. 단계(635)에서, 로봇(100)은 수신된 각 서브 명령에 기반하여 제어될 수 있다. 로봇(100)은 서브 명령들에 따른 제어들을 완료함으로써, 서비스 어플리케이션(110)으로부터의 명령에 의해 요청된 동작을 완료할 수 있다.
각각의 서브 명령은 로봇이 수행 가능한 단위 명령을 구성할 수 있다. 말하자면, 단계(625)에서, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터 수신된 명령을 복수의 단위 명령들로 분할함으로써 서브 명령들을 생성할 수 있다. 예컨대, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터 수신된 명령을 소정의 시간 단위 또는 소정의 크기 단위로 분할함으로써 서브 명령들을 생성할 수 있다. 어플리케이션(110)으로부터 수신된 명령이 나타내는 동작이 시간에 따라 복수의 동작들로 구분될 수 있는 것이면, 상기 동작들의 각각에 대응하여 상기 어플리케이션(110)으로부터 수신된 명령이 서브 명령으로 각각 분할될 수 있다.
추상화된 명령에 기반하여, 추상화된 명령이 구체화된 서브 명령들을 생성하는 방법에 대해서는 후술될 도 7 및 도 8을 참조하여 더 자세하게 설명된다.
클라우드 서버(120)는 생성된 서브 명령들의 각각을 순차적으로 로봇(100)에 전송할 수 있다. 각 서브 명령은 로봇(100)의 동작에 따라 적시에 클라우드 서버(120)로부터 로봇(100)에게 전달될 수 있다.
예컨대, 단계(630)에서, 클라우드 서버(120)는 서브 명령들 중 제1 서브 명령을 로봇(100)에 전송할 수 있다. 제1 서브 명령은 서비스 어플리케이션(110)으로부터 수신된 명령이 나타내는 로봇(100)의 동작을 완료하기 위해 로봇(100)이 먼저 수행해야 하는 제1 동작을 나타낼 수 있다. 단계(635)에서, 로봇(100)은 제1 서브 명령에 따라 제1 동작을 수행할 수 있고, 제1 동작의 수행이 완료되었음을 나타내는 완료 리포트(또는 완료를 나타내는 신호)를 클라우드 서버(120)로 전송할 수 있다. 단계(640)에서, 클라우드 서버(120)는 이러한 완료 리포트를 수신할 수 있고, 완료 리포트가 수신된 후, 단계(645)에서, 서브 명령들 중 제1 서브 명령 다음에 해당하는 제2 서브 명령을 로봇(100)으로 전송할 수 있다. 이 때, 제2 서브 명령은 서비스 어플리케이션(110)으로부터 수신된 명령이 나타내는 로봇(100)의 동작을 완료하기 위한 상기 제1 동작 다음의 동작을 나타낼 수 있다. 단계(650)에서, 로봇(100)은 제2 서브 명령에 따라 제2 동작을 수행할 수 있다. 마찬가지로, 로봇(100)은 제2 동작의 수행이 완료되었음을 나타내는 완료 리포트를 클라우드 서버(120)로 전송할 수 있으며, 클라우드 서버(120)로부터 그 다음의 서브 명령을 수신할 수 있다.
이처럼, 클라우드 서버(120)는 생성된 서브 명령들의 각각을 순차적으로 로봇(100)에게 전송할 수 있으며, 일 서브 명령이 나타내는 동작이 로봇(100)에 의해 수행됨에 따라, 다음의 서브 명령을 로봇(100)으로 전송함으로써 적시에 로봇(100)에게 명령을 전달할 수 있다. 이에 따라, 로봇(100)의 오동작이 방지될 수 있다. 말하자면, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터 수신된 명령을 복수의 미션들로 구분함으로써 구체화할 수 있으며, 로봇(100)에 전송된 서브 명령에 따라 하나의 미션이 완료될 경우 다음의 미션에 해당하는 서브 명령을 로봇(100)에 전송할 수 있다.
또한, 설명한 것과는 달리 로봇(100)은 서브 명령에 따른 동작 후 별도의 리포트를 클라우드 서버(120)로 송신하지 않을 수도 있다. 이 때, 클라우드 서버(120)는 로봇(100)을 (예컨대, 실시간으로) 모니터링하여 로봇(100)이 서브 명령에 따른 동작을 수행한 것으로 판단된 경우 다음의 서브 명령을 로봇(100)에 전송할 수 있다.
또는, 클라우드 서버(120)는 소정의 시간 간격으로 서브 명령들의 각각을 순차적으로 로봇(100)에게 전송할 수도 있다.
설명한 바와 같이, 실시예에서는, 클라우드 서버(120)가 서비스 어플리케이션(110)으로부터의 명령을 분석하여, 명령의 타입에 따라, 해당 명령을 로봇(100)으로 바이패스하거나, 명령을 구체화하여 서브 명령들을 생성하여 로봇에게 전송할 수 있고, 이에 따라, 로봇(100)을 적절하게 제어할 수 있다.
한편, 도시되지는 않았으나, 로봇(100)은 수신된 명령(서브 명령)이 서비스 어플리케이션(110)으로부터의 명령이 바이패스된 것인지 여부를 판정할 수도 있다. 이 때, 로봇(100)은 수신된 명령(서브 명령)의 프로토콜을 분석함으로써 수신된 명령(서브 명령)이 서비스 어플리케이션(110)으로부터의 명령이 바이패스된 것인지 여부를 판정할 수 있다. 로봇(100)은 수신된 명령(서브 명령)이 바이패스된 명령에 해당하는 경우 해당 바이패스된 명령에 대응하는 동작을 수행할 수 있고, 바이패스되지 않은 명령(즉, 구체화된 명령)에 해당하는 경우 구체화된 명령에 대응하는 동작을 수행할 수 있다.
이상, 도 1 내지 도 5를 참조하여 전술된 기술적 특징에 대한 설명은, 도 6에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 7 및 도 8은 일 예에 따른, 추상화된 명령에 기반하여, 추상화된 명령이 구체화된 서브 명령을 생성하는 방법을 나타내는 흐름도이다.
도 6을 참조하여 전술된, 단계(625)의 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터 수신된 명령을 복수의 단위 명령들로 분할함으로써 서브 명령들을 생성하는 방법이 더 자세하게 설명된다. 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터 수신된 명령을 소정의 시간 단위 또는 소정의 크기 단위로 분할함으로써 서브 명령들을 생성할 수 있다.
예컨대, 서비스 어플리케이션(110)으로부터의 명령이 목적지로 로봇(100)을 이동시키도록 하는 명령인 경우를 도 7을 참조하여 설명한다. 목적지는 로봇(100)에 의해 물건을 배달하기 위한 목적지 또는 로봇(100)이 사용자를 안내하기 위한 목적지일 수 있다.
단계(710)에서, 클라우드 서버(120)는 로봇(100)의 현재 위치로부터 목적지까지 로봇(100)이 이동해야 하는 복수의 웨이 포인트들을 결정할 수 있다.
단계(720)에서, 클라우드 서버(120)는 웨이 포인트들의 각 웨이 포인트로 로봇(100)을 이동시키는 명령을 각 서브 명령으로서 생성할 수 있고, 생성된 각 서브 명령을 로봇(100)에 전송할 수 있다.
예컨대, 클라우드 서버(120)는 로봇(100)의 현재 위치로부터 목적지까지 로봇(100)이 이동해야 하는 복수의 웨이 포인트들의 각각의 좌표(좌표의 배열)를 결정할 수 있고, 각 좌표로의 이동을 나타내는 명령을 각 서브 명령으로서 로봇(100)에 전송할 수 있다.
웨이 포인트들의 각각은 예컨대, 공간 내의 위치일 수 있고, 목적지로의 이동에 있어서, 로봇(100)이 층간 이동을 해야하는 경우, 엘리베이터 앞(즉, 도어 앞)의 위치를 나타낼 수 있다. 또한, 웨이 포인트는 공간 내 도어 앞의 위치, 공간 내 코너에 대응하는 위치, 또는 공간의 모서리 또는 꼭지점에 대응하는 위치 등일 수 있다. 웨이 포인트는 목적지를 포함하거나 포함하지 않을 수 있다.
전술한 것처럼, 로봇(100)의 일 웨이 포인트로의 이동이 완료된 후, 클라우드 서버(120)는 로봇(100)으로부터 완료 리포트를 수신할 수 있고, 이에 따라, 클라우드 서버(120)는 로봇(100)으로 다음의 웨이 포인트로의 이동을 나타내는 서브 명령을 전송할 수도 있다.
로봇(100)은 웨이 포인트들로의 이동에 대응하는 서브 명령들에 따라 제어됨으로써 목적지로 이동될 수 있다.
이와 같이, 서비스 어플리케이션(110)으로부터 수신된 명령은 복수의 웨이 포인트들로의 이동으로 구체화되어 구체화된 서브 명령들이 생성될 수 있다.
도 8을 참조하여, 클라우드 서버(120)가 로봇(100)의 상태를 모니터링하여 적절한 서브 명령을 로봇(100)에 전송하는 방법에 대해 설명한다.
단계(810)에서, 클라우드 서버(120)는 로봇(100)의 상태를 모니터링할 수 있다. 로봇(100)의 상태의 모니터링을 실시간 또는 거의 실시간으로 이루어질 수 있다.
단계(820)에서, 클라우드 서버(120)는 모니터링된 로봇(100)의 상태에 기반하여, 적합한 서브 명령을 식별하거나 기 전송된 서브 명령에 대한 취소 명령을 생성할 수 있다. 클라우드 서버(120)는 식별된 서브 명령 또는 취소 명령을 로봇(100)에 전송할 수 있다.
클라우드 서버(120)는, 모니터링된 로봇(100)의 상태에 따라, (서비스 어플리케이션(110)으로부터 수신된 명령을 구체화하여 생성된 서브 명령들 중 로봇(100)에 의한 서비스의 제공을 위해 필요한 서브 명령을 결정하여 로봇(100)에게 전송할 수 있다. 예컨대, 클라우드 서버(120)는 로봇(100)이 일 웨이 포인트로 이동된 것이 확인된 경우, 서브 명령들 중 다음의 웨이 포인트로의 이동을 나타내는 서브 명령을 식별할 수 있고, 식별된 서브 명령을 로봇(100)에게 전송할 수 있다.
또한, 클라우드 서버(120)는, 모니터링된 로봇(100)의 상태에 따라, 기 전송된 서브 명령을 취소하기 위한 취소 명령을 로봇(100)에 전송할 수 있다. 예컨대, (로봇(100)이 특정 위치에 갇히거나, 기능 이상이 발생하거나, 작동 불능이 되거나 하는 등의 사유로) 기 전송된 서브 명령에 따른 동작을 로봇(100)이 수행할 수 없게 된 경우, 클라우드 서버(120)는 로봇(100)에 대해 기 전송된 서브 명령을 취소하기 위한 취소 명령을 전송할 수 있다. 경우에 따라, 클라우드 서버(120)는 다른 로봇에 상기 서브 명령을 전송하여 다른 로봇이 상기 수행되지 않은 동작을 수행하도록 제어할 수 있다. 또는, 클라우드 서버(120)는 로봇(100)에 대해 상기 기 전송된 서브 명령에 따른 동작을 연기하도록(즉, 나중에 수행하도록) 하는 연기 명령을 전송할 수도 있다.
설명한 것처럼, 클라우드 서버(120)는 로봇(100)의 상태를 모니터링하여 로봇(100)에게 적시에 서브 명령을 전송하거나, 명령을 취소/연기하는 명령을 전송할 수 있다.
관련하여, 도 12 및 도 13은 일 예에 따른, 서비스 어플리케이션으로부터의 추상적인 명령에 기반하여 구체화된 서브 명령들을 생성하여 로봇을 제어하는 방법을 나타낸다.
도 12에서, 로봇(100)은 배달 서비스를 제공하는 로봇이며, 목적지(1200)로 이동하라는 명령이 서비스 어플리케이션(110)으로부터 클라우드 서버(120)에 수신된 것이 가정되었다.
클라우드 서버(120)는 서비스 어플리케이션(110)으로부터의 명령에 기반하여 로봇(100)의 목적지(1200)로의 이동을 위한 경로 계획을 수립할 수 있다. 클라우드 서버(120)는 로봇(100)의 목적지(1200)로의 이동을 위한 경로에 포함될 복수의 웨이 포인트들(1210)(① 내지 ⑦)을 결정할 수 있고, 웨이 포인트들로의 이동을 나타내는 서브 명령들(1210-1 내지 1210-7)을 생성할 수 있다.
클라우드 서버(120)는 서브 명령들(1210-1 내지 1210-7)의 각각을 순차적으로 로봇(100)에 전송함으로써, 로봇(100)이 웨이 포인트들(1210)(① 내지 ⑦)을 경유하여 목적지(1200)에 도착하도록 제어할 수 있다. 웨이 포인트들(1210)(① 내지 ⑦)의 각각은 대응하는 위치의 좌표 값을 나타낼 수 있다.
로봇(100)의 현재 위치로부터 목적지(1200)까지의 경로가 로봇(100)의 층간 이동을 포함하는 경우, 웨이 포인트들(1210)(① 내지 ⑦) 중 적어도 하나는 로봇(100)이 탑승할 엘리베이터에 대응하는 위치(즉, 로봇(100)이 탑승 및/또는 하차하는 엘리베이터의 도어 앞에 해당하는 위치)를 나타낼 수 있다. 이에 따라, 로봇(100)은 층간 이동을 포함하여 목적지(1200)로 이동될 수 있다.
설명한 것처럼, 로봇(100)에 대해 목적지(1200)로의 이동이 지시된 경우, 로봇(100)은 클라우드 서버(1200)로부터 분할된 (웨이 포인트들을 나타내는) 서브 명령들을 수신하여 제어될 수 있다. 즉, 로봇(100)은 한 번에 수행할 수 있는 단위의 명령에 해당하는 단위 명령을 수신하여 동작할 수 있다. 단위 명령은 추상화된 명령과는 달리 로봇(100)이 처리할 수 있는 좌표의 배열을 나타낼 수 있다.
도 13에서는, 로봇(100)을 종료하라는 명령이 서비스 어플리케이션(110)으로부터 클라우드 서버(120)에 수신된 것이 가정되었다.
클라우드 서버(120)는 로봇(100)을 종료하라는 추상화된 명령에 기반하여, ①로봇(100)의 센서 디바이스 종료, ②로봇(100)의 모터 제어 종료 및 ③로봇(100)의 메인 시스템 종료의 3개의 서브 명령들을 생성할 수 있다. 클라우드 서버(120)는 ① 내지 ③의 서브 명령을 순차적으로 로봇(100)에 송신할 수 있다. 예컨대, 클라우드 서버(120)는 ①에 따라 로봇(100)의 센서 디바이스가 종료되면 로봇(100)에 ②를 전송하고, ②에 따라 로봇(100)의 모터 제어가 종료되면 로봇(100)에 ③을 전송할 수 있다. 이에 따라, 로봇(100)은 종료될 수 있다.
전술된 클라우드 서버(120)는 로봇(100)의 하나의 기능을 제어하도록 구성된 서버일 수 있다. 예컨대, 클라우드 서버(120)는 도 12를 참조하여 전술된 것과 같은 로봇(100)의 이동 제어를 위한 서버이거나, 도 13를 참조하여 전술된 것과 같은 로봇(100)의 종료(또는 시동) 제어를 위한 서버일 수 있다. 또는, 클라우드 서버(120)는 로봇(100)의 복수의 기능들의 각각을 제어하도록 구성될 수도 있다.
이상, 도 1 내지 도 6를 참조하여 전술된 기술적 특징에 대한 설명은, 도 7, 8, 12 및 13에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 9 및 도 10은 일 예에 따른, 로봇으로부터의 데이터를 처리하고, 해당 데이터에 기반하여 추상화된 데이터를 생성 및 처리하는 방법을 나타내는 흐름도이다.
도 9를 참조하여, 로봇(100)으로부터의 데이터가 클라우드 서버(120)에 의해 처리되는 방법에 대해 설명한다.
단계(905)에서, 클라우드 서버(120)는 로봇(100)으로부터 로봇(100)이 수집한 데이터(예컨대, 로봇(100)의 제어와 연관된 데이터)를 수신할 수 있다. 로봇(100)의 제어와 연관된 데이터는 로봇(100)이 주행, 기능 수행 또는 서비스 동작에 따라 수집한 데이터일 수 있다. 예컨대, 로봇(100)의 제어와 연관된 데이터는 센서부(106)가 수집한 데이터로서 시간 정보, 로봇(100)의 속도, 위치, 배터리 정보 및 카메라에 의해 촬영된 영상 정보 중 적어도 하나를 포함할 수 있다. 또한, 로봇(100)의 제어와 연관된 데이터는 LED의 점등 여부, 사운드의 출력 여부, 로봇(100)의 도어의 개폐 여부 등과 같이 UX와 관련된 장치(105)의 동작 여부를 나타내는 데이터를 포함할 수 있다.
단계(910)에서, 클라우드 서버(120)는 로봇(100)으로부터의 데이터가 바이패스 대상 데이터를 포함하는지 여부를 판정할 수 있다.
단계(915)에서, 클라우드 서버(120)는 로봇(100)으로부터의 데이터 중 바이패스 대상 데이터를 서비스 어플리케이션(110)으로 바로 전달(라우팅)할 수 있다. 바이패스 대상 데이터는 로봇(100)의 제1 상태를 나타내는 데이터를 포함할 수 있다. 제1 상태는 데이터에 대한 분석 또는 가공 없이 해당 데이터 자체만으로 파악될 수 있는 로봇(100)의 단순 상태를 나타낼 수 있다. 또는, 제1 상태는 서비스 어플리케이션(110)에 의한 실시간의 식별이 요구되는 로봇(100)의 상태를 나타낼 수 있다.
제1 상태는, 예컨대, 로봇(100)의 배터리 상태, 속도 상태, 도어 개폐 상태, LED 점등 상태 및 사운드 출력 상태를 포함할 수 있고, 제1 상태를 나타내는 데이터는 이러한 로봇(100)의 배터리 데이터, 속도 데이터, 도어 개폐 여부에 관한 데이터, LED 점등 여부에 관한 데이터 및 사운드 출력 여부에 관한 데이터를 포함할 수 있다.
이러한 로봇(100)의 제1 상태를 나타내는 데이터는 바로 서비스 어플리케이션(110)으로 전달될 수 있고, 서비스 어플리케이션(110)에서는 로봇(100)의 제1 상태가 식별될 수 있다. 서비스 어플리케이션(110)은 로봇(100)의 제1 상태가 식별됨에 따라 로봇(100)에 대한 모니터링 정보를 생성할 수 있다. 모니터링 정보는 장치(500)를 통해 표시/출력될 수 있다.
단계(925)에서, 클라우드 서버(120)는 로봇(100)으로부터의 데이터를 분석하여 추상화된 데이터를 생성할 수 있다. 클라우드 서버(120)는 로봇(100)으로부터의 데이터 중 바이패스 대상 데이터가 아닌 데이터, 또는 바이패스 대상 데이터를 포함하는 로봇(100)으로부터의 데이터를 분석하여 추상화된 데이터를 생성할 수 있다. "데이터의 추상화"는 로(raw) 데이터를 분석함으로써 가공된 데이터를 생성하는 단계일 수 있다. 예컨대, 추상화된 데이터는 로봇(100)으로부터의 데이터가 분석하여 로봇(100)이 특정 상태에 해당하는지 여부를 판정한 결과에 따라, 로봇(100)이 특정 상태에 해당하는지 여부를 나타내는 데이터일 수 있다.
관련하여, 도 10을 참조하여 추상화된 데이터를 생성하는 방법에 대해 더 자세하게 설명한다. 후술될 단계들(1010 내지 1040)은 단계(925)에 포함될 수 있다.
단계(1010)에서, 클라우드 서버(120)는 로봇(100)으로부터의 데이터를 분석할 수 있다.
단계(1020)에서, 클라우드 서버(120)는 로봇(100)으로부터의 데이터를 분석하여 로봇(200)이 제2 상태를 나타내는지 여부를 판정할 수 있다.
단계(1030)에서, 클라우드 서버(120)는 로봇(100)이 제2 상태를 나타내는 것으로 판정된 경우, 로봇(100)이 제2 상태임을 나태는 추상화된 데이터를 생성할 수 있다. 또는, 단계(1040)에서, 클라우드 서버(120)는 로봇(100)이 제2 상태에 해당하지 않는 것으로 판정된 경우, 로봇(100)이 제2 상태가 아님을 나태는 추상화된 데이터를 생성할 수 있다.
말하자면, 클라우드 서버(120)는, 상기의 판정의 결과에 따라, 로봇(100)이 제2 상태를 나타내는지 여부를 나타내는 정보를 추상화된 데이터로서 생성할 수 있다.
단계(930)에서, 클라우드 서버(120)는 생성된 추상화된 데이터를 서비스 어플리케이션(110)으로 전송할 수 있다.
단계(1010)에서 분석되는 로봇(100)으로부터의 데이터는 전술한 제1 상태를 나타내는 데이터를 포함할 수 있고, 또는/추가적으로, 센서부(106)로부터 센싱된 데이터를 포함할 수 있다. 제2 상태는 클라우드 서버(120)가 이러한 데이터를 분석함에 따라 로봇(100)이 해당하는 것으로 판정하는 로봇(100)의 상태를 의미할 수 있다. 예컨대, 제2 상태는 로봇(100)에 의해 서비스의 제공이 완료되었는지 미완료되었는지 여부, 로봇(100)에 의해 서비스의 제공이 가능한지 불가능한지 여부, 또는 로봇(100)의 동작이 정상인지 비정상인지 여부를 나타낼 수 있다. 말하자면, 제2 상태는 로봇(100)으로부터의 데이터에 기반하여 클라우드 서버(120)가 판단한 로봇(100)의 상태를 나타낼 수 있다.
구체적으로, 클라우드 서버(120)는 로봇(100)의 위치가 일정 시간 이상 변화하지 않는 것으로 분석된 때, 로봇(100)이 갇혀있거나, 로봇(100)이 적절하게 동작할 수 없거나, 서비스의 제공이 불가능하게 되었음(또는 서비스의 제공에 시간이 많이 걸림)을 나타내는 추상화된 데이터를 생성할 수 있다.
단계(935)에서, 서비스 어플리케이션(110)은 수신된 추상화된 데이터에 기반하여 로봇(100)이 제2 상태에 해당함을 식별할 수 있다.
서비스 어플리케이션(110)은, 단계(940)에서처럼, 수신된 추상화된 데이터에 기반하여(또는, 로봇(100)의 제2 상태가 식별됨에 따라), 로봇(100)을 제어하기 위한 명령을 생성할 수 있다. 또는/추가적으로, 서비스 어플리케이션(110)은, 수신된 추상화된 데이터에 기반하여(또는, 로봇(100)의 제2 상태가 식별됨에 따라), 로봇(100)에 대한 모니터링 정보를 생성할 수 있다.
모니터링 정보는 전술한 로봇(100)의 제1 상태 및/또는 제2 상태를 나타내는 정보일 수 있다. 모니터링 정보는 장치(500)를 통해 표시/출력될 수 있다.
단계(940)에서 클라우드 서버(120)로 전송되는 명령은 도 6의 단계(610)을 참조하여 전술한 추상화된 명령에 대응할 수 있다. 한편, 도시되지는 않았으나 전술된 제1 상태가 식별된 경우에도 서비스 어플리케이션(110)은 로봇(100)을 제어하기 위한 명령을 생성할 수 있다.
이상, 도 1 내지 도 8, 도 12 및 13을 참조하여 전술된 기술적 특징에 대한 설명은, 도 9 및 10에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 11은 일 예에 따른, 클라우드 서버 측에서 로봇에 대해 독립적으로 제공하는 독립 명령을 생성 및 처리하는 방법을 나타내는 흐름도이다.
단계(1110)에서, 클라우드 서버(120)는 서비스 어플리케이션(110)으로부터의 명령(추상화된 명령)과는 독립적으로 로봇(100)을 제어하기 위한 독립 명령을 생성할 수 있다.
단계(1120)에서, 클라우드 서버(120)는 로봇(100) 또는 다른 로봇에 독립 명령을 전송할 수 있다.
독립 명령은 서비스 어플리케이션(110)과는 무관하게 클라우드 서버(120)가 로봇(100)을 제어하기 위해 생성하는 명령일 수 있다. 독립 명령은 로봇(100)의 동작 및 기능 수행과는 관련되는 것이나, 로봇(100)이 제공하는 서비스에 대해서는 독립적인 동작 및 기능의 수행에 관한 명령일 수 있다.
예컨대, 독립 명령은, 로봇(100)에 대해 충전을 요구하는 명령(일례로, 공간 내의 충전 위치로의 이동 명령), 로봇(100)의 특정 지점으로의 이동의 경로를 갱신하는 명령(예컨대, 목적지 또는 특정 웨이 포인트로의 경로를 갱신하는 명령(주행 recovery 명령)), 또는 로봇(100)이 서비스를 제공할 수 없게 된 때, 다른 로봇에 대해 해당 서비스를 제공하도록 요청하는 명령을 포함할 수 있다.
또한, 클라우드 서버(120)가 복수의 로봇들을 제어함에 있어서, 서비스를 제공하는 특정 로봇을 다른 서비스를 제공하도록 스위칭하거나, 서비스를 제공하는 로봇들을 다른 로봇들로 대체하는 것과 같은 자원 관리와 관련되는 명령은 독립 명령이 될 수 있다.
이상, 도 1 내지 도 10, 도 12 및 13을 참조하여 전술된 기술적 특징에 대한 설명은, 도 11에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 14는 일 예에 따른, 클라우드 서버, 로봇 및 서비스 어플리케이션 간의 N:1:K의 관계를 나타낸다.
도시된 것처럼, 서비스 어플리케이션(110)은 복수일 수 있다. 서비스 어플리케이션들(110-1 내지 110-N)은 각각 상이한 로봇(100)이 서비스를 제공하도록 구현된 것일 수 있다. N은 2 이상의 자연수일 수 있다. 클라우드 서버(120)는 서비스 어플리케이션들(110-1 내지 110-N)의 각각으로부터 추상화된 명령을 수신할 수 있고, 수신된 추상화된 명령에 대응하는 동작을 수행하도록 로봇(100)을 제어할 수 있다.
도시된 것처럼, 로봇(100)은 복수일 수 있다. 로봇들(100-1 내지 100-K)의 각각은 서비스 어플리케이션들(110-1 내지 110-N)이 제공하는 서비스들 중 적어도 하나를 제공하도록 구성될 수 있다. 로봇들(100-1 내지 100-K)은 서비스 어플리케이션들(110-1 내지 110-N)과 1:다수 또는 다수:1의 관계로 매칭될 수 있다. 즉, 하나의 서비스 어플리케이션에 의해 복수의 로봇들(100-1 내지 100-K)이 제어될 수 있으며, 하나의 로봇이 복수의 서비스 어플리케이션들(110-1 내지 110-N)과 연관된 서비스들을 제공하도록 구성될 수 있다.
예컨대, 로봇들(100-1 내지 100-K)의 각각은 서비스 어플리케이션들(110-1 내지 110-N) 중 적어도 하나가 해당 로봇에 대해 플러그-인(plug-in)됨으로써, 해당 로봇이 플러그-인 된 서비스 어플리케이션과 연계하여 서비스를 제공하도록 구현될 수 있다. 말하자면, 서비스 어플리케이션(110)이 로봇(100)에 대해 플러그-인(plug-in)됨으로써, 로봇(100)은 서비스 어플리케이션(110)과 연계하여 서비스 어플리케이션(110)과 연관된 서비스를 제공하도록 구현될 수 있다.
클라우드 서버(120)는 복수의 서비스 어플리케이션들(110-1 내지 110-N) 중 다른 서비스 어플리케이션이 로봇(100)과 플러그-인 되도록 함으로써, 로봇(100)이 다른 서비스 어플리케이션과 연계하여 다른 서비스를 제공하도록 제어할 수 있다.
따라서, 도시된 것처럼, 실시예에서는 일 서비스를 제공하도록 구현된 로봇(100)을 다른 서비스를 제공하도록 하는(또는 추가로 다른 서비스를 제공하도록 하는) 로봇(100)으로 쉽게 스위칭할 수 있다. 말하자면, 로봇(100)에 의한 서비스의 제공을 쉽게 확장할 수 있다.
이상, 도 1 내지 도 13을 참조하여 전술된 기술적 특징에 대한 설명은, 도 14에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 15는 일 예에 따른, 데이터 흐름의 관점에서, 클라우드 서버, 로봇 및 서비스 어플리케이션 간의 관계를 나타낸다.
데이터 흐름의 관점에서, 클라우드 서버(120), 로봇(100) 및 서비스 어플리케이션(110)은 서로 연결되어 있을 수 있다.
로봇(100)과 서비스 어플리케이션(110)은 클라우드 서버(120)를 통해 명령과 데이터를 통신하지만, 바이패스 대상 명령 및 바이패스 대상 데이터는 로봇(100)과 서비스 어플리케이션(110) 사이에서 그대로 전달되므로, 데이터 흐름의 관점에서는, 클라우드 서버(120), 로봇(100) 및 서비스 어플리케이션(110)은 서로 연결된 것으로 볼 수 있다.
이상, 도 1 내지 도 14를 참조하여 전술된 기술적 특징에 대한 설명은, 도 15에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (19)

  1. 클라우드 서버에 의해 수행되는, 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법에 있어서,
    상기 서비스 어플리케이션으로부터 상기 서비스를 제공하기 위한 명령을 수신하는 단계;
    상기 수신된 명령을 구체화하여 복수의 서브 명령들을 생성하는 단계; 및
    상기 로봇에 상기 생성된 각 서브 명령을 전송하는 단계
    를 포함하고,
    상기 로봇은 수신된 상기 각 서브 명령에 기반하여 제어되고,
    상기 로봇으로부터 상기 로봇과 연관된 데이터를 수신하는 단계;
    상기 로봇으로부터의 데이터가 상기 로봇의 제1 상태를 나타내는 바이패스 대상 데이터를 포함하는지 여부를 판정하는 단계;
    상기 로봇으로부터의 데이터에 상기 바이패스 대상 데이터가 포함되어 있으면, 상기 바이패스 대상 데이터를 상기 서비스 어플리케이션으로 바로 전달하는 단계; 및
    상기 로봇으로부터의 데이터 중 상기 바이패스 대상 데이터가 아닌 데이터에 기반하여 추상화된 데이터를 생성하고, 생성된 상기 추상화된 데이터를 상기 서비스 어플리케이션으로 전송하는 단계
    를 포함하고,
    상기 추상화된 데이터에 기반하여, 상기 서비스 어플리케이션에서는 상기 로봇을 제어하기 위한 명령이 생성되거나 상기 로봇에 대한 모니터링 정보가 생성되고,
    상기 바이패스 대상 데이터에 기반하여, 상기 서비스 어플리케이션에서는 상기 로봇의 제1 상태가 식별되는, 로봇 제어 방법.
  2. 제1항에 있어서,
    상기 서비스 어플리케이션으로부터의 명령이 바이패스 대상 명령인지 여부를 판정하는 단계
    를 더 포함하고,
    상기 서브 명령들을 생성하는 단계는, 상기 서비스 어플리케이션으로부터의 명령이 바이패스 대상 명령이 아닌 경우 수행되는, 로봇 제어 방법.
  3. 제2항에 있어서,
    상기 서비스 어플리케이션으로부터의 명령이 바이패스 대상 명령이면, 상기 서비스 어플리케이션으로부터의 명령을 상기 로봇으로 바로 전달하는 단계
    를 더 포함하고,
    상기 로봇은 상기 전달된 명령에 기반하여 제어되는, 로봇 제어 방법.
  4. 제3항에 있어서,
    상기 바이패스 대상 명령은 상기 로봇의 UX (User Experience)와 관련된 구성을 제어하기 위한 명령인, 로봇 제어 방법.
  5. 제1항에 있어서,
    상기 각 서브 명령은 상기 로봇이 수행 가능한 단위 명령이고,
    상기 서브 명령들을 생성하는 단계는, 상기 수신된 명령을 복수의 단위 명령들로 분할함으로써 상기 서브 명령들을 생성하는, 로봇 제어 방법.
  6. 제5항에 있어서,
    상기 서비스 어플리케이션으로부터의 명령은 목적지로 상기 로봇을 이동시키도록 하는 명령이고,
    상기 서브 명령들을 생성하는 단계는,
    상기 로봇의 현재 위치로부터 상기 목적지까지 상기 로봇이 이동해야 하는 복수의 웨이 포인트들을 결정하는 단계; 및
    상기 웨이 포인트들의 각 웨이 포인트로 상기 로봇을 이동시키는 명령을 상기 각 서브 명령으로서 상기 로봇에 전송하는 단계
    를 포함하고,
    상기 로봇은 상기 웨이 포인트들로의 이동에 대응하는 상기 서브 명령들에 따라 제어됨으로써 상기 목적지로 이동되는, 로봇 제어 방법.
  7. 제1항에 있어서,
    상기 각 서브 명령을 전송하는 단계는, 상기 각 서브 명령을 순차적으로 전송하되,
    상기 서브 명령들 중 제1 서브 명령을 상기 로봇에 전송하는 단계;
    상기 제1 서브 명령에 따른 상기 로봇의 제어가 완료된 후, 상기 로봇으로부터 완료 리포트를 수신하는 단계; 및
    상기 완료 리포트가 수신된 후, 상기 서브 명령들 중 상기 제1 서브 명령 다음에 해당하는 제2 서브 명령을 상기 로봇으로 전송하는 단계
    를 포함하는, 로봇 제어 방법.
  8. 제1항에 있어서,
    상기 각 서브 명령을 전송하는 단계는,
    상기 로봇의 상태를 모니터링하는 단계; 및
    상기 로봇의 상태에 기반하여, 상기 서브 명령들 중 상기 로봇에 의한 상기 서비스의 제공을 위해 필요한 서브 명령을 상기 로봇에 전송하거나, 기 전송된 서브 명령을 취소하기 위한 취소 명령을 상기 로봇에 전송하는 단계
    를 포함하는, 로봇 제어 방법.
  9. 삭제
  10. 삭제
  11. 제1항에 있어서,
    상기 추상화된 데이터를 상기 서비스 어플리케이션으로 전송하는 단계는,
    상기 로봇으로부터의 데이터를 분석하여 상기 로봇이 제2 상태를 나타내는지 여부를 판정하는 단계; 및
    상기 판정의 결과에 따라, 상기 로봇이 제2 상태를 나타내는지 여부를 나타내는 정보를 상기 추상화된 데이터로서 상기 서비스 어플리케이션으로 전송하는 단계
    를 포함하는, 로봇 제어 방법.
  12. 제1항에 있어서,
    상기 서비스 어플리케이션으로부터의 명령과는 독립적으로 상기 로봇을 제어하기 위한 독립 명령을 생성하는 단계; 및
    상기 로봇 또는 다른 로봇에 상기 독립 명령을 전송하는 단계
    를 더 포함하고,
    상기 독립 명령은, 상기 로봇에 대해 충전을 요구하는 명령, 상기 로봇의 특정 지점으로의 이동의 경로를 갱신하는 명령, 또는 상기 로봇이 상기 서비스를 제공할 수 없게 된 때, 상기 다른 로봇에 대해 상기 서비스를 제공하도록 요청하는 명령을 포함하는, 로봇 제어 방법.
  13. 제1항에 있어서,
    상기 서비스 어플리케이션은 상기 로봇과는 네트워크를 통해 구분되는 서버 또는 클라이언트 상에서 구현되고,
    상기 서비스 어플리케이션으로부터의 상기 명령은 상기 서비스를 제공하도록 상기 로봇을 직접적으로 제어할 수 없는 추상화된 명령이고,
    상기 각 서브 명령은 상기 로봇을 직접적으로 제어할 수 있도록 상기 추상화된 명령이 구체화된 명령이고,
    상기 로봇으로 전송되는 상기 각 서브 명령은 상기 서비스와 연관된 컨텍스트 정보를 포함하지 않는, 로봇 제어 방법.
  14. 제13항에 있어서,
    상기 서비스 어플리케이션이 상기 로봇에 대해 플러그-인(plug-in)됨으로써, 상기 로봇은 상기 서비스 어플리케이션과 연계하여 상기 서비스를 제공하도록 구현되고,
    상기 서비스 어플리케이션은 복수이고,
    상기 클라우드 서버는, 복수의 서비스 어플리케이션들 중 다른 서비스 어플리케이션이 상기 로봇과 플러그-인 되도록 함으로써, 상기 로봇이 상기 다른 서비스 어플리케이션과 연계하여 다른 서비스를 제공하도록 제어하는, 로봇 제어 방법.
  15. 제13항에 있어서,
    상기 서비스 어플리케이션, 상기 클라우드 서버 및 상기 로봇에 대해서는 서로 상이한 보안 정책이 설정되는, 로봇 제어 방법.
  16. 클라우드 서버 및 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇의 제어 방법에 있어서,
    상기 클라우드 서버로부터, 상기 서비스 어플리케이션이 상기 클라우드 서버에 전송한 상기 서비스를 제공하기 위한 명령이 구체화됨에 따라 생성된 복수의 서브 명령들의 각각을 수신하는 단계; 및
    수신된 상기 각 서브 명령에 기반하여 상기 로봇을 제어하는 단계
    를 포함하고,
    상기 서비스 어플리케이션은 상기 로봇과는 네트워크를 통해 구분되는 서버 또는 클라이언트 상에서 구현되고,
    상기 서비스 어플리케이션으로부터의 상기 명령은 상기 서비스를 제공하도록 상기 로봇을 직접적으로 제어할 수 없는 추상화된 명령이고,
    상기 각 서브 명령은 상기 로봇을 직접적으로 제어할 수 있도록 상기 추상화된 명령이 구체화된 명령이고,
    상기 로봇으로 전송되는 상기 각 서브 명령은 상기 서비스와 연관된 컨텍스트 정보를 포함하지 않고,
    상기 로봇의 제어와 연관된 데이터를 수집하는 단계; 및
    상기 클라우드 서버로 상기 수집된 데이터를 전송하는 단계
    를 더 포함하고,
    상기 클라우드 서버에서,
    상기 데이터가 상기 로봇의 제1 상태를 나타내는 바이패스 대상 데이터를 포함하는지 여부가 판정되고, 상기 데이터가 상기 바이패스 대상 데이터를 포함하고 있으면, 상기 바이패스 대상 데이터는 상기 클라우드 서버로부터 상기 서비스 어플리케이션으로 바로 전달되고,
    상기 데이터 중 상기 바이패스 대상 데이터가 아닌 데이터에 기반하여 추상화된 데이터가 생성되고, 생성된 상기 추상화된 데이터는 상기 서비스 어플리케이션으로 전송되고,
    상기 추상화된 데이터에 기반하여, 상기 서비스 어플리케이션에서는 상기 로봇을 제어하기 위한 명령이 생성되거나 상기 로봇에 대한 모니터링 정보가 생성되고,
    상기 바이패스 대상 데이터에 기반하여, 상기 서비스 어플리케이션에서는 상기 로봇의 제1 상태가 식별되는, 로봇 제어 방법.
  17. 삭제
  18. 제16항에 있어서,
    상기 로봇은 상기 서비스 어플리케이션이 플러그-인(plug-in)됨으로써, 상기 서비스 어플리케이션과 연계하여 상기 서비스를 제공하도록 구현되고,
    상기 클라우드 서버에 의해, 상기 서비스 어플리케이션이 아닌 다른 서비스 어플리케이션이 플러그-인 됨으로써, 상기 로봇은 상기 다른 서비스 어플리케이션과 연계하여 다른 서비스를 제공하도록 제어되는, 로봇 제어 방법.
  19. 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 클라우드 서버에 있어서,
    컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 서비스 어플리케이션으로부터 상기 서비스를 제공하기 위한 명령을 수신하고, 상기 수신된 명령을 구체화하여 복수의 서브 명령들을 생성하고, 상기 로봇에 상기 생성된 각 서브 명령을 전송하고,
    상기 로봇은 수신된 상기 각 서브 명령에 기반하여 제어되고,
    상기 적어도 하나의 프로세서는,
    상기 로봇으로부터 상기 로봇과 연관된 데이터를 수신하고,
    상기 로봇으로부터의 데이터가 상기 로봇의 제1 상태를 나타내는 바이패스 대상 데이터를 포함하는지 여부를 판정하고, 상기 로봇으로부터의 데이터에 상기 바이패스 대상 데이터가 포함되어 있으면, 상기 바이패스 대상 데이터를 상기 서비스 어플리케이션으로 바로 전달하고,
    상기 로봇으로부터의 데이터 중 상기 바이패스 대상 데이터가 아닌 데이터에 기반하여 추상화된 데이터를 생성하고, 생성된 상기 추상화된 데이터를 상기 서비스 어플리케이션으로 전송하고,
    상기 추상화된 데이터에 기반하여, 상기 서비스 어플리케이션에서는 상기 로봇을 제어하기 위한 명령이 생성되거나 상기 로봇에 대한 모니터링 정보가 생성되고,
    상기 바이패스 대상 데이터에 기반하여, 상기 서비스 어플리케이션에서는 상기 로봇의 제1 상태가 식별되는, 클라우드 서버.
KR1020200163830A 2020-11-30 2020-11-30 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버 KR102442064B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200163830A KR102442064B1 (ko) 2020-11-30 2020-11-30 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버
JP2021171001A JP7353341B2 (ja) 2020-11-30 2021-10-19 サービスアプリケーションと連係してサービスを提供するロボットを制御する方法およびクラウドサーバ
US17/514,499 US20220171392A1 (en) 2020-11-30 2021-10-29 Method and cloud server for controlling robot providing service in connection with service application
KR1020220111994A KR102545241B1 (ko) 2020-11-30 2022-09-05 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200163830A KR102442064B1 (ko) 2020-11-30 2020-11-30 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220111994A Division KR102545241B1 (ko) 2020-11-30 2022-09-05 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버

Publications (2)

Publication Number Publication Date
KR20220075582A KR20220075582A (ko) 2022-06-08
KR102442064B1 true KR102442064B1 (ko) 2022-09-08

Family

ID=81751326

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200163830A KR102442064B1 (ko) 2020-11-30 2020-11-30 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버
KR1020220111994A KR102545241B1 (ko) 2020-11-30 2022-09-05 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220111994A KR102545241B1 (ko) 2020-11-30 2022-09-05 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버

Country Status (3)

Country Link
US (1) US20220171392A1 (ko)
JP (1) JP7353341B2 (ko)
KR (2) KR102442064B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161300A1 (en) * 2004-12-06 2006-07-20 Gonzalez-Banos Hector H Interface for robot motion control
KR102067770B1 (ko) * 2018-11-23 2020-01-17 롯데정보통신 주식회사 다수의 이기종 로봇을 통합 관제하는 시스템 및 방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175722A (ja) * 1992-12-09 1994-06-24 Yanmar Agricult Equip Co Ltd 農作業機の圃場作業制御システム
KR100318437B1 (ko) * 1999-06-22 2001-12-24 박종섭 자동 반송로봇의 병렬제어 시스템 및 방법
KR100648307B1 (ko) 1999-11-04 2006-11-23 삼성전자주식회사 무인운반차 시스템의 제어방법
EP2668008A4 (en) * 2011-01-28 2018-01-24 Intouch Technologies, Inc. Interfacing with a mobile telepresence robot
US8307061B1 (en) * 2011-10-27 2012-11-06 Google Inc. System and method for determining manufacturer instructions executable by a robotic device
JP2013099800A (ja) 2011-11-07 2013-05-23 Fujitsu Ltd ロボット、ロボットの制御方法及び制御プログラム
US9802309B2 (en) * 2014-07-24 2017-10-31 X Development Llc Methods and systems for generating instructions for a robotic system to carry out a task
CN104965426A (zh) 2015-06-24 2015-10-07 百度在线网络技术(北京)有限公司 基于人工智能的智能机器人控制系统、方法和装置
JP2017196691A (ja) 2016-04-27 2017-11-02 パナソニックIpマネジメント株式会社 ロボット
CN106378780A (zh) 2016-10-21 2017-02-08 遨博(北京)智能科技有限公司 一种机器人系统、控制机器人的方法和服务器
DE102016121320A1 (de) 2016-11-08 2018-05-09 Vorwerk & Co. Interholding Gmbh Verfahren zum Betrieb eines sich selbsttätig fortbewegenden Roboters
CN109800937B (zh) * 2018-08-28 2020-12-01 博众精工科技股份有限公司 机器人集群调度系统
EP3867757A4 (en) * 2018-10-16 2022-09-14 Brain Corporation SYSTEMS AND METHODS FOR PERSISTENT MAPPING OF ENVIRONMENTAL PARAMETERS USING A CENTRALIZED CLOUD SERVER AND ROBOTIC NETWORK
KR20210099218A (ko) * 2019-01-03 2021-08-12 엘지전자 주식회사 서버 및 이를 포함하는 로봇 시스템
US20220118628A1 (en) 2019-02-15 2022-04-21 Telefonaktiebolaget Lm Ericsson (Publ) Technique for Controlling Wireless Command Transmission to a Robotic Device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161300A1 (en) * 2004-12-06 2006-07-20 Gonzalez-Banos Hector H Interface for robot motion control
KR102067770B1 (ko) * 2018-11-23 2020-01-17 롯데정보통신 주식회사 다수의 이기종 로봇을 통합 관제하는 시스템 및 방법

Also Published As

Publication number Publication date
KR102545241B1 (ko) 2023-06-20
KR20220075582A (ko) 2022-06-08
KR20220130048A (ko) 2022-09-26
JP7353341B2 (ja) 2023-09-29
JP2022087019A (ja) 2022-06-09
US20220171392A1 (en) 2022-06-02

Similar Documents

Publication Publication Date Title
US11709502B2 (en) Roadmap annotation for deadlock-free multi-agent navigation
US10926410B2 (en) Layered multi-agent coordination
US8478901B1 (en) Methods and systems for robot cloud computing using slug trails
US10260890B2 (en) Aisle-based roadmap generation
EP3936965B1 (en) Method and system for specifying nodes for robot path planning
EP3945389B1 (en) Control method and system for robot
US11052541B1 (en) Autonomous robot telerobotic interface
KR20230135548A (ko) 통신 기반 로봇 제어 방법 및 시스템
KR102442064B1 (ko) 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버
KR20220014810A (ko) 클라우드 서버에 의해 원격 제어되는 로봇이 주행하는 건물
US20240066683A1 (en) Method and system for controlling robot configured with plurality of modular robots, and building in which robot is disposed
US11964392B2 (en) Method and system for specifying nodes for robot path planning
KR101631153B1 (ko) 무인 운반차 제어를 위한 플랫폼 시스템
KR102462491B1 (ko) 지정 구역을 주행하는 다수의 로봇들을 제어하는 방법 및 시스템
KR102590503B1 (ko) 로봇의 무선 충전을 위한 시스템이 마련된 액세스 플로어 및 이를 포함하는 건물
KR20230095588A (ko) 강화 학습 기반의 알고리즘과 경로 계획 기반의 알고리즘을 사용하여 로봇을 제어하는 방법 및 시스템과, 로봇이 배치되는 건물
JP2024517882A (ja) 指定区域を走行する多数のロボットを制御する方法およびシステム、ロボットが配置される建物
Xu et al. Risk Analysis and Policy Enforcement of Function Interactions in Robot Apps
Soto-Guerrero et al. An Airborne Agent
Velagapudi et al. RoboCupRescue-Virtual Robots Team STEEL (USA)

Legal Events

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