KR20120085404A - 로봇 제어 시스템 및 로봇 제어 방법 - Google Patents

로봇 제어 시스템 및 로봇 제어 방법 Download PDF

Info

Publication number
KR20120085404A
KR20120085404A KR1020110006695A KR20110006695A KR20120085404A KR 20120085404 A KR20120085404 A KR 20120085404A KR 1020110006695 A KR1020110006695 A KR 1020110006695A KR 20110006695 A KR20110006695 A KR 20110006695A KR 20120085404 A KR20120085404 A KR 20120085404A
Authority
KR
South Korea
Prior art keywords
module
control
actuator
controller module
controller
Prior art date
Application number
KR1020110006695A
Other languages
English (en)
Other versions
KR101809973B1 (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 KR1020110006695A priority Critical patent/KR101809973B1/ko
Priority to US13/314,802 priority patent/US9227319B2/en
Publication of KR20120085404A publication Critical patent/KR20120085404A/ko
Application granted granted Critical
Publication of KR101809973B1 publication Critical patent/KR101809973B1/ko

Links

Images

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/1602Programme controls characterised by the control system, structure, architecture
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/1605Simulation of manipulator lay-out, design, modelling of manipulator
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1674Programme controls characterised by safety, monitoring, diagnostic
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33275Distributed, decision made by negotiation among executive components, execute it
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33278Cooperation between autonomous modules by receipts, messages, no synchronisation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39251Autonomous distributed control, joint and link is a subsystem, communication intensive
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39252Autonomous distributed control, task distributed into each subsystem, task space
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40304Modular structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Business, Economics & Management (AREA)
  • Automation & Control Theory (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Manipulator (AREA)

Abstract

본 발명은 로봇에 마련된 복수의 액추에이터; 복수의 액추에이터 중 적어도 하나의 액추에이터를 제어하여 로봇의 모션을 수행하는 프로그램 및 식별자를 가지는 복수의 컨트롤러 모듈; 컨트롤러 모듈별 적어도 하나의 액추에이터의 제어권을 등록하고, 적어도 하나의 모션 수행이 요청되면 적어도 하나의 모션 수행이 가능한 컨트롤러 모듈을 검색하는 조정 모듈; 검색된 컨트롤러 모듈의 식별자를 확인하여 검색된 컨트롤러 모듈이 모션 수행을 위한 액추에이터의 제어권을 가진 컨트롤러 모듈인지 판단하고, 모션 수행을 위한 액추에이터의 제어권을 가진 컨트롤러 모듈이면 컨트롤러 모듈의 실행을 제어하여 액추에이터를 구동시키는 추상화 레이어 모듈을 포함한다.
본 발명은 복수 컨트롤러 모듈이 공존하는 환경 하에서 복수 컨트롤러 모듈 간의 제어 충돌을 방지할 수 있다. 이로 인해 로봇의 안전성을 확보할 수 있다. 또한 복수의 컨트롤러 모듈 간의 제어 충돌을 방지할 수 있어 동시에 어려 모션을 취하면서도 안전성을 확보할 수 있고, 로봇의 고장을 방지할 수 있으며, 환경 파괴 및 인간 위해도 방지할 수 있다.

Description

로봇 제어 시스템 및 로봇 제어 방법{Robot controlling system and method for controlling robot}
본 발명은 복수의 프로그램 실행을 위한 로봇 제어 시스템 및 로봇 제어 방법에 관한 것이다.
로봇은 사람과 유사한 관절 체계를 가지고, 이 관절 체계를 이용하여 사람의 손발과 같은 동작을 하는 기계이다.
초기에는 공장의 생산 작업의 자동화, 무인화를 위한 산업용 로봇의 개발이 진행되었으나, 최근에는 사람에게 각종 서비스를 제공하기 위한 서비스용 로봇의 개발이 활발히 진행되고 있다.
이러한 서비스용 로봇은 대부분 사람의 보행을 모방한 보행을 수행하면서 사람에게 서비스를 제공하고, 영상 인식 처리나 음성 인식 처리를 행함으로써 보다 고도의 지적 레벨로 인간과 커뮤니케이션을 수행한다.
로봇은 감정 모델이나 모션 모델, 학습 모델 등과 같이, 동작에 관한 각종 프로그램을 모델화하여 보유하고 있고, 이들 모델에 따라서 사용자 액션 등의 외적 요인에 응답한 모션 계획을 입안(立案)하여, 각 관절 액추에이터의 구동이나 음성 출력 등을 통해 모션 계획을 체현함으로써 자율적인 사고 및 동작 제어를 실현한다.
이러한 로봇은 걸으면서 소리 나는 방향으로 머리를 돌리는 등 한 순간에 여러 모션을 취하기 위해서, 복수의 컨트롤러 모듈을 이용하여 서로 다른 모션을 취하기 위한 프로그램을 각각 실행시킴으로써 동시에 서로 다른 관절을 제어하였다.
하지만 이러한 경우 프로그램 간의 충돌이 발생하였고 프로그램 간의 충돌로 인해 로봇의 고장, 환경 파손, 인간 위해 등 심각한 결과를 초래하였다.
이에 따라 로봇은 한 순간에 하나의 컨트롤러 모듈만 수행되도록 하는 제약을 가하여 여러 컨트롤러 모듈의 제어 명령간 충돌을 방지하였다. 하지만 이러한 경우 한 순간에 복수의 동작을 수행할 수 없는 문제가 있다.
로봇의 액추에이터를 제어하는 복수 컨트롤러 모듈 간의 제어권을 조정하는 로봇 제어 시스템 및 로봇 제어 방법을 제공한다.
컨트롤러 모듈이 공통의 인터페이스를 가지는 로봇 제어 시스템 및 로봇 제어 방법을 제공한다.
일 측면에 따른 로봇 제어 시스템은, 로봇에 마련된 복수의 액추에이터; 복수의 액추에이터 중 적어도 하나의 액추에이터를 제어하여 로봇의 모션을 수행하는 프로그램 및 식별자를 가지는 복수의 컨트롤러 모듈; 컨트롤러 모듈별 적어도 하나의 액추에이터의 제어권을 등록하고, 적어도 하나의 모션 수행이 요청되면 적어도 하나의 모션 수행이 가능한 컨트롤러 모듈을 검색하는 조정 모듈; 검색된 컨트롤러 모듈의 식별자를 확인하여 검색된 컨트롤러 모듈이 모션 수행을 위한 액추에이터의 제어권을 가진 컨트롤러 모듈인지 판단하고, 모션 수행을 위한 액추에이터의 제어권을 가진 컨트롤러 모듈이면 컨트롤러 모듈의 실행을 제어하여 액추에이터를 구동시키는 추상화 레이어 모듈을 포함한다.
로봇 제어 시스템은 로봇의 모션을 요청하는 인터페이스 모듈을 더 포함한다.
조정 모듈은, 컨트롤러 모듈에 모션 수행에 필요한 액추에이터를 질의한다.
컨트롤러 모듈은, 모션 수행이 가능한 액추에이터를 결정하고, 조정 모듈로부터 질의 신호가 수신되면 결정된 액추에이터의 정보를 조정 모듈로 전송한다.
조정 모듈은, 컨트롤러 모듈로부터 질의에 대응하는 액추에이터의 정보가 전송되면 전송된 액추에이터의 가용 여부를 판단하고, 액추에이터가 가용 가능하면 액추에이터의 제어권을 컨트롤러 모듈에게 중개하고, 액추에이터가 가용 불가능하면 컨트롤러 모듈의 실행을 취소시킨다.
컨트롤러 모듈은, 모션 수행이 가능한 액추에이터를 결정하고, 결정된 액추에이터에 대한 제어권을 조정 모듈에게 요청한다.
조정 모듈은, 추상화 레이어 모듈에게 로봇에 마련된 모든 액추에이터에 대한 제어권 등록을 위한 제어 등록권을 요청하고, 추상화 레이어 모듈로부터 제어 등록권 허가 신호가 전송되면 모든 액추에이터에 대한 제어 등록권을 등록한다.
추상화 레이어 모듈은, 조정 모듈로부터 모든 액추에이터의 제어 등록권 요청 신호가 수신되면 이미 제어 등록권을 소유하고 있는 모듈이 있는지 확인하고 제어 등록권을 소유하고 있는 모듈이 비존재하면 제어 등록권을 요청한 조정 모듈에게 모든 액추에이터에 대한 제어 등록권을 허가한다.
로봇 제어 시스템은 일정 주기마다 틱 신호를 발생시키는 타이머 모듈을 더 포함하고, 조정 모듈은, 타이머 모듈의 틱 신호에 대응하여 컨트롤러 모듈의 프로그램 실행을 지시한다.
추상화 레이어 모듈은, 컨트롤러 모듈의 프로그램 실행에 대응하는 제어 명령이 전송되면 컨트롤러 모듈의 액추에이터에 대한 제어권의 소유 여부를 확인하고, 컨트롤러 모듈이 액추에이터의 제어권을 소유하고 있으면 제어 명령을 액추에이터로 전송한다.
추상화 레이어 모듈은, 컨트롤러 모듈이 액추에이터의 제어권을 무소유하고 있으면 액추에이터에 대한 컨트롤러 모듈의 제어 위반 신호를 조정 모듈에게 전송한다.
추상화 레이어 모듈은, 제어 등록권의 등록 및 회수를 지시하는 인터페이스를 가진다.
조정 모듈은, 컨트롤러 모듈별 액추에이터에 대한 제어권 정보를 가지는 컨트롤러 모듈 목록을 관리하고, 추상화 레이어 모듈로부터 제어 위반 신호가 수신되면 컨트롤러 모듈별 적어도 하나의 액추에이터의 제어권이 저장된 컨트롤러 모듈 목록에서 제어권을 위반한 컨트롤러 모듈을 삭제한다.
추상화 레이어 모듈은, 애플리케이션 프로그래밍 인터페이스(API)를 가지고, 컨트롤러 모듈은, 애플리케이션 프로그래밍 인터페이스를 이용하여 추상화 레이어 모듈에게 제어 명령을 전송한다.
복수의 컨트롤러 모듈 및 조정 모듈은, 실행 단위를 각각 갖고, 실행 단위는 스레드, 태스크, 프로세스 중 어느 하나이다.
다른 측면에 따른 로봇 제어 방법은, 로봇에 마련된 복수의 액추에이터 중 적어도 하나의 액추에이터를 제어하여 적어도 하나의 모션을 수행하는 로봇 제어 방법에 있어서, 조정 모듈에 적어도 하나의 모션 수행이 요청되면 복수의 컨트롤러 모듈 중 모션 수행이 가능한 컨트롤러 모듈을 검색하고, 검색된 컨트롤러 모듈의 프로그램 실행에 대응하는 제어 명령을 추상화 레이어 모듈로 전송하고, 추상화 레이어 모듈에서 검색된 컨트롤러 모듈의 식별자를 확인하여 검색된 컨트롤러 모듈이 모션 수행을 위한 액추에이터의 제어권을 소유하고 있는지 판단하고, 검색된 컨트롤러 모듈이 모션 수행을 위한 액추에이터의 제어권을 소유하고 있으면 추상화 레이어 모듈에서 액추에이터로 제어 명령을 전송하여 모션을 수행한다.
로봇 제어 방법은, 조정 모듈에 로봇의 모션 수행이 요청되면 모션 수행을 위한 컨트롤러 모듈을 검색하고, 모션 수행을 위한 컨트롤러 모듈이 비존재하면 모션 수행이 가능한 컨트롤러 모듈을 생성하고, 생성된 컨트롤러 모듈에서 모션 수행을 위한 모션 데이터에 기초하여 모션 수행을 위해 필요한 적어도 하나의 액추에이터를 결정하고, 조정 모듈에서 생성된 컨트롤러 모듈에게 모션 수행에 필요한 액추에이터를 질의하고, 컨트롤러 모듈에서 조정 모듈의 질의 신호에 대응하여 결정된 액추에이터의 정보를 조정 모듈로 전송하고, 조정 모듈에서 결정된 액추에이터가 가용 가능한지 판단하고, 조정 모듈에서 결정된 액추에이터가 가용 가능하다고 판단되면 생성된 컨트롤러 모듈에게 결정된 액추에이터의 제어권을 중개하는 것을 더 포함한다.
로봇 제어 방법은, 조정 모듈에서 추상화 레이어 모듈로 결정된 액추에이터에 대한 제어권을 허가하라는 제어권 요청 신호를 컨트롤러 모듈에게 전송하고, 추상화 레이어 모듈에 제어권 허가 요청 신호가 전송되면 제어권 허가 요청 신호를 전송한 조정 모듈의 식별자를 확인하여 제어 등록권을 소유한 조정 모듈인지 확인하고, 추상화 레이어 모듈에서 제어권 허가 요청 신호를 전송한 조정 모듈이 제어 등록권을 소유한 조정 모듈이라고 판단되면 추상화 레이어 모듈로부터 컨트롤러 모듈에게 결정된 액추에이터의 제어권을 허가하고, 결정된 액추에이터의 제어권이 허가된 컨트롤러 모듈의 프로그램을 실행하여 결정된 액추에이터를 구동시키는 것을 더 포함한다.
추상화 레이어 모듈에서 제어권 허가 요청 신호를 전송한 조정 모듈이 제어 등록권을 소유한 조정 모듈이라고 판단되면 추상화 레이어 모듈에 생성된 컨트롤러 모듈을 결정된 액추에이터의 제어권 소유자로 등록하고, 조정 모듈에 저장된 컨트롤러 모듈 목록에 생성된 컨트롤러 모듈과 결정된 액추에이터를 등록하는 것을 더 포함한다.
조정 모듈에서 결정된 액추에이터의 가용 여부를 판단하는 것은, 액추에이터가 가용 불가능하면 생성된 컨트롤러 모듈을 취소시키는 것을 더 포함한다.
로봇 제어 방법은, 조정 모듈에서 추상화 레이어 모듈에게 로봇에 마련된 모든 액추에이터에 대한 제어권의 등록을 위한 제어 등록권을 요청하고, 추상화 레이어 모듈에 제어 등록권 요청 신호가 수신되면, 추상화 레이어 모듈에 이미 제어 등록권을 소유한 모듈이 존재하는지 확인하고, 제어 등록권을 소유한 모듈이 비존재하면 제어 등록권을 요청한 조정 모듈에 모든 액추에이터에 대한 제어 등록권을 허가하고, 조정 모듈에 추상화 레이어 모듈로부터 제어 등록권 허가 신호가 전송되면 모든 액추에이터의 제어 등록권을 획득하는 것을 더 포함한다.
로봇 제어 방법은 조정 모듈에 타이머 모듈의 틱 신호가 전송되면 조정 모듈이 컨트롤러 모듈이게 프로그램 실행을 지시하는 것을 더 포함한다.
로봇 제어 방법은, 컨트롤러 모듈이 액추에이터의 제어권을 무소유하고 있으면 추상화 레이어 모듈에서 액추에이터에 대한 컨트롤러 모듈의 제어 위반 신호를 발생하고, 추상화 레이어 모듈에서 조정 모듈에게 컨트롤러 모듈의 제어권 회수를 요청하고, 조정 모듈에서 컨트롤러 모듈의 제어권을 회수하는 것을 더 포함한다.
컨트롤러 모듈의 제어권을 회수하는 것은, 조정 모듈에 저장된 컨트롤러 모듈 목록에서 제어권을 위반한 조정 모듈을 삭제하는 것을 포함한다.
검색된 컨트롤러 모듈이 모션 수행을 위한 액추에이터의 제어권을 소유하고 있는지 판단하는 것은, 검색된 컨트롤러 모듈의 실행단위의 식별자를 확인하고, 검색된 컨트롤러 모듈의 실행 단위의 식별자와 추상화 레이어 모듈에 미리 저장된 액추에이터에 대한 제어권을 소유한 컨트롤러 모듈의 실행단위의 식별자가 동일한지 판단하는 것을 포함한다.
일 측면에 따르면 복수 컨트롤러 모듈이 공존하는 환경 하에서 복수 컨트롤러 모듈 간의 제어 충돌을 방지할 수 있다. 이로 인해 로봇의 안전성을 확보할 수 있다.
또한 복수의 컨트롤러 모듈 간의 제어 충돌을 방지할 수 있어 동시에 어려 모션을 취하면서도 안전성을 확보할 수 있고, 로봇의 고장을 방지할 수 있으며, 환경 파괴 및 인간 위해도 방지할 수 있다.
다른 측면에 따르면 조정 모듈에서 컨트롤러 모듈 간의 충돌을 미연에 방지해 줌으로써 프로그램 개발자는 제어 충돌 문제에 대해서는 고민하지 않아도 되고, 또한 자신이 개발하는 프로그램에만 집중하면서 개발할 수 있게 된다.
도 1은 실시예에 따른 로봇의 예시도이다.
도 2는 실시예에 따른 로봇을 제어하기 위한 로봇 제어 시스템의 구성도이다.
도 3은 실시예에 따른 로봇 제어 시스템에 마련된 미들웨어층의 상세 구성도이다.
도 4는 실시예에 따른 로봇 제어 시스템의 제어 등록권을 획득하는 순서도이다.
도 5는 실시예에 따른 로봇 제어 시스템에 마련된 컨트롤러 모듈의 제어권 등록 순서도이다.
도 6은 실시예에 따른 로봇 제어 시스템에 로봇 제어 방법의 순서도이다.
이하에서는 첨부도면을 참조하여 본 발명에 대해 상세히 설명한다.
도 1은 실시예에 따른 로봇의 예시도이다.
도 1에 도시한 바와 같이, 로봇(100)은 머리(110), 목(120), 몸통(130), 팔(140R, 140L), 손(150R, 150L)으로 이루어진 상체와, 복수의 다리(160R, 160L) 및 발(170R, 170L)로 이루어진 하체를 가진다.
좀 더 구체적으로 설명하면, 로봇(100)의 상체는 머리(110)와, 머리(110)의 하부에 목(120)을 통해 연결된 몸통(130)과, 몸통(130)의 상부 양측에 연결된 두 개의 팔(140R, 140L)과, 이 두 개의 팔(140R, 140L)의 말단에 각각 연결된 손(150R, 150L)으로 이루어진다.
로봇(100)의 하체는 상체의 몸통(130) 하부 양측에 연결된 두 개의 다리(160R, 160L)와, 두 개의 다리(160R, 160L) 말단에 각각 연결된 발(170R, 170L)로 이루어진다.
여기서 머리(110), 두 개의 팔(140L, 140R), 두 개의 손(150L, 150R), 두 개의 다리(160L, 160R), 두 개의 발(170L, 170R)은 각각 관절을 통해 일정 수준의 자유도를 갖는다.
이러한 로봇(100)의 상체 및 하체는 커버에 의해 보호된다.
참조 부호에서 "R"과 "L"는 각각 로봇(100)의 우측(Right)과 좌측(Left)을 나타낸다.
머리(110)에는 주위의 영상을 획득하는 카메라(111)와, 사용자의 음성 및 주변의 사운드를 검출하는 마이크로폰(112)이 마련되어 있다.
목(120)은 머리(110)와 몸통(130)을 연결한다. 이러한 목(120)은 복수의 목 관절부로 이루어진다.
목 관절부는 요우 방향(yaw, Z축 회전)의 회전 관절(121), 피치 방향(pitch, Y축 회전)의 회전 관절(122) 및 롤 방향(roll, X축 회전)의 회전 관절(123)을 포함하여 3 자유도를 가진다. 여기서 목 관절부의 회전 관절(121, 122, 123)은 머리 회전용 모터(미도시)와 각각 연결된다.
몸통(130)의 양 측에는 두 개의 팔(140L, 140R)을 연결하는 어깨 관절부(131)가 각각 마련되어 있고, 가슴과 허리 사이에는 가슴이 허리에 대해 회전할 수 있도록 요우(Yaw) 방향의 회전 관절부(132)가 마련되어 있으며, 상체의 포즈를 검출하는 포즈 검출부(133)가 마련되어 있다.
두 개의 팔(140L, 140R)은 상박골부(141), 하박골부(142), 팔꿈치 관절부(143), 팔목 관절부(144)를 각각 가진다.
여기서 각 상박골부(141)는 어깨 관절부(131)를 통해 몸통(130)과 연결되고, 또한 팔꿈치 관절부(143)를 통해 하박골부(142)와 연결되며, 각 하박골부(142)는 팔목 관절부(144)를 통해 손(150R, 150L)과 연결된다.
팔꿈치 관절부(143)는 피치 방향의 회전 관절(143a)과, 요우 방향의 회전 관절(143b)를 포함하여 2 자유도를 가지고, 팔목 관절부(144)는 피치 방향의 회전 관절(144a)과 롤 방향의 회전 관절(144b)을 포함하여 2 자유도를 가진다.
손(150R, 150L)에는 5개의 손가락(151)이 마련되어 있고, 각 손가락(151)에는 모터에 의해 구동되는 다수의 관절(미도시)이 마련되는 것도 가능하다. 이러한 손가락(151)은 팔(140R, 140L)의 움직임에 연동하여 물건을 파지하거나 특정 방향을 가리키는 것과 같은 다양한 동작을 실행한다.
로봇(100)의 두 개의 다리(160R, 160L)는 각각 대퇴골부(161), 하퇴골부(162), 고관절부(163), 무릎 관절부(164), 발목 관절부(165)를 각각 가진다.
각 대퇴골부(161)는 고관절부(163)를 통해 몸통(130)과 연결되고, 또한 무릎 관절부(164)를 통해 하퇴골부(162)와 연결되며, 각 하퇴골부(162)는 발목 관절부(165)를 통해 발(170L, 170R)과 연결된다.
고관절부(163)는 요 방향(yaw, Z축 회전)의 회전 관절(163a)과, 피치 방향(pitch, Y축 회전)의 회전 관절(163b), 롤 방향(roll, X축 회전)의 회전 관절(163c)을 포함하여 3 자유도를 가진다.
무릎 관절부(164)는 피치 방향의 회전 관절(164a)을 포함하여 1 자유도를 가지고, 발목 관절부(165)는 피치 방향의 회전 관절(165a)과 롤 방향의 회전 관절(165b)을 포함하여 2 자유도를 가진다.
이와 같이 두 개의 다리(160L, 160R)는 각각 세 관절부(163, 164, 165)에 대해 6개의 회전 관절이 마련되므로, 두 개의 다리(110L, 110R) 전체에 대해서는 12개의 회전 관절이 마련된다.
그리고 로봇(100)은 각 다리(160L, 160R)와 발(170R, 170L) 사이에 마련되어, 발(170L, 170R)에 가해지는 하중을 검출하는 힘/토크 검출부(Multi-Axis Force and Torque Sensor: 171)를 더 포함한다.
이러한 로봇(100)의 각 관절에는 모터(미도시) 등과 같은 액추에이터가 마련되어 있다. 이에 따라, 각 관절은 모터의 회전에 의해 적절히 회전 운동을 수행함으로써 다양한 모션을 구현한다.
도 2는 실시예에 따른 로봇을 제어하기 위한 로봇 제어 시스템의 구성도이고, 도 3은 실시예에 따른 로봇 제어 시스템에 마련된 미들웨어층의 상세 구성도이다.
도 2에 도시된 바와 같이 로봇 제어 시스템(200)은 하드웨어층(210), 미들웨어층(220) 및 소프트웨어층(230)을 포함한다.
하드웨어층(210)은 로봇(100)에 마련된 하드웨어들로 이루어진다.
하드웨어층(210)은 입력부(211), 센서부(212), 액추에이터부(213), 출력부(214), 제어부(215)를 포함한다.
입력부(211)는 사용자로부터 로봇의 모션 제어 명령을 입력받는 사용자 인터페이스(UI: User Interface, 미도시)와, 로봇 주변의 영상을 획득하는 카메라(111)와, 사용자의 음성 및 주변의 사운드를 검출하는 마이크로폰(112) 등을 포함한다.
센서부(212)는 상체의 포즈를 검출하는 포즈 검출부(133)와, 로봇의 착지 여부 및 착지 여부에 대응하는 지지 다리와 스윙 다리를 검출하는 힘/토크 검출부(171)와, 모터의 회전수를 검출하는 인코더(미도시)를 포함한다.
액추에이터부(213)는 복수 개의 액추에이터로 이루어지고, 이러한 복수 개의 액추에이터에는 로봇(100)의 관절(Joint)이 각각 기계적으로 연결되어 있다.
이러한 복수 개의 액추에이터는 각 관절을 구동시키는 모터 등으로 이루어지고, 제어부(215)의 지시에 따라 모터를 구동시킴으로서 사용자의 명령에 대응하는 모션이 수행되도록 한다.
액추에이터부(213)는 제어부(215)의 제어 명령을 수행한 결과를 알려 주는 전기적인 인터페이스를 가지고 있다.
아울러, 액추에이터부(213)는 입력부(211) 및 센서부(212)의 각 검출부를 액추에이터로서 더 포함하는 것도 가능하다. 여기서 입력부(211)의 카메라(111) 등이나 센서부(212)의 각 검출부도 제어가 필요한 경우가 있기 때문이다.
출력부(214)는 사운드를 출력하는 스피커, 광을 출력하는 표시등 등을 포함한다.
제어부(215)는 입력부(211) 및 센서부(212)로부터 전송된 데이터에 기초하여 데이터 연산 처리를 수행함으로써 액추에이터부(213) 및 출력부(214)의 구동을 제어한다. 이러한 제어부(215)는 프로세서(215a), 롬(ROM: 215b) 및 램(RAM: 215c)을 포함한다.
프로세서(215a)는 CPU(Central Processing Unit) 등으로, 소프트웨어의 제어 하에서 애플리케이션과 같은 하드웨어 비의존 프로그램이나, 미들웨어와 같은 하드웨어 의존 프로그램을 실행하여, 로봇(100)의 전체적인 동작을 통괄적으로 제어한다.
프로세서(215a)는 롬(215b)이나 램(215c)과 같은 메모리와 버스(BUS)를 통해 접속되어 있다.
버스(BUS) 상의 각 구성부(215a, 215b, 215c)는 각각에 고유의 어드레스(메모리 어드레스 또는 I/O 어드레스)가 할당되어 있고, 프로세서(215a)는 어드레스 지정함으로써 버스 상의 적어도 하나의 구성부(215b, 215c)와 통신 가능하다. 여기서 버스는 어드레스 버스, 데이터 버스, 컨트롤 버스를 포함한 공통 신호 전송로이다.
롬(ROM: Read Only Memory, 215b)은 불휘발성 메모리로 로봇의 모션이나 사고를 제어하기 위한 어플리케이션이나, 하드웨어 구동용 미들웨어층 등의 프로그램을 저장한다.
램(RAM: Random Access Memory, 215c)은 휘발성 메모리로, 프로세서(215a)의 실행 프로그램을 로드하거나, 그 작업 데이터를 일시적으로 보존한다.
램(215c)은 롬(215b)으로부터 전송되는 어플리케이션이나 미들웨어층의 프로그램을 메모리 공간 상에 맵핑한다.
미들웨어층(220)은 로봇의 모션을 수행하기 위한 프로그램 모듈로 이루어진다. 이러한 미들웨어층(220)은 인터페이스 모듈(221), 조정 모듈(222), 컨트롤러 모듈(223), 추상화 레이어 모듈(224), 타이머 모듈(225)을 포함한다.
인터페이스 모듈(221)은 외부의 모션 태스크 클라이언트(motion task client, 미도시)로부터 적어도 하나의 모션을 수행하라는 요청을 수신하고, 모션 진행 과정을 피드백한다.
여기서 모션은 외부 프로그램 모듈의 요청에 의해 로봇이 취하게 되는 움직임으로, 모션은 다양한 파라미터에 의해 표현 가능하다.
아울러 모션 태스크 클라이언트(motion task client, 미도시)는 미들웨어층(220)의 인터페이스 모듈(221)에 적어도 하나의 모션을 요청하는 것으로, 모션 태스크 클라이언트는 외부의 프로그램 모듈 또는 입력부(211)인 사용자 인터페이스(UI: User Interface)이다.
조정 모듈(222)은 모션 태스크 클라이언트(미도시)에서 요청된 모션이 수행되도록 컨트롤러 모듈(223)의 실행을 제어한다.
조정 모듈(222)은 모션 태스크 클라이언트(미도시)로부터 적어도 하나의 모션 수행 신호가 전송되면, 전송된 모션 수행을 위한 컨트롤러 모듈(223)을 선택하고, 선택된 컨트롤러 모듈(223)에게 틱 신호를 전송한다.
이때, 틱 신호는 타이머 모듈(225)로부터 전송된 틱 신호에 대응하여 발생시킨다.
조정 모듈(222)은 모션 수행을 위한 컨트롤러 모듈(223) 선택 시 해당 모션을 수행하기 위한 컨트롤러 모듈이 존재하지 않으면, 해당 모션 수행이 가능한 컨트롤러 모듈을 생성한다.
여기서 해당 모션 수행이 가능한 컨트롤러 모듈을 생성하는 것은, 복수의 컨트롤러 모듈 중 액추에이터의 제어권이 허가되지 않은 컨트롤러 모듈을 대상으로 컨트롤러 모듈을 검색하고, 검색된 컨트롤러 모듈이 해당 모션을 수행 가능 하도록 하는 것이다.
조정 모듈(222)은 해당 모션 수행이 가능한 컨트롤러 모듈(223)을 검색하고 검색된 컨트롤러 모듈(223)을 이루는 프로그램을 생성하고, 해당 모션을 수행하기 위해 필요한 액추에이터가 어느 액추에이터인지 컨트롤러 모듈(223)에게 질의하고, 컨트롤러 모듈(223)로부터 질의 결과에 대응하는 액추에이터의 정보가 전송되면 전송된 액추에이터가 가용 가능한지 판단하고, 해당 액추에이터가 가용 불가능하면 해당 액추에이터를 제어하려 하는 컨트롤러 모듈의 제어권 허가를 취소하고, 해당 액추에이터가 가용 가능하면 컨트롤러 모듈(223)에게 해당 액추에이터를 제어하기 위한 제어권을 중개한다.
이때 조정 모듈(222)은 컨트롤러 모듈이 해당 액추에이터의 제어권을 갖도록, 컨트롤러 모듈의 액추에이터에 대한 제어권을 허가하라는 요청 신호를 추상화 레이어 모듈(224)로 전송한다. 아울러 조정 모듈(222)은 컨트롤러 모듈을 식별할 수 있는 식별자(예를 들어 실행 단위의 아이디)를 함께 추상화 레이어 모듈(224)로 전송한다.
조정 모듈(222)은 추상화 레이어 모듈(224)로부터 해당 컨트롤러 모듈의 제어권 허가 신호가 전송되면, 해당 컨트롤러 모듈과 해당 액추에이터의 정보를 컨트롤러 모듈 목록에 등록한다.
조정 모듈(222)은 실행 중인 컨트롤러 모듈 목록을 관리하고, 각 컨트롤러 모듈(223)의 실행 및 중단 등의 실행 상태를 모니터링하고, 추상화 레이어 모듈(224)로부터 제어권 위반 신호가 수신되면 컨트롤러 모듈 목록에서 제어권을 위반한 컨트롤러 모듈(223)을 삭제한다.
여기서 컨트롤러 모듈 목록은, 각 액추에이터에 대한 제어권을 가진 컨트롤러 모듈의 실행 단위의 식별자(ID) 정보를 저장한다.
실행 단위(run unit)는 운영체제(OS: Operating System) 상에서 독립적으로 실행될 수 있는 것으로, 운영체제에 따라 스레드(Thread), 태크스(task) 및 프로세스(Process)가 있다.
조정 모듈(222)은 모션 수행 요청 신호가 전송되면 타이머 모듈(225)의 주기적인 틱 신호에 대응하여 컨트롤러 모듈(223)의 실행을 지시한다.
조정 모듈(222)은 추상화 레이어 모듈(224)에서 제공하는 인터페이스(예를 들어, registerControlRight, releaseControlRigth, registerRegRight, releaseRegRight 등)를 동일한 운영체제(OS) 상의 독립적인 실행 단위에서 실행한다.
조정 모듈(222)은 모든 액추에이터에 대한 제어 등록권을 갖는다.
이 조정 모듈(222)은 추상화 레이어 모듈(224)에게 모든 액추에이터에 대한 제어 등록권을 요청한 후 추상화 레이어 모듈(224)로부터 제어 등록권 허가 신호가 전송되면 모든 액추에이터에 대한 제어 등록권을 획득하게 된다.
조정 모듈(222)은 초기화 진행 시 추상화 레이어 모듈(224)에게 제어 등록권 요청이 가능하다. 여기서 제어 등록권은 컨트롤러 모듈(223)에게 제어권을 중개 및 컨트롤러 모듈(223)의 제어권을 등록하거나 컨트롤러 모듈(223)의 제어권을 회수할 수 있는 권리이다.
컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)은 적어도 하나의 모션을 해석하여 추상화된 액추에이터에 대한 제어 명령으로 변환해 주는 프로그램이다.
컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)은 복수 개로 이루어지고, 각 컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)은 어느 하나의 모션에 대응하는 프로그램이 마련되어 있다. 이러한 각 컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)은 각각 운영체제(OS: Operating System) 상의 독립적인 실행 단위를 갖고, 각 컨트롤러 모듈의 실행단위는 식별자(ID)를 저장하고 있다.
여기서 실행 단위는 운영 체제에 따라 구분되며, 스레드(Thread), 태스크 및 프로세스 중 어느 하나이다.
복수의 컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)은 조정 모듈(222)로부터 액추에이터의 제어권이 중개되면, 중개된 제어권을 각각 저장한다.
여기서 제어권은 컨트롤러 모듈이 액추에이터를 제어할 수 있는 권리로, 로봇을 원하는 위치로 이동 제어, 원하는 속도로 이동 제어, 센서 캘리브레이션(calibration) 개시 제어, 원하는 토크 또는 힘으로 이동 제어 등이 있다.
컨트롤러 모듈(223)은 조정 모듈(222)로부터 틱 신호가 전송되면 프로그램을 실행하고 프로그램 실행 결과에 대응하는 제어 명령을 애플리케이션 프로그래밍 인터페이스(API)를 이용하여 추상화 레이어 모듈(224)로 전송한다.
여기서 애플리케이션 프로그래밍 인터페이스(API)는 추상화 레이어 모듈(224)에서 제공하는 인터페이스이다.
컨트롤러 모듈(223)은 조정 모듈(222)로부터 필요한 액추에이터가 어느 액추에이터인지에 대한 질의 신호가 전송되면, 필요한 액추에이터를 결정하여 조정 모듈(222)에 전송한다.
즉, 컨트롤러 모듈(223)은 필요한 액추에이터를 결정 시, 인터페이스 모듈(221) 또는 조정 모듈(222)로부터 전송된 모션 데이터에 기초하여 해당 모션을 수행하기 위해 필요한 액추에이터를 결정하고, 조정 모듈(222)의 질의에 대응하여 결정된 액추에이터의 정보를 전송한다.
또한 컨트롤러 모듈(223)은 필요한 액추에이터의 제어권을 조정 모듈(222)에게 직접 요청하는 것도 가능하다.
이러한 컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)은 조정 모듈(222)과의 통신을 위해 정해진 인터페이스에 맞게 구현되어야 한다.
컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)이 만족해야 하는 인터페이스는, 모션 수행을 위해 필요한 액추에이터를 질의하는 getRequiredResources, 타이머 틱(Timer Tick)이 발생했을 때 실행되는 알고리즘인 onTick, 컨트롤러 모듈의 실행 단위의 식별자(ID)를 리턴하는 함수인 getId 등이 있다.
여기서 제어 알고리즘을 수행하는 onTick은 운영체제(OS) 상의 독립적인 실행 단위에서 실행된다.
추상화 레이어 모듈(224)은 로봇 하드웨어 추상화 레이어로, 액추에이터부(213)의 복수 액추에이터 등을 추상화하여 일관된 인터페이스를 통해 사용할 수 있도록 해주는 모듈이다. 즉, 동일 기능을 수행하지만 서로 다른 사양을 가진 액추에이터들이 일관되게 접근할 수 있도록 해준다.
추상화 레이어 모듈(224)은 컨트롤러 모듈(223)로부터 제어 명령이 전송되면 제어 명령을 전송한 컨트롤러 모듈(223)이 제어 대상이 되는 액추에이터에 대한 제어권의 소유자인지 확인한다.
여기서 제어권 소유자인지 확인하는 것은, 제어 명령을 전송한 컨트롤러 모듈(223)의 실행 단위의 식별자와, 조정 모듈(222)에 저장된 액추에이터에 대한 제어권을 가진 컨트롤러 모듈의 실행 단위의 식별자가 동일한지 비교하는 것이다.
운영체제(OS)에서는 현재 코드를 수행하고 있는 실행 단위의 식별자(ID)를 알아낼 수 있는 시스템 호출을 제공하며, 이에 따라 추상화 레이어 모듈(224)은 컨트롤러 모듈의 실행 단위의 식별자(ID) 확인이 가능하다.
추상화 레이어 모듈(224)은 제어 명령을 전송한 컨트롤러 모듈(223)이 제어 대상이 되는 액추에이터에 대한 제어권 소유자이면 제어 명령을 액추에이터가 판독가능 한 저수준의 제어 명령으로 변환하여 액추에이터로 전송한다.
추상화 레이어 모듈(224)은 제어 명령을 전송한 컨트롤러 모듈(223)가 제어 대상이 되는 액추에이터에 대한 제어권 무소유자이면 해당 컨트롤러 모듈의 제어권 위반 신호를 조정 모듈(222)에 전송한다.
이러한 추상화 레이어 모듈(224)은 각 액추에이터에 대한 컨트롤러 모듈의 제어권을 허가하거나, 각 컨트롤러 모듈(223)의 제어권이 회수되도록 하는 인터페이스를 제공한다.
추상화 레이어 모듈(224)이 제공하는 인터페이스는, 제어 등록권을 가진 조정 모듈만 제어권을 중개 및 등록하도록 하는 registerControlRight, 제어 등록권을 가진 조정 모듈만 제어권을 회수하도록 하는 releaseControlRight, 최초 애플리케이션 프로그래밍 인터페이스를 수행하는 조정 모듈이 제어 등록권을 갖도록 하는 registerRegRight, 조정 모듈의 제어 등록권을 회수하는 releaseRegRight 등이 있다.
또한 추상화 레이어 모듈(224)은 애플리케이션 프로그래밍 인터페이스(API: Application Programming Interface)을 가진다.
추상화 레이어 모듈(224)은 조정 모듈(222)로부터 모든 액추에이터에 대한 제어권을 등록하기 위한 제어 등록권 요청 신호가 전송되면, 이미 제어 등록권을 가진 모듈이 존재하는지 확인하고, 이미 제어 등록권을 가진 모듈이 존재하면 제어 등록권 요청을 거절하고, 제어 등록권을 가진 모듈이 비존재하면 제어 등록권을 요청한 조정 모듈(222)에게 제어 등록권 제어 등록권을 허가한다.
여기서 이미 제어 등록권을 가진 모듈이 존재하는지 확인하는 것은, 추상화 레이어 모듈에 제어 등록권이 허가된 모듈의 식별자가 저장되어 있는지 확인하는 것이다.
타이머 모듈(225)은 일정 주기마다 틱 신호(tick signal)를 발생시켜 주는 모듈로, 이 틱 신호를 조정 모듈(222)에 전송한다. 즉 조정 모듈(222)은 틱 신호를 컨트롤러 모듈(223)에 전송함으로써 복수의 컨트롤러 모듈(223)이 틱 신호에 맞추어 동작된다.
아울러 타이머 모듈이 복수의 컨트롤러 모듈에 직접 틱 신호를 보내는 것도 가능하다.
소프트웨어층(230)은 로봇을 동작시키는데 사용되는 복수의 프로그램이 마련되어 있다.
이러한 소프트웨어층(230)은 로봇의 감정을 모델화한 감정 모델과, 본능을 모델화한 본능 모델과, 외부 사상과 로봇이 취하는 모션과의 인과 관계를 순차적으로 기억해 가는 학습 모듈과, 모션 패턴을 모델화한 모션 모델을 가진다. 여기서 모델은 프로그램으로 이루어진다.
소프트웨어층(230)은 미들웨어층(220)과 프로그래밍 인터페이스(Programming Interface)를 통해 통신을 수행한다.
도 4는 실시예에 따른 로봇 제어 시스템에 마련된 조정 모듈이 추상화 레이어 모듈로로부터 제어 등록권을 획득하는 순서도이다.
복수의 컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)이 임의대로 추상화 레이어 모듈(224)을 통해 제어권을 등록하면 각 컨트롤러 모듈의 제어권을 조정할 수 없다.
이에 따라 복수의 컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)이 조정 모듈(222)을 통해서만 제어권을 중개받을 수 있도록 함으로써 복수 컨트롤러 모듈의 프로그램 간의 충돌을 방지한다. 이를 구체적으로 설명하면 다음과 같다.
우선, 조정 모듈(222)은 로봇의 모든 액추에이터에 대한 제어권을 중개 및 등록하기 위한 제어 등록권을 획득하기 위해 추상화 레이어 모듈(224)에게 제어 등록권을 요청한다.
이때, 추상화 레이어 모듈(224)은 조정 모듈(222)로부터 제어 등록권 요청 신호가 수신(301)되면, 제어 등록권을 이미 소유하고 있는 모듈이 존재하고 있는지 확인(302)한다.
다음 제어 등록권을 소유하고 있는 모듈이 비존재하면 제어 등록권을 요청한 조정 모듈(222)에게 제어 등록권 소유자로 허가(303)한다. 이때 조정 모듈의 식별자를 제어 등록권 소유자로 허가한다.
여기서 식별자는 실행 단위의 식별자(ID)로, 실행단위는 운영체제(OS: Operating System) 상에서 독립적으로 실행되는 것으로 운영체제(OS: Operating System)에 따라 태스크(task) 또는 프로세스(Process)로 구분된다.
반면 제어 등록권을 소유하고 있는 모듈이 존재하면 제어 등록권을 요청한 조정 모듈(222)에게 제어 등록권 요청을 거절(304)한다.
도 5는 실시예에 따른 로봇 제어 시스템에 마련된 컨트롤러 모듈의 제어권을 등록하는 순서도이다.
예를 들어, 조정 모듈(222)이 액추에이터 a1, a2, a4, a5, a6, a7, a8에 대한 제어 등록권을 가지고, 조정 모듈(222)에 컨트롤러 모듈별 액추에이터의 제어권을 등록한 컨트롤러 모듈 목록이 저장되어 있다고 가정한다.
이때 컨트롤러 모듈 목록에 제1모션(m1)을 수행하기 위한 제1컨트롤러 모듈(223a)이 액추에이터 a1, a2에 대한 제어권을 가지고 있고, 제2모션(m2)을 수행하기 위한 제2컨트롤러 모듈(223b)이 액추에이터 a3, a4, a5에 대한 제어권을 가지고 있다고 가정한다.
우선, 인터페이스 모듈(221)로부터 복수의 모션(m1, m2, m3) 수행이 요청되면, 인터페이스 모듈(221)은 복수의 모션(m1, m2, m3) 수행 요청 신호를 조정 모듈(222)에게 전송한다.
조정 모듈(222)은 복수의 모션(m1, m2, m3) 수행 요청 신호가 수신(401)되면 복수의 컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n) 중 복수의 모션(m1, m2, m3)을 수행할 수 있는 컨트롤러 모듈을 각각 검색(402)한다.
이때, 제1모션(m1)을 수행하기 위한 제1컨트롤러 모듈(223a)이 검색되고, 또한 제2모션(m2)을 수행하기 위한 제2컨트롤러 모듈(223b)이 검색되나, 조정 모듈(222)에 제3모션(m3)을 수행하기 위한 컨트롤러 모듈은 검색되지 않는다.
즉 복수의 모션(m1, m2, m3) 중 어느 하나의 모션인 제3모션(m3)을 수행하기 위한 컨트롤러 모듈이 존재하지 않으면, 제3모션(m3)을 수행하기 위한 컨트롤러 모듈을 생성(403)한다.
이때 복수의 컨트롤러 모듈(223a, 223b, 223c, ..., 223n) 중 액추에이터의 제어권이 허가되지 않은 컨트롤러 모듈(223c, ..., 223n)을 대상으로 실행 가능한 컨트롤러 모듈을 검색하고, 검색된 컨트롤러 모듈 중 제3모션 수행이 가능한 컨트롤러 모듈을 선택하고, 선택된 컨트롤러 모듈 내에 제3모션 수행이 가능하도록 프로그램을 생성함으로써 제3모션 수행이 가능한 컨트롤러 모듈을 생성한다. 여기서 생성된 컨트롤러 모듈을 제3컨트롤러 모듈(223c)이라고 가정한다.
만약, 제3모션 수행이 가능한 컨트롤러 모듈이 미리 생성되어 있는 경우에는 컨트롤러 모듈 생성 과정을 생략 가능하다.
다음 컨트롤러 모듈(223)은 인터페이스 모듈(221)로부터 구체적인 모션 데이터를 수신(404)한다. 이때 컨트롤러 모듈(223)은 모션 데이터를 조정 모듈(22)로부터 전송받는 것도 가능하다.
다음 컨트롤러 모듈(223)은 모션 데이터 내의 각종 파라미터들을 해석하여 제3모션을 수행하기 위해 필요한 액추에이터를 결정(405)한다.
다음 조정 모듈(222)은 제3모션(m3)을 수행하기 위해 필요한 액추에이터가 어느 액추에이터인지 제3컨트롤러 모듈(223c)에게 질의(406)한다.
이때 제3컨트롤러 모듈(223c)은 조정 모듈(222)의 질의 신호에 따라 결정된 액추에이터의 정보를 조정 모듈(222)에 전송한다.
조정 모듈(222)은 제3컨트롤러 모듈(223c)로부터 결정된 액추에이터의 정보가 전송되면 전송된 액추에이터가 가용 가능한지 판단(407)하고, 해당 액추에이터가 가용 불가능하면 액추에이터를 제어하려 하는 제3컨트롤러 모듈(223c)의 제어권 허가를 취소하고, 해당 액추에이터가 가용 가능하면 제3컨트롤러 모듈(223c)에게 해당 액추에이터를 제어하기 위한 제어권을 중개(408)한다.
예를 들어, 컨트롤러 모듈(223c)에서 결정된 액추에이터가 a1, a7, a8이라고 가정하면, 액추에이터 a1은 제1모션(m1)을 수행하기 위한 액추에이터로, 제1모션(m1)과 제3모션(m3)을 수행하기 위한 액추에이터 a1이 중복되게 된다.
즉, 액추에이터 a1을 제어하여 제1모션(m1)과 제3모션(m3)을 수행하게 되면 제1모션(m1)을 수행하기 위한 제1컨트롤러 모듈(223a)과 제3모션(m3)을 수행하기 위한 제3컨트롤러 모듈(223c) 사이에 충돌이 발생하게 된다.
이로 인해 조정 모듈(222)은 액추에이터 a1을 가용 불가능한 액추에이터로 판단하고 제3컨트롤러 모듈(223c)의 제어권 허가를 취소한다.
반면 컨트롤러 모듈(223c)에서 결정된 액추에이터가 a6, a7, a8이면, 액추에이터 a6, a7, a8은 제1모션(m1) 및 제3모션(m3)을 수행하기 위한 액추에이터가 중복되지 않아 액추에이터 a6, a7, a8은 가용 가능하다.
이로 인해 조정 모듈(222)은 액추에이터 a6, a7, a8을 가용 가능한 액추에이터로 판단하고 제3컨트롤러 모듈(223c)에게 액추에이터 a6, a7, a8을 제어하기 위한 제어권을 중개한다.
아울러, 조정 모듈(222)이 컨트롤러 모듈(223)에게 필요한 액추에이터를 질의하는 것이 아니라, 컨트롤러 모듈(223)이 조정 모듈(222)에게 필요한 액추에이터에 대한 제어권을 요청하는 것도 가능하다.
이 경우 컨트롤러 모듈(223)이 조정 모듈(222)에게 제어권을 요청할 수 있도록, 조정 모듈(222)이 askCtrlRigh와 같은 인터페이스를 제공해 주는 것이 가능하다. 여기서 askCtrlRight()의 인자로는 최소한 컨트롤러 모듈의 실행 단위의 식별자와 필요 액추에이터 목록이 제공되어 조정 모듈(222)이 어느 컨트롤러 모듈(223)에 의해 어느 액추에이터의 제어권이 요청되었는지 알 수 있어야 한다.
다음 조정 모듈(222)은 제3컨트롤러 모듈(223c)이 액추에이터 a6, a7, a8의 제어권을 갖도록, 제3컨트롤러 모듈(223c)에게 액추에이터 a6, a7, a8에 대한 제어권을 허가하라는 요청 신호를 추상화 레이어 모듈(224)로 전송한다.
아울러 조정 모듈(222)은 제3컨트롤러 모듈(223c)을 식별할 수 있는 식별자(예를 들어 실행 단위의 아이디)를 함께 추상화 레이어 모듈(224)로 전송한다.
다음 추상화 레이어 모듈(224)은 조정 모듈(222)로부터 제3컨트롤러 모듈(223c)의 제어권 허가 신호가 전송되면, 제3컨트롤러 모듈(223c)의 제어권 허가 신청을 한 조정 모듈이 제어 등록권 소유자인지 확인(409)한다.
이때 제3컨트롤러 모듈(223c)의 제어권 허가 신청을 한 조정 모듈의 식별자와 추상화 레이어 모듈(224)에 저장된 제어 등록권 소유자의 식별자가 동일한지 비교함으로써 제3컨트롤러 모듈(223c)의 제어권 허가 신청을 한 조정 모듈이 제어 등록권 소유자인지 확인한다.
다음 추상화 레이어 모듈(224)은 제3컨트롤러 모듈(223c)의 제어권 허가 신청을 한 조정 모듈의 식별자가 추상화 레이어 모듈(224)에 저장된 제어 등록권 소유자의 식별자가 동일하면 제3컨트롤러 모듈(223c)의 식별자와 액추에이터 a6, a7, a8에 대한 제어권을 등록(410)한다.
다음, 조정 모듈(222)은 컨트롤러 모듈 목록에 제3컨트롤러 모듈(223c)의 식별자와 액추에이터 a6, a7, a8에 대한 제어권을 등록(411)한다.
이와 같이 복수의 컨트롤러 모듈(223: 223a, 223b, 223c, ..., 223n)은 필요로 하는 액추에이터에 대한 제어권을 요청 하려면 반드시 조정 모듈(222)로부터 중개를 받는다. 이에 따라 조정 모듈(222)은 시스템 전반적인 제어권에 대해 통제할 수 있다. 이 과정은 로봇의 모션 제어 초기화 과정에서 이루어지나, 실행 도중 이루어지는 것도 가능하다.
도 6은 실시예에 따른 로봇 제어 시스템의 로봇 제어 순서도이다.
조정 모듈(222)이 액추에이터 a1, a2, a4, a5, a6, a7, a8에 대한 제어 등록권을 가지고, 조정 모듈(222)에 컨트롤러 모듈별 액추에이터의 제어권을 등록한 컨트롤러 모듈 목록이 저장되어 있다고 가정한다.
이때 컨트롤러 모듈 목록에 제1모션(m1)을 수행하기 위한 제1컨트롤러 모듈(223a)이 액추에이터 a1, a2에 대한 제어권을 가지고 있고, 제2모션(m2)을 수행하기 위한 제2컨트롤러 모듈(223b)이 액추에이터 a3, a4, a5에 대한 제어권을 가지고 있으며 제3모션(m3)을 수행하기 위한 제3컨트롤러 모듈(223c)이 액추에이터 a6, a7에 대한 제어권을 가지고 있고, 제n모션(mn)을 수행하기 위한 제n컨트롤러 모듈(223n)이 액추에이터 a8에 대한 제어권을 가지고 있다고 가정한다.
우선 조정 모듈(222)은 타이모 모듈(225)로부터 틱 신호(tick signal)가 수신(501)되면 제1, 2, 3 모션(m1, m2, m3)을 수행하기 위한 제1, 2, 3컨트롤러 모듈(223a, 223b, 223c)에게 틱 신호를 전송(502)한다.
여기서 컨트롤러 모듈에 틱 신호를 전송하는 예로, 컨트롤러 모듈에 등록된 콜 백(call back) 함수를 호출하여 전송하는 것이 가능하다.
다음 제1, 2, 3컨트롤러 모듈(223a, 223b, 223c)은 제1, 2, 3모션(m1, m2, m3)을 처리하기 위한 프로그램을 각각 실행하고 그 결과를 제어 명령으로 추상화 레이어 모듈(224)에게 각각 전송(503)한다.
이때, 틱 신호를 수신한 컨트롤러 모듈은 프로그램을 자신의 스레드 컨텍스트(thread context) 상에서 실행한다.
자신의 스레드 컨텍스트 상에서 실행하는 예는, 컨트롤러 모듈이 메시지 큐(message queue)를 생성해 두고, 조정 모듈이 메시지 큐를 통해 틱 신호를 전송하는 것이다. 즉, 인터 스레드 커뮤니케이션(inter-thread communication) 방법을 사용한다.
만약 컨트롤러 모듈이 독립적인 프로세스로 작동한다면 다양한 운영체제(OS)에서 지원하는 인터 프로세스 커뮤니케이션(inter-process communication) 또는 인터 태스크 커뮤니케이션(inter-task communication)을 이용하거나 TCP/IP 커뮤니케이션을 이용하여 틱 신호를 전송하고 컨트롤러 모듈은 자신만의 컨텍스트에서 실행한다.
다음 추상화 레이어 모듈(224)은 제1, 2, 3컨트롤러 모듈(223a, 223b, 223c)로부터 제어 명령을 수신한 후 제어 명령을 요청한 제1, 2, 3컨트롤러 모듈(223a, 223b, 223c)의 식별자(ID)를 각각 확인(504)한다.
다음 각 컨트롤러(223a, 223b, 223c)가 각 액추에이터의 제어권 소유자인지 확인(505)한다.
즉, 제어권 소유자인지 확인하는 것은, 제어 명령을 전송한 각 컨트롤러 모듈(223a, 223b, 223c)의 실행 단위의 식별자와, 조정 모듈(222)에 저장된 복수 액추에이터a1 내지 a7에 대한 제어권을 가진 각 컨트롤러 모듈(223a, 223b, 223c)의 실행 단위의 식별자가 동일한지 비교하는 것이다.
이때 제1, 2, 3컨트롤러 모듈(223a, 223b, 223c)의 식별자가 각 액추에이터에 대한 제어권 소유자의 식별자와 동일하면, 추상화 레이어 모듈(224)은 제1, 2, 3컨트롤러 모듈(223a, 223b, 223c)이 전송한 제어 명령을 액추에이터a1 내지 a7이 판독 가능한 저수준의 제어 명령으로 변환하여 액추에이터a1 내지 a7에 전송(506)한다.
반면 각 컨트롤러 모듈(223a, 223b, 223c)의 식별자와 각 액추에이터에 대한 제어권 소유자의 식별자가 동일하지 않으면 제어 권한 위반으로 판단하여 제어 위반 신호를 발생(507)한다.
예를 들어, 제n컨트롤러 모듈(223n)로부터 제어 명령이 전송되되 제n컨트롤러 모듈(223n)로부터 액추에이터 a7, a8을 제어하기 위한 신호가 전송되면 추상화 레이어 모듈(224)은 액추에이터 a7 및 a8에 대한 제어권을 가진 컨트롤러 모듈의 식별자를 확인한다.
이때 추상화 레이어 모듈(224)에 저장된 액추에이터 a7에 대한 제어권을 가진 컨트롤러 모듈은 제3컨트롤러 모듈(223c)이고, 액추에이터 a8에 대한 제어권을 가진 컨트롤러 모듈은 제n컨트롤러 모듈(223n)로, 액추에이터 a7에 대한 제어권을 가진 제3컨트롤러 모듈(223c)과 제어 명령을 전송한 제n컨트롤러 모듈(223n)이 상이함을 알 수 있다. 즉, 제3컨트롤러 모듈(223c)과 제n컨트롤러 모듈(223n)의 식별자가 상이함을 알 수 있다.
여기서 액추에이터 a7은 조정 모듈(222)에서 제n컨트롤러 모듈(223n)에게 제어권을 허가하지 않은 액추에이터로, 제n컨트롤러 모듈(223n)이 허위로 액추에이터 a7에 대한 제어 명령을 전송한 것임을 알 수 있다.
이에 따라 추상화 레이어 모듈(224)은 제n 컨트롤러 모듈(223n)이 제어권을 위반했다는 제어 위반 신호를 발생하고, 조정 모듈(222)에게 제n 컨트롤러 모듈(223n)의 제어권 회수를 요청(508)한다. 이때 제어 위반 신호의 예로서 controlViolated 라는 신호를 발생시킨다.
아울러 신호에 위반한 제n컨트롤러 모듈(223n)의 식별자를 포함시켜 발생시킨다.
그 예로서 이 신호에는 제어 대상이 되었던 액추에이터에 대한 정보가 포함 가능하다. 신호를 발생시키는 방법으로는 일 예로서 call back 함수를 호출하는 방법 등이 있다.
다음 조정 모듈(222)은 controlViolated 신호를 수신하고, 신호에 포함되어 있는 제n컨트롤러 모듈(223n)의 식별자를 키로 하여 컨트롤러 모듈 목록에서 제n컨트롤러 모듈(223n)의 제어권을 회수(509)한다.
아울러 조정 모듈(222)은 추상화 레이어 모듈(224)에게 요청하여 제어권 회수가 가능하다.
다음, 조정 모듈(222)은 제어권을 위반한 제n컨트롤러 모듈(223n)을 컨트롤러 모듈 목록에서 삭제(510)한다. 이렇게 함으로써 다음 주기부터는 제n컨트롤러 모듈(223n)이 수행되지 않도록 하고 다른 컨트롤러 모듈에게 영향을 미치지 않게 한다.
이와 같이 각 컨트롤러 모듈은 직접 타이머 모듈(225)로부터 틱 신호(tick signal)를 전송받아 실행하는 것이 아니라 조정 모듈(222)이 등록된 컨트롤러 모듈에게만 틱 신호를 전송함으로써 정식으로 제어권을 허가받지 않은 컨트롤러 모듈은 프로그램을 실행하지 못하도록 미연에 방지한다.
100: 로봇 200: 로봇 제어 시스템
210: 하드웨어층 220: 미들웨어층
230: 소프트웨어층

