KR102578127B1 - 통신 기반 로봇 제어 방법 및 시스템 - Google Patents

통신 기반 로봇 제어 방법 및 시스템 Download PDF

Info

Publication number
KR102578127B1
KR102578127B1 KR1020210058728A KR20210058728A KR102578127B1 KR 102578127 B1 KR102578127 B1 KR 102578127B1 KR 1020210058728 A KR1020210058728 A KR 1020210058728A KR 20210058728 A KR20210058728 A KR 20210058728A KR 102578127 B1 KR102578127 B1 KR 102578127B1
Authority
KR
South Korea
Prior art keywords
robot
control
control command
controlling
unit
Prior art date
Application number
KR1020210058728A
Other languages
English (en)
Other versions
KR20220151460A (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 KR1020210058728A priority Critical patent/KR102578127B1/ko
Priority to PCT/KR2022/000145 priority patent/WO2022234923A1/ko
Publication of KR20220151460A publication Critical patent/KR20220151460A/ko
Priority to KR1020230119591A priority patent/KR20230135548A/ko
Application granted granted Critical
Publication of KR102578127B1 publication Critical patent/KR102578127B1/ko

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • 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
    • B25J13/00Controls for manipulators
    • B25J13/08Controls for manipulators by means of sensing devices, e.g. viewing or touching devices
    • B25J13/088Controls for manipulators by means of sensing devices, e.g. viewing or touching devices with position, velocity or acceleration sensors
    • B25J13/089Determining the position of the robot with reference to its environment
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • B25J5/007Manipulators mounted on wheels or on carriages mounted on wheels
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • 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
    • 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/0011Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots associated with a remote control arrangement
    • 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
    • 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/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0223Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory involving speed control of the vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Computer Interaction (AREA)
  • Manipulator (AREA)

Abstract

로봇 제어 시스템이, 로봇으로부터 수신된 미가공 데이터에 기반하여, 로봇의 구동부를 제어하기 위한 제어 명령을 생성하고, 생성된 제어 명령을 로봇으로 송신하여 로봇의 구동부를 제어하는 로봇 제어 방법이 제공된다. 로봇 제어 시스템이 생성하는 제어 명령은 로봇의 구동부를 제어하기 위한 저수준(low-level) 제어 명령을 포함한다.

Description

통신 기반 로봇 제어 방법 및 시스템{COMMUNICATION-BASED ROBOT CONTROL SYSTEM AND METHOD THEREOF}
아래의 설명은 로봇을 제어하는 방법 및 시스템에 관한 것으로, 로봇으로부터 수신된 미가공 데이터에 기반하여 로봇의 구동부를 제어하기 위한 제어 명령을 생성하여 로봇을 제어하는 로봇을 제어하는 방법 및 시스템에 관한 것이다.
제조, 물류, 운송, 청소 및 길안내 등과 같은 서비스를 제공하는 로봇에 대한 관심이 높아지고 있다. 이러한 서비스를 제공하기 위해 구현되는 로봇은 예컨대, 자율 주행을 통해 최적의 경로로 목적지까지 이동하여 목적지에서 서비스를 제공할 수 있다.
로봇이 이러한 서비스를 제공할 수 있도록 하기 위해서는 로봇의 구동부를 적절하게 제어할 필요가 있다. 로봇의 구동부는 로봇의 상태나 주변 환경에 기반하여 제어될 수 있다. 로봇의 구동부의 제어를 위한 연산이 로봇 측에서 수행되도록 로봇을 구성하는 것은 로봇의 구현을 복잡하게 만들 뿐만아니라, 로봇의 유지 보수 비용을 높이고, 로봇의 확장성을 떨어지게 만든다.
따라서, 로봇의 구현 비용을 낮추고, 로봇의 유지 보수 및 확장을 용이하게 하기 위해, 로봇의 구동부를 제어하기 위해 요구되는 연산과, 구동부의 저수준(low-level)의 제어를 수행하기 위한 명령의 생성을 서버 측에서 수행할 수 있도록 로봇과 로봇 제어 시스템을 구축할 것이 요구된다.
한국공개특허 제10-2005-0024840호는 자율이동로봇을 위한 경로계획방법에 관한 기술로, 가정이나 사무실에서 자율적으로 이동하는 이동로봇이 장애물을 회피하면서 목표점까지 안전하고 빠르게 이동할 수 있는 최적경로를 계획하는 방법에 대해 개시하고 있다.
상기에서 설명된 정보는 단지 이해를 돕기 위한 것이며, 종래 기술의 일부를 형성하지 않는 내용을 포함할 수 있으며, 종래 기술이 통상의 기술자에게 제시할 수 있는 것을 포함하지 않을 수 있다.
로봇 제어 시스템이, 로봇으로부터 수신된 미가공 데이터에 기반하여, 로봇의 구동부를 제어하기 위한 제어 명령을 생성하고, 생성된 제어 명령을 로봇으로 송신하여 로봇의 구동부를 제어하는 로봇 제어 방법을 제공한다.
로봇 제어 시스템이 로봇과의 무선 통신을 통해 수신한 로우 센싱 데이터에 기반하여 로봇의 구동부를 제어하기 위한 저수준(low-level) 제어 명령을 생성하고, 로봇 측에서의 센싱 데이터에 기반한 인식 및 명령의 해석 등의 작업이 처리될 필요 없이, 상기 저수준 제어 명령을 통해 로봇의 구동부가 포함하는 액추에이터 및 모터를 직접 제어할 수 있는 제어 방법을 제공한다.
일 측면에 있어서, 로봇 제어 시스템에 의해 수행되는, 로봇을 제어하는 방법에 있어서, 상기 로봇으로부터 미가공 데이터를 수신하는 단계, 상기 수신된 미가공 데이터에 기반하여, 상기 로봇의 구동부를 제어하기 위한 제어 명령을 생성하는 단계 및 상기 생성된 제어 명령을 상기 로봇으로 송신하는 단계를 포함하고, 상기 제어 명령은 상기 구동부로 입력되어, 상기 구동부를 제어하기 위한 저수준(low-level) 제어 명령을 포함하는, 로봇을 제어하는 방법이 제공된다.
상기 구동부는 액추에이터 및 모터 중 적어도 하나를 포함하고, 상기 제어 명령은 상기 액추에이터의 속도, 위치 및 토크 중 적어도 하나를 제어하기 위한 명령을 포함하거나, 상기 모터의 속도 및 토크 중 적어도 하나를 제어하기 위한 명령을 포함할 수 있다.
상기 제어 명령은 상기 액추에이터 또는 상기 모터를 피드백 제어하기 위한 명령을 포함할 수 있다.
상기 미가공 데이터는 상기 로봇의 센서부에 의해 획득된 로우(raw) 센싱 데이터를 포함할 수 있다.
상기 제어 명령을 생성하는 단계는, 상기 로우 센싱 데이터를 전처리하는 단계를 포함하고, 상기 로우 센싱 데이터는 상기 센서부의 카메라에 의해 획득된 이미지 또는 상기 센서부의 복수의 센서들에 의해 획득된 다수의 센싱 데이터를 포함하고, 상기 전처리는, 상기 이미지 내에서 오브젝트의 인식이 가능하도록 리파인(refine) 처리를 수행하는 것을 포함하거나, 상기 로봇의 상태 또는 상기 로봇이 주행하는 환경의 상태를 결정하기 위해 상기 다수의 센싱 데이터를 퓨전(fusion)하는 것을 포함할 수 있다.
상기 제어 명령을 생성하는 단계는, 상기 로우 센싱 데이터에 기반하여, 상기 로봇의 상태 정보 및 상기 로봇이 주행하는 환경의 환경 정보 중 적어도 하나의 정보를 획득하는 단계 및 상기 획득된 정보에 기반하여 상기 구동부를 제어하기 위한 상기 제어 명령을 생성하는 단계를 포함할 수 있다.
상기 획득하는 단계는, i) 상기 로우 센싱 데이터에 기반하여, 상기 로봇의 주변의 로컬 맵을 생성하는 단계 및 ii) 상기 로우 센싱 데이터에 기반하여, 상기 로봇의 주변의 오브젝트를 인식하는 단계 중 적어도 하나를 포함하고, 상기 로컬 맵 및 상기 오브젝트의 인식 결과 중 적어도 하나에 기반하여, 상기 적어도 하나의 정보를 획득할 수 있다.
상기 제어 명령은 상기 로봇의 자율 주행을 위해 상기 로봇의 이동을 제어하기 위한 제어 명령이고, 상기 제어 명령을 생성하는 단계는, 상기 로봇과 연관된 이동 계획(motion plan), 상기 상태 정보 및 상기 환경 정보에 기반하여, 상기 로봇이 상기 이동 계획을 따르고 상기 환경에서의 장애물을 회피하도록 하는 상기 구동부를 위한 제어 명령을 생성할 수 있다.
상기 이동 계획은 상기 로봇이 주행해야 하는 경로에 관한 정보를 포함하고, 상기 상태 정보는 상기 로봇의 위치를 포함하고, 상기 환경 정보는 상기 로봇의 주변의 오브젝트에 관한 정보를 포함하고, 상기 제어 명령은, 상기 로봇이 상기 경로를 따라 이동하고 상기 장애물을 회피하도록, 상기 구동부가 포함하는 모터 및 액추에이터 중 적어도 하나를 피드백 제어하기 위한 명령을 포함할 수 있다.
상기 로우(raw) 센싱 데이터는 상기 센서부로부터 최초로 수집된 센싱 데이터가 상기 로봇 측에서 일차적으로 전처리된 것이고, 상기 제어 명령은 상기 로봇 측에서의 보정 처리 후 상기 구동부로 입력될 수 있다.
상기 로봇의 무선 통신부와 상기 로봇 제어 시스템의 무선 통신부 간의 통신에 따라, 상기 로봇으로부터 상기 미가공 데이터가 수신되고, 상기 로봇으로 상기 제어 명령이 송신될 수 있다.
상기 로봇은, 수신된 제어 명령을 해석하는 프로세스를 수행하지 않고, 상기 로봇 제어 시스템으로부터의 수신되는 상기 저수준 제어 명령을 실행하여 상기 구동부를 제어하는 브레인리스(brainless) 로봇일 수 있다.
상기 로봇을 제어하는 방법은, 다른 로봇의 제어가 요청된 때, 상기 다른 로봇에 대해 기 정의된 정보에 기반하여 상기 다른 로봇을 제어하기 위한 로봇 제어 모델을 생성하는 단계, 상기 로봇 제어 모델에 기반하여 상기 다른 로봇의 상태를 추정하는 단계 및 상기 추정된 다른 로봇의 상태에 기반하여, 상기 다른 로봇의 구동부를 제어하기 위한 제어 명령을 생성하는 단계를 더 포함할 수 있다.
상기 로봇 제어 모델을 생성하기 위해 사용되는 상기 다른 로봇에 대해 기 정의된 정보는, 상기 다른 로봇이 포함하는 센서부 및 구동부의 사양 정보, 상기 다른 로봇의 물리적인 형태 정보 및 상기 다른 로봇과 연관된 동역학 모델(dynamics model)을 포함할 수 있다.
상기 로봇은 상기 로봇 제어 시스템의 제1 로봇 브레인에 의해 제어되고, 상기 제1 로봇 브레인에 의해, 상기 수신하는 단계, 상기 생성하는 단계, 및 상기 송신하는 단계가 수행되고, 상기 로봇을 제어하는 방법은, 다른 로봇의 제어가 요청된 때, 상기 다른 로봇을 제어하기 위한 상기 제1 로봇 브레인과 논리적으로 구분되는 제2 로봇 브레인을 구성하는 단계를 더 포함하고, 상기 다른 로봇으로부터의 미가공 데이터의 수신, 상기 다른 로봇의 구동부를 제어하기 위한 제어 명령의 생성 및 상기 다른 로봇의 구동부를 제어하기 위한 제어 명령의 송신은 상기 제2 로봇 브레인을 통해 수행될 수 있다.
상기 제1 로봇 브레인은 상기 로봇과 상기 로봇 제어 시스템의 게이트웨이를 통해 최초로 연결되되, 최초 연결 후에는, 상기 제1 로봇 브레인의 통신부를 통해 상기 로봇과 통신하고, 상기 제2 로봇 브레인은 상기 다른 로봇과 상기 게이트웨이를 통해 최초로 연결되되, 최초 연결 후에는, 상기 제2 로봇 브레인의 통신부를 통해 상기 다른 로봇과 통신할 수 있다.
상기 제어 명령이 소정의 제1 시간 내에 상기 로봇에 수신되지 않거나, 상기 제어 명령이 소정의 제2 시간 이상 상기 로봇에 대해 송신되지 않으면, 상기 로봇은 대기 모드로 전환될 수 있다.
상기 로봇으로부터 소정의 거리 이내에서 오브젝트가 검출되면, 상기 제어 명령과 관계 없이, 상기 로봇은 대기 모드로 전환될 수 있다.
다른 일 측면에 있어서, 로봇을 제어하는 로봇 제어 시스템에 있어서, 무선 통신부 및 컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 무선 통신부와 상기 로봇의 무선 통신부 간의 통신에 따라, 상기 로봇으로부터 미가공 데이터를 수신하고, 상기 수신된 미가공 데이터에 기반하여, 상기 로봇의 구동부를 제어하기 위한 제어 명령을 생성하고, 상기 무선 통신부와 상기 로봇의 무선 통신부 간의 통신에 따라, 상기 생성된 제어 명령을 상기 로봇으로 송신하고, 상기 제어 명령은 상기 구동부로 입력되어, 상기 구동부를 제어하기 위한 저수준(low-level) 제어 명령을 포함하는, 로봇 제어 시스템이 제공된다.
상기 미가공 데이터는 상기 로봇의 센서부에 의해 획득된 로우(raw) 센싱 데이터를 포함하고, 상기 적어도 하나의 프로세서는, 상기 로우 센싱 데이터를 전처리하는 전처리부, 상기 전처리된 로우 센싱 데이터에 기반하여, 상기 로봇의 상태 정보 및 상기 로봇이 주행하는 환경의 환경 정보 중 적어도 하나의 정보를 획득하는 로봇 상태 및 환경 인식 처리부 및 상기 획득된 정보에 기반하여 상기 구동부를 제어하기 위한 상기 제어 명령을 생성하는 로봇 제어부를 포함할 수 있다.
상기 제어 명령은 상기 로봇의 자율 주행을 위해 상기 로봇의 이동을 제어하기 위한 제어 명령이고, 상기 적어도 하나의 프로세서는, 상기 로봇과 연관된 이동 계획을 관리하는 주행 계획부를 포함하고, 상기 로봇 제어부는, 상기 상태 정보 및 상기 환경 정보에 기반하여, 상기 로봇이 상기 이동 계획을 따르고 상기 환경에서의 장애물을 회피하도록 하는 상기 구동부를 위한 제어 명령을 생성할 수 있다.
상기 적어도 하나의 프로세서는, 다른 로봇의 제어가 요청된 때, 상기 다른 로봇에 대해 기 정의된 정보에 기반하여 상기 다른 로봇을 제어하기 위한 로봇 제어 모델을 생성하도록 구성되고, 상기 로봇 제어 모델은 상기 다른 로봇의 상태를 추정하고, 상기 추정된 다른 로봇의 상태에 기반하여, 상기 다른 로봇의 구동부를 제어하기 위한 제어 명령을 생성할 수 있다.
상기 적어도 하나의 프로세서는, 제1 로봇 브레인을 포함하고, 상기 제1 로봇 브레인이 상기 미가공 데이터를 수신하고, 상기 제어 명령을 생성하고, 상기 제어 명령을 상기 로봇으로 송신하도록 구성되고, 상기 적어도 하나의 프로세서는, 다른 로봇의 제어가 요청된 때, 상기 다른 로봇을 제어하기 위한 상기 제1 로봇 브레인과 논리적으로 구분되는 제2 로봇 브레인을 생성하도록 구성되고, 상기 다른 로봇으로부터의 미가공 데이터의 수신, 상기 다른 로봇의 구동부를 제어하기 위한 제어 명령의 생성 및 상기 다른 로봇의 구동부를 제어하기 위한 제어 명령의 송신은 상기 제2 로봇 브레인을 통해 수행될 수 있다.
또 다른 일 측면에 있어서, 로봇 제어 시스템에 의해 제어되는 로봇에 있어서, 무선 통신부, 적어도 하나의 센서를 포함하는 센서부, 모터 및 액추에이터 중 적어도 하나를 포함하는 구동부 및 상기 센서부를 위한 센서 드라이버 및 상기 구동부를 위한 구동부 드라이버를 포함하는 제어부를 포함하고, 상기 제어부는, 상기 무선 통신부를 통해, 상기 센서부에 의해 획득된 로우(raw) 센싱 데이터를 포함하는 미가공 데이터를 상기 로봇 제어 시스템으로 송신하고, 상기 로봇 제어 시스템 측에서 상기 미가공 데이터에 기반하여 생성한 상기 구동부를 제어하기 위한 제어 명령을, 상기 무선 통신부를 통해 수신하고, 상기 수신된 제어 명령을 실행하여 상기 구동부를 제어하고, 상기 수신된 제어 명령은 상기 구동부로 입력되어, 상기 구동부를 제어하기 위한 저수준(low-level) 제어 명령을 포함하는, 로봇이 제공된다.
로봇 제어 시스템이 로봇과의 무선 통신을 통해 수신한 로우 센싱 데이터에 기반하여 로봇의 구동부를 제어하기 위한 저수준(low-level) 제어 명령을 생성하고, 저수준 제어 명령을 통해 로봇의 구동부가 포함하는 액추에이터 및 모터를 직접 제어할 수 있음으로써, 로봇은 복잡한 온보드 컴퓨터 시스템을 포함하지 않거나 최소한의 하드웨어를 포함하는 온보드 컴퓨터 시스템을 포함하도록 구성될 수 있다.
로봇 제어 시스템 측에서 로봇의 구동부를 제어하기 위한 저수준 제어 명령을 생성하기 위해 요구되는 연산이 수행되는 바, 로봇 측에서 센싱 데이터에 기반한 인식 및 명령의 해석 등의 작업이 처리될 필요 없게 되어, 서비스 로봇의 복잡도를 낮출 수 있고 서비스 로봇의 유지 보수를 효율화할 수 있다.
로봇 제어 시스템으로부터의 제어 명령에 따라, 단순히 로봇의 구동부가 제어되도록 로봇이 구현될 뿐인 바, 로봇 제어 시스템의 구성에 따라 로봇의 기능 변경 가능성 및 확장성을 높일 수 있다.
도 1은 일 실시예에 따른, 로봇을 제어하는 방법을 나타낸다.
도 2 는 일 실시예에 따른, 로봇을 나타내는 블록도이다.
도 3은 일 실시예에 따른, 로봇을 제어하는 로봇 제어 시스템을 나타내는 블록도이다.
도 4는 일 실시예에 따른, 로봇과 로봇 제어 시스템 간의 무선 통신에 기반하여, 로봇 제어 시스템이 저수준(low-level) 제어 명령을 통해 로봇의 구동부를 제어하는 방법을 나타낸다.
도 5는 일 실시예에 따른, 로봇을 제어하는 방법을 나타내는 흐름도이다.
도 6은 일 예에 따른, 로봇 제어 시스템 측에서 로봇의 구동부를 제어하기 위한 제어 명령을 생성하는 방법을 나타내는 흐름도이다.
도 7은 일 예에 따른, 로봇과 로봇 제어 시스템 간의 무선 통신에 기반하여, 로봇 제어 시스템이 저수준 제어 명령을 통해 로봇의 구동부를 제어함으로써, 로봇이 자율 주행하는 방법을 나타낸다.
도 8은 일 실시예에 따른, 로봇 제어 모델을 생성하여 로봇을 제어하는 방법을 나타내는 흐름도이다.
도 9는 일 예에 따른, 로봇 브레인을 생성하여 로봇을 제어하는 방법을 나타내는 흐름도이다.
도 10은 일 예에 따른, 복수의 로봇들을 제어하는 멀티 로봇 제어 방법을 나타낸다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 일 실시예에 따른, 로봇을 제어하는 방법을 나타낸다.
도 1에서 도시된 로봇(100)은 예컨대, 건물이나, 실내, 또는 기타 개방된 영역과 같은 공간 내에서 서비스를 제공하도록 구성되는 서비스 로봇일 수 있다.
로봇(100)은 로봇 제어 시스템(120)에 의한 제어에 따라, 특정 기능을 수행하거나, 서비스의 제공과 관련된 작업을 수행하도록 구성될 수 있다.
로봇(100)이 주행하는 공간은 로봇(100)이 서비스를 제공하는 장소로서, 예컨대, 건물을 나타낼 수 있다. 이러한 공간은 복수의 인원(이하, 사용자라 함)들이 근무 또는 상주하는 공간으로서, 복수의 구획된 공간들을 포함할 수 있다. 공간은 건물의 일부(특정 층 또는 해당 층 내의 부분 공간)를 나타낼 수 있다. 서비스 로봇인 로봇(100)은 공간의 적어도 하나의 층에서 서비스를 제공하도록 구성될 수 있다.
로봇 제어 시스템(120)은 복수의 로봇들의 각각을 제어하도록 구성될 수도 있다. 이 때, 공간 내에서는 로봇들의 각각이 이동하여 공간 내의 적절한 위치 또는 적절한 사용자에게 서비스를 제공할 수 있다.
로봇(100)이 제공하는 서비스는 예컨대, 택배 전달 서비스, 주문에 따른 음료(커피 등) 전달 서비스, 청소 서비스, 및 기타 정보/콘텐츠 제공 서비스 중 적어도 하나를 포함할 수 있다.
로봇(100)은 자율 주행을 통해 공간의 소정의 위치에서 또는 소정의 사용자에게 서비스를 제공할 수 있다. 로봇(100)은 로봇 제어 시스템(120)에 의한 제어에 따라 특정한 위치로 이동하거나, 서비스의 제공을 위해 요구되는 기타 작업 또는 기능을 실행할 수 있다.
실시예에서는, 로봇 제어 시스템(120)은 로봇(100)으로부터 수신된 미가공 데이터에 기반하여, 로봇(100)의 구동부를 제어하기 위한 제어 명령을 생성하고, 생성된 제어 명령을 로봇으로 송신하여 로봇(100)의 구동부를 제어할 수 있다.
예컨대, 도시된 것처럼, 로봇 제어 시스템(120)은 로봇(100)의 센서부 등에 의해 수집된 로우(raw) 센싱 데이터를 포함하는 미가공 데이터를 로봇(100)으로부터 수신할 수 있다(①). 로봇 제어 시스템(120)은 수신한 미가공 데이터에 기반하여 로봇(100)의 구동부를 저수준(low-level)으로 제어하기 위한 제어 명령을 생성할 수 있다(②). 로봇 제어 시스템(120)은 생성된 제어 명령을 로봇(100)으로 송신할 수 있고(③), 로봇(100)은 수신한 제어 명령을 실행함으로써 구동부를 제어할 수 있다. 말하자면, 로봇 제어 시스템(120)은 로봇(100)의 구동부를 제어하기 위한 제어 명령으로서 추상화된 고수준(high-level)의 명령을 생성하는 것이 아니라, 구동부의 모터 및/또는 액추에이터를 (저수준으로) 직접 제어할 수 있도록 하는 저수준 제어 명령을 생성할 수 있다. 따라서, 로봇(100) 측에서는 수신된 제어 명령을 해석하는 프로세스가 수행될 필요가 없고, 수신된 저수준 제어 명령을 실행(예컨대, 구동부로 입력)시키는 것만으로 해당 제어 명령에 따라 구동부를 동작시킬 수 있다.
이처럼, 로봇(100)은 수신된 제어 명령을 해석하는 프로세스를 수행하지 않고, 로봇 제어 시스템(120)으로부터의 저수준 제어 명령을 실행하여 구동부를 제어하는 브레인리스(brainless) 로봇으로 구현될 수 있다. 즉, 로봇 제어 시스템(120)은 이러한 브레인리스 로봇을 제어하는 로봇 브레인(브레인 시스템)으로 구현될 수 있다.
로봇(100)은 수집된 로우 센싱 데이터를 로봇 제어 시스템(120)으로 송신하고, 로봇 제어 시스템(120)으로부터의 저수준 제어 명령을 수신하여 구동부를 동작시키기 위한 구성만을 포함할 수 있는 바, 복잡한 온보드 컴퓨터 시스템과 같은 구성을 포함하지 않게 될 수 있다.
로봇(100) 및 로봇 제어 시스템(120)의 구조와 그 구체적인 동작에 대해서는 후술될 도 2 내지 도 4를 참조하여 더 자세하게 설명된다.
도 2 는 일 실시예에 따른, 로봇을 나타내는 블록도이다.
전술한 것처럼, 로봇(100)은 공간 내에서 서비스를 제공하기 위해 사용되는 서비스 로봇일 수 있다. 로봇(100)은 자율 주행을 통해 공간의 소정의 위치에서 또는 소정의 사용자에게 서비스를 제공하도록 구성될 수 있다.
로봇(100)은 물리적인 장치일 수 있으며, 도시된 바와 같이, 제어부(104), 구동부(108), 센서부(106) 및 통신부(102)를 포함할 수 있다.
제어부(104)는 로봇(100)에 내장된 물리적인 프로세서 또는 온보드 컴퓨터 시스템일 수 있다. 제어부(104)는 브레인리스 로봇으로서 구현되는 로봇(100)이 로봇 제어 시스템(120)과 통신하여, 로봇 제어 시스템(120)에 대해 데이터를 송신하고, 로봇 제어 시스템(120)으로부터 수신한 명령을 처리(예컨대, 구동부(108) 및/또는 센서부(106)로 전달)하기 위해 필요한 구성만을 포함할 수 있다.
예컨대, 제어부(104)는 센서부(106)를 통해 수집된 로우 센싱 데이터를 로봇 제어 시스템(120)으로 송신하고, 로봇 제어 시스템(120)으로부터의 저수준 제어 명령을 수신하여 구동부(108)를 동작시키기 위한 구성만을 포함할 수 있다. 말하자면, 제어부(104)는 센싱 데이터 및 제어 명령을 해석 및 처리하기 위한 복잡한 구성(예컨대, GPU 등)을 포함하지 않을 수 있다.
제어부(104)는 센서부(106)를 위한 센서 드라이버와, 구동부(108)를 위한 구동부 드라이버를 포함할 수 있다.
통신부(102)는 로봇(100)이 다른 장치(로봇 제어 시스템(120) 등)와 통신하기 위한 구성일 수 있다. 말하자면, 통신부(102)는 로봇 제어 시스템(120)과 같은 다른 장치에 대해 데이터 및/또는 정보를 전송/수신하는, 로봇(100)의 안테나, 데이터 버스, 네트워크 인터페이스 카드, 네트워크 인터페이스 칩 및 네트워킹 인터페이스 포트 등과 같은 하드웨어 모듈 또는 네트워크 디바이스 드라이버(driver) 또는 네트워킹 프로그램과 같은 소프트웨어 모듈일 수 있다.
일례로, 통신부(102)는 로봇 제어 시스템(120)과 통신하기 위한 무선 통신부로서, 로봇 제어 시스템(120)으로 (로우) 센싱 데이터를 포함하는 미가공 데이터를 송신하고, 로봇 제어 시스템(120)으로부터 구동부(108)를 위한 제어 명령을 수신할 수 있다.
센서부(106)는 로봇(100)의 자율 주행 및 서비스 제공에 있어서 요구되는 데이터를 수집하기 위한 구성일 수 있다. 센서부(106)는 고가의 센싱 장비를 포함하지 않을 수 있고, 단지 저가형 초음파 센서 및/또는 저가형 카메라 등과 같은 센서를 포함할 수 있다.
센서부(106)는 전방 및/또는 후방의 다른 로봇, 사람, 장애물 등과 같은 오브젝트를 식별하기 위한 센서를 포함할 수 있다. 예컨대, 센서부(106)의 카메라를 통해 다른 로봇, 사람 및 기타 지물들이 식별될 수 있다. 또는, 센서부(106)는 적외선 센서(또는 적외선 카메라)를 포함할 수 있다. 센서부(106)는 카메라 외에 주변의 사용자나, 다른 로봇 또는 지물을 인식/식별하기 위한 센서를 더 포함할 수도 있다. 또한, 센서부(106)는 주변에 존재하는 오브젝트(들)와의 거리를 식별하기 위한 적어도 하나의 거리 센서를 포함할 수 있다. 기타, 센서부는 오도미터(odometer) 등을 비롯하여 로봇(100)의 상태를 파악하고 환경을 인식하기 위한 센서를 포함할 수 있다.
센서부(106)의 센서들로부터의 (로우) 센싱 데이터는 통신부(102)를 통해 로봇 제어 시스템(120)으로 전송될 수 있다. 예컨대, 센싱 데이터는 제어부(104)의 센서 드라이버(또는 센서 허브)를 경유하여 통신부(102)를 통해 로봇 제어 시스템(120)으로 전송될 수 있다.
구동부(108)는 로봇(100)의 이동을 제어하며 이동을 가능하게 하는 구성으로서 이를 수행하기 위한 장비(하드웨어)를 포함할 수 있다. 또한, 구동부(108)는 로봇(100)이 요청된 서비스와 관련된 작업을 수행하기 위해 필요한 기능을 수행하기 위한 장비(하드웨어)를 포함할 수 있다.
예컨대, 구동부(108)는 로봇(100)의 이동을 위한 바퀴, 캐터필러 바퀴, 다리 등을 작동시키기 위한 적어도 하나의 모터 및/또는 적어도 하나의 액추에이터를 포함할 수 있다.
또한, 구동부(108)는 로봇(100)이 제공하는 서비스와 관련된 장비를 포함할 수 있다. 예컨대, 음식물/택배물 전달 서비스를 수행하기 위해 로봇(100)의 구동부(108)는 음식물/택배물을 적재하기 위한 구성이나 음식물/택배물을 사용자에게 전달하기 위한 구성(일례로, 로봇 암(arm))을 포함할 수 있다. 또한, 로봇(100)은 정보/콘텐츠의 제공을 위한 스피커 및/또는 디스플레이 등을 더 포함할 수도 있다.
구동부(108)는 로봇 제어 시스템(120)으로부터의 제어 명령에 따라 제어될 수 있다. 구동부(108)는 로봇 제어 시스템(120)으로부터 수신된 저수준 제어 명령을 실행하여, 해당 제어 명령에 대응하는 동작을 수행할 수 있다. 예컨대, 구동부(108)에 로봇 제어 시스템(120)으로부터의 저수준 제어 명령이 입력되면 구동부(108)는 해당 제어 명령이 나타내는 동작을 수행할 수 있다.
로봇 제어 시스템(120)으로부터의 제어 명령은 통신부(102)를 통해 구동부(108)로 전달될 수 있다. 예컨대, 로봇 제어 시스템(120)으로부터의 제어 명령은 통신부(102)를 통해 수신되어 제어부(104)의 구동부 드라이버에 의해 구동부(108)의 각 구성(예컨대, 각각의 모터 및/또는 액추에이터)으로 전달될 수 있다.
설명한 것처럼, 로봇(100)은 센서부(106)로부터의 센싱 데이터를 로봇 제어 시스템(120)으로 송신하고, 로봇 제어 시스템(120)으로부터 제어 명령을 수신하여 제어되는 것일 뿐인 바, (브레인에 해당하는 로봇 제어 시스템(120)에 의해 제어되는) 브레인리스 로봇이 될 수 있다.
한편, 로봇(100)의 각각은 기종이나 제공하는 서비스 등에 따라, 상이한 크기 및 형태(즉, 상이한 종류의 센서부(106) 및/또는 구동부(108)를 가질 수 있다.
로봇(100)을 제어하는 로봇 제어 시스템(120)의 구성 및 동작에 대해서는 후술될 도 3 및 도 4를 참조하여 각각 더 자세하게 설명된다.
이상 도 1을 참조하여 전술된 기술적 특징에 대한 설명은, 도 2에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 3은 일 실시예에 따른, 복수의 모듈형 로봇들로 구성된 로봇을 제어하는 로봇 제어 시스템을 나타내는 블록도이다.
로봇 제어 시스템(120)은 전술된 로봇(100)의 공간 내에서의 이동(즉, 주행) 및 로봇(100)에 의한 공간 내에서의 서비스의 제공을 제어하는 장치일 수 있다. 로봇 제어 시스템(120)은 로봇(100)이 복수인 경우 복수의 로봇들 각각의 이동 및 로봇(100) 각각의 서비스의 제공을 제어할 수 있다.
로봇 제어 시스템(120)은 로봇(100)과의 통신을 통해, 로봇(100)이 서비스를 제공하기 위해 이동해야 할 경로를 계획 및 설정할 수 있고, 이러한 경로에 따른 이동을 위한 제어 명령을 로봇(100)에게 전달할 수 있다. 로봇(100)은 수신된 제어 명령에 따라 소정의 위치 또는 소정의 사용자에게 이동할 수 있다. 또한, 로봇(100)은 로봇 제어 시스템(120)의 제어에 따라 소정의 위치에서 또는 소정의 사용자에게 서비스를 제공(서비스와 관련된 작업을 수행)할 수 있다.
로봇 제어 시스템(120)은 적어도 하나의 컴퓨팅 장치를 포함할 수 있다.
로봇 제어 시스템(120)은 전술한 것처럼 로봇(100)의 주행을 위한 경로를 계획 및 설정하고 로봇(100)의 이동을 제어하는 장치일 수 있다. 로봇 제어 시스템(120)은 적어도 하나의 컴퓨팅 장치를 포함할 수 있고, 로봇(100)이 주행하는 공간 내 또는 공간 외부에 위치하는 적어도 하나의 서버로 구현될 수 있다.
로봇 제어 시스템(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)에 로딩된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.
통신부(310)는 로봇 제어 시스템(120)이 다른 장치(로봇(100) 또는 다른 서버 등)와 통신하기 위한 구성일 수 있다. 말하자면, 통신부(310)는 다른 장치에 대해 데이터 및/또는 정보를 전송/수신하는, 로봇 제어 시스템(120)의 안테나, 데이터 버스, 네트워크 인터페이스 카드, 네트워크 인터페이스 칩 및 네트워킹 인터페이스 포트 등과 같은 하드웨어 모듈 또는 네트워크 디바이스 드라이버(driver) 또는 네트워킹 프로그램과 같은 소프트웨어 모듈일 수 있다.
일례로, 통신부(310)는 로봇(100)과 통신하기 위한 무선 통신부로서, 로봇(100)으로부터 (로우) 센싱 데이터를 포함하는 미가공 데이터를 수신하고, 로봇(100)으로 구동부(108)를 위한 제어 명령을 송신할 수 있다. 말하자면, 로봇(100)과 로봇 제어 시스템(120)은 각자의 무선 통신부들(102, 310)을 통해 통신함으로써, 데이터 및 명령을 송수신할 수 있다.
입출력 인터페이스(340)는 키보드 또는 마우스 등과 같은 입력 장치 및 디스플레이나 스피커와 같은 출력 장치와의 인터페이스를 위한 수단일 수 있다.
또한, 다른 실시예들에서 로봇 제어 시스템(120) 및 프로세서(320)는 도시된 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 예컨대, 프로세서(320)는 도 4에서 도시된 것과 같은 구성들(예컨대, 410 내지 440)을 포함할 수 있다.
실시예에서는, 통신부(310)를 통해 로봇(100)으로부터 로봇(100)의 센서부(106)에 의해 수집된 로우 센싱 데이터를 포함하는 미가공 데이터가 프로세서(320)로 수신될 수 있고, 프로세서(320)는 로봇(100)으로부터 수신된 센싱 데이터게 기반하여 로봇(100)의 구동부(108)를 위한 제어 명령(저수준 제어 명령)을 생성할 수 있다. 프로세서(320)는 통신부(310)를 통해 제어 명령을 로봇(100)에 송신할 수 있고, 따라서, 송신된 제어 명령에 따라 구동부(108)가 제어되도록 할 수 있다. 통신부(310)는 로봇(100)과의 통신을 위해 소켓 통신, 스트림, 메세지 큐 등을 활용할 수 있다.
프로세서(320)가 구동부(108)를 위한 제어 명령을 생성하는 동작은 구성들(410 내지 440)에 의해 수행될 수 있다.
프로세서(320)의 구성들(410 내지 440) 각각은 프로세서(320)의 일부로서 소프트웨어 및/또는 하드웨어 모듈일 수 있고, 프로세서에 의해 구현되는 기능(기능 블록)을 나타낼 수 있다. 프로세서(320)의 구성들(410 내지 440)에 대해서는 도 4를 참조하여 후술한다.
이상 도 1 및 도 2를 참조하여 전술된 기술적 특징에 대한 설명은, 도 3에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 4는 일 실시예에 따른, 로봇과 로봇 제어 시스템 간의 무선 통신에 기반하여, 로봇 제어 시스템이 저수준(low-level) 제어 명령을 통해 로봇의 구동부를 제어하는 방법을 나타낸다.
도시된 것처럼, 로봇 제어 시스템(120)은 전처리부(410), 로봇 상태 및 환경 인식 처리부(420), 로봇 제어부(430) 및 주행 계획부(440)를 포함할 수 있다. 이러한 구성들(410 내지 440)은 전술한 프로세서(320)의 일부이거나 프로세서(320)에 의해 구현되는 기능일 수 있다. 프로세서(320)가 포함하는 구성요소들은, 운영체제의 코드나 적어도 하나의 컴퓨터 프로그램의 코드에 따른 제어 명령(instruction)에 따라 프로세서(320)가 포함하는 적어도 하나의 프로세서가 수행하는 서로 다른 기능들(different functions)의 표현들일 수 있다.
한편, 로봇(100)의 제어부(104)는 센서 드라이버(450) 및 구동부 드라이버(460)를 포함할 수 있다. 센서부(106)는 복수의 센서들(470-1 내지 4)을 포함하고, 구동부(108)는 액추에이터(482) 및 모터(484)를 포함하는 것으로 도시되었다.
도 4를 참조하여서는 브레인리스 로봇인 로봇(100)과, 이러한 로봇(100)을 제어하는 브레인 시스템으로서의 로봇 제어 시스템(120)에 대해 더 자세하게 설명한다.
로봇(100)의 제어부(104)는 센서부(106)(즉, 센서들(470-1 내지 4))에 의해 획득(수집)된 로우 센싱 데이터를 포함하는 미가공 데이터를 로봇 제어 시스템(120)으로 송신할 수 있다. 로우 센싱 데이터를 포함하는 미가공 데이터는 센서들(470-1 내지 4)로부터 센서 드라이버(450)(센서 허브)로 전달될 수 있고 무선 통신부(102)를 통해 로봇 제어 시스템(120)으로 송신될 수 있다.
로봇 제어 시스템(120)은 자신의 무선 통신부(320)와 로봇(100)의 무선 통신부(102)와의 통신에 따라, 로봇(100)으로부터 로우 센싱 데이터를 포함하는 미가공 데이터를 수신할 수 있다.
로봇 제어 시스템(120)의 프로세서(320)는 수신된 미가공 데이터에 기반하여, 로봇(100)의 구동부(108)를 제어하기 위한 제어 명령을 생성할 수 있다. 로봇 제어 시스템(120)은 자신의 무선 통신부(320)와 로봇(100)의 무선 통신부(102)와의 통신에 따라, 생성된 제어 명령을 로봇(100)으로 송신할 수 있다. 제어 명령은 무선 통신부(102)를 통해 로봇(100)에 수신될 수 있고, 로봇(100)은 이러한 제어 명령을 실행하여 구동부(108)를 제어할 수 있다.
도시된 것처럼, 로봇 제어 시스템(120)으로부터의 제어 명령은 무선 통신부(102)를 통해 구동부 드라이버(104)에 수신되어 구동부(108)의 제어가 필요한 요소(액추에이터(482) 및/또는 모터(484))로 입력될 수 있다. 구동부 드라이버(104)는 액추에이터(482) 및 모터(484) 중 수신된 제어 명령에 의해 제어되어야 할 요소를 결정하여, 결정된 요소의 제어를 위해 해당 결정된 요소로 제어 명령을 전달할 수 있다.
로봇(100)이 로봇 제어 시스템(120)으로부터 수신한 제어 명령은 구동부(108)(액추에이터(482) 및/또는 모터(484))로 입력되어, 구동부(108)(액추에이터(482) 및/또는 모터(484))를 제어하기 위한 저수준 제어 명령을 포함할 수 있다. 말하자면, 로봇 제어 시스템(120)은 구동부(108)를 제어하기 위한 제어 명령으로서 추상화된 고수준(high-level)의 명령을 생성하여 로봇(100)으로 송신하는 것이 아니라, 구동부(108)의 모터(482) 및/또는 액추에이터(484)를 (저수준으로) 직접 제어할 수 있도록 하는 저수준 제어 명령을 생성하여 로봇(100)으로 송신할 수 있다.
따라서, 로봇 제어 시스템(120)의 로봇(100)에 대한 피드백 제어가 수행될 수 있다.
아래에서, 로봇 제어 시스템(120) 측에서 제어 명령을 생성하는 방법을 더 자세하게 설명한다.
로봇 통신부(310)에 의해 수신된 로우 센싱 데이터(또는 미가공 데이터)는 전처리부(410)에 의해 먼저 전처리될 수 있다. 전처리된 로우 센싱 데이터는 로봇 상태 및 환경 인식 처리부(420)에 의해 처리될 수 있다. 로봇 상태 및 환경 인식 처리부(420)는 전처리부(410)에 의해 전처리된 로우 센싱 데이터에 기반하여, 로봇(100)의 (실시간 또는 거의 실시간의) 상태를 나타내는 상태 정보 및 로봇(100)이 주행하는 환경의 환경 정보 중 적어도 하나의 정보를 획득(생성)할 수 있다.
로봇 제어부(430)는 이러한 로봇 상태 및 환경 인식 처리부(420)에 의해 획득된 정보에 기반하여 구동부(108)를 제어하기 위한 (저수준) 제어 명령을 생성할 수 있다. 로봇 제어부(430)는 구동부(108)의 액추에이터(482) 및 모터(484)를 구체적으로 제어하기 위한 명령을 계산할 수 있다. 예컨대, 로봇 제어부(430)는 액추에이터(482)의 속도, 위치 및 토크 중 적어도 하나를 제어하기 위한 명령이나, 모터(484)의 속도 및 토크 중 적어도 하나를 제어하기 위한 명령을 생성할 수 있다. 액추에이터(482)는 적어도 하나의 모터, 슬라이더, 또는 실린더로 구성될 수 있다.
한편, 로봇 제어부(430)는 구동부(108)를 위한 제어 명령을 생성함에 있어서 레퍼런스 정보를 더 사용할 수 있다.
예컨대, 로봇 제어부(430)가 생성하는 제어 명령이 로봇(100)의 자율 주행을 위해 로봇(100)의 이동을 제어하기 위한 제어 명령인 경우에 있어서, 로봇 제어부(430)는, 로봇(100)과 연관된 이동 계획을 관리하는 주행 계획부(450)로부터의 이동 계획(motion plan)을 참조하여 구동부(108)를 위한 제어 명령을 생성할 수 있다. 이 때, 로봇 제어부(430)는, 로우 센싱 데이터로부터 획득(생성)된 로봇(100)의 상태 정보 및 로봇(100)이 주행하는 환경의 환경 정보에 기반하여, 로봇(100)이 이동 계획을 따르면서 환경에서의 장애물을 회피하도록 하는, 구동부(108)를 위한 제어 명령을 생성할 수 있다.
따라서, 로봇 제어 시스템(120)으로부터의 제어 명령에 따라, 로봇(100)은 이동 계획을 따라 주행하면서, 장애물을 회피할 수 있도록 액추에이터(482) 및 모터(484)가 적절하게 제어될 수 있다.
한편, 로봇 제어부(430)는 제어 명령을 생성함에 있어서 로봇(100)의 역학(dynamics) 정보를 더 고려할 수 있다. 역학 정보는 전술한 레퍼런스 정보의 일 예일 수 있다.
또한, 로봇 제어부(430)는 제어 명령을 생성함에 있어서 로봇(100) 제어의 실시간성을 보장하기 위해, 지연(예컨대, 로봇 제어 시스템(120)과 로봇(100) 간의 무선 통신에 있어서의 지연)을 고려하여 제어 명령을 보정할 수 있다.
실시예를 통해서는, 서버인 로봇 제어 시스템(120)으로부터의 원격 제어를 통해, 로봇(100) 측에서의 복잡한 연산의 수행 없이, 로봇(100)의 자율 주행이 효과적으로 제어될 수 있다. 한편, 프로세서(320)는 로봇(100)의 자율 주행을 통한 서비스 제공을 위한 도시되지 않은 구성들을 더 포함할 수 있다.
프로세서(320)는 도시되지는 않았으나, 맵 생성 모듈, 로컬리제이션 처리 모듈, 경로 계획 처리 모듈 및 서비스 운영 모듈을 포함할 수 있다.
맵 생성 모듈은 공간 내부에서 자율 주행하는 (도시되지 않은) 맵핑 로봇이 목표 시설물(예컨대, 공간의 내부)에 대해 생성한 센싱 데이터를 이용하여 목표 시설물의 실내 지도를 생성하기 위한 구성요소일 수 있다. 이 때, 로컬리제이션 처리 모듈은 로봇(100)으로부터의 센싱 데이터와 맵 생성 모듈을 통해 생성된 목표 시설물의 실내 지도를 이용하여 목표 시설물 내부에서의 로봇(100)의 위치를 결정할 수 있다. 로컬리제이션 처리 모듈은 전술한 로봇 상태 및 환경 인식 처리부(420)에 포함될 수 있다.
경로 계획 처리 모듈은 상술한 로봇으로부터 수신된 센싱 데이터와 생성된 실내 지도를 이용하여 로봇(100)의 실내 자율 주행을 제어하기 위한 제어 신호를 생성할 수 있다. 경로 계획 처리 모듈은 전술한 로봇 제어부(430) 또는 주행 계획부(440)에 포함될 수 있다. 예컨대, 경로 계획 처리 모듈은 로봇(100)의 경로(즉, 경로 데이터)를 생성할 수 있다. 생성된 경로(경로 데이터)는 해당 경로를 따르는 로봇(100)의 주행을 위해 로봇(100)에 대해 설정될 수 있다. 로봇(100)이 주행하도록 설정되는 경로는 로봇 제어부(430)가 로봇(100)을 위한 명령을 생성하기 위해 사용하는 이동 계획에 포함될 수 있다.
프로세서(320)의 서비스 운영 모듈은 로봇(100)이 공간 내에서 제공하는 서비스를 제어하기 위한 기능을 포함할 수 있다. 예를 들어, 로봇 제어 시스템(120) 또는 공간을 운영하는 서비스 제공자는 로봇(100)의 이용자나 제작자에게 로봇 제어 시스템(120)이 제공하는 서비스(예컨대, 클라우드 서비스)를 위한 IDE(Integrated Development Environment)를 제공할 수 있다. 이 때, 로봇(100)의 이용자나 제작자는 로봇(100)이 공간 내에서 제공하는 서비스를 제어하기 위한 소프트웨어를 IDE를 통해 제작하여 로봇 제어 시스템(120)에 등록할 수 있다. 이 경우, 서비스 운영 모듈은 해당 로봇(100)과 연관하여 등록된 소프트웨어를 이용하여 로봇(100)이 제공하는 서비스를 제어할 수 있다. 구체적인 예로, 로봇(100)이 사용자가 요청한 물건(예컨대, 음식물 또는 택배물)을 해당 사용자의 위치로 전달하는 서비스를 제공한다고 가정하면, 로봇 제어 시스템(120)은 로봇(100)의 실내 자율 주행을 제어하여 로봇(100)이 해당 사용자의 위치로 이동하도록 제어할 뿐만 아니라, 목적 위치에 도착한 경우 사용자에게 물건을 전달하고, 사용자 응대 음성을 출력하는 일련의 서비스를 로봇(100)이 제공하도록 관련된 명령을 로봇(100)에게 전달할 수 있다. 로봇 제어부(430)는 서비스 운영 모듈을 통해서 구동부(108)를 위한 제어 명령(즉, 서비스와 관련된 작업을 처리하기 위한 제어 명령)을 생성함에 있어서 참조하는 레퍼런스 정보를 획득할 수 있다.
로봇 제어 시스템(120)의 로봇(100)의 제어를 위한 보다 상세한 동작에 대해서는 후술될 도 5 내지 도 10을 참조하여 더 자세하게 설명된다.
이상 도 1 내지 도 3을 참조하여 전술된 기술적 특징에 대한 설명은, 도 4에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
후술될 상세한 설명에서, 로봇 제어 시스템(120) 및 로봇(100)의 구성들에 의해 수행되는 동작은 설명의 편의상 로봇 제어 시스템(120) 및 로봇(100)에 의해 수행되는 것으로 설명될 수도 있다.
도 5는 일 실시예에 따른, 로봇을 제어하는 방법을 나타내는 흐름도이다.
단계(510)에서, 로봇 제어 시스템(120)은 로봇(100)으로부터 미가공 데이터를 수신할 수 있다. 미가공 데이터는 로봇(100)의 센서부(106)에 의해 획득된 로우(raw) 센싱 데이터를 포함할 수 있다. 예컨대, 로우 센싱 데이터는 센서부(106)가 포함하는 센서들의 각각 및 카메라로부터 수집 또는 획득된 데이터로서, 전처리 등을 통해 가공되지 않은 데이터일 수 있다.
또는, 로우 센싱 데이터는 센서부(106)로부터 최초로 수집된 센싱 데이터가 로봇(100) 측에서 최소한의 전처리 또는 보정 처리만이 수행되어 획득된 데이터일 수 있다. 말하자면, 로우 센싱 데이터는 센서부(106)로부터 최초로 수집된 센싱 데이터가 일차적으로 전처리된 것일 수 있다. 일례로, 이러한 일차적인 전처리는 센싱 데이터로부터의 최소한의 노이즈 제거 또는 (센싱 데이터에 해당하는) 이미지의 크롭핑 등이거나, 단지 센싱 데이터의 무선 통신부(102)를 통한 송신을 위한 포맷으로의 가공일 수 있다.
따라서, 로봇(100) 측에는 로우 센싱 데이터를 가공 또는 전처리하기 위한 구성이 별도로 마련될 필요가 없으며, 또는, 최소한의 전처리를 위한 구성만이 마련될 수 있다.
단계(520)에서, 로봇 제어 시스템(120)은 로봇(100)으로부터 수신된 미가공 데이터에 기반하여, 로봇(100)의 구동부(108)를 제어하기 위한 제어 명령을 생성할 수 있다.
단계(530)에서, 로봇 제어 시스템(120)은 생성된 제어 명령을 로봇(100)으로 송신할 수 있다.
로봇 제어 시스템(120)에 의해 생성되는 로봇(100)으로 송신되는 제어 명령은 로봇(100)의 구동부(108)를 (로봇(100)으로부터의 센싱 데이터를 포함하는 미가공 데이터에 기반하여) 피드백 제어하기 위한 것일 수 있다. 즉, 제어 명령은 구동부(108)가 포함하는 액추에이터 및 모터 중 적어도 하나를 피드백 제어하기 위한 명령을 포함할 수 있다.
제어 명령은 구동부(108)로 입력되어, 구동부(108)를 제어하기 위한 저수준(low-level) 제어 명령을 포함할 수 있다. 말하자면, 로봇 제어 시스템(120)은 구동부(108)를 제어하기 위한 제어 명령으로서 추상화된 고수준(high-level)의 명령을 생성하는 것이 아니라, 구동부의 모터 및/또는 액추에이터를 (저수준으로) 직접 제어할 수 있도록 하는 저수준 제어 명령을 생성할 수 있다.
일례로, 제어 명령은 구동부(108)가 포함하는 액추에이터의 속도, 위치 및 토크 중 적어도 하나를 제어하기 위한 명령을 포함할 수 있다. 또는/추가적으로, 제어 명령은 구동부(108)가 포함하는 모터의 속도 및 토크 중 적어도 하나를 제어하기 위한 명령을 포함할 수 있다.
전술한 단계(510)에서의 로봇(100)으로부터의 미가공 데이터의 수신과, 단계(530)에서의 로봇(100)으로의 제어 명령의 송신은 로봇(100)의 무선 통신부(102)와 로봇 제어 시스템(120)의 무선 통신부(310) 간의 통신에 따라 수행될 수 있다.
따라서, 실시예에서는, 로봇(100)의 제어를 위한 제어 루프를 구현함에 있어서 로봇(100)을 제어하기 위한 저수준의 제어 명령을 생성하는 컨트롤러를 로봇(100)의 원격지인 로봇 제어 시스템(120)에 배치하고 무선 통신을 제어 루프에 추가시킴으로써, 저수준 제어 명령을 생성하기 위한 대부분의 연산이 (로봇(100)이 아니라) 로봇 제어 시스템(120) 측에서 수행될 수 있도록 할 수 있다. 즉, 실시예에서는 센서부(106) - 컨트롤러 - 구동부(108)로 이루어지는 제어 루프가 로봇(100) 외부에서 구현될 수 있다.
실시예에서는, 로봇(100)의 로컬리제이션, 센싱 데이터 퓨전, 이미지 처리 및 (오브젝트) 인식, 기타 센싱 데이터 처리(환경 정보 추출 및 로봇의 상태(위치 포함) 결정을 위한 처리)가 로봇 제어 시스템(120) 측에서 수행될 수 있다. 또한, 계획 프로세스 - 지도, 로봇(100)의 정보, (서비스와 관련된) 작업 정보 등에 기반한 이동 계획 수립 -과, 제어 프로세스 - 처리된 센싱 데이터와 이동 계획에 기반한 제어 명령의 생성 -이 모두 로봇 제어 시스템(120) 측에서 수행될 수 있다. 실시예를 통해서는 저수준의 제어 명령을 통해 구동부(108)의 종류에 따라 속도 제어, 위치 제어, 토크 제어 등이 다양하게 이루어질 수 있다.
로봇(100)을 제어하기 위한 저수준의 제어 명령을 생성하는 보다 구체적인 방법에 대해서는 후술될 도 6을 참조하여 더 자세하게 설명한다.
한편, 로봇(100)의 입장에서는, 제어 명령이 소정의 제1 시간 내에 로봇(100)에 수신되지 않거나, 제어 명령이 소정의 제2 시간 이상 로봇(100)에 대해 송신되지 않는 경우, 로봇(100)은 대기 모드로 전환될 수 있다. 상기 제1 시간과 제2 시간은 동일할 수도 있으며, 서로 상이하게 설정될 수도 있으며, 각각 로봇 제어 시스템(120) 또는 로봇(100)의 관리자에 의해 설정될 수 있다. 또는, 로봇(100)으로부터 소정의 거리 이내에서 오브젝트가 검출되는 경우, 로봇(100)은 대기 모드로 전환될 수 있다. 이 때, 로봇(100)은 로봇 제어 시스템(120)으로부터의 제어 명령을 무시하고(즉, 제어 명령과 관계 없이) 대기 모드로 전환될 수 있다.
이와 같은 로봇(100)의 동작에 따라, 로봇(100) 및 로봇(100) 주변의 최소한의 안전이 확보될 수 있다. 즉, 로봇(100) 및 로봇(100) 주변의 안전을 도모하기 위해, 로봇(100)은 주기적으로(또는 일정 시간 이상) 제어 명령이 수신되지 않는 경우에는, 작동을 정지(또는 대기 모드로 전환)할 수 있다.
예컨대, 로봇(100)에 대해 허용 지연 시간 범위 이상 제어 명령이 수신되지 않으면, 로봇(100)은 작동을 정지할 수 있다.
다른 예로서, 로봇(100)이 포함하고 있는 센서부(106)의 센서(예컨대, 거리 센서)에서, 소정의 거리 내에 오브젝트가 검출되면(오브젝트의 센싱이 검지)될 경우 로봇(100)은 제어 명령과는 관계 없이 선제적으로 작동을 정지할 수 있다. 이 때, 로봇(100)의 제어부(104)는 소정의 거리 내에 존재하는 오브젝트를 검출하기 위한 최소한의 구성(필터 등)을 포함하게 될 수 있다.
상기와 같이 실시예에서는, 로봇 제어 시스템(120)을 통해 로봇(100)을 제어함에 있어서 로봇(100) 및 로봇(100) 주변의 최소한의 안전이 담보될 수 있다.
이상 도 1 내지 도 4를 참조하여 전술된 기술적 특징에 대한 설명은, 도 5에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 6은 일 예에 따른, 로봇 제어 시스템 측에서 로봇의 구동부를 제어하기 위한 제어 명령을 생성하는 방법을 나타내는 흐름도이다.
단계(610)에서, 로봇 제어 시스템(120)은 로봇(100)으로부터 수신된 로우 센싱 데이터를 전처리할 수 있다. 도 4를 참조하여 전술한 전처리부(410)가 이러한 로우 센싱 데이터의 전처리를 수행할 수 있다.
예컨대, 로우 센싱 데이터는 센서부(106)의 카메라에 의해 획득된 이미지 또는 센서부의 복수의 센서들(일례로, 거리 센서들)에 의해 획득된 다수의 센싱 데이터를 포함할 수 있다. 로우 센싱 데이터를 위한 전처리는, 이미지 내에서 오브젝트의 인식이 가능하도록 리파인(refine) 처리를 수행하는 작업을 포함할 수 있다. 일례로, 이미지의 전처리는 이미지로부터 장애물, 사람, 로봇 등과 같은 오브젝트가 인식 가능하도록 이미지를 개선하는 작업을 포함할 수 있다. 또는, 로우 센싱 데이터를 위한 전처리는 로봇(100)의 상태(예컨대, 위치, 자세, 동작 상태 등) 또는 로봇(100)이 주행하는 환경의 상태(예컨대, 주변 오브젝트의 위치, 주변의 오브젝트 분포 상황 등)를 결정하기 위해 다수의 센싱 데이터를 퓨전(fusion)(즉, 다수의 센싱 데이터를 결합, 가공 및 종합)하는 것을 포함할 수 있다.
전처리부(410)는 수신된 로우 센싱 데이터를 필터링하여 노이즈 또는 아웃라이어를 제거하는 작업을 통해 로우 센싱 데이터를 전처리할 수 있다.
또한, 전처리부(410)는 센싱 데이터가 포함하는 센싱 데이터의 시간 관련 메타데이터(예컨대, 타임스탬프(timestamp), 라운드-트립 시간(round-trip time) 등)에 기반하여, (로봇(100)의 지난 상태 정보 및 센싱 데이터 또는 상태 정보의 히스토리를 사용하여) 시간 기반의 센싱 데이터를 보정할 수 있다. 또한, 전처리부(410)는 센싱 데이터에 대해 무선 통신부(310)와 무선 통신부(102) 간의 무선 통신에 의해 발생하는 지연(latency)을 보상하도록 하는 처리를 수행할 수 있다.
단계(620)에서, 로봇 제어 시스템(120)은 로우 센싱 데이터에 기반하여 로봇(100)의 상태 정보 및 로봇(100)이 주행하는 환경의 환경 정보 중 적어도 하나의 정보를 획득할 수 있다. 도 4를 참조하여 전술한 로봇 상태 및 환경 인식 처리부(420)가 단계(620)을 수행할 수 있다. 상태 정보 및/또는 환경 정보의 획득을 위해 사용되는 로우 센싱 데이터는 단계(610)에 따라 전처리된 로우 센싱 데이터를 나타낼 수 있다. 로봇 상태 및 환경 인식 처리부(420)는 이러한 로봇(100)으로부터의 센싱 데이터에 기반하여 로봇(100)의 실시간의(또는 거의 실시간의) 상태 정보 및/또는 환경 정보를 획득할 수 있다.
로봇 상태 및 환경 인식 처리부(420)는 센서 퓨전(즉, 다수의 센서들로부터 수집된 센싱 데이터들의 퓨전)을 이용하여 로봇(100)의 주변의 로컬 정보를 작성하는 역할을 담당할 수 있다.
로봇(100)의 상태 정보는 예컨대, 로봇(100)(또는 구동부(108))의 위치, 자세 및 동작 상태(속도, 토크 등) 중 적어도 하나를 포함할 수 있다. 환경 정보는 로봇(100)이 주행하는 환경과 관련하여, 예컨대, 로봇(100)의 주변 오브젝트의 위치 및 주변의 오브젝트 분포 상황 중 적어도 하나를 포함할 수 있다.
단계(622)에서처럼, 로봇 상태 및 환경 인식 처리부(420)는 로봇(100)으로부터의 센싱 데이터에 기반하여, 로봇(100)의 주변의 로컬 맵을 생성하는 것 및/또는 (카메라 또는 거리 센서로부터의) 센싱 데이터에 기반하여, 로봇(100)의 주변의 오브젝트를 인식하는 것을 수행할 수 있다. 로컬 맵의 생성에 있어서, 로봇 상태 및 환경 인식 처리부(420)는 로봇(100)이 주행하는 경로 또는 이동 계획(motion plan)을 레퍼런스 데이터로서 더 사용할 수 있다.
로봇 상태 및 환경 인식 처리부(420)는 생성된 로컬 맵 및/또는 오브젝트의 인식 결과 중 적어도 하나에 기반하여, 상태 정보 및/또는 환경 정보를 획득할 수 있다.
단계(630)에서, 로봇 제어 시스템(120)은 단계(620)에서 획득된 정보에 기반하여 구동부(108)를 위한 제어 명령을 생성할 수 있다. 도 4를 참조하여 전술한 로봇 제어부(430)가 단계(630)을 수행할 수 있다. 로봇 제어부(430)는 로봇(100)의 상태 정보 및 환경 정보에 기반하여, 로봇(100)의 구동부(108)를 적절하게 제어하기 위한 저수준 제어 명령을 생성할 수 있다.
아래에서, 로봇(100)의 자율 주행을 위해 로봇(100)의 이동을 제어하기 위한 제어 명령을 생성하는 경우에 대해 더 자세하게 설명한다.
로봇 제어부(430)는 로봇(100)과 연관된 이동 계획(motion plan), 로봇(100) 상태 정보 및 환경 정보에 기반하여, 로봇(100)이 이동 계획을 따르면서 환경에서 식별되는 장애물을 회피하도록 하는 구동부(108)를 위한 제어 명령을 생성할 수 있다.
예컨대, 상기 이동 계획은 로봇(100)이 주행해야 하는 경로에 관한 정보를 포함할 수 있다. 로봇 제어부(430)는 주행 계획부(440)로부터 이러한 이동 계획을 획득할 수 있다. 주행 계획부(440)는 전역 주행 계획부로서, 로봇(100)을 위한 전역 경로 계획을 작성하는 역할을 하며, 공간에 대해 구축된 노드 맵을 활용하여 경로를 작성할 수도 있다. 즉, 로봇 제어부(430)는 제어 명령을 생성함에 있어서, 로봇(100)이 주행할 경로를 포함하는 경로(이동) 계획을 참조할 수 있다. 상기 상태 정보는 로봇(100)의 위치를 포함할 수 있다. 로봇(100)의 위치는 (센싱 데이터가 수집된 시점의) 현재의 위치에 해당할 수 있다. 상기 환경 정보는 로봇(100)의 주변의 오브젝트에 관한 정보를 포함할 수 있다. 오브젝트에 관한 정보는 로봇(100)의 주변의 사람, 로봇 또는 장애물의 위치 정보를 포함할 수 있다.
로봇 제어부(430)는 제어 명령으로서 로봇(100)이 (이동 계획이 나타내는) 경로를 따라 이동하고, (환경 정보 및 상태 정보에 기반하여) 주변의 장애물을 회피하도록, 구동부(108)가 포함하는 모터 및 액추에이터 중 적어도 하나를 피드백 제어하기 위한 명령을 생성할 수 있다.
제어 명령을 통해, 로봇 제어부(430)는 전역 경로 계획으로부터 로봇(100)을 현재의 위치로부터 다음의 경유지(웨이포인트)로 이동시킬 수 있으며, 센싱 데이터로부터 검지된 로봇(100) 주변의 장애물을 회피하도록 로봇을 제어할 수 있다. 또한, 로봇 제어부(430) 로봇(100)이 취해야 할 최적 속도 계획을 수립하고, 로봇(100)의 구동부(108)에 대해 이를 위한 제어 명령을 송신할 수 있다.
한편, 생성된 제어 명령은 저수준 제어 명령으로 로봇(100)의 구동부(108)로 바로 입력되어 구동부(108)를 제어할 수 있다. 또는, 로봇(100) 측에서의 (예컨대, 구동부 드라이버에서의 최소한의) 보정 처리 후 구동부(108)입력될 수 있다. 보정 처리는 로봇 제어 시스템(120)으로부터 수신된 제어 명령을 구동부(108)가 인식할 수 있도록 하는 포맷으로의 가공일 수 있다.
아래에서는, 도 7을 참조하여, 로봇(100)과 로봇 제어 시스템(120) 간의 무선 통신에 기반하여, 로봇 제어 시스템(120)이 저수준 제어 명령을 통해 로봇(100)의 구동부(108)를 제어함으로써, 로봇(100)이 자율 주행하는 방법을 나타낸다.
도시된 것처럼, 로봇(100)의 센서부(106)는 로봇(100)의 상태 파악 및 환경 인식을 위한 센싱 데이터를 수집할 수 있고(①), 수집된 로우 센싱 데이터를 무선 통신을 통해 로봇 제어 시스템(120)으로 송신할 수 있다(②). 로봇 제어 시스템(120)은 로우 센싱 데이터에 기반하여(로우 센싱 데이터를 전처리 한 후), 로봇(100)의 상태를 파악하고 로봇(100)이 주행하는 환경을 인식할 수 있다(③). 로봇 제어 시스템(120)은 로봇(100)의 상태와 환경 정보에 기반하여, 로봇(100)의 경로 계획을 참조하여 구동부(108)를 제어하기 위한 제어 명령을 생성할 수 있다(④). 로봇 제어 시스템(120)은 로봇(100)이 계획된 경로를 주행하도록 하며, 주변의 장애물을 회피할 수 있도록 하는 제어 명령을 생성하여 로봇(100)으로 송신할 수 있다(⑤). 로봇(100)은 수신된 제어 명령에 따라 구동부(108)의 모터 및/또는 액추에이터를 적절하게 제어할 수 있다(⑥). 따라서, 로봇(100)은 서비스의 제공을 위해 경로를 따라 장애물을 회피하면서 자율 주행할 수 있다.
이상 도 1 내지 도 5를 참조하여 전술된 기술적 특징에 대한 설명은, 도 6 및 도 7에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 8은 일 실시예에 따른, 로봇 제어 모델을 생성하여 로봇을 제어하는 방법을 나타내는 흐름도이다.
도 8을 참조하여, 로봇(100)에 대해 로봇과 연관된 로봇 제어 모델을 구축하고, 이를 사용하여 로봇(100)을 제어하는 방법에 대해 설명한다.
단계(810)에서, 로봇 제어 시스템(120)(프로세서(320))은 로봇(100)의 제어가 요청된 때, 해당 로봇(100)에 대해 기 정의된 정보에 기반하여 로봇(100)을 제어하기 위한 로봇 제어 모델을 생성할 수 있다.
단계(820)에서, 로봇 제어 시스템(120)은 생성된 로봇 제어 모델에 기반하여 로봇(100)의 상태를 추정할 수 있다.
단계(830)에서, 로봇 제어 시스템(120)은 로봇 제어 모델에 의해 추정된 로봇(100)의 상태에 기반하여, 로봇(100)의 구동부(108)를 제어하기 위한 제어 명령을 생성할 수 있다. 생성되는 제어 명령은 전술한 저수준 제어 명령을 포함할 수 있다.
즉, 로봇 제어 모델은 로봇(100)의 상태를 추정하고, 추정된 로봇(100)의 상태에 기반하여, 로봇(100)의 구동부를 제어하기 위한 제어 명령을 생성하도록 구성될 수 있다.
여기서, 단계(810 내지 830)에 의해 제어되는 로봇은 도 1 내지 도 7을 참조하여 전술한 로봇(100)과는 상이한 로봇이거나, 도 1 내지 도 7을 참조하여 전술한 로봇(100)에 더하여 추가로 제어되는 로봇일 수 있다.
말하자면, 로봇 제어 시스템(120)은 전술한 피드백 제어 방식으로 로봇(100)을 제어할 수 있을 뿐만 아니라, 로봇(100) 및/또는 다른 로봇에 대해 상기와 같은 로봇 제어 모델을 구축하여 로봇 제어 모델을 통해 로봇(100) 및/또는 다른 로봇을 제어할 수도 있다.
로봇 제어 시스템(120)은 (관제 시스템 또는 외부 서비스 인터페이스) 로부터 새로운 로봇의 제어에 대한 요청을 수신할 수 있고, 이에 따라, 로봇 제어 모델 정보 DB로부터 해당 로봇에 대한 정보를 획득하여 로봇을 제어하기 위한 로봇 제어 모델을 구성(또는 동적으로 생성)할 수 있다.
로봇 제어 모델 정보 DB는 제어가 요청된 로봇에 대해 미리 정의된 정보를 포함하고 있을 수 있다. 예컨대, 로봇 제어 모델을 생성하기 위해 사용되는 (로봇 제어 모델 정보 DB에서 저장 및 관리되고 있는) 로봇에 대해 기 정의된 정보는, 로봇이 포함하는 센서부 및 구동부의 사양 정보, 로봇의 물리적인 형태 정보 및 로봇과 연관된 동역학 모델(dynamics model)을 포함할 수 있다.
로봇 제어 시스템(120)은 상기와 같은 제어가 요청된 로봇에 대해 미리 정의된 정보를 사용하여, 해당 로봇의 상태를 추정하고, 추정된 상태에 따라 로봇을 제어하기 위한 로봇 제어 모델을 생성할 수 있다.
이러한 로봇 제어 모델을 사용하여 로봇을 제어할 경우에는, 전술한 피드백 제어에서 수반되는 로봇과 로봇 제어 시스템(120) 간의 통신에 따른 지연(latency)에 의한 오류를 줄일 수 있다. 즉, 로봇은 구축된 로봇 제어 모델에 의해 추정되는 상태에 기반하여 제어될 수 있다.
한편, 로봇 제어 모델에는 로봇의 실시간의 상태를 추정하기 위해, 가상의 로봇을 인스턴스화 해 둘 수 있고, 이러한 인스턴스화 된 가상 로봇을 실행함에 따라 제어 대상인 로봇의 상태를 추정할 수 있다. 즉, 가상 로봇에 대한 시뮬레이션에 따라 제어 대상인 로봇의 상태가 추정될 수 있다.
한편, 로봇 제어 시스템(120)은 로봇이 주행하는 환경에 대한 모델을 더 생성할 수 있다. 로봇이 주행하는 환경에 대해 기 정의된 정보(예컨대, 과거에 수집된 데이터, 최신의 환경 정보 등)에 기반하여 이러한 환경 모델은 구축될 수 있다.
로봇 제어 시스템(120)은 요청된 로봇에 대응하는 로봇 제어 모델과 해당 로봇이 주행하는 환경에 대응하는 환경 모델에 기반하여, 환경 내에서 로봇을 제어하기 위한 적절한 제어 명령을 생성하여 로봇에게 송신할 수 있다.
이와 같은 로봇 제어 모델을 사용한 로봇의 제어는 로봇이 수행하는 작업이 반복적이거나, 단순한 것과 같이 예측 가능한 경우에 수행될 수 있다. 말하자면, 무인화 창고나 공장 등과 같이 높은 수준의 예측 가능성을 가지는 공간에서, 안정적이며 결정론적인 상황에서 동작하는 로봇을 제어함에 있어서 로봇 제어 모델을 사용한 로봇의 제어가 활용될 수 있다.
이상 도 1 내지 도 7을 참조하여 전술된 기술적 특징에 대한 설명은, 도 8에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
도 9는 일 예에 따른, 로봇 브레인을 생성하여 로봇을 제어하는 방법을 나타내는 흐름도이다.
도 1 내지 도 7을 참조하여 전술된 로봇(100)은 로봇 제어 시스템(120)의 제1 로봇 브레인에 의해 제어될 수 있다. 말하자면, 제1 로봇 브레인에 의해 전술한 단계들(510 내지 530)이 수행될 수 있다.
단계(910)에서, 로봇 제어 시스템(120)(프로세서(320))은 로봇의 추가가 요청되는 경우(즉, 추가적인 로봇의 제어가 요청되는 경우), 해당 로봇을 제어하기 위한 로봇 브레인을 생성할 수 있다. 예컨대, 로봇 제어 시스템(120)(프로세서(320))은 다른 로봇의 제어가 요청된 때, 다른 로봇을 제어하기 위한 (로봇(100)을 제어하기 위한) 제1 로봇 브레인과 논리적으로 구분되는 제2 로봇 브레인을 구성(생성)할 수 있다. 다른 로봇의 제어에 있어서, 다른 로봇으로부터의 미가공 데이터의 수신, 다른 로봇의 구동부를 제어하기 위한 제어 명령의 생성 및 다른 로봇의 구동부를 제어하기 위한 제어 명령의 송신은 제2 로봇 브레인을 통해 수행될 수 있다.
이처럼, 로봇 제어 시스템(120)은 제어가 요청되는 로봇에 대해 해당 로봇을 제어하기 위한 로봇 브레인을 동적으로 생성할 수 있다.
단계(920)에서, 로봇 제어 시스템(120)은 생성된 로봇 브레인을 사용하여, 각 로봇을 개별적으로 제어할 수 있으며, 복수의 로봇들을 제어(조율 제어, 협력 제어 등의 멀티 로봇 제어)할 수 있다.
로봇 브레인은 개별적인 로봇을 제어하기 위해 로봇 제어 시스템(120) 내에 정의되는 제어 단위일 수 있고, 예컨대, 도 4를 참조하여 전술된 전처리부(410), 로봇 상태 및 환경 인식 처리부(420) 및 로봇 제어부(430)를 포함하여 구성될 수 있다.
관련하여, 도 10은, 도 10은 일 예에 따른, 로봇 브레인을 통해 로봇을 제어함에 있어서, 복수의 로봇들을 제어하는 멀티 로봇 제어 방법을 나타낸다.
도 10에서는, 로봇 제어 시스템(120)에 의해 제어되는 로봇들(100-1 내지 100-4)이 도시되었다. 로봇 제어 시스템(120)은 각 로봇에 1:1로 대응하여 로봇 브레인을 생성할 수 있고, 로봇 브레인들(1020)의 각각을 통해 로봇을 개별적으로 제어할 수 있다. 로봇 브레인들(1020)의 각각은 하나의 로봇을 제어하는 레이어에 해당할 수 있다. 하나의 로봇 브레인은 대응하는 로봇 브레인과 논리적으로 연결되어 있을 수 있으며, 브레인리스 로봇의 브레인에 해당할 수 있다.
로봇 브레인들(1020)은 멀티 로봇 관리부(1030)에 의해 관리될 수 있다. 예컨대, 멀티 로봇 관리부(1030)는 관제 시스템(1040)(예컨대, 외부 서비스 인터페이스)으로부터의 요청(예컨대, 서비스 제공 요청 또는 로봇 제어 요청)에 따라, 요청된 서비스를 수행하기 위한 로봇 또는 제어 요청된 로봇을 제어하기 위한 로봇 브레인을 생성할 수 있다. 또는, 멀티 로봇 관리부(1030)는 로봇 브레인들(1020) 중 제어가 불필요하게 되는 로봇에 대응하는 로봇 브레인을 제거할 수 있다.
이처럼, 실시예에서는 복수의 로봇들(100-1 내지 100-4)을 제어하기 위한 로봇 브레인들(1020)이 각 로봇의 제어의 필요성에 따라 동적으로 생성 및 제거될 수 있다.
멀티 로봇 관리부(1030)는 관제 시스템(1040)으로부터의 요청에 따라 추상화된 명령(전역 명령)을 로봇 브레인들(1020) 중 요청된 로봇에 대응하는 로봇 브레인으로 송신할 수 있고, 로봇 브레인은 전역 명령을 분석하여 대응하는 로봇으로부터 수신된 센싱 데이터에 기반하여, 해당 로봇을 제어하기 위한 (저수순) 제어 명령을 생성할 수 있다.
하나의 로봇 브레인은 도시된 것처럼 게이트웨이(1050)를 대응하는 로봇과 1:1로 연결될 수 있다. 이 때, 게이트웨이(1050)는 전술한 통신부(310)를 포함하거나 통신부(310)의 일부가 될 수 있다.
또는, 로봇 브레인들(1020) 각각이 통신부(310) 또는 통신 기능을 가질수 있고, 대응하는 로봇과 바로(또는 직접) 연결될 수 있다. 이러한 경우, 게이트웨이(1050)는 로봇 브레인과 대응하는 로봇 간의 초기 연결에만 관여할 수 있다. 즉, 게이트웨이(1050)는 로봇 브레인과 대응하는 로봇 간의 초기 연결을 관리할 수 있다.
예컨대, 전술한 로봇(100)을 제어하기 위한 (로봇 브레인들(1020) 중 하나인) 제1 로봇 브레인은 로봇(100)과 로봇 제어 시스템(120)의 게이트웨이(1050)를 통해 최초로 연결되되, 최초 연결 후에는, 제1 로봇 브레인의 통신부(통신 기능)를 통해 로봇(100)과 통신할 수 있다. 한편, 전술한 다른 로봇을 제어하기 위한 (로봇 브레인들(1020) 중 하나인) 제2 로봇 브레인은 다른 로봇과 게이트웨이(1050)를 통해 최초로 연결되되, 최초 연결 후에는, 제2 로봇 브레인의 통신부(통신 기능)를 통해 다른 로봇과 통신할 수 있다.
말하자면, 로봇 제어 시스템(120)은 로봇 브레인들(1020) 각각에 대응하여 통신부를 갖도록 구성될 수 있으며, 로봇 브레인들(1020)이 하나의 통신부를 공유하도록 구성될 수도 있다.
한편, 도 10에서는 도 8을 참조하여 전술한 로봇 제어 모델(1010)이 더 도시되었다. 일례로, 로봇 제어 모델(1010)은 로봇(100-1)에 대해 구축될 수 있고, 로봇(100-1)의 구동부를 제어하기 위한 제어 명령을 생성하여, 로봇(100-1)에 송신할 수 있다. 제어 명령은 게이트웨이(1050)를 통해 로봇(100-1)으로 송신될 수 있다. 로봇 제어 모델(1010)은 도시되지 않은 로봇 제어 모델 정보 DB에 의해 구축될 수 있다. 로봇들(100-1 내지 100-4)에 대응하여 로봇 제어 모델(1010) 역시 복수 개가 구축될 수 있고, 복수의 로봇 제어 모델(1010)들은 (로봇 브레인들(1020)과 유사한 방식으로) 멀티 로봇 관리부(1030)에 의해 관리될 수 있다.
멀티 로봇 관리부(1030)에 의한 전역 명령에 따라, 로봇 브레인들(1020)이 로봇들(100-1 내지 100-4)을 제어함으로써, 로봇들(100-1 내지 100-4) 중 적어도 2 이상은 서로 연동 제어(협력 제어)될 수 있다. 예컨대, 2 이상의 로봇들은 서로 협력하여 동작하도록 제어될 수 있고, 서비스를 제공함에 있어 서로 연관된 작업들을 수행하도록 제어될 수 있다.
이처럼, 실시예에서는, 복수의 브레인리스 로봇들(100-1 내지 100-4)이 로봇 제어 시스템(120)에 의해 개별적으로 또는 서로 연동하여 제어될 수 있다.
이상 도 1 내지 도 8을 참조하여 전술된 기술적 특징에 대한 설명은, 도 9 및 도 10에 대해서도 그대로 적용될 수 있으므로 중복되는 설명은 생략한다.
이와 같이, 실시예에서는 로봇(100)을 제어하기 위한 센싱 데이터의 분석 및 처리와, 제어 명령의 생성의 동작이 모두 서버인 로봇 제어 시스템(120)에서 수행될 수 있다. 이에 따라, 로봇(100)의 제어부(104)는 GPU와 같은 복잡한 구성을 포함하지 않게 될 수 있고, 이러한 GPU와 같은 구성은 로봇 제어 시스템(120)의 프로세서(320)에만 탑재될 수 있다.
한편, 실시예에 따라서는, 로봇 제어 시스템(120) 측에서는 로봇(100)을위한 최적 속도 계획이 수립되도록 하되, 해당 계획에 따른 저수준 제어는 로봇에서 수행되도록 로봇(100)과 로봇 제어 시스템(120)을 구현할 수도 있을 것이다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (24)

  1. 로봇 제어 시스템에 의해 수행되는, 로봇을 제어하는 방법에 있어서,
    상기 로봇으로부터 상기 로봇의 센서부에 의해 획득된 로우(raw) 센싱 데이터를 포함하는 미가공 데이터를 수신하는 단계;
    상기 수신된 미가공 데이터와 상기 로봇의 역학(dynamics) 정보와 상기 로봇과 연관된 이동 계획(motion plan)을 포함하는 레퍼런스 정보에 기반하여, 상기 로봇의 구동부를 제어하기 위한 제어 명령을 생성하는 단계; 및
    상기 생성된 제어 명령을 상기 로봇으로 송신하는 단계
    를 포함하고,
    상기 제어 명령은 상기 구동부로 입력되어, 상기 구동부를 제어하기 위한 저수준(low-level) 제어 명령을 포함하고,
    상기 로봇의 센서에 의해 상기 로봇으로부터 소정의 거리 이내에서 오브젝트가 검출되면, 상기 로봇은 수신되는 상기 제어 명령을 무시하고 대기 모드로 전환되도록 제어되고,
    상기 로봇의 무선 통신부와 상기 로봇 제어 시스템의 무선 통신부 간의 통신에 따라, 상기 로봇으로부터 상기 미가공 데이터가 수신되고, 상기 로봇으로 상기 제어 명령이 송신되고,
    상기 제어 명령을 생성하는 단계는,
    상기 수신된 미가공 데이터에 포함된 상기 로우 센싱 데이터에 대한 전처리로서, 상기 로우 센싱 데이터의 시간 관련 메타데이터와 상기 로봇으로부터의 이전의 로우 센싱 데이터에 기반하여 상기 로우 센싱 데이터의 적어도 일부를 보정하고, 상기 로봇의 통신부와 상기 로봇 제어 시스템의 통신부 간의 무선 통신에 의해 발생되는 지연을 보상하는 처리를 수행하여, 상기 제어 명령을 생성하고,
    상기 로봇 제어 시스템은 상기 로봇 및 다른 로봇을 포함하는 멀티 로봇을 제어하도록 구성되고,
    상기 방법은,
    상기 다른 로봇의 제어가 요청된 때, 상기 다른 로봇에 대해 기 정의된 정보에 기반하여 상기 다른 로봇을 제어하기 위해 미리 구축된 로봇 제어 모델에 기반하여 상기 다른 로봇의 상태를 추정하는 단계; 및
    상기 로봇 및 상기 다른 로봇이 주행하는 환경에 대해 기 정의된 정보에 기반하여 미리 구축된 환경 모델과 상기 추정된 다른 로봇의 상태에 기반하여, 상기 다른 로봇의 구동부를 제어하기 위한 다른 제어 명령을 생성하는 단계
    를 더 포함하고,
    상기 제어 명령과 상기 다른 제어 명령은, 상기 멀티 로봇을 제어하기 위한 전역 명령이 수신됨에 따라, 상기 로봇과 상기 다른 로봇이 서로 연관된 작업을 각각 수행하도록 하여 상기 로봇과 상기 다른 로봇이 서로 협력하여 동작하도록 제어하기 위한 명령인, 로봇을 제어하는 방법.
  2. 제1항에 있어서,
    상기 구동부는 액추에이터 및 모터 중 적어도 하나를 포함하고,
    상기 제어 명령은 상기 액추에이터의 속도, 위치 및 토크 중 적어도 하나를 제어하기 위한 명령을 포함하거나,
    상기 모터의 속도 및 토크 중 적어도 하나를 제어하기 위한 명령을 포함하는, 로봇을 제어하는 방법.
  3. 제2항에 있어서,
    상기 제어 명령은 상기 액추에이터 또는 상기 모터를 피드백 제어하기 위한 명령을 포함하는, 로봇을 제어하는 방법.
  4. 삭제
  5. 제1항에 있어서,
    를 포함하고,
    상기 로우 센싱 데이터는 상기 센서부의 카메라에 의해 획득된 이미지 또는 상기 센서부의 복수의 센서들에 의해 획득된 다수의 센싱 데이터를 포함하고,
    상기 전처리는,
    상기 이미지 내에서 오브젝트의 인식이 가능하도록 리파인(refine) 처리를 수행하는 것을 포함하거나,
    상기 로봇의 상태 또는 상기 로봇이 주행하는 환경의 상태를 결정하기 위해 상기 다수의 센싱 데이터를 퓨전(fusion)하는 것을 포함하는, 로봇을 제어하는 방법.
  6. 제1항에 있어서,
    상기 제어 명령을 생성하는 단계는,
    상기 로우 센싱 데이터에 기반하여, 상기 로봇의 상태 정보 및 상기 로봇이 주행하는 환경의 환경 정보 중 적어도 하나의 정보를 획득하는 단계; 및
    상기 획득된 정보에 기반하여 상기 구동부를 제어하기 위한 상기 제어 명령을 생성하는 단계
    를 포함하는, 로봇을 제어하는 방법.
  7. 제6항에 있어서,
    상기 획득하는 단계는,
    i) 상기 로우 센싱 데이터에 기반하여, 상기 로봇의 주변의 로컬 맵을 생성하는 단계 및 ii) 상기 로우 센싱 데이터에 기반하여, 상기 로봇의 주변의 오브젝트를 인식하는 단계
    중 적어도 하나를 포함하고,
    상기 로컬 맵 및 상기 오브젝트의 인식 결과 중 적어도 하나에 기반하여, 상기 적어도 하나의 정보를 획득하는, 로봇을 제어하는 방법.
  8. 제6항에 있어서,
    상기 제어 명령은 상기 로봇의 자율 주행을 위해 상기 로봇의 이동을 제어하기 위한 제어 명령이고,
    상기 제어 명령을 생성하는 단계는,
    상기 로봇과 연관된 상기 이동 계획(motion plan), 상기 상태 정보 및 상기 환경 정보에 기반하여, 상기 로봇이 상기 이동 계획을 따르고 상기 환경에서의 장애물을 회피하도록 하는 상기 구동부를 위한 제어 명령을 생성하는, 로봇을 제어하는 방법.
  9. 제8항에 있어서,
    상기 이동 계획은 상기 로봇이 주행해야 하는 경로에 관한 정보를 포함하고,
    상기 상태 정보는 상기 로봇의 위치를 포함하고,
    상기 환경 정보는 상기 로봇의 주변의 오브젝트에 관한 정보를 포함하고,
    상기 제어 명령은, 상기 로봇이 상기 경로를 따라 이동하고 상기 장애물을 회피하도록, 상기 구동부가 포함하는 모터 및 액추에이터 중 적어도 하나를 피드백 제어하기 위한 명령을 포함하는, 로봇을 제어하는 방법.
  10. 제1항에 있어서,
    상기 로우(raw) 센싱 데이터는 상기 센서부로부터 최초로 수집된 센싱 데이터가 상기 로봇 측에서 일차적으로 전처리된 것이고,
    상기 제어 명령은 상기 로봇 측에서의 보정 처리 후 상기 구동부로 입력되는, 로봇을 제어하는 방법.
  11. 삭제
  12. 제1항에 있어서,
    상기 로봇은, 수신된 제어 명령을 해석하는 프로세스를 수행하지 않고, 상기 로봇 제어 시스템으로부터의 수신되는 상기 저수준 제어 명령을 실행하여 상기 구동부를 제어하는 브레인리스(brainless) 로봇인, 로봇을 제어하는 방법.
  13. 삭제
  14. 제1항에 있어서,
    상기 로봇 제어 모델을 생성하기 위해 사용되는 상기 다른 로봇에 대해 기 정의된 정보는,
    상기 다른 로봇이 포함하는 센서부 및 구동부의 사양 정보, 상기 다른 로봇의 물리적인 형태 정보 및 상기 다른 로봇과 연관된 동역학 모델(dynamics model)을 포함하는, 로봇을 제어하는 방법.
  15. 제1항에 있어서,
    상기 로봇은 상기 로봇 제어 시스템의 제1 로봇 브레인에 의해 제어되고,
    상기 제1 로봇 브레인에 의해, 상기 수신하는 단계, 상기 생성하는 단계, 및 상기 송신하는 단계가 수행되고,
    상기 멀티 로봇에 포함되는 또 다른 로봇의 제어가 요청된 때, 상기 또 다른 로봇을 제어하기 위한 상기 제1 로봇 브레인과 논리적으로 구분되는 제2 로봇 브레인을 구성하는 단계
    를 더 포함하고,
    상기 또 다른 로봇으로부터의 미가공 데이터의 수신, 상기 다른 로봇의 구동부를 제어하기 위한 제어 명령의 생성 및 상기 다른 로봇의 구동부를 제어하기 위한 또 다른 제어 명령의 송신은 상기 제2 로봇 브레인을 통해 수행되고,
    상기 제어 명령, 상기 다른 제어 명령 및 상기 또 다른 제어 명령은, 상기 멀티 로봇을 제어하기 위한 상기 전역 명령이 수신됨에 따라, 상기 로봇, 상기 다른 로봇 및 상기 또 다른 로봇이 서로 연관된 작업을 각각 수행하도록 하여 상기 로봇, 상기 다른 로봇 및 상기 또 다른 로봇이 서로 협력하여 동작하도록 제어하기 위한 명령인, 로봇을 제어하는 방법.
  16. 제15항에 있어서,
    상기 제1 로봇 브레인은 상기 로봇과 상기 로봇 제어 시스템의 게이트웨이를 통해 최초로 연결되되, 최초 연결 후에는, 상기 제1 로봇 브레인의 통신부를 통해 상기 로봇과 통신하고,
    상기 제2 로봇 브레인은 상기 또 다른 로봇과 상기 게이트웨이를 통해 최초로 연결되되, 최초 연결 후에는, 상기 제2 로봇 브레인의 통신부를 통해 상기 다른 로봇과 통신하는, 로봇을 제어하는 방법.
  17. 제1항에 있어서,
    상기 제어 명령이 소정의 제1 시간 내에 상기 로봇에 수신되지 않거나, 상기 제어 명령이 소정의 제2 시간 이상 상기 로봇에 대해 송신되지 않으면,
    상기 로봇은 대기 모드로 전환되는, 로봇을 제어하는 방법.
  18. 삭제
  19. 로봇을 제어하는 로봇 제어 시스템에 있어서,
    무선 통신부; 및
    컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 무선 통신부와 상기 로봇의 무선 통신부 간의 통신에 따라, 상기 로봇으로부터 상기 로봇의 센서부에 의해 획득된 로우(raw) 센싱 데이터를 포함하는 미가공 데이터를 수신하고,
    상기 수신된 미가공 데이터와 상기 로봇의 역학(dynamics) 정보와 상기 로봇과 연관된 이동 계획(motion plan)을 포함하는 레퍼런스 정보에 기반하여, 상기 로봇의 구동부를 제어하기 위한 제어 명령을 생성하고,
    상기 무선 통신부와 상기 로봇의 무선 통신부 간의 통신에 따라, 상기 생성된 제어 명령을 상기 로봇으로 송신하고,
    상기 제어 명령은 상기 구동부로 입력되어, 상기 구동부를 제어하기 위한 저수준(low-level) 제어 명령을 포함하고,
    상기 로봇의 센서에 의해 상기 로봇으로부터 소정의 거리 이내에서 오브젝트가 검출되면, 상기 로봇은 수신되는 상기 제어 명령을 무시하고 대기 모드로 전환되도록 제어되고,
    상기 적어도 하나의 프로세서는,
    상기 수신된 미가공 데이터에 포함된 상기 로우 센싱 데이터를 전처리하는 상기 적어도 하나의 프로세서의 전처리부에 의해 수행되는 전처리로서, 상기 로우 센싱 데이터의 시간 관련 메타데이터와 상기 로봇으로부터의 이전의 로우 센싱 데이터에 기반하여 상기 로우 센싱 데이터의 적어도 일부를 보정하고, 상기 로봇의 통신부와 상기 로봇 제어 시스템의 통신부 간의 무선 통신에 의해 발생되는 지연을 보상하는 처리를 수행하여, 상기 제어 명령을 생성하고,
    상기 로봇 제어 시스템은 상기 로봇 및 다른 로봇을 포함하는 멀티 로봇을 제어하도록 구성되고,
    상기 적어도 하나의 프로세서는,
    상기 다른 로봇의 제어가 요청된 때, 상기 다른 로봇에 대해 기 정의된 정보에 기반하여 상기 다른 로봇을 제어하기 위해 미리 구축된 로봇 제어 모델에 기반하여 상기 다른 로봇의 상태를 추정하고,
    상기 로봇 및 상기 다른 로봇이 주행하는 환경에 대해 기 정의된 정보에 기반하여 미리 구축된 환경 모델과 상기 추정된 다른 로봇의 상태에 기반하여, 상기 다른 로봇의 구동부를 제어하기 위한 다른 제어 명령을 생성하고,
    상기 제어 명령과 상기 다른 제어 명령은, 상기 멀티 로봇을 제어하기 위한 전역 명령이 수신됨에 따라, 상기 로봇과 상기 다른 로봇이 서로 연관된 작업을 각각 수행하도록 하여 상기 로봇과 상기 다른 로봇이 서로 협력하여 동작하도록 제어하기 위한 명령인, 로봇 제어 시스템.
  20. 제19항에 있어서,
    상기 적어도 하나의 프로세서는,
    전처리된 상기 로우 센싱 데이터에 기반하여, 상기 로봇의 상태 정보 및 상기 로봇이 주행하는 환경의 환경 정보 중 적어도 하나의 정보를 획득하는 로봇 상태 및 환경 인식 처리부; 및
    상기 획득된 정보에 기반하여 상기 구동부를 제어하기 위한 상기 제어 명령을 생성하는 로봇 제어부
    를 포함하는, 로봇 제어 시스템.
  21. 제20항에 있어서,
    상기 제어 명령은 상기 로봇의 자율 주행을 위해 상기 로봇의 이동을 제어하기 위한 제어 명령이고,
    상기 적어도 하나의 프로세서는,
    상기 로봇과 연관된 상기 이동 계획을 관리하는 주행 계획부
    를 포함하고,
    상기 로봇 제어부는, 상기 로봇과 연관된 상기 이동 계획(motion plan), 상기 상태 정보 및 상기 환경 정보에 기반하여, 상기 로봇이 상기 이동 계획을 따르고 상기 환경에서의 장애물을 회피하도록 하는 상기 구동부를 위한 제어 명령을 생성하는, 로봇 제어 시스템.
  22. 삭제
  23. 제19항에 있어서,
    상기 적어도 하나의 프로세서는,
    제1 로봇 브레인을 포함하고,
    상기 제1 로봇 브레인이 상기 미가공 데이터를 수신하고, 상기 제어 명령을 생성하고, 상기 제어 명령을 상기 로봇으로 송신하도록 구성되고,
    상기 적어도 하나의 프로세서는,
    상기 멀티 로봇에 포함되는 또 다른 로봇의 제어가 요청된 때, 상기 또 다른 로봇을 제어하기 위한 상기 제1 로봇 브레인과 논리적으로 구분되는 제2 로봇 브레인을 생성하도록 구성되고,
    상기 또 다른 로봇으로부터의 미가공 데이터의 수신, 상기 다른 로봇의 구동부를 제어하기 위한 제어 명령의 생성 및 상기 다른 로봇의 구동부를 제어하기 위한 또 다른 제어 명령의 송신은 상기 제2 로봇 브레인을 통해 수행되고,
    상기 제어 명령, 상기 다른 제어 명령 및 상기 또 다른 제어 명령은, 상기 멀티 로봇을 제어하기 위한 상기 전역 명령이 수신됨에 따라, 상기 로봇, 상기 다른 로봇 및 상기 또 다른 로봇이 서로 연관된 작업을 각각 수행하도록 하여 상기 로봇, 상기 다른 로봇 및 상기 또 다른 로봇이 서로 협력하여 동작하도록 제어하기 위한 명령인, 로봇 제어 시스템.
  24. 삭제
