KR20050108519A - 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법 - Google Patents

개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법 Download PDF

Info

Publication number
KR20050108519A
KR20050108519A KR1020040033304A KR20040033304A KR20050108519A KR 20050108519 A KR20050108519 A KR 20050108519A KR 1020040033304 A KR1020040033304 A KR 1020040033304A KR 20040033304 A KR20040033304 A KR 20040033304A KR 20050108519 A KR20050108519 A KR 20050108519A
Authority
KR
South Korea
Prior art keywords
development
module
robot
software
software component
Prior art date
Application number
KR1020040033304A
Other languages
English (en)
Other versions
KR100559251B1 (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 KR1020040033304A priority Critical patent/KR100559251B1/ko
Priority to PCT/KR2005/001392 priority patent/WO2005109300A1/en
Priority to US11/596,499 priority patent/US20070294662A1/en
Publication of KR20050108519A publication Critical patent/KR20050108519A/ko
Application granted granted Critical
Publication of KR100559251B1 publication Critical patent/KR100559251B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/1661Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/36Nc in input of data, input key till input tape
    • G05B2219/36035Special language, task programming, oop object oriented programming
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Manipulator (AREA)

Abstract

본 발명은 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법에 대해 개시한다.
본 발명은 이기종의 독립적으로 모듈(module)화된 로봇 조합을 통해 사용자 지향적인 로봇의 제작이 가능하도록 하는 수단으로서, 인터넷을 이용하여 각 모듈에 적재된 분산 소프트웨어의 통합 운영 및 사용자 지향의 서비스 제공을 위한 새로운 로봇 개발 환경도구와 로봇 개발 절차를 포함한다. 로봇 개발 절차는 플랫폼(platform) 개발 단계, 모듈 개발 단계, 그리고 사용자 지향적인 로봇 개발 및 사용자 서비스 개발 단계의 3단계의 독립적인 개발절차로 전문화되어 있다.
본 발명에 의하면, 자율로봇을 상호 운영성(interoperability)을 갖는 기능적인 모듈 단위로 대량 생산하는 것이 가능하며, 또한 개발 절차가 독립적으로 전문화되어 있고 다품종 소량의 로봇 제작에 적합하기 때문에 기술 개발의 가속화 및 전문화와 다양한 소비자 요구를 만족할 수 있다는 장점이 있다.

Description

개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법{Integrated service method of distribution software for robot development based on open internet network}
본 발명은 개방화된 분산형 자율로봇의 분산 소프트웨어 통합방법에 관한 것으로, 특히 인터넷을 이용하여 이기종의 독립적으로 모듈화된 로봇의 조합을 통해 사용자 지향적인 로봇의 제작이 가능하도록 한 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법에 관한 것이다.
종래의 전통적인 로봇개발 절차는 로봇을 제조하는 제조업체에서 일괄적이고 총체적인 개발이 이루어기 때문에 로봇의 제조를 위해서는 제어플랫폼의 개발에서부터 로봇 제어 소프트웨어의 개발, 그리고 사용자를 위한 작업기술 언어의 개발까지 하나의 제조업체에서 모두 이루어졌다. 이러한 일괄적인 개발 방식은 로봇 기술을 폐쇄적으로 만드는 이유가 되어 신기술의 수용에 한계를 가지게 되며, 또한 표준화나 호환성을 기대하기 어려운 요소로 작용한다.
반면에, 실질적으로 로봇 기술과 관련이 적은 플랫폼이 개방성을 가질 수 있다면 제어 플랫폼 개발은 개방성을 보장하는 전문 제조업체에 의해 개발이 주도될 수 있게 되고, 뿐만 아니라 로봇의 개발에 있어서도 로봇을 독립적인 기능 모듈로 분할 개발한 후 후기 통합을 통해 로봇의 조립이 가능하다면, 기존의 로봇 제조업체 또한 개방화된 개발 환경에서 특화된 부분에 대한 개발에 집중할 수 있게 된다. 추가적으로 제조사가 상이할 수 있는 독립적인 기능 모듈의 통합을 통한 손쉬운 로봇의 조립은 다양한 소비자의 요구를 만족할 수 있는 사용자 지향적인 형태의 로봇 제작을 가능하게 함으로써 로봇 전체 시장의 확대를 기대할 수 있게 된다. 이러한 개방화를 기반으로 한 로봇의 단계별 개발절차는 아직 개시되지 않았다.
이외에도, 종래의 로봇 소프트웨어 개발 환경도구(Development Environment)에 관한 발명은 다양한 방식을 통해 이루어졌으며 다양한 서비스 제공을 목적으로 한다. 하지만 종래의 로봇 소프트웨어 개발 환경도구는 대부분 로봇이 오프라인 상태에 있을 때의 개발 환경도구이며, 온라인상에서의 개발 환경을 지원할지라도 지역 네트워크나 일대일 통신 같은 폐쇄적인 방식을 택하였다. 모듈화된 가정용 서비스 로봇은 모듈 단위로 시장에 선판매가 이루어지고, 후에 시스템 통합(system integration) 절차가 필요하게 되는데, 기존의 오프라인(offline) 상에서의 개발 환경 또는 폐쇄적인 환경의 온라인(online) 상에서의 개발 환경은 로봇이 시장에 출시된 이후에는 소프트웨어 통합을 위한 후작업 등을 지원할 수가 없게 된다. 로봇을 이루는 기능적인 부품인 모듈의 표준화된 개발과, 모듈의 조립을 통한 로봇의 조립이라는 시스템 통합을 수행할 수 있는 개발 환경도구에 대해서는 아직 개시되지 않았다.
즉, 이기종의 독립적인 모듈의 상호 운영 환경에서 다양한 요구를 갖는 사용자 지향적인 서비스의 창출이 가능하기 위해서는 선개발 완료 후 판매라는 기존의 단일화된 개발 방식을 적용하는 것이 불가능하게 된다. 뿐만 아니라 독립적인 모듈의 조합에 있어서도 일반적으로 기구적 또는 전기 신호적인 조합은 표준화된 커넥터 등을 이용하여 최종 소비자가 손쉽게 수행할 수 있으나 소프트웨어적인 조합은 최종 소비자가 담당하기 어려운 형편이며, 또 각 기능적 모듈의 제조업체가 서로 틀리기 때문에 특정 제조업체에서 이를 담당하여 소프트웨어적인 조합 작업을 수행하는 것 역시 불가능하였다.
따라서, 본 발명은 상기와 같은 종래의 문제점을 해결하기 위해 안출된 것으로, 본 발명의 목적은 인터넷을 이용하여 이기종의 독립적으로 모듈화된 로봇의 분산 소프트웨어 통합을 통해 사용자 지향적인 로봇의 제작이 가능하고, 분산화된 환경에서의 개방형 자율로봇 제어 구조를 기반으로 한 개발절차와 개발 환경도구를 제공하는 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법에 관한 것이다.
즉, 본 발명에서 특징으로 하는 기술적인 과제는 다음과 같다.
첫째, 개발 절차는 플랫폼 개발, 모듈 개발, 그리고 로봇 개발 및 사용자 지향의 서비스 개발의 3단계로 구분된다. 각 절차에서 개발자는 다른 절차의 개발자와 협의나 협조 없이 독립적으로 개발을 수행될 수 있어야 하며, 각각의 절차는 고유한 기술 영역을 갖는다.
둘째, 개발 환경도구는 개방성을 갖는 모듈 개발 및 로봇 개발에서의 활용을 목적으로 하며, 소프트웨어 컴포넌트의 특징을 이용한 유지 보수 수단을 제공한다.
셋째, 개발 환경도구는 오프라인에서의 개발, 지역 네트워크 환경에서의 개발, 그리고 광역 네트워크인 인터넷 환경에서의 개발을 모두 지원한다.
넷째, 개발 환경도구는 사용자에게 빠른 서비스의 제공과 로봇 개발이라는 분산시스템 통합의 명시적이고 손쉬운 개발을 위해 로봇 개발을 위해 그래픽 기반의 사용자 환경을 제공한다.
상기 목적을 달성하기 위하여 본 발명에 의한 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법은, 개방형 분산처리구조에서 표준화된 명세 파일을 가지고 독립적인 소프트웨어 컴포넌트를 운영시키는 가상머신, 상기 소프트웨어 컴포넌트의 통신 경로를 제공하는 통신 미들웨어, 상기 소프트웨어 컴포넌트의 후기 결합 정보를 분석하여 소프트웨어 컴포넌트의 실시간 채널 이용시간을 관리하는 실시간 채널 관리자를 탑재한 이기종의 독립적인 모듈을 결합시켜 사용자 지향의 로봇을 개발하는 방법에 있어서, 상기 모듈의 소프트웨어적인 시스템 통합을 위해 모듈의 서비스정보와 사용자 인터페이스 정보를 시스템 통합자에게 전송하는 단계; 사용자의 요구를 받은 상기 시스템 통합자는 사용자측 홈서버에 접속하여 상기 모듈의 명세 파일 및 작업기술 파일에 대한 다운로드를 요청하는 단계; 상기 시스템 통합자의 요구를 받은 홈서버는 결합된 상기 모든 독립 기능 모듈의 명세 파일과 브레인 모듈의 작업기술 파일을 시스템 통합자의 원격지 개발환경에 전송하는 단계; 상기 원격지 개발환경은 전송받은 모듈의 명세 파일을 등록하여 데이터베이스화하고, 상기 모듈의 소프트웨어 컴포넌트 및 인터페이스 정보를 추출하여 작업기술 언어를 이용한 작업기술 파일 작성을 위한 API를 생성하는 단계; 상기 시스템 통합자는 생성된 API를 통해 현재 소프트웨어 컴포넌트 집합에 새로운 컴포넌트의 추가, 삭제, 변경이 필요한지를 검토하여 원격지 개발환경에서 기능 기술 언어를 통해 새로운 컴포넌트를 작성하고, 상기 소프트웨어 컴포넌트의 구성 변화에 따라 원격지 개발환경은 등록해 놓은 모듈의 명세 파일정보를 업데이트하고 API를 변경하는 단계; 상기 시스템 통합자는 변경된 API를 이용하여 그래픽 기반 환경 또는 텍스트 기반 환경에서 작업기술 파일을 작성하고, 이 작성된 작업기술 파일을 업데이트된 상기 모듈의 명세 파일과 새로 추가되거나 변경된 소프트웨어 컴포넌트와 함께 홈서버를 통해 브레인 모듈에 업로드하는 단계; 및 상기 브레인 모듈은 각 독립 기능 모듈에 필요한 명세 파일과 소프트웨어 컴포넌트를 업로드시키고, 각 독립 기능 모듈은 변경된 명세 파일에 따라 필요한 가상머신을 새로 수행시키고 필요없는 가상머신을 정지시킴에 따라 기존의 소프트웨어 컴포넌트 환경을 변경시키는 단계를 포함하여 이루어진 것을 특징으로 한다.
탑재가 완료된 이후에 상기 시스템 통합자는 가상머신이 제공하는 시작, 재시작, 정지, 일시정지 기능을 이용한 시뮬레이션을 통해 디버그 작업을 수행하고; 생성된 API를 통해 사용자의 로봇에 개발된 작업기술 파일과 모듈 명세 파일을 업로드하기 전까지 오프라인상에서 개발 작업을 수행하는 것을 특징으로 한다.
상기 브레인 모듈은 광역 네트워크인 인터넷과의 인터페이스수단, 오프라인 플래너, 온라인 추론시스템 및 작업 관리자를 추가로 탑재하고 있는 것을 특징으로 한다.
이하, 본 발명의 일실시예를 첨부된 도면을 참조하여 설명한다.
도 1은 본 발명의 개방화된 분산형 자율로봇 제어시스템의 전체적인 구성요소를 포함한 계층적인 특성을 표현한 구조도이다.
도 1을 참조하면, 본 발명의 자율로봇 제어 구조는 로봇 제어 계획 계층(100;Planning Level), 로봇 제어 관리 계층(200;Executive Level), 로봇 제어 기능 계층(100;Function Level)을 포함하여 구성된 3계층 혼합형 구조로서, 본 발명의 구성요소 중 기존의 3계층 혼합형 자율로봇 제어구조와 차별되는 특징적인 요소는 인터넷을 기반으로 한 개방적이고 시스템 통합의 기능을 제공하는 작업기술 언어(1;task language), 분산 환경에서의 실시간 채널(real-time channel) 관리자(2), 독립적인 기능의 구현체인 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 플랫폼 독립적인 운영 환경으로서의 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g; virtual machine), 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 구현을 위한 기능기술 언어, 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 운영 및 통신을 위해 사용되는 통신 미들웨어(5), 그리고 로봇을 구성하는 독립적인 모듈(6:6a, 6b, 6c, 6d)의 개발과 모듈(6:6a, 6b, 6c, 6d)의 조합을 통한 로봇의 개발을 포함한다. 아래에 본 발명의 특징적인 구성요소에 대해 자세히 설명한다.
상기 로봇 제어 계획 계층(100)의 작업기술 언어(1)는 인터넷과 같은 광역 네트워크(wide area network) 또는 로봇이 설치되어 있는 지역 네트워크(local area network)상에서 로봇에 업로드(8; upload)된다. 또한 이렇게 업로드(8)된 작업기술 언어(1)는 오프라인 플래너(9)에 의해 해석(parsing)되어 독립적인 수행 단위로 나누어진 뒤, 작업 관리자(10)에 전송되어 로봇 제어 관리 계층(200;executive level)의 실시간 채널 관리자(2)에 의해 최종 수행된다.
본 발명의 작업기술 언어(1)가 갖는 첫 번째 특징적인 요소는 그 개방성으로, 이미 정보 산업에서 인터넷 서비스의 표준 언어로 사용되고 있는 XML(eXtensible Markup Language)를 기반으로 형식적으로는 표준화된 문법을 가지며, 또한 모듈(6:6a, 6b, 6c, 6d)을 이용한 로봇의 조합이라는 시스템 통합 작업은 모듈(6:6a, 6b, 6c, 6d)이 판매된 이후에 이루어지므로 유연한 접근 환경을 위해 인터넷과 같은 광역 네트워크 기반을 통하여 업로드(8)에 용이한 특징을 갖는다.
본 발명의 작업기술 언어(1)가 갖는 두 번째 특징적인 요소는 분산화된 시스템의 통합적인 기능으로, 작업의 순차적 또는 조건적인 수행으로 정의되는 임무(mission)기술과 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 작업(task) 수행 전략을 결정해주는 2단계의 개발과정을 갖는다. 특히 본 발명의 작업기술 언어(1)는 분산화된 각 모듈(6:6a, 6b, 6c, 6d) 내부의 기능적인 독립체인 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 인터페이스를 후기 결합하는 기능을 제공함으로써 시스템 통합 작업을 통한 작업 생성기능과 유지보수기능을 제공한다. 이렇게 표준화된 시스템 통합은 하부의 가상 머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)과 통신 미들웨어(5)를 기반으로 하고, 실시간 채널 관리자(2)를 통해 수행된다.
본 발명의 작업기술 언어(1)가 갖는 세 번째 특징적인 요소는 인터넷을 통한 사용자 지향적인 인터페이스의 제공이다. 이로 인해 정보 기술 분야의 인터넷 인터페이스 기술을 그대로 사용할 수 있으며, 작업 계획과 동시에 이루어지기 때문에 사용자의 요구에 따른 사용자 지향적인 인터페이스의 설계가 이루어진다. 작업기술 언어(1)에 정의된 사용자 인터페이스 사양은 오프라인 플래너(9)가 작업 관리자(10)로부터 작업 수행결과를 되돌려 받아 광역 네트워크 또는 지역 네트워크 상에 되돌려 받은 수행 결과를 제공하는 서버(server)로서의 역할을 수행함으로써 서비스를 제공한다.
상기 로봇 제어 관리 계층(200)의 실시간 채널 관리자(2)는 기존의 자율로봇 제어구조에 다중 운영체계 시스템과 네트워크 분산 환경에서 실시간성 보장을 위한 것으로, 상기 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g) 후기 결합(late binding) 정보를 분석하고, 실질적인 물리적인 주소를 얻어내서 모듈(6:6a, 6b, 6c, 6d) 내부의 프로세스 간 통신(inter-process communication) 또는 모듈(6:6a, 6b, 6c, 6d) 간의 네트워크 통신을 수행하는 주체이다. 이러한 통신은 하부의 미들웨어(5)상에서 이루어지며, 실질적으로 자율로봇 구조에서 미들웨어(5)에서 제공하는 통신 경로를 이용할 수 있는 주체는 실시간 채널 관리자(2)뿐이다.
또한, 실시간 채널 관리자(2)는 각 소프트웨어 컴포넌트(3)가 실시간 채널을 이용하는 시간을 최적화하고, 주기적으로 발생하는 메시지 또는 주기적으로 수행되는 다중작업 운영체계 태스크의 시작시간(arrival time) 이전에 선행 처리되는 스케줄링(네트워크 메시지의 경우는 송신부 운영체계 태스크가 선행 수행되며, 수신부 운영체계 태스크의 경우에는 네트워크 메시지 발생이 선행 수행)을 변경함으로써 이루어진다. 이러한 채널 관리 기법을 통해 소프트웨어 종단(end-to-end) 간 정보 전달 시간을 최소화함으로써 실시간 채널 관리자(2)는 유용 가능한 실시간 채널을 최대한 많이 확보할 수 있다.
상기 로봇 제어 기능 계층(300)의 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)는 소프트웨어적인 기능 독립단위로서, 이 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)는 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)상에서 운영됨으로써, 이기종 플랫폼 환경에서의 소프트웨어 호환성을 보장하며, 시스템 통합자(400)에 의한 사용자에 특화된 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 추가를 가능하게 한다.
상기 로봇 제어 기능 계층(300)의 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)은 일반적인 CPU(Central Processing Unit)를 모사한 것으로 메모리영역을 가지고 있으며, 상기 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)에서 운영되는 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)는 인터페이스로 함수와 입출력 변수를 제공한다.
상기한 모든 독립적인 기능 모듈(6:6a, 6b, 6c, 6d)은 내부에 있는 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)에 대한 표준화된 명세 파일을 보관하고 있으며, 이 명세 파일은 외부의 요청에 따라 업로드 및 다운로드가 가능하다. 이러한 명세 파일은 각 모듈(6:6a, 6b, 6c, 6d)에 보관되어 있다가 브레인 모듈(6a)에 다운로드(download)되어 광역 네트워크를 통해 통합 개발 환경에 전달되어 작업기술 언어(1)를 이용한 작업기술 파일을 작성하는데 마치 일반적인 소프트웨어의 API(Application Program Interface)와 같이 이용되며, 소프트웨어 컴포넌트(3)의 추가, 삭제, 변경 등으로 인해 변경이 필요한 경우 통합 개발 환경에서 변경되어 다시 광역 네트워크를 통해 브레인 모듈(6a)로 전달된 후, 각 모듈(6b, 6c, 6d)에 업로드(upload)되게 된다.
본 발명의 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)상에서 운영되는 소프트웨어적인 기능 독립단위인 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 구현을 위해 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)에서 번역되어 수행되는 독립적인 기능 기술 언어를 갖는다. 이러한 독립적인 기능 기술 언어는 전용 컴파일러에 의해 번역되어 코드화되며, 번역된 코드는 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)에 의해 수행된다. 번역된 코드는 하드웨어 프로세서의 기계어와 유사한 형태를 가지고 있지만, 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)상에서 운영되므로 플랫폼 독립적인 특성을 갖는다. 본 발명의 로봇 기능 기술 언어가 하드웨어에 직접적으로 접근할 수 있는 방법은 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)이 제공하는 원시코드 인터페이스를 통해서만 이루어지며, 이를 통해 하부 플랫폼에 비전문가인 모듈 개발자가 프로그램 오류로 인해 하드웨어적인 안정성을 해칠 수 있는 가능성을 방지한다.
로봇 기능 기술 언어가 갖는 두 번째 특징적인 요소는 외부에 제공할 수 있는 컴포넌트 인터페이스를 제공할 수 있고, 또한 외부의 컴포넌트 인터페이스를 이용한 프로그래밍 기능을 제공하는 것으로, 이를 통해 모듈 개발자는 분산화된 환경에서의 프로그래밍 대신 단일 환경에서의 프로그래밍과 동일한 투명한 개발 환경을 제공받는다.
본 발명에서 통신 경로의 제공은 모듈(6) 내부 컴포넌트 사이의 통신과 모듈(6) 외부 컴포넌트 사이의 통신에 있어 미들웨어(5)를 통해 이루어진다. 본 발명의 자율로봇 제어구조에서의 미들웨어(5)의 역할은 다양한 이기종 네트워크 환경에서의 통신 역할을 수행하며, 네트워크 환경의 종류에 상관없이 표준화된 서비스를 제공하는 역할을 수행한다. 앞에서 밝혔던 바와 같이 본 발명의 로봇 제어구조에서 미들웨어(5) 서비스를 이용하는 것은 실시간 채널 관리자(2)뿐이다. 실시간 채널 관리자(2)는 서비스를 이용할 때, 작업 관리자(10)로부터 전달 받은 메시지의 물리적인 전송 주소 정보를 이용하여 포트 테이블(port table)을 작성하고, 미들웨어(5) 서비스를 사용할 때 포트 테이블 정보를 미들웨어(5)에 통보한다.
또한, 본 발명은 제시된 모듈(6:6a, 6b, 6c, 6d)의 개발과 시스템 통합을 통한 로봇 개발을 위한 개발 환경으로서 표준화되고 개방화된 개발 환경도구를 특징으로 한다. 이러한 개발 환경은 본 발명의 미들웨어(5)를 지원하는 경우 지역 환경에 위치할 수도 있고, 인터넷과 같은 광역 네트워크 통신을 지원하는 경우 원격지에 위치할 수도 있다. 또한 로봇도 실제로 통신을 수행하지 않는 상태에서의 오프라인 개발도 지원한다.
본 발명의 표준화되고 개방화된 개발 환경 도구는 본 발명의 첫 번째 특징인 표준화된 작업기술 언어(1)와 플랫폼에 독립적인 기능기술 언어의 개발 환경을 제공함으로써 이루어진다.
모듈(6:6a, 6b, 6c, 6d)의 개발 단계에 있어 소프트웨어 컴포넌트(3a, 3b, 3c, 3d, 3e, 3f, 3g) 개발을 위해 개발 환경은 기능기술 언어 개발 환경으로써 컴파일러, 디버그, 그리고 완성된 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)를 기능 모듈(6:6a, 6b, 6c, 6d)에 업로드(8)할 수 있는 환경을 제공한다. 업로드(8) 가능한 소프트웨어 컴포넌트(3::3a, 3b, 3c, 3d, 3e, 3f, 3g)는 컴파일이 완료된 바이트 코드이며, 원시 코드의 구현 코드는 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g) 코드 내부가 아닌 모듈(6:6a, 6b, 6c, 6d) 내부에만 존재하는 원시코드이기 때문에 개발 환경에서는 인터페이스의 확인만이 가능하다.
개발 환경은 업로드(8)의 수행을 위해 광역 네트워크 통신 수단인 인터넷과, 추가적으로 기능 모듈(6:6a, 6b, 6c, 6d)이 지원하는 지역 네트워크와의 통신수단을 지원한다. 본 발명의 개발 환경과 로봇 제어구조의 관계는 도 2에 도시되어 있다.
도 3은 도 2의 환경에서 로봇 개발의 작업 흐름도를 표현한다. 사용자는 먼저 사용자의 목적에 맞게 독립적인 기능 모듈(6:6a, 6b, 6c, 6d)을 별도 구매하여 물리적인 결합을 통해 물리적인 로봇 시스템 통합을 수행한다.(S10)
사용자에 의한 독립 기능 모듈(6:6a, 6b, 6c, 6d)의 조합으로 구성된 로봇 시스템이 도 4에 도시되어 있다.
도 4에 도시한 바와 같이, 로봇은 브레인 모듈(6a;brain module), 모바일 모듈(6b;mobile module), 센서 모듈(6c;sensor module), 그리고 암 모듈(6d;arm module)의 독립적인 모듈로 구성되어 있다. 이렇게 독립적인 모듈(6:6a, 6b, 6c, 6d)을 이용한 시스템 통합으로 로봇을 구성하기 위해서는 먼저 각 모듈(6:6a, 6b, 6c, 6d)이 통합을 위한 기본적인 시스템 구성을 갖추어야 한다.
기본적 시스템 구성을 위해 실시간성을 갖는 소프트웨어 운영체계 위에 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)를 운영할 수 있는 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)의 탑재, 미들웨어(5)의 탑재, 그리고 실시간 채널 관리자(2)를 탑재하고 있어야 한다. 이러한 시스템 구성 요소는 가장 기본이 되는 구성 요소로 모든 모듈(6:6a, 6b, 6c, 6d)에 적용이 된다. 특별히 브레인 모듈(6a)의 경우, 3계층 혼합형 자율로봇 제어구조를 위한 요소인 광역 네트워크인 인터넷과의 인터페이스수단, 오프라인 플래너(9), 온라인 추론시스템(7), 그리고 작업관리자(10)를 추가적으로 탑재하고 있어야 한다.
이러한 로봇 조립 과정에서 각각의 독립 기능 모듈(6a, 6b, 6c, 6d)은 자신의 결합 상태를 인식하여 명세 파일을 업데이트한다.(S20)
물리적인 로봇 시스템 통합 이후에 로봇의 소프트웨어적인 시스템 통합을 위해 사용자는 인터넷을 통해 시스템 통합자(400)에게 시스템 통합의 요구 사항을 전달한다.(S30) 시스템 통합의 요구 사항에는 로봇의 기능적인 서비스 명세와 광역 네트워크 상에서의 사용자 인터페이스 명세가 포함된다.
사용자의 요구를 받은 시스템 통합자(400)는 사용자가 물리적으로 통합시킨 로봇의 명세 정보를 확보하기 위해 인터넷을 통해 사용자 측 홈서버(402)에 접속하여 각 기능 모듈(6:6a, 6b, 6c, 6d)의 명세 파일 및 작업 기술 파일에 대한 다운로드를 요청한다.(S40)
시스템 통합자(400)의 요구를 받은 홈서버(402)는 이 요구를 로봇의 광역 네트워크 지원 모듈인 브레인 모듈(6a)에 전달하고,(S50) 브레인 모듈(6a)은 다시 결합이 완료된 모든 모듈(6:6a, 6b, 6c, 6d)에 명세 파일을 요청하여(S60) 다운로드 받는다.(S70) 모든 독립 기능 모듈(6:6a, 6b, 6c, 6d)의 명세 파일을 확보한 브레인 모듈(6a)은 자신의 작업 기술 파일과 함께 홈서버에 전송하며,(S80) 명세 파일과 작업 기술 파일을 전송 받은 홈서버(402)는 이를 인터넷을 통해 시스템 통합자(400)의 원격지 개발 환경(404)에 전송한다.(S90)
명세 파일과 작업 기술 파일을 획득한 원격지 개발 환경(404)은 확보된 모듈(6:6a, 6b, 6c, 6d) 명세 파일을 등록하여 데이터베이스화하고 모듈(6:6a, 6b, 6c, 6d)의 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g) 및 인터페이스 정보를 추출하여 작업기술 언어(1)를 이용한 작업기술 파일작성을 위한 API를 생성한다.(S100)
이렇게 생성된 API를 통해 시스템 통합자(400)는 사용자의 로봇에 개발된 작업기술 파일과 모듈(3:3a, 3b, 3c, 3d, 3e, 3f, 3g) 명세 파일을 업로드(8) 하기 전까지, 오프라인 상에서 개발 작업을 수행할 수 있다. 시스템 통합자(400)는 사용자의 요구를 분석하여 현재의 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g) 집합에 새로운 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 추가, 삭제, 변경 필요성을 검토하고,(S110) 특히 새로운 컴포넌트의 추가가 필요하다면, 모듈(6:6a, 6b, 6c, 6d) 제조사에서 제공하는 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g) 중에 적합한 것이 있는지 여부를 검토한다.(S120)
소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 변경은 사용자의 요구뿐만 아니라 모듈(6:6a, 6b, 6c, 6d) 제조사의 사전 요청이 있는 경우 수행될 수 있기 때문에, 제조사 입장에서는 모듈(6:6a, 6b, 6c, 6d) 출시 이후 탑재된 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)에 문제가 발견되었거나 업그레이드를 할 필요가 있을 때, 이를 손쉽게 수정해줄 수 있는 수단을 갖게 된다.
새로운 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 작성이 필요할 때는 원격지 개발 환경(404)에서 기능 기술 언어를 통해 새로운 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)를 작성해줄 수도 있다.(S130) 이렇게 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 구성 자체가 바뀌게 되면 원격지 개발 환경(404)은 사전에 등록해 놓은 모듈(6:6a, 6b, 6c, 6d)의 명세 파일 정보를 업데이트하고 API도 새로 생성하게 된다.(S140)
시스템 통합자(400)는 이후 변경된 API를 이용하여 그래픽 기반 환경 또는 텍스트 기반 환경에서 작업기술 파일을 작성해주게 되고,(S150) 이렇게 작성된 작업기술 파일은 다시 업데이트된 모듈(6:6a, 6b, 6c, 6d) 명세 파일과 새로 추가되거나 변경된 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)와 함께 홈서버(402)를 통해(S160) 브레인 모듈(6a)에 업로드(8) 되고(S170), 다시 브레인 모듈(6a)은 각 독립 기능 모듈(6:6a, 6b, 6c, 6d)에 필요한 명세 파일과 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)를 업로드(8) 요청을 통해(S180) 각 독립 기능 모듈(6:6a, 6b, 6c, 6d)에 필요한 명세 파일과 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)를 업로드(8) 시킨다(S190). 각 독립 기능 모듈(6:6a, 6b, 6c, 6d)은 변경된 명세 파일에 따라 필요한 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)을 새로 수행시키고, 필요없는 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)을 정지시키는 등, 기존의 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g) 운영 환경을 변경시킨다.(S200)
탑재가 완료된 이후에 시스템 통합자(400)는 가상머신(4:4a, 4b, 4c, 4d, 4e, 4f, 4g)이 제공하는 시작, 재시작, 정지, 일시정지 기능을 이용한 시뮬레이션을 통해 디버그 작업을 수행한다.(S210)
제조업체가 상이한 기능 모듈(6:6a, 6b, 6c, 6d)은 통합을 통해 로봇을 구성하기 위해서는, 제조업체가 상이한 기능 모듈(6:6a, 6b, 6c, 6d)의 소프트웨어적인 통합 환경을 포함한 작업기술 언어(1)를 작성해야한다. 본 개발 환경은 이러한 개발 환경을 제공하며, 소프트웨어적인 통합 환경은 실질적으로는 각각의 독립적인 기능 모듈(6:6a, 6b, 6c, 6d)로부터 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g) 및 인터페이스 정보가 표현된 명세 파일을 다운로드 받아 이러한 인터페이스의 조합을 이용하여 작업기술 파일을 작성하고, 또 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 추가, 삭제, 변경이 필요하면 명세 파일 자체를 수정하여 다시 각각의 모듈(6:6a, 6b, 6c, 6d)로 업로드(8) 시키는 일련의 작업을 의미한다. 명세 파일과 작업기술 파일은 소프트웨어 통합이 이루어진 후에도 다운로드, 수정 및 업로드의 재수행이 가능하므로 모듈(6:6a, 6b, 6c, 6d) 조립 환경이 변화에 유연한 유지 보수 환경을 제공한다. 특히 이러한 명세 파일 및 작업기술 파일의 개발 및 수정 환경은 그래픽 기반으로 이루어지기 때문에 사용자의 요구에 신속히 대처하기 쉽고, 또한 로봇의 비전문가라 할지라도 프로그램의 개발을 용이하게 한다.
개발 환경도구의 그래픽 기반을 통한 시스템 통합의 예시로 도 5를 이용하여 상세하게 설명한다.
도 5의 소프트웨어 컴포넌트의 작업 수행 전략은 Turn(61), Move(62), Grasp(63), Release(64), 그리고 Position(65) 다섯 가지가 존재한다. 이러한 컴포넌트의 작업 수행 전략은 미션(66)의 생성을 위해 사용된다. 예를 들어 "절대 좌표지점(100,100)으로 이동하여 높이 100 위치에 있는 컵을 잡은 후 다시 현재 위치인 (50,50)으로 돌아와서 컵을 놓는다"라는 미션은 다음과 같은 연속적인 작업 수행으로 이루어진다.
1단계: Move(100,100) //절대 좌표지점 (100,100)으로 이동한다.
2단계: Position (0,0,100) //높이 100위치로 암 모듈(6d)의 엔드 이펙터(end effector)를 이동시킨다.
3단계: Grasp( ) //컵을 잡는다.
4단계: Move(50,50) // 절대 좌표지점(50,50)인 초기 위치로 돌아간다.
5단계: Release( ) //컵을 놓는다.
상기에서 보는 바와 같이, 로봇이 어떠한 미션(66)을 수행할 수 있는지는 어떠한 작업 수행 전략의 수립이 가능한지에 따라 결정된다. 다시 말해서 다양한 작업 수행 전략의 수립이 가능하다면 그만큼 다양한 미션(66)의 생성이 가능하게 된다. 또한 도 5에서 보는 바와 같이 하나의 작업 수행 전략은 해당 작업 수행에 필요한 한 개 이상 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)의 상호 운영으로 이루어지게 된다. 도 5에서 Turn(61) 작업 전략은 모바일 모듈(6b)의 Turn 소프트웨어 컴포넌트(67)와 Driver 소프트웨어 컴포넌트(68)의 상호 운영으로 정의되며, Move(62) 작업 전략은 브레인 모듈(6a)의 Path Planing 소프트웨어 컴포넌트(70), 센서 모듈(6c)의 Detector 소프트웨어 컴포넌트(69), Navigation1 소프트웨어 컴포넌트(71), Localization 소프트웨어 컴포넌트(74), Obstacle Avoidance 소프트웨어 컴포넌트(75), Goal Following 소프트웨어 컴포넌트(76), 모바일 모듈(6b)의 Driver 소프트웨어 컴포넌트(78), Navigation2 소프트웨어 컴포넌트(72), Wander 소프트웨어 컴포넌트(73)의 상호 운영으로 정의되며, Grasp(63) 작업 전략은 암 모듈(6d)의 Grasp 소프트웨어 컴포넌트(77), Driver 소프트웨어 컴포넌트(78)의 상호 운영으로 정의되며, Release(64) 작업 전략은 암 모듈(6d)의 Driver 소프트웨어 컴포넌트(78), Release 소프트웨어 컴포넌트(79)의 상호 운영으로 정의되고, Position(65) 작업 전략은 암 모듈(6d)의 Driver 소프트웨어 컴포넌트, Trajectory Plan 소프트웨어 컴포넌트(80), Move 소프트웨어 컴포넌트(81)의 상호 운영으로 정의된다.
이렇게 작업기술에 기술된 작업 전략별 상호 운영이 필요한 소프트웨어 컴포넌트(67~81)의 정의는 실제 특정 작업 전략의 수행이 필요할 경우 상호 운영이 필요한 소프트웨어 컴포넌트(67~81)를 작업 관리자(10)가 소프트웨어 컴포넌트(67~81)의 함수 인터페이스를 호출함으로써 구현되게 되며, 마찬가지로 소프트웨어 컴포넌트(67~81)의 설정이 필요하거나 수행 종료가 필요한 경우에도 작업 관리자(10)의 함수 인터페이스를 통해 이루어지게 된다. 함수 인터페이스 호출 시 필요한 설정 값은 함수의 매개 변수를 통해 전달되게 된다. 따라서 모든 소프트웨어 컴포넌트(67~81)는 시스템 통합을 통한 운영을 위해 최소한 시작과 종료를 수행할 수 있는 함수를 제공하여야 하며, 선택적으로 설정을 수행할 수 있는 함수를 제공할 수 있다.
상기의 작업 전략별 상호 운영 소프트웨어 컴포넌트(67~81)의 정의 이후에, 상호 운영 방식의 기술을 수행한다. 이러한 상호 운영 방식의 기술은 실질적으로 소프트웨어 컴포넌트(67~81)가 제공하는 입력용 변수 인터페이스와 출력용 변수 인터페이스의 후기 결합을 수행해주는 작업이다. 따라서 결합이 필요한 한 쌍의 입력 변수 인터페이스와 출력 변수 인터페이스는 동일한 데이터형을 갖추어야 한다.
상기의 미션(66)을 이루는 작업 전략 중, 가장 복잡한 형태인 Move(62)를 예로 들어 설명한다. Move(62)라는 하나의 작업을 위해 필요한 물리적인 자원은 입력값으로 센서 정보인 초음파 센서 정보와 오도메트리(odometry) 센서 정보, 그리고 출력값으로 모터 구동 정보가 있다. 이러한 물리적인 계층(82)에 대한 접근은 원시코드 인터페이스를 갖는 소프트웨어 컴포넌트인 센서 모듈(6c)의 Detector 소프트웨어 컴포넌트(69)와 모바일 모듈(6b)의 Motor Driver 소프트웨어 컴포넌트(68)를 통해 이루어진다. Detector 소프트웨어 컴포넌트(69)와 Motor Driver 소프트웨어 컴포넌트(68)는 인터페이스 변수를 통해 각각 초음파 센서 정보와 오도메트리 센서 정보에 대한 인터페이스를 제공한다.
한편, Localization 소프트웨어 컴포넌트(74)는 입력을 위한 인터페이스 변수를 통해 초음파 센서와 오도메트리 센서를 입력받아, 글로벌 맵(global map)정보를 생성하여 인터페이스 변수를 통해 글로벌 맵에 대한 인터페이스를 제공하고, 추가적으로 경로 생성을 수행을 외부 소프트웨어 컴포넌트로부터 생성 경로를 전달 받아 하부의 다른 소프트웨어 컴포넌트에게 전달할 수 있는 입력 변수 인터페이스와 출력 변수 인터페이스를 갖고 있다.
여기서, 상호 운영 방식의 기술은 Localization 소프트웨어 컴포넌트(74)와 Detector 소프트웨어 컴포넌트(69), 그리고 Motor Driver 소프트웨어 컴포넌트(68)의 상호 운영을 위해 Detector 소프트웨어 컴포넌트(69)와 Motor Driver 소프트웨어 컴포넌트(68)의 센서 정보 출력 변수 인터페이스를 Localization 소프트웨어 컴포넌트(74)의 센서 정보 입력 컴포넌트와 연결시키는 것으로 정의하는 것이다(83,84).
유사하게 Path Planning 소프트웨어 컴포넌트(70)는 글로벌 맵 정보의 입력을 위한 입력 인터페이스 변수와 글로벌 맵 정보가 주어졌을 때 생성된 경로에 대한 인터페이스를 제공할 수 있는 출력 변수 인터페이스를 갖고 있으므로 Path Planning의 글로벌 맵 입력 변수 인터페이스는 Localization의 글로벌 맵 출력 변수 인터페이스와 연결하는 것으로 정의하고, Path Planning의 생성 경로 출력 변수 인터페이스는 Localization의 생성 경로 입력 변수 인터페이스와 연결하는 것으로 정의한다.(85,86)
이러한 연결의 정의는 그래픽 환경 기반에서 단순히 두개의 사각 블록에 중첩되어 있는 삼각형의 꼭지점을 서로 연결하는 작업으로서, 상기의 인터페이스 연결 정의는 단지 네 번의 연결 작업만으로 이루어지며, 이런 네 번의 연결 작업만으로 모바일 모듈(6b), 센서 모듈(6c), 그리고 브레인 모듈(6a)에 분산된 소프트웨어 컴포넌트의 상호 운영 통한 경로 생성이라는 작업 계획(88)을 실현할 수 있다.
생성된 경로는 Localization 소프트웨어 컴포넌트(74)의 출력 변수와 Navigation1, Navigation2 소프트웨어 컴포넌트(71,72)의 입력 변수의 인터페이스 연결을 통해 Navigation1과 Navigation2 소프트웨어 컴포넌트(71,72)의 입력으로 전달되고(89), Navigation1과 Navigation2 소프트웨어 컴포넌트(71,72)는 내부의 장애물 회피 알고리즘과 전달된 경로점을 이용하여 로봇의 이동량을 제어한다. 이러한 이동량의 제어값 역시 인터페이스 연결을 통해 Motor Driver 소프트웨어 컴포넌트(68)의 입력 변수로 전달된다(90).
모듈(6:6a, 6b, 6c, 6d) 제조업체에서 제공하는 표준화된 소프트웨어 컴포넌트(3:3a, 3b, 3c, 3d, 3e, 3f, 3g)는 기능 모듈(6:6a, 6b, 6c, 6d)의 기본적인 기능만을 구현하고 있기 때문에 사용자의 다양한 요구를 충분히 충족시키기 어렵다. 본 발명의 개발 환경은 사용자의 다양한 요구에 따라 사용자에 특화된 형태의 소프트웨어 컴포넌트(67~81)를 작성하여 기존의 작업기술 언어(1)의 소프트웨어 컴포넌트(6:6a, 6b, 6c, 6d) 간의 인터페이스 사양을 수정하여 사용자 입장에서 추가적인 서비스를 제공할 수 있는 기능을 제공한다.
본 발명에서 개시한 개발 절차는 로봇이라는 하나의 시스템 개발을 플랫폼 개발, 모듈 개발, 그리고 로봇 개발의 3단계로 구분하고 순차적이고 독립적인 발전을 수행하는 것이다. 3단계 개발의 절차가 도 6과 같다.
개발 절차의 가장 처음 절차는 제어 플랫폼 개발 단계(48)이다. 이러한 제어 플랫폼 개발 단계(48)는 전통적인 제어 플랫폼 개발과 유사하게 하드웨어의 개발과 실시간 소프트웨어 운영 체계의 탑재를 포함한다. 본 단계(48)의 개발 절차에서 이런 하드웨어 개발과 소프트웨어 운영 체계의 탑재는 어떠한 제약 없이 자유로운 개발이 가능하다.
제어 플랫폼 개발 단계(48)에서 본 발명에서 특징으로 하는 요소는 다음 단계부터의 개발에 플랫폼 독립적인 특성을 부여하기 위한 가상머신(4)의 탑재, 미들웨어(5)의 탑재와. 자율 로봇 제어 구조를 위해 작업 관리자(10), 실시간 채널 관리자(2), 오프라인 플래너(9), 온라인 추론 시스템(7) 등을 탑재하는 것이다. 제어 플랫폼 개발 단계(48)에서 본 발명에서 특징으로 하는 또 다른 요소는 다음 단계의 응용 프로그램이 플랫폼의 자원에 플랫폼 개발자가 결정한 한정된 방식과 수준으로 직접 접근할 수 있는 수단을 제공한다. 이러한 수단은 실제 하드웨어 제어나 가상머신 상에서 처리하기 어려운 대규모 연산 작업에 사용될 수 있다.
종합적으로 이러한 제어 플랫폼 개발 단계(48)는 플랫폼을 이용한 응용 프로그램 개발에는 개방되고 표준화된 서비스를 제공하는 것을 목적으로 하며, 반면에 플랫폼 내부 자원 접근을 적절한 수준에서 허용함으로써 시스템 안정성의 확보, 독자기술 누출방지 등의 효과를 기대할 수 있다.
또한 플랫폼 개발 단계(48)에서는 필요에 따라 온라인 추론 시스템(7), 실시간 채널 관리자(2) 등 3계층 제어구조의 구성 요소를 추가 설치할 수 있으며, 이러한 제어구조의 구성 요소는 직접적인 사용자 접근을 허용하지 않기 때문에 시스템의 안정성을 보장할 수 있다.
개발절차의 두번째 단계는 모듈 개발 단계(49)이다. 이러한 모듈 개발 단계(49)는 플랫폼 개발 단계(48)에서 개발된 플랫폼을 기반으로 하여 독립적인 기능 모듈용 소프트웨어 컴포넌트(56a, 56b)를 작성하는 단계이다. 이러한 소프트웨어 컴포넌트(56a, 56b)는 다음 단계의 시스템 통합을 유연하게 하기 위해 표준화된 인터페이스를 제공하여야 한다. 모듈 개발 단계(49)에서는 기능기술 언어를 사용하여 소프트웨어 컴포넌트(56a, 56b) 개발이 이루어진다. 모듈 소프트웨어 개발자는 오프라인 또는 온라인상에서 시스템 자원 인터페이스를 확인할 수 있으며, 이러한 인터페이스의 이용을 응용 프로그램 과정에 포함시킬 수 있다. 오프라인 상에서의 인터페이스 확인 및 이용은 모듈의 모델에 따른 데이터베이스의 검색과 검색된 인터페이스 기술 파일을 프로그래밍에 포함시킴으로써 이루어진다.
개발절차의 세번째 단계는 로봇 개발 단계(57)이다. 소프트웨어 컴포넌트(60)의 개발은 후기 결합을 통한 외부 컴포넌트와의 인터페이스(58, 59)를 전제로 한 개발 수단을 제공한다. 즉, 소프트웨어 컴포넌트(60)의 개발은 개발 대상인 컴포넌트가 표준적으로 제공하는 입력 인터페이스로 올바른 정보가 전달되고 출력 인터페이스를 통해 올바른 정보 이용 컴포넌트에게 정보가 전달되는 것을 가정하여 개발된다. 따라서 모듈 개발자는 소프트웨어 컴포넌트(60)의 복잡한 인터페이스 관계나 실제 인터페이스를 위한 통신 프로그래밍에 관한 부분에 대한 부담없이 프로그래밍을 수행할 수 있다. 이러한 소프트웨어 컴포넌트(60)의 실제 인터페이스 연결에 대한 설정이 로봇 개발 단계(57)에서 이루어진다. 따라서 소프트웨어 컴포넌트(60)의 실제 인터페이스 연결 설정 시의 호환성을 위해 각각의 소프트웨어 컴포넌트(60)는 속하는 범주에 따라 규정된 표준화된 입출력 인터페이스 사양을 만족하여야 한다. 여기에 추가적으로 제공되는 다양한 사용자의 요구를 수용할 수 있는 소프트웨어 컴포넌트(60)의 구현이 가능하다.
상기에서 설명한 것은 본 발명에 의한 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법을 실시하기 위한 하나의 실시예에 불과한 것으로, 본 발명은 상술한 실시예에 한정되지 않고, 본 발명의 기술적 사상 내에서 당 분야의 통상의 지식을 가진 자에 의하여 여러 가지 변형이 가능함은 물론이다.
상기의 설명에서와 같이, 본 발명에 의한 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법에 의하면, 상호 운영성을 갖는 기능적인 모듈 단위로 로봇을 대량 생산하는 것이 가능함으로서 제조업체 측면에서는 로봇시스템 전체가 아닌 특정한 기능 모듈의 개발 및 제작만 수행하면 되므로 전문화가 확보되고 이를 통해 기술 개발을 가속시킬 수 있으며, 또한 특정 모듈의 대량 생산으로 원가절감이 가능할 것이다. 또한 소비자는 다양하게 제공되는 기능 모듈의 조합을 통해 자신이 원하는 로봇을 스스로 조립할 수 있으므로 소비자의 다양한 요구를 만족시킬 수 있고 이로 인해 전체 로봇 시장의 확산이 가능하다는 효과가 있다.
도 1은 본 발명의 로봇 제어 구성요소를 포함한 계층적인 특성을 표현한 소프트웨어구조도,
도 2는 개발 환경도구와 로봇 제어 구조의 관계 표현도,
도 3은 로봇 개발의 통합 작업 흐름도,
도 4는 독립 기능 모듈의 조합으로 구성된 로봇의 예시도,
도 5는 개발 환경도구의 그래픽 기반 시스템 통합 환경 기능의 예시도,
도 6은 자율 로봇의 3단계 개발 절차 개념도.
* 도면의 주요 부분에 대한 부호의 설명 *
1 : 작업기술 언어 2 : 실시간 채널 관리자
3(3a, 3b, 3c, 3d, 3e, 3f, 3g) : 소프트웨어 컴포넌트
4(4a, 4b, 4c, 4d, 4e, 4f, 4g) : 가상머신
5 : 통신 미들웨어 6 : 독립 기능 모듈
6a : 브레인 모듈 6b : 모바일 모듈
6c : 센서 모듈 6d : 암 모듈
7 : 온라인 추론 시스템 8 : 업로드
9 : 오프라인 플래너 10 : 작업 관리자
100 : 로봇 제어 계획 계층 200 : 로봇 제어 관리 계층
300 : 로봇 제어 기능 계층 400 : 시스템 통합자
402 : 홈서버 404 : 원격지 개발환경