Claims (25)

  1. 로봇에 마련된 복수의 액추에이터;
    상기 복수의 액추에이터 중 적어도 하나의 액추에이터를 제어하여 상기 로봇의 모션을 수행하는 프로그램 및 식별자를 가지는 복수의 컨트롤러 모듈;
    상기 컨트롤러 모듈별 적어도 하나의 액추에이터의 제어권을 등록하고, 적어도 하나의 모션 수행이 요청되면 상기 적어도 하나의 모션 수행이 가능한 컨트롤러 모듈을 검색하는 조정 모듈;
    상기 검색된 컨트롤러 모듈의 식별자를 확인하여 상기 검색된 컨트롤러 모듈이 상기 모션 수행을 위한 액추에이터의 제어권을 가진 컨트롤러 모듈인지 판단하고, 상기 모션 수행을 위한 액추에이터의 제어권을 가진 컨트롤러 모듈이면 상기 컨트롤러 모듈의 실행을 제어하여 상기 액추에이터를 구동시키는 추상화 레이어 모듈을 포함하는 로봇 제어 시스템.
  2. 제 1 항에 있어서,
    상기 로봇의 모션을 요청하는 인터페이스 모듈을 더 포함하는 로봇 제어 시스템.
  3. 제 1 항에 있어서, 상기 조정 모듈은,
    상기 컨트롤러 모듈에 상기 모션 수행에 필요한 액추에이터를 질의하는 로봇 제어 시스템.
  4. 제 3 항에 있어서, 상기 컨트롤러 모듈은,
    상기 모션 수행이 가능한 액추에이터를 결정하고, 상기 조정 모듈로부터 질의 신호가 수신되면 상기 결정된 액추에이터의 정보를 상기 조정 모듈로 전송하는 로봇 제어 시스템.
  5. 제 4 항에 있어서, 상기 조정 모듈은,
    상기 컨트롤러 모듈로부터 상기 질의에 대응하는 액추에이터의 정보가 전송되면 상기 전송된 액추에이터의 가용 여부를 판단하고, 상기 액추에이터가 가용 가능하면 상기 액추에이터의 제어권을 상기 컨트롤러 모듈에게 중개하고, 상기 액추에이터가 가용 불가능하면 상기 컨트롤러 모듈의 실행을 취소시키는 로봇 제어 시스템.
  6. 제 1 항에 있어서, 상기 컨트롤러 모듈은,
    상기 모션 수행이 가능한 액추에이터를 결정하고, 상기 결정된 액추에이터에 대한 제어권을 상기 조정 모듈에게 요청하는 로봇 제어 시스템.
  7. 제 1 항에 있어서, 상기 조정 모듈은,
    상기 추상화 레이어 모듈에게 상기 로봇에 마련된 모든 액추에이터에 대한 제어권 등록을 위한 제어 등록권을 요청하고, 상기 추상화 레이어 모듈로부터 제어 등록권 허가 신호가 전송되면 상기 모든 액추에이터에 대한 제어 등록권을 등록하는 로봇 제어 시스템.
  8. 제 7 항에 있어서, 상기 추상화 레이어 모듈은,
    상기 조정 모듈로부터 상기 모든 액추에이터의 제어 등록권 요청 신호가 수신되면 이미 제어 등록권을 소유하고 있는 모듈이 있는지 확인하고 상기 제어 등록권을 소유하고 있는 모듈이 비존재하면 상기 제어 등록권을 요청한 조정 모듈에게 상기 모든 액추에이터에 대한 제어 등록권을 허가하는 로봇 제어 시스템.
  9. 제 1 항에 있어서,
    일정 주기마다 틱 신호를 발생시키는 타이머 모듈을 더 포함하고,
    상기 조정 모듈은, 상기 타이머 모듈의 틱 신호에 대응하여 상기 컨트롤러 모듈의 프로그램 실행을 지시하는 로봇 제어 시스템.
  10. 제 9 항에 있어서, 상기 추상화 레이어 모듈은,
    상기 컨트롤러 모듈의 프로그램 실행에 대응하는 제어 명령이 전송되면 상기 컨트롤러 모듈의 액추에이터에 대한 제어권의 소유 여부를 확인하고, 상기 컨트롤러 모듈이 상기 액추에이터의 제어권을 소유하고 있으면 상기 제어 명령을 상기 액추에이터로 전송하는 로봇 제어 시스템.
  11. 제 10 항에 있어서, 상기 추상화 레이어 모듈은,
    상기 컨트롤러 모듈이 상기 액추에이터의 제어권을 무소유하고 있으면 상기 액추에이터에 대한 상기 컨트롤러 모듈의 제어 위반 신호를 상기 조정 모듈에게 전송하는 로봇 제어 시스템.
  12. 제 11 항에 있어서, 상기 추상화 레이어 모듈은,
    상기 제어 등록권의 등록 및 회수를 지시하는 인터페이스를 가지는 로봇 제어 시스템.
  13. 제 11 항에 있어서, 상기 조정 모듈은,
    상기 컨트롤러 모듈별 액추에이터에 대한 제어권 정보를 가지는 컨트롤러 모듈 목록을 관리하고, 상기 추상화 레이어 모듈로부터 제어 위반 신호가 수신되면 상기 컨트롤러 모듈별 적어도 하나의 액추에이터의 제어권이 저장된 컨트롤러 모듈 목록에서 제어권을 위반한 컨트롤러 모듈을 삭제하는 로봇 제어 시스템.
  14. 제 10 항에 있어서,
    상기 추상화 레이어 모듈은, 애플리케이션 프로그래밍 인터페이스(API)를 가지고,
    상기 컨트롤러 모듈은, 상기 애플리케이션 프로그래밍 인터페이스를 이용하여 상기 추상화 레이어 모듈에게 제어 명령을 전송하는 로봇 제어 시스템.
  15. 제 1 항에 있어서,
    상기 복수의 컨트롤러 모듈 및 조정 모듈은, 실행 단위를 각각 갖고,
    상기 실행 단위는 스레드, 태스크, 프로세스 중 어느 하나인 로봇 제어 시스템.
  16. 로봇에 마련된 복수의 액추에이터 중 적어도 하나의 액추에이터를 제어하여 적어도 하나의 모션을 수행하는 로봇 제어 방법에 있어서,
    조정 모듈에 적어도 하나의 모션 수행이 요청되면 복수의 컨트롤러 모듈 중 상기 모션 수행이 가능한 컨트롤러 모듈을 검색하고,
    상기 검색된 컨트롤러 모듈의 프로그램 실행에 대응하는 제어 명령을 추상화 레이어 모듈로 전송하고,
    상기 추상화 레이어 모듈에서 상기 검색된 컨트롤러 모듈의 식별자를 확인하여 상기 검색된 컨트롤러 모듈이 상기 모션 수행을 위한 액추에이터의 제어권을 소유하고 있는지 판단하고,
    상기 검색된 컨트롤러 모듈이 상기 모션 수행을 위한 액추에이터의 제어권을 소유하고 있으면 상기 추상화 레이어 모듈에서 상기 액추에이터로 상기 제어 명령을 전송하여 상기 모션을 수행하는 로봇 제어 방법.
  17. 제 16 항에 있어서,
    상기 조정 모듈에 로봇의 모션 수행이 요청되면 상기 상기 모션 수행을 위한 컨트롤러 모듈을 검색하고,
    상기 모션 수행을 위한 컨트롤러 모듈이 비존재하면 상기 모션 수행이 가능한 컨트롤러 모듈을 생성하고,
    상기 생성된 컨트롤러 모듈에서 상기 모션 수행을 위한 모션 데이터에 기초하여 상기 모션 수행을 위해 필요한 적어도 하나의 액추에이터를 결정하고,
    상기 조정 모듈에서 상기 생성된 컨트롤러 모듈에게 상기 모션 수행에 필요한 액추에이터를 질의하고,
    상기 컨트롤러 모듈에서 상기 조정 모듈의 질의 신호에 대응하여 상기 결정된 액추에이터의 정보를 상기 조정 모듈로 전송하고,
    상기 조정 모듈에서 상기 결정된 액추에이터가 가용 가능한지 판단하고,
    상기 조정 모듈에서 상기 결정된 액추에이터가 가용 가능하다고 판단되면 상기 생성된 컨트롤러 모듈에게 상기 결정된 액추에이터의 제어권을 중개하는 것을 더 포함하는 로봇 제어 방법.
  18. 제 17 항에 있어서,
    상기 조정 모듈에서 상기 추상화 레이어 모듈로 상기 결정된 액추에이터에 대한 제어권을 허가하라는 제어권 요청 신호를 상기 컨트롤러 모듈에게 전송하고,
    상기 추상화 레이어 모듈에 상기 제어권 허가 요청 신호가 전송되면 상기 제어권 허가 요청 신호를 전송한 조정 모듈의 식별자를 확인하여 제어 등록권을 소유한 조정 모듈인지 확인하고,
    상기 추상화 레이어 모듈에서 상기 제어권 허가 요청 신호를 전송한 조정 모듈이 상기 제어 등록권을 소유한 조정 모듈이라고 판단되면 상기 추상화 레이어 모듈로부터 상기 컨트롤러 모듈에게 상기 결정된 액추에이터의 제어권을 허가하고,
    상기 결정된 액추에이터의 제어권이 허가된 컨트롤러 모듈의 프로그램을 실행하여 상기 결정된 액추에이터를 구동시키는 것을 더 포함하는 로봇 제어 방법.
  19. 제 18 항에 있어서,
    상기 추상화 레이어 모듈에서 상기 제어권 허가 요청 신호를 전송한 조정 모듈이 상기 제어 등록권을 소유한 조정 모듈이라고 판단되면 상기 추상화 레이어 모듈에 상기 생성된 컨트롤러 모듈을 상기 결정된 액추에이터의 제어권 소유자로 등록하고,
    상기 조정 모듈에 저장된 컨트롤러 모듈 목록에 상기 생성된 컨트롤러 모듈과 상기 결정된 액추에이터를 등록하는 것을 더 포함하는 로봇 제어 방법.
  20. 제 17 항에 있어서, 상기 조정 모듈에서 상기 결정된 액추에이터의 가용 여부를 판단하는 것은,
    상기 액추에이터가 가용 불가능하면 상기 생성된 컨트롤러 모듈을 취소시키는 것을 더 포함하는 로봇 제어 방법.
  21. 제 16 항에 있어서,
    상기 조정 모듈에서 상기 추상화 레이어 모듈에게 상기 로봇에 마련된 모든 액추에이터에 대한 제어권의 등록을 위한 제어 등록권을 요청하고,
    상기 추상화 레이어 모듈에 상기 제어 등록권 요청 신호가 수신되면, 상기 추상화 레이어 모듈에 이미 제어 등록권을 소유한 모듈이 존재하는지 확인하고,
    상기 제어 등록권을 소유한 모듈이 비존재하면 상기 제어 등록권을 요청한 조정 모듈에 상기 모든 액추에이터에 대한 제어 등록권을 허가하고,
    상기 조정 모듈에 상기 추상화 레이어 모듈로부터 상기 제어 등록권 허가 신호가 전송되면 상기 모든 액추에이터의 제어 등록권을 획득하는 것을 더 포함하는 로봇 제어 방법.
  22. 제 16 항에 있어서,
    상기 조정 모듈에 타이머 모듈의 틱 신호가 전송되면 상기 조정 모듈이 상기 컨트롤러 모듈이게 프로그램 실행을 지시하는 것을 더 포함하는 로봇 제어 방법.
  23. 제 16 항에 있어서,
    상기 컨트롤러 모듈이 상기 액추에이터의 제어권을 무소유하고 있으면 상기 추상화 레이어 모듈에서 상기 액추에이터에 대한 상기 컨트롤러 모듈의 제어 위반 신호를 발생하고,
    상기 추상화 레이어 모듈에서 상기 조정 모듈에게 상기 컨트롤러 모듈의 제어권 회수를 요청하고,
    상기 조정 모듈에서 상기 컨트롤러 모듈의 제어권을 회수하는 것을 더 포함하는 로봇 제어 방법.
  24. 제 23 항에 있어서, 상기 컨트롤러 모듈의 제어권을 회수하는 것은,
    상기 조정 모듈에 저장된 컨트롤러 모듈 목록에서 상기 제어권을 위반한 조정 모듈을 삭제하는 것을 포함하는 로봇 제어 방법.
  25. 제 16 항에 있어서, 상기 검색된 컨트롤러 모듈이 상기 모션 수행을 위한 액추에이터의 제어권을 소유하고 있는지 판단하는 것은,
    상기 검색된 컨트롤러 모듈의 실행단위의 식별자를 확인하고,
    상기 검색된 컨트롤러 모듈의 실행 단위의 식별자와, 상기 추상화 레이어 모듈에 미리 저장된 상기 액추에이터에 대한 제어권을 소유한 컨트롤러 모듈의 실행단위의 식별자가 동일한지 판단하는 것을 포함하는 로봇 제어 방법.