KR1020210058728A 2021-05-06 2021-05-06 통신 기반 로봇 제어 방법 및 시스템 KR102578127B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210058728A KR102578127B1 (ko) 2021-05-06 2021-05-06 통신 기반 로봇 제어 방법 및 시스템
PCT/KR2022/000145 WO2022234923A1 (ko) 2021-05-06 2022-01-05 통신 기반 로봇 제어 방법 및 시스템과, 로봇이 배치되는 건물
KR1020230119591A KR20230135548A (ko) 2021-05-06 2023-09-08 통신 기반 로봇 제어 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210058728A KR102578127B1 (ko) 2021-05-06 2021-05-06 통신 기반 로봇 제어 방법 및 시스템

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020230119591A Division KR20230135548A (ko) 2021-05-06 2023-09-08 통신 기반 로봇 제어 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20220151460A KR20220151460A (ko) 2022-11-15
KR102578127B1 true KR102578127B1 (ko) 2023-09-13

Family

ID=83932218

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020210058728A KR102578127B1 (ko) 2021-05-06 2021-05-06 통신 기반 로봇 제어 방법 및 시스템
KR1020230119591A KR20230135548A (ko) 2021-05-06 2023-09-08 통신 기반 로봇 제어 방법 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020230119591A KR20230135548A (ko) 2021-05-06 2023-09-08 통신 기반 로봇 제어 방법 및 시스템