Claims (6)

  1. 개방형 분산처리구조에서 표준화된 명세 파일을 가지고 독립적인 소프트웨어 컴포넌트를 운영시키는 가상머신, 상기 소프트웨어 컴포넌트의 통신 경로를 제공하는 통신 미들웨어, 상기 소프트웨어 컴포넌트의 후기 결합 정보를 분석하여 소프트웨어 컴포넌트의 실시간 채널 이용시간을 관리하는 실시간 채널 관리자를 탑재한 이기종의 독립적인 모듈을 결합시켜 사용자 지향의 로봇을 개발하는 방법에 있어서,
    상기 모듈의 소프트웨어적인 시스템 통합을 위해 모듈의 서비스정보와 사용자 인터페이스 정보를 시스템 통합자에게 전송하는 단계;
    사용자의 요구를 받은 상기 시스템 통합자는 사용자측 홈서버에 접속하여 상기 모듈의 명세 파일 및 작업기술 파일에 대한 다운로드를 요청하는 단계;
    상기 시스템 통합자의 요구를 받은 홈서버는 결합된 상기 모든 독립 기능 모듈의 명세 파일과 브레인 모듈의 작업기술 파일을 시스템 통합자의 원격지 개발환경에 전송하는 단계;
    상기 원격지 개발환경은 전송받은 모듈의 명세 파일을 등록하여 데이터베이스화하고, 상기 모듈의 소프트웨어 컴포넌트 및 인터페이스 정보를 추출하여 작업기술 언어를 이용한 작업기술 파일 작성을 위한 API를 생성하는 단계;
    상기 시스템 통합자는 생성된 API를 통해 현재 소프트웨어 컴포넌트 집합에 새로운 컴포넌트의 추가, 삭제, 변경이 필요한지를 검토하여 원격지 개발환경에서 기능 기술 언어를 통해 새로운 컴포넌트를 작성하고, 상기 소프트웨어 컴포넌트의 구성 변화에 따라 원격지 개발환경은 등록해 놓은 모듈의 명세 파일정보를 업데이트하고 API를 변경하는 단계;
    상기 시스템 통합자는 변경된 API를 이용하여 그래픽 기반 환경 또는 텍스트 기반 환경에서 작업기술 파일을 작성하고, 이 작성된 작업기술 파일을 업데이트된 상기 모듈의 명세 파일과 새로 추가되거나 변경된 소프트웨어 컴포넌트와 함께 홈서버를 통해 브레인 모듈에 업로드하는 단계; 및
    상기 브레인 모듈은 각 독립 기능 모듈에 필요한 명세 파일과 소프트웨어 컴포넌트를 업로드시키고, 각 독립 기능 모듈은 변경된 명세 파일에 따라 필요한 가상머신을 새로 수행시키고 필요없는 가상머신을 정지시킴에 따라 기존의 소프트웨어 컴포넌트 환경을 변경시키는 단계;
    를 포함하여 이루어진 것을 특징으로 하는 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법.
  2. 제 1항에 있어서,
    탑재가 완료된 이후에 상기 시스템 통합자는 가상머신이 제공하는 시작, 재시작, 정지, 일시정지 기능을 이용한 시뮬레이션을 통해 디버그 작업을 수행하는 것을 특징으로 하는 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법.
  3. 제 1항에 있어서,
    상기 시스템 통합자는 생성된 API를 통해 사용자의 로봇에 개발된 작업기술 파일과 모듈 명세 파일을 업로드하기 전까지 오프라인상에서 개발 작업을 수행하는 것을 특징으로 하는 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법.
  4. 제 1항에 있어서,
    상기 브레인 모듈은 광역 네트워크인 인터넷과의 인터페이스수단, 오프라인 플래너, 온라인 추론시스템 및 작업 관리자를 추가로 탑재하고 있는 것을 특징으로 하는 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법.
  5. 개방형 분산처리구조에서 표준화된 명세 파일을 가지고 독립적인 소프트웨어 컴포넌트를 운영시키는 가상머신 및 상기 소프트웨어 컴포넌트의 통신 경로를 제공하는 통신 미들웨어의 탑재와, 로봇 제어 구조를 위한 작업 관리자, 실시간 관리자, 오프라인 플래너 및 추론 시스템 등을 탑재하는 제어 플랫폼을 개발하는 플랫폼개발단계;
    상기 플랫폼개발단계에서 개발된 플랫폼을 기반으로 독립적인 기능 모듈용 소프트웨어 컴포넌트를 작성하는 모듈개발단계; 및
    후기 결합을 통한 외부 컴포넌트와의 인터페이스를 기반으로 상기 모듈개발단계에서 개발된 이기종의 독립적인 복수의 모듈을 통합시켜 사용자 지향의 로봇을 개발하는 로봇개발단계;
    를 포함하는 3개의 독립적인 단계로 로봇을 개발하는 것을 특징으로 하는 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법.
  6. 제 5항에 있어서,
    상기 모듈 개발과 모듈 통합을 통한 로봇 개발을 동시에 지원하는 통합개발환경을 제공하는 것을 특징으로 하는 개방형 인터넷망 기반의 로봇 개발을 위한 분산 소프트웨어 통합서비스방법.