KR1020110006695A 2011-01-24 2011-01-24 로봇 제어 시스템 및 로봇 제어 방법 KR101809973B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110006695A KR101809973B1 (ko) 2011-01-24 2011-01-24 로봇 제어 시스템 및 로봇 제어 방법
US13/314,802 US9227319B2 (en) 2011-01-24 2011-12-08 Robot control system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110006695A KR101809973B1 (ko) 2011-01-24 2011-01-24 로봇 제어 시스템 및 로봇 제어 방법

Publications (2)

Publication Number Publication Date
KR20120085404A true KR20120085404A (ko) 2012-08-01
KR101809973B1 KR101809973B1 (ko) 2017-12-19

Family

ID=46544761

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110006695A KR101809973B1 (ko) 2011-01-24 2011-01-24 로봇 제어 시스템 및 로봇 제어 방법

Country Status (2)

Country Link
US (1) US9227319B2 (ko)
KR (1) KR101809973B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170034752A (ko) * 2015-09-21 2017-03-29 주식회사 레인보우 실시간 로봇 시스템, 로봇 시스템 제어 장치 및 로봇 시스템 제어 방법
KR20170048164A (ko) * 2015-10-26 2017-05-08 한화테크윈 주식회사 로봇 제어 시스템 및 방법
CN106903688A (zh) * 2017-01-19 2017-06-30 北京光年无限科技有限公司 一种控制机器人头部运动的方法及装置
KR20190060448A (ko) * 2017-11-24 2019-06-03 (주)로보티즈 마스터 기기 및 슬레이브 기기, 그리고 이들을 포함하는 식별번호 설정 장치

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104669269A (zh) * 2013-11-26 2015-06-03 中国科学院沈阳自动化研究所 一种针对高复杂度水下机器人高效可扩展的自主控制系统
CN104440911A (zh) * 2014-11-12 2015-03-25 沈阳新松机器人自动化股份有限公司 一种小型一体化洁净机器人控制系统
CN106272398A (zh) * 2015-05-27 2017-01-04 鸿富锦精密工业(深圳)有限公司 机器人的驱动组件、机器人及机器人系统
EP3449407A4 (en) 2016-09-20 2019-12-11 Hewlett-Packard Development Company, L.P. ACCESS RIGHTS OF TELEPRESENZROBOTERN
WO2018176241A1 (zh) * 2017-03-28 2018-10-04 深圳市源畅通科技有限公司 一种生产设备机械智能控制系统
JP6626057B2 (ja) * 2017-09-27 2019-12-25 ファナック株式会社 検査装置及び検査システム
CN108638058B (zh) * 2018-04-23 2021-04-30 深圳雪糕侠机器人服务有限公司 一种姿态决策动态规划方法
WO2020215213A1 (zh) * 2019-04-23 2020-10-29 西门子股份公司 多轴运动控制器、多轴运动控制方法和系统
EP3771522A1 (de) * 2019-07-30 2021-02-03 Siemens Aktiengesellschaft Verfahren und manipulationssystem zur manipulation eines objekts durch einen roboter mittels vektorfelder
CN110489940A (zh) * 2019-08-12 2019-11-22 北京猎户星空科技有限公司 机器人控制类应用程序的权限管理方法及装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078747A (en) * 1998-01-05 2000-06-20 Jewitt; James W. Application program interface to physical devices
JP2002113675A (ja) * 2000-10-11 2002-04-16 Sony Corp ロボット制御システム並びにロボット制御用ソフトウェアの導入方法
GB0104995D0 (en) * 2001-02-28 2001-04-18 Isis Innovation Artificial morpho-functional multiped and motion controller therefor
WO2002072317A1 (fr) * 2001-03-09 2002-09-19 Japan Science And Technology Corporation Systeme de robot audiovisuel
US7207041B2 (en) * 2001-06-28 2007-04-17 Tranzeo Wireless Technologies, Inc. Open platform architecture for shared resource access management
AU2002357040A1 (en) * 2001-11-28 2003-06-10 Evolution Robotics, Inc. Sensor and actuator abstraction and aggregation in a hardware abstraction layer for a robot
KR100559251B1 (ko) * 2004-05-12 2006-03-15 한국생산기술연구원 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법
GB2445507B (en) * 2005-10-21 2011-08-24 Deere & Co Versatile robotic control module
US7895257B2 (en) * 2006-02-21 2011-02-22 University Of Florida Research Foundation, Inc. Modular platform enabling heterogeneous devices, sensors and actuators to integrate automatically into heterogeneous networks
JP4481291B2 (ja) * 2006-12-01 2010-06-16 本田技研工業株式会社 ロボット、ならびにその制御方法および制御プログラム
JP2009050958A (ja) 2007-08-27 2009-03-12 Fanuc Ltd 停止監視機能を備えたロボット制御装置
US20090128080A1 (en) * 2007-11-16 2009-05-21 Padauk Technology Co. System and method for controlling multiple servo motors
US9626487B2 (en) * 2007-12-21 2017-04-18 Invention Science Fund I, Llc Security-activated production device
US20110178619A1 (en) * 2007-12-21 2011-07-21 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Security-activated robotic tasks
JP5088156B2 (ja) 2008-02-05 2012-12-05 株式会社ジェイテクト ロボット安全監視装置
FR2929873B1 (fr) * 2008-04-09 2010-09-03 Aldebaran Robotics Architecture de controle-commande d'un robot mobile utilisant des membres articules
AU2011218172B2 (en) * 2010-02-16 2014-09-25 Irobot Corporation Internal communication system for a mobile robot
US9135664B2 (en) * 2010-10-29 2015-09-15 Nokia Corporation Method and apparatus for granting rights for content on a network service

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170034752A (ko) * 2015-09-21 2017-03-29 주식회사 레인보우 실시간 로봇 시스템, 로봇 시스템 제어 장치 및 로봇 시스템 제어 방법
KR20170048164A (ko) * 2015-10-26 2017-05-08 한화테크윈 주식회사 로봇 제어 시스템 및 방법
CN106903688A (zh) * 2017-01-19 2017-06-30 北京光年无限科技有限公司 一种控制机器人头部运动的方法及装置
KR20190060448A (ko) * 2017-11-24 2019-06-03 (주)로보티즈 마스터 기기 및 슬레이브 기기, 그리고 이들을 포함하는 식별번호 설정 장치

Also Published As

Publication number Publication date
US20120191244A1 (en) 2012-07-26
US9227319B2 (en) 2016-01-05
KR101809973B1 (ko) 2017-12-19

Similar Documents

Publication Publication Date Title
KR101809973B1 (ko) 로봇 제어 시스템 및 로봇 제어 방법
Garcia et al. A human-in-the-loop cyber-physical system for collaborative assembly in smart manufacturing
KR101942167B1 (ko) 전방향 휠을 가지고 선형 예측 위치 및 속도 제어기를 기초한 휴머노이드 로봇
CA2951087C (en) Collision detection
Herrero et al. Skill based robot programming: Assembly, vision and Workspace Monitoring skill interaction
US20100010671A1 (en) Information processing system, information processing method, robot control system, robot control method, and computer program
Badger et al. ROS in space: A case study on robonaut 2
Yasuda Behavior-based autonomous cooperative control of intelligent mobile robot systems with embedded Petri nets
WO2020153297A1 (ja) ロボット制御システム
Jäntsch et al. Distributed control for an anthropomimetic robot
CN113370210A (zh) 一种机器人主动避撞系统及方法
Qasim et al. MAPE-K interfaces for formal modeling of real-time self-adaptive multi-agent systems
Woolley et al. Real-time behavior-based robot control
Taira et al. Design and implementation of reconfigurable modular humanoid robot architecture
Alonso Sanchez et al. A case study of safety in the design of surgical robots: The ARAKNES platform
Roda-Sanchez et al. Gesture control wearables for human-machine interaction in Industry 4.0
Arrabales et al. CERA-CRANIUM: A test bed for machine consciousness research
US20150149398A1 (en) Method and apparatus for decision migration in a multi-component robot
KR101220428B1 (ko) 분산 실시간 제어 소프트웨어가 구비된 지능 로봇용 다중 프로세서
Borboni et al. Reference frame identification and distributed control strategies in human-robot collaboration
Liu et al. AutoRobot: a multi-agent software framework for autonomous robots
KR20240083286A (ko) 로봇용 코어엔진을 이용한 모션 제어 시스템
Domínguez et al. Human–computer cooperation platform for developing real-time robotic applications
Yasuda Discrete event behavior-based distributed architecture design for autonomous intelligent control of mobile robots with embedded petri nets
Martínez-García Cyber-Physical Robotics: Real-Time Sensing, Processing and Actuating

Legal Events

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