Country Status (2)

Country Link
KR (2) KR102578127B1 (ko)
WO (1) WO2022234923A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102569181B1 (ko) * 2022-11-21 2023-08-22 이재형 로봇 운용 체제(ros) 기반 로봇 통합 관리 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100727033B1 (ko) * 2005-12-07 2007-06-12 한국전자통신연구원 네트워크 기반 지능형 서비스 로봇의 비전 처리 장치 및방법과 이를 이용한 시스템
JP2013536095A (ja) * 2010-08-24 2013-09-19 中国科学院深▲しん▼先進技術研究院 クラウドロボットシステムおよびその実現方法
KR101876968B1 (ko) * 2016-10-21 2018-07-12 네이버 주식회사 실내 자율 주행 로봇을 위한 제어 방법 및 시스템

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150075639A (ko) * 2013-12-26 2015-07-06 주식회사 라스테크 협동로봇 제어시스템
US10435015B2 (en) * 2016-09-28 2019-10-08 Baidu Usa Llc System delay corrected control method for autonomous vehicles
KR102283022B1 (ko) * 2019-06-07 2021-07-28 엘지전자 주식회사 외부 영상에 기반한 로봇의 주행 방법과, 이를 구현하는 로봇 및 서버

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100727033B1 (ko) * 2005-12-07 2007-06-12 한국전자통신연구원 네트워크 기반 지능형 서비스 로봇의 비전 처리 장치 및방법과 이를 이용한 시스템
JP2013536095A (ja) * 2010-08-24 2013-09-19 中国科学院深▲しん▼先進技術研究院 クラウドロボットシステムおよびその実現方法
KR101876968B1 (ko) * 2016-10-21 2018-07-12 네이버 주식회사 실내 자율 주행 로봇을 위한 제어 방법 및 시스템

Also Published As

Publication number Publication date
KR20230135548A (ko) 2023-09-25
KR20220151460A (ko) 2022-11-15
WO2022234923A1 (ko) 2022-11-10

Similar Documents

Publication Publication Date Title
US10926410B2 (en) Layered multi-agent coordination
US11288963B2 (en) Autonomous vehicles featuring vehicle intention system
US11262200B2 (en) Boolean satisfiability (SAT) reduction for geometry and kinematics agnostic multi-agent planning
US10296012B2 (en) Pre-computation of kinematically feasible roadmaps
US10974390B2 (en) Autonomous localization and navigation equipment, localization and navigation method, and autonomous localization and navigation system
US11747808B2 (en) Systems and methods for matching an autonomous vehicle to a rider
CN109196435B (zh) 稀疏网络下的多代理协调
KR102096875B1 (ko) 자율 주행 기술을 응용한 3차원 실내 정밀 지도 자동 생성 로봇 및 로봇의 제어 방법
KR20230135548A (ko) 통신 기반 로봇 제어 방법 및 시스템
US11768490B2 (en) System and methods for controlling state transitions using a vehicle controller
KR102112162B1 (ko) 자율 주행 기술을 응용한 3차원 실내 정밀 지도 자동 생성 로봇 및 로봇의 제어 방법
KR102545241B1 (ko) 서비스 어플리케이션과 연계하여 서비스를 제공하는 로봇을 제어하는 방법 및 클라우드 서버
US20190265698A1 (en) Systems and methods for tele-present recovery of self-driving vehicles
US20240066683A1 (en) Method and system for controlling robot configured with plurality of modular robots, and building in which robot is disposed
WO2024039866A1 (en) Real time trajectory planning system with dynamic modelling of component level system latency for self driving vehicles
Dutta Connected Vehicle Platooning: Stability Analysis on an Experimental Vehicle Platform
Gunneström Exploring an extension of the operational design domain of a connected autonomous vehicle using a camera based positioning system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)