KR1020040033304A 2004-05-12 2004-05-12 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법 KR100559251B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020040033304A KR100559251B1 (ko) 2004-05-12 2004-05-12 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법
PCT/KR2005/001392 WO2005109300A1 (en) 2004-05-12 2005-05-12 Integrated service method of distribution software for robot development based on open internet network
US11/596,499 US20070294662A1 (en) 2004-05-12 2005-05-12 Integrated Service Method of Distribution Software for Robot Development Based on Open Internet Network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040033304A KR100559251B1 (ko) 2004-05-12 2004-05-12 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법

Publications (2)

Publication Number Publication Date
KR20050108519A true KR20050108519A (ko) 2005-11-17
KR100559251B1 KR100559251B1 (ko) 2006-03-15

Family

ID=35320408

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040033304A KR100559251B1 (ko) 2004-05-12 2004-05-12 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법

Country Status (3)

Country Link
US (1) US20070294662A1 (ko)
KR (1) KR100559251B1 (ko)
WO (1) WO2005109300A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100738052B1 (ko) * 2006-12-26 2007-07-12 주식회사 이디 지능형 로봇 제어 시뮬레이션 시스템
KR100756345B1 (ko) * 2006-12-04 2007-09-10 (주)시뮬레이션연구소 네트워크를 이용한 로봇 시뮬레이션 시스템
WO2010151038A2 (en) * 2009-06-23 2010-12-29 Yujin Robot Co., Ltd. Intelligent robot service system
KR101038309B1 (ko) * 2008-12-19 2011-06-01 주식회사 유진로봇 로봇 서비스 실행 시스템

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009033172A1 (en) * 2007-09-07 2009-03-12 Kace Networks, Inc. Architecture and protocol for extensible and scalable communication
WO2009043037A2 (en) 2007-09-28 2009-04-02 Xcerion Aktiebolag Network operating system
WO2010071384A2 (en) * 2008-12-19 2010-06-24 Yujin Robot Co., Ltd. Standardization system and method for robot fabrication and robot service implementation system
CN102609273B (zh) * 2011-01-20 2016-01-13 深圳市腾讯计算机系统有限公司 一种机器人及其软件升级的方法和系统
KR101809973B1 (ko) * 2011-01-24 2017-12-19 삼성전자주식회사 로봇 제어 시스템 및 로봇 제어 방법
KR101056682B1 (ko) 2011-04-08 2011-08-12 국방과학연구소 컴포넌트 기반의 무기체계 시뮬레이션 시스템 및 시뮬레이션 방법
CN103399739A (zh) * 2013-07-19 2013-11-20 苏州大学 一种机器人程序开发平台的生成方法与系统
US9396091B2 (en) * 2014-09-29 2016-07-19 Sap Se End-to end, lifecycle aware, API management
US9680965B2 (en) * 2015-04-01 2017-06-13 Alcatel-Lucent Usa Inc. Software upgrades for offline charging systems within a network
US9687982B1 (en) 2015-05-27 2017-06-27 X Development Llc Adapting programming of a robot and/or control of the robot based on one or more parameters of an end effector of the robot
DE102016215742A1 (de) * 2016-08-23 2018-03-01 Robert Bosch Gmbh Gateway und Verfahren zur Anbindung eines Datenquellensystems an ein IT-System
CN106373457A (zh) * 2016-08-26 2017-02-01 成都南博教育咨询有限公司 一种教育机器人平台系统
US10360082B2 (en) * 2017-01-19 2019-07-23 International Business Machines Corporation Analysis of application programming interface usage for improving a computer system
JP7015865B2 (ja) * 2020-04-23 2022-02-03 株式会社日立製作所 ストレージシステム及びストレージシステムによる情報処理方法
US11461470B2 (en) 2020-06-26 2022-10-04 Bank Of America Corporation System and method for providing an application programming interface (API) based on performance and security
CN113848841B (zh) * 2021-10-12 2022-05-31 湖南大学 工业机器人分布式控制系统中间件框架系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4763276A (en) * 1986-03-21 1988-08-09 Actel Partnership Methods for refining original robot command signals
US5781743A (en) * 1994-02-18 1998-07-14 Hitachi, Ltd. System and method for distributed data processing using different server system specifications
US5790406A (en) * 1995-10-20 1998-08-04 International Business Machines Corporation Hierarchical system of the simple modification of process steps for a manufacturing tool
US6088689A (en) * 1995-11-29 2000-07-11 Hynomics Corporation Multiple-agent hybrid control architecture for intelligent real-time control of distributed nonlinear processes
US6430570B1 (en) * 1999-03-01 2002-08-06 Hewlett-Packard Company Java application manager for embedded device
JP2001222316A (ja) * 2000-02-09 2001-08-17 Sony Corp ロボットの管理システム及びロボットの管理方法
US6845297B2 (en) * 2000-05-01 2005-01-18 Irobot Corporation Method and system for remote control of mobile robot
FR2815801B1 (fr) * 2000-10-20 2004-10-29 Trusted Logic Protocole de transmission d'une pluralite de flux logiques d'echange multiple de couples de commande/reponse sur un canal physique unique d'echange entre maitre et esclave et systeme de suivi et de controle d'execution d'appliquettes
US20020099753A1 (en) * 2001-01-20 2002-07-25 Hardin David S. System and method for concurrently supporting multiple independent virtual machines
JP4491989B2 (ja) * 2001-04-17 2010-06-30 セイコーエプソン株式会社 制御システム
US7082604B2 (en) * 2001-04-20 2006-07-25 Mobile Agent Technologies, Incorporated Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents
KR100980793B1 (ko) * 2001-11-28 2010-09-10 에볼루션 로보틱스, 인크. 로봇을 위한 하드웨어 추상화 계층에서의 센서 및액추에이터 추상화 및 집단화
US6807461B2 (en) * 2002-05-22 2004-10-19 Kuka Roboter Gmbh Coordinated robot control from multiple remote instruction sources
US7657884B2 (en) * 2003-03-24 2010-02-02 Hewlett-Packard Development Company, L.P. Electronic device supporting multiple update agents
US20040240981A1 (en) * 2003-05-29 2004-12-02 I-Scan Robotics Robot stacking system for flat glass
US7162626B2 (en) * 2003-09-25 2007-01-09 Intel Corporation Use of common language infrastructure for sharing drivers and executable content across execution environments

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100756345B1 (ko) * 2006-12-04 2007-09-10 (주)시뮬레이션연구소 네트워크를 이용한 로봇 시뮬레이션 시스템
KR100738052B1 (ko) * 2006-12-26 2007-07-12 주식회사 이디 지능형 로봇 제어 시뮬레이션 시스템
KR101038309B1 (ko) * 2008-12-19 2011-06-01 주식회사 유진로봇 로봇 서비스 실행 시스템
WO2010151038A2 (en) * 2009-06-23 2010-12-29 Yujin Robot Co., Ltd. Intelligent robot service system
WO2010151038A3 (en) * 2009-06-23 2011-04-14 Yujin Robot Co., Ltd. Intelligent robot service system
KR101147458B1 (ko) * 2009-06-23 2012-05-21 주식회사 유진로봇 지능형 로봇 서비스 시스템

Also Published As

Publication number Publication date
KR100559251B1 (ko) 2006-03-15
US20070294662A1 (en) 2007-12-20
WO2005109300A1 (en) 2005-11-17

Similar Documents

Publication Publication Date Title
KR100559251B1 (ko) 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법
US7823126B2 (en) Robot control software framework in open distributed process architecture
Vaughan et al. Reusable robot software and the player/stage project
CA2643378C (en) A general purpose robotics operating system
US20080005255A1 (en) Extensible robotic framework and robot modeling
JP4628634B2 (ja) 汎用運動制御システム
Kruger et al. Erlang-based control implementation for a holonic manufacturing cell
Belsare et al. Micro-ros
CN116822135A (zh) 实时仿真平台系统及仿真系统构建方法
Gherardi Variability modeling and resolution in component-based robotics systems
Chaimowicz et al. ROCI: A distributed framework for multi-robot perception and control
EP1118939A2 (en) Software debugger user interface
CN114564192A (zh) 一种实时以太网工控软件开发环境的数据映射方法
Hong et al. Semo: Service-oriented and model-based software framework for cooperating robots
JP2002259126A (ja) 分散型制御システムのためのソフトウェア構成要素及び制御システムを設計するための方法
KR101384242B1 (ko) 내부 환경을 동적으로 재구성하는 로봇 장치 및 재구성 방법
CN114416222A (zh) 应用程序调用驱动接口的方法及装置
Bardaro et al. From models to software through automatic transformations: An AADL to ROS end-to-end toolchain
KR101251287B1 (ko) 명령 적응형 지능형 로봇 장치 및 제어 방법
Vijeth et al. Review on Robot Operating System
Perricone et al. GrADyS-GS--A ground station for managing field experiments with Autonomous Vehicles and Wireless Sensor Networks
Andres et al. ROSoClingo: A ROS package for ASP-based robot control
Peng et al. Connecting the Robot to ROS
Grüner et al. An approach for interconnection and unification of state models in discrete manufacturing
Hristozov et al. Modeling Aspects of Dynamically Reconfigurable System of Systems Check for updates

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110303

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee