KR20110062480A - 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템 - Google Patents

원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템 Download PDF

Info

Publication number
KR20110062480A
KR20110062480A KR1020090119220A KR20090119220A KR20110062480A KR 20110062480 A KR20110062480 A KR 20110062480A KR 1020090119220 A KR1020090119220 A KR 1020090119220A KR 20090119220 A KR20090119220 A KR 20090119220A KR 20110062480 A KR20110062480 A KR 20110062480A
Authority
KR
South Korea
Prior art keywords
plug
function
remote
symbol
robot
Prior art date
Application number
KR1020090119220A
Other languages
English (en)
Other versions
KR101242662B1 (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 KR1020090119220A priority Critical patent/KR101242662B1/ko
Priority to JP2010164186A priority patent/JP5264837B2/ja
Publication of KR20110062480A publication Critical patent/KR20110062480A/ko
Application granted granted Critical
Publication of KR101242662B1 publication Critical patent/KR101242662B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)

Abstract

본 발명은, 로봇의 각 플러그인(모듈)을 원격지에서 실행함으로써, 로봇 응용을 동적으로 구성하고, 다수의 컴퓨팅 자원을 활용하는데 적합한 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템에 관한 것으로, 로봇 소프트웨어를 컴포넌트로 구성하거나 혹은 플러그인 실행 엔진이 존재하는 컴퓨팅 노드 상에서만 플러그인이 존재하여야 하는 종래 방식과는 달리, 로봇 응용 프로그램이 네트워크 상에서 산재된 각종 컴퓨팅 노드에 탑재된 원격 플러그인을 동적으로 플러그인 실행 엔진에 연결함으로써, 네트워크 상에 존재하는 각종 컴퓨팅 자원을 효율적으로 활용할 수 있을 뿐만 아니라, 모듈의 의존성을 최소화하고, 개발된 응용 프로그램을 다른 로봇으로 손쉽게 이식할 수 있으며, 응용과 구성 모듈간의 의존성을 최소화함으로써, 구성 모듈의 이용성을 극대화할 수 있는 것이다

Description

원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템{REMOTE PLUGIN APPARATUS, ROBOT PLUGIN EXECUTION ENGINE APPARATUS AND ROBOT PLUGIN EXECUTION SYSTEM THEREOF}
본 발명은 로봇 플러그인 기법에 관한 것으로, 더욱 상세하게는 로봇의 각 플러그인(모듈)을 원격지에서 실행함으로써, 로봇 응용을 동적으로 구성하고, 다수의 컴퓨팅 자원을 활용하는데 적합한 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템에 관한 것이다.
본 발명은 지식경제부의 IT성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2008-S-030-02, 과제명 : 개방형 로봇 소프트웨어 플랫폼 기술 개발].
종래의 로봇 소프트웨어는 각 기능을 담당하는 모듈이 정적으로 결합되어 하나의 실행 프로그램으로 실체화되고 이것이 로봇에 탑재되어 실행하는 구조를 지니는 것이 일반적이다.
그러나, 이러한 방식은 로봇 플랫폼이 변경되거나 로봇 모듈의 기능 변경 및 기능 향상에 따른 기존 모듈의 교체 시, 전체 로봇 프로그램을 재 컴파일 하여야 하는 부담이 있고, 각 모듈의 개발 시 독립적인 개발이 어려운 점이 있으며, 로봇 내부나 외부에 존재하는 다수의 컴퓨팅 노드들을 이용하지 못하여 성능이 저하되는 단점을 지니고 있다.
이러한 점을 해결하기 위한 종래의 기술 중 하나는 로봇 소프트웨어를 컴포넌트로 구성하는 방식으로서, 각 모듈을 컴포넌트화하여 로봇이나 외부 컴퓨팅 노드에서 실행하는 방식이다.
즉, 종래의 컴포넌트 기술은 원격지에서 로봇 응용을 구성하는 모듈(컴포넌트)을 실행할 수 있었다. 이 방식에서는 원격지에도 로봇 모듈을 로딩하고 실행할 수 있는 컴포넌트 실행 엔진이 탑재되고 이 원격 엔진이 컴포넌트를 로딩하여 실행하는 방식이다.
따라서, 종래의 컴포넌트 기술은 컴포넌트 단독으로는 실행 가능하지 않았고, 그 실체화 방식도 동적 라이브러리(.dll 또는 .so) 형태였다. 즉, 이 방식은 각각의 컴퓨팅 노드에 컴포넌트 실행엔진이 탑재되어야 하는 방식이다.
또한, 종래의 컴포넌트 기술은 원격지에서 실행이 가능하나 컴포넌트 엔진이 컴포넌트를 활용하기 위해서는 관련정보를 프로파일에 정확히 기술하여야 하였다. 이 프로파일 정보에는 다른 컴포넌트와의 연결성, 컴포넌트 인터페이스 등 자체의 속성을 기술한 정보를 포함한다. 따라서, 개발자는 컴포넌트 자체의 개발과 함께 프로파일 정보를 함께 기술하여 주어야만 한다.
종래의 또 다른 기술은 플러그인 방식을 이용한 로봇 소프트웨어의 모듈화 방식이다.
이러한 종래의 로봇 플러그인 기술은 플러그인 엔진이 존재하는 로컬 상에서만 모듈을 플러그인할 수 있었다. 따라서, 네트워크 상에 존재하는 각종 컴퓨팅 자원을 효율적으로 활용하기 위해서는 로봇 플러그인 실행 엔진과는 다른 컴퓨팅 노드에서 실행 가능한 모듈을 지원하는 것이 필요하다.
그러나, 로봇 소프트웨어를 컴포넌트로 구성하는 종래 방식은 각 컴포넌트가 동작할 컴퓨팅 노드에 별도의 컴포넌트 실행 엔진이 탑재되어야 하기 때문에 컴포넌트 단독으로는 실행이 불가능하다. 또한, 컴포넌트끼리의 연결이나 컴포넌트가 가진 인터페이스를 기술하는 프로파일 정보를 함께 제공해야 하기 때문에 컴포넌트 개발이 용이하지 않고, 이 때문에 대부분 전용의 개발도구를 이용하지 않고서는 현실적으로 컴포넌트 개발이 용이하지 않다는 단점이 있다.
또한, 종래의 컴포넌트 기술은 개발자는 컴포넌트 자체의 개발과 함께 프로파일 정보를 함께 기술하여 주어야만 하기 때문에 개발의 복잡성과 난이도를 높이는 또 다른 단점이 있다.
한편, 종래의 플러그인 방식은 플러그인 실행 엔진이 존재하는 컴퓨팅 노드 상에서만 플러그인이 존재하여야 하기 때문에, 네트워크 상에서 플러그인의 기능을 활용할 수는 없다는 문제가 있다.
본 발명은, 일 관점에 따라, 각 원격 플러그인 내부에 들어 있는 각 원격 오브젝트들을 관리하는 오브젝트 관리자와, 상기 각 원격 오브젝트들이 등록한 심볼들을 로봇 플러그인 실행 엔진 장치에 등록하고 관리하는 심볼 서비스 관리자와, 상기 각 원격 오브젝트가 등록한 함수들을 상기 로봇 플러그인 실행 엔진 장치에 등록하고 관리하는 함수 서비스 관리자와, 상기 각 원격 오브젝트가 등록한 알림이 함수들을 상기 로봇 플러그인 실행 엔진 장치에 등록하고 관리하는 알림이 서비스 관리자와, 상기 각 원격 오브젝트가 등록한 타이머들을 상기 로봇 플러그인 실행 엔진 장치에 등록하고 관리하는 타이머 서비스 관리자와, 네트워크를 통해 상기 각 관리자들과 상기 로봇 플러그인 실행 엔진 장치와의 통신을 담당하는 연결 관리자를 포함하는 원격 플러그인 장치를 제공한다.
여기에서, 본 발명의 원격 플러그인 장치 내 오브젝트 관리자는 로봇 플러그인 실행 엔진 장치에 등록하고자 하는 원격 오브젝트가 생성될 때 생성된 원격 오브젝트를 내부 오브젝트 테이블에 저장한 후 연결 관리자로 전달하고, 심볼 서비스 관리자는 특정 원격 오브젝트가 외부로 노출시키고자 하는 실볼을 등록할 때 해당 심볼에 대한 이름과 해당 심볼에 대한 참조를 결합하여 심볼 테이블 엔트리를 구성한 후 연결 관리자로 전달하며, 함수 서비스 관리자는 특정 원격 오브젝트가 외부로 노출시키고자 하는 함수를 등록할 때 해당 함수에 대한 이름과 해당 함수에 대 한 참조를 결합하여 함수 테이블 엔트리를 구성한 후 연결 관리자로 전달하고, 알림이 서비스 관리자는 특정 원격 오브젝트가 등록하고자 하는 알림이 서비스를 위해 대상 심볼의 이름과 콜백될 함수에 대한 참조가 전달될 때 대상 심볼에 대한 이름과 콜백 함수에 대한 참조를 결합하여 알림이 테이블 엔트리를 구성한 후 연결 관리자로 전달하며, 타이머 서비스 관리자는 특정 원격 오브젝트가 등록하고자 하는 타이머 서비스를 위해 콜백할 함수에 대한 참조와 호출될 주기가 전달될 때 타이머 이름과 함수에 대한 참조를 결합하여 타이머 테이블 엔트리를 구성한 후 연결 관리자로 전달한다.
본 발명은, 다른 관점에 따라, 각 로컬 플러그인 내부에 들어 있는 오브젝트들을 관리하고, 오브젝트의 등록 요청이 있을 때 그에 상응하는 오브젝트 프락시를 생성 및 등록하는 오브젝트 관리자와, 상기 각 로컬 플러그인에서 등록한 심볼들을 관리하고, 각 심볼들의 참조 및 변경을 담당하는 심볼 서비스 관리자와, 상기 각 로컬 플러그인에서 등록한 함수들을 관리하고, 각 함수들에 대한 호출 및 결과 값의 반환을 담당하는 함수 서비스 관리자와, 특정 이벤트가 발생할 때 해당 로컬 플러그인에서 등록한 함수를 호출해 주는 알림이 서비스 관리자와, 특정 주기별로 상기 각 로컬 플러그인에서 등록한 함수를 호출하는 타이머 서비스 관리자와, 네트워크를 통해 상기 각 관리자들과 원격 플러그인 장치와의 통신을 담당하는 연결 관리자를 포함하는 로봇 플러그인 실행 엔진 장치를 제공한다.
여기에서, 본 발명의 로봇 플러그인 실행 엔진 장치 내 오브젝트 관리자는 원격 플러그인 장치로부터 등록을 요청받은 해당 오브젝트의 이름과 동일한 이름을 갖는 오브젝트 프락시 객체를 생성하여 프락시로서 등록하고, 심볼 서비스 관리자는 원격 플러그인 장치로부터 심볼 등록을 요청받은 해당 심볼의 이름과 상응하는 프락시 오브젝트의 참조를 결합하여 심볼 서비스 엔트리를 구성한 후 심볼 서비스 테이블에 등록하며, 함수 서비스 관리자는 원격 플러그인 장치로부터 함수 등록을 요청받은 해당 함수의 이름과 호출될 함수 이름을 결합하여 함수 서비스 엔트리를 구성한 후 함수 서비스 테이블에 등록하고, 알림이 서비스 관리자는 원격 플러그인 장치로부터 알림이 등록을 요청받은 해당 심볼의 이름과 호출될 함수 이름을 결합하여 알림이 서비스 엔트리를 구성한 후 알림이 서비스 테이블에 등록하며, 타이머 서비스 관리자는 원격 플러그인 장치로부터 타이머 등록을 요청받은 해당 타이머의 이름과 자신이 함수를 결합하여 타이머 서비스 엔트리를 구성한 후 타이머 서비스 테이블에 등록한다.
본 발명은, 또 다른 관점에 따라, 각 원격 플러그인 내부에 들어 있는 각 원격 오브젝트들을 관리하고, 연결 관리자를 이용한 네트워크 통신을 통해 상기 각 원격 오브젝트들이 등록한 심볼들, 함수들, 알림이 함수들, 타이머들을 로봇 플러그인 실행 엔진에 등록하고 관리하는 원격 플러그인과, 각 로컬 플러그인 내부에 들어 있는 오브젝트들을 관리하고, 연결 관리자를 이용한 네트워크 통신을 통해 상기 각 로컬 플러그인에서 등록한 심볼들, 각 함수들, 상기 각 함수들에 대한 호출 및 결과 값의 반환, 상기 각 함수들의 호출을 서비스하는 상기 로봇 플러그인 실행 엔진을 포함하는 로봇 플러그인 실행 시스템을 제공한다.
본 발명은 로봇 응용 프로그램이 네트워크 상에서 산재된 각종 컴퓨팅 노드에 탑재된 원격 플러그인을 동적으로 플러그인 실행 엔진에 연결되도록 함으로써, 다음과 같은 효과를 갖는다.
첫째, 네트워크 컴퓨팅 능력의 최대화할 수 있다. 즉, 로봇 소프트웨어를 이루는 각 기능을 모듈 별로 나누고, 각 기능 모듈을 네트워크상에서 분산된 컴퓨팅 노드에 할당하여 실행함으로써, 각 컴퓨팅 노드가 가지고 있는 컴퓨팅 능력을 충분히 활용할 수 있을 뿐만 아니라, 로봇 자체의 계산 요구를 감소시킴으로써 로봇이 보다 컴퓨팅 자원을 효율적으로 사용할 수 있다.
둘째, 소프트웨어 모듈의 독립 실행이 가능해 진다. 즉, 로봇 소프트웨어를 구성하는 각 모듈을 로봇 원격 플러그인으로 작성하고, 각 원격 플러그인이 독립적으로 실행 가능한 파일 형식으로 구체화된다. 이를 통해 원격지에서 해당 플러그인을 독립적으로 실행하기 때문에, 별도의 실행 엔진을 원격지에서 실행하지 않아도 되는 장점이 있다. 이는 원격지 컴퓨팅 자원(메모리, 계산능력)에 대한 요구량을 감소하여 원격지 컴퓨팅 자원의 효율적 사용에도 기여하고, 사용의 편의성도 증대된다.
셋째, 모듈개발의 단순화가 기대된다. 기존의 컴포넌트 방식의 모듈지원에서는 해당 컴포넌트가 컴포넌트 실행 엔진으로 탑재되기 위하여 각종 프로파일 정보를 함께 기술하여야만 하였지만, 본 발명은 이러한 프로파일 정보를 전혀 필요로 하지 않기 때문에 개발자는 오로지 로봇 원격 플러그인 모듈만 개발하면 된다. 따 라서, 개발과정이 단순화되고, 개발의 효율성과 오류 가능성을 줄일 수 있다.
넷째, 팀 개발의 용이성 증대된다. 종래의 플러그인 방식은 로컬에서만 플러그인이 지원되는 방식이었기 때문에, 각 플러그인 개발자들은 같은 컴퓨팅 자원에 지리적으로 접근이 가능한 장소에 모여서 개발 및 테스트를 진행하여야 하였다. 그러나, 본 발명은 원격지에서도 소프트웨어 모듈을 실행하고, 이 소프트웨어 모듈이 로봇에 탑재된 플러그인 실행 엔진에 접속하여 상호 작용하는 방식이기 때문에, 각 모듈의 개발을 담당하는 다수의 팀들이 독립적으로 개발을 진행하는 것이 가능하다.
본 발명의 기술요지는, 로봇 응용 프로그램이 네트워크 상에서 산재된 각종 컴퓨팅 노드에 탑재된 원격 플러그인을 동적으로 플러그인 실행 엔진에 연결함으로써, 네트워크 상에 존재하는 각종 컴퓨팅 자원을 효율적으로 활용할 수 있을 뿐만 아니라, 모듈의 의존성을 최소화하고, 개발된 응용 프로그램을 다른 로봇으로 손쉽게 이식할 수 있으며, 응용과 구성 모듈간의 의존성을 최소화함으로써, 구성 모듈의 이용성을 극대화한다는 것으로, 본 발명은 이러한 기술적 수단을 통해 종래 방식에서의 문제점을 효과적으로 개선할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 상세하게 설명한다.
아울러, 아래의 본 발명을 설명함에 있어서 공지 기능 또는 구성 등에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들인 것으로, 이는 사용자, 운용자 등의 의도 또는 관례 등에 따라 달라질 수 있음은 물론이다. 그러므로, 그 정의는 본 명세서의 전반에 걸쳐 기술되는 기술사상을 토대로 이루어져야 할 것이다.
도 1은 본 발명에 따라 로봇과 원격지 컴퓨터가 네트워크를 통해 연결되는 구조를 보여주는 시스템 계통도로서, 로봇(100)에는 로봇 플러그인들을 실행하기 위한 로봇 플러그인 실행 엔진 장치(110)가 탑재되고 원격지 컴퓨터(200)에는 다수의 원격 플러그인 장치(210)가 탑재된다.
여기에서, 로봇 플러그인은 로컬 또는 원격 플러그인이 될 수 있으며, 본 발명에서는 원격 플러그인을 원격지의 로봇에 로딩하고 실행하는데, 원격 플러그인은 로봇 플러그인 실행 엔진 장치가 탑재된 컴퓨팅 노드와는 다른 컴퓨팅 노드에서 실행되는 플러그인이다. 즉, 다수의 원격지 컴퓨터에서 실행되는 각 플러그인은 로봇 플러그인 실행 엔진 장치에 등록한 후 그에 상응하는 각종 서비스를 제공받을 수 있다.
즉, 원격지 컴퓨터(200)의 원격 플러그인 장치(210)에서는 오브젝트, 심볼 서비스, 함수 서비스, 알림이 서비스, 타이머 서비스 등과 관련된 플러그인을 로봇 플러그인 실행 엔진 장치(110)에 탑재하고, 로봇(100)의 로봇 플러그인 실행 엔진 장치(110)에서는 탑재된 플러그인에 상응하는 각종 서비스를 원격 플러그인 장치(210)에 제공한다.
도 2는 본 발명에 따른 로봇 플로그인 실행 엔진 장치의 블록구성도로서, 오브젝트 관리자(111), 심볼 서비스 관리자(112), 함수 서비스 관리자(113), 알림이 서비스 관리자(114), 타이머 서비스 관리자(115) 및 연결 관리자(116) 등을 포함한다.
도 2를 참조하면, 오브젝트 관리자(111)는 각각의 로컬 플러그인 내부에 들어 있는 오브젝트를 관리하는 모듈을 의미하는 것으로, 원격 플러그인 장치(210)로부터 오브젝트 등록 요청이 있을 때 그에 상응하여 생성되는 오브젝트 프락시 객체를 등록하는 등의 기능을 수행한다.
다음에, 심볼 서비스 관리자(112)는 각 로컬 플러그인에서 등록한 심볼들을 관리하고, 이들 심볼에 대한 참조 및 변경을 담당하는 서비스 모듈을 의미하는 것으로, 원격 플러그인 장치(210)로부터 심볼 등록 요청이 있을 때 해당 심볼의 이름과 프락시 오브젝트의 참조를 결합하여 심볼 서비스 엔트리를 만든 후 이를 심볼 서비스 테이블에 등록하는 등의 기능을 수행한다.
또한, 함수 서비스 관리자(113)는 각 로컬 플러그인에서 등록한 함수들을 관리하고 이들 함수에 대한 호출 및 결과 값의 반환을 담당하는 서비스 모듈을 의미하는 것으로, 원격 플러그인 장치(210)로부터 함수 등록 요청이 있을 때 전달받은 함수 이름과 호출될 함수 이름을 결합하여 함수 서비스 엔트리를 만든 후 이를 함수 서비스 테이블에 등록하는 등의 기능을 수행한다.
그리고, 알림이 서비스 관리자(114)는 특정 이벤트가 발생했을 때 해당 로컬 플러그인에서 등록한 함수를 호출해주는 서비스 모듈을 의미하는 것으로, 원격 플러그인 장치(210)로부터 알림이 등록 요청이 있을 때 전달받은 심볼 이름과 호출될 함수 이름을 결합하여 알림이 서비스 엔트리를 만든 후 이를 알림이 서비스 테이블에 등록하는 등의 기능을 수행한다.
다음에, 타이머 서비스 관리자(115)는 특정 주기 별로 해당 로컬 플러그인에서 등록한 함수를 호출하는 기능을 제공해주는 서비스 모듈을 의미하는 것으로, 원격 플러그인 장치(210)로부터 알림이 등록 요청이 있을 때 타이머 이름과 자신의 함수를 결합하여 만들어진 타이머 서비스 엔트리를 타이머 서비스 테이블에 등록하는 등의 기능을 수행한다.
마지막으로, 연결 관리자(116)는 원격 플러그인 장치(210)와의 통신을 담당하는 모듈을 의미하는 것으로, 원격 플러그인 장치(210)로부터 네트워크를 통해 오브젝트, 심볼 서비스, 함수 서비스, 알림이 서비스, 타이머 서비스 등에 대한 등록 요청이 수신될 때 그와 관련된 오브젝트 프락시 객체를 생성하거나 혹은 해당 오브젝트에 상응하는 프락시를 찾아 오브젝트 관리자(111), 심볼 서비스 관리자(112), 함수 서비스 관리자(113), 알림이 서비스 관리자(114), 타이머 서비스 관리자(115) 등에 해당 객체로의 등록을 요청하는 등의 기능을 수행한다.
도 3은 본 발명에 따른 로봇 원격 플러그인 장치의 블록구성도로서, 오브젝트 관리자(211), 심볼 서비스 관리자(212), 함수 서비스 관리자(213), 알림이 서비스 관리자(214), 타이머 서비스 관리자(215) 및 연결 관리자(216) 등을 포함하는 데, 각 원격 플러그인은 다수의 오브젝트(오브젝트1, 오브젝트2 - - - 오브젝트N)를 정의할 수 있다.
도 3을 참조하면, 오브젝트 관리자(211)는 각 원격 플러그인 장치(210)의 내부에 들어 있는 원격 오브젝트를 관리하는 모듈을 의미하는 것으로, 원격 플러그인 장치(210)의 내부에 있는 원격 오브젝트를 로봇에서 실행 중인 로봇 플러그인 실행 엔진 장치(110)에 등록하고자 할 때, 원격 플러그인 장치(210)에서 오브젝트가 생성되면 생성된 원격 오브젝트를 자신의 내부 테이블에 보관한 후, 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110) 측에 오브젝트 등록을 요청하는 등의 기능을 수행한다.
이에 응답하여, 로봇 플러그인 실행 엔진 장치(110) 내 연결 관리자(116)에서는 등록을 요청 받은 오브젝트의 이름(A)과 동일한 이름을 갖는 오브젝트 프락시 객체(A)를 생성하며, 이와 같이 생성된 오브젝트 프락시 객체는 로봇 플러그인 실행 엔진 장치(110)에 프락시로서 등록된다.
또한, 심볼 서비스 관리자(212)는 각 원격 오브젝트가 등록한 심볼을 로봇 플러그인 실행 엔진 장치(110)에 등록하고 관리하는 역할을 수행하는 모듈을 의미하는 것으로, 원격 오브젝트가 외부로 노출시키고자 하는 심볼을 등록하고자 할 때, 원격 오브젝트가 등록하고자 하는 심볼(A.symbol_1)과 오브젝트 객체를 넘겨주면, 심볼 테이블에 해당 심볼에 대한 이름(A.symbol_1)과 해당 심볼에 대한 참조(A.Symbol_1)를 결합하여 심볼 테이블 엔트리를 구성한 후, 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110) 측에 심볼에 대한 등록을 요청하는 등의 기능을 수행한다. 이것은 각 심볼이나 함수 등 원격 오브젝트가 노출시키는 모든 엔터티가 로봇 플러그인 실행 엔진 장치(110)에 등록되어야만 다른 플러그인에서 활용 가능하기 때문이다.
이에 응답하여, 로봇 플러그인 실행 엔진 장치(110) 내 연결 관리자(116)에서는 심볼 등록 요청을 보낸 오브젝트에 상응하는 프락시를 찾고(오브젝트 프락시 A) 이 객체에 심볼 등록을 요청하며, 이러한 프락시 오브젝트는 요청 받은 심볼의 이름과 프락시 오브젝트 자신의 참조를 심볼 서비스 관리자(112)로 전달한다. 그 결과, 심볼 서비스 관리자(112)는 해당 심볼의 이름과 프락시 오브젝트의 참조를 결합하여 심볼 서비스 엔트리를 만든 후 이를 심볼 서비스 테이블에 등록한다.
다음에, 함수 서비스 관리자(213)는 각 원격 오브젝트가 등록한 함수를 로봇 플러그인 실행 엔진 장치(110)에 등록하고 관리하는 역할을 수행하는 모듈을 의미하는 것으로, 원격 오브젝트가 외부로 노출시키고자 하는 함수를 등록하고자 할 때, 원격 오브젝트가 등록하고자 하는 함수(A.f1)를 넘겨주면, 함수 테이블에 해당 함수에 대한 이름(“A.f1”)과 해당 함수에 대한 참조(A.f1)를 결합하여 함수 테이블 엔트리를 구성한 후, 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110) 측에 함수에 대한 등록을 요청하는 등의 기능을 수행한다.
이에 응답하여, 로봇 플러그인 실행 엔진(110) 내 연결 관리자(116)에서는 함수 등록 요청을 보낸 오브젝트에 상응하는 프락시를 찾고(오브젝트 프락시 A) 이 객체에 함수 등록을 요청하고, 이러한 프락시 오브젝트는 요청 받은 함수의 이름과 이 함수가 호출될 때 대신 호출될 함수(on_any_function)를 함수 서비스 관리 자(113)에 등록 요청하며, 그 결과 함수 서비스 관리자(113)에서는 전달받은 함수 이름(A.f1)과 호출될 함수 이름(A.on_any_function)을 결합하여 함수 서비스 엔트리를 만든 후 이를 함수 서비스 테이블에 등록한다.
그리고, 알림이 서비스 관리자(214)는 각 원격 오브젝트가 등록한 알림이 함수를 로봇 플러그인 실행 엔진 장치(110)에 등록하고 관리하는 역할을 수행하는 모듈을 의미하는 것으로, 로봇 플러그인 실행 엔진 장치(110)에 등록된 특정 심볼이 변경될 경우 이를 알림받는 서비스를 제공하는데, 예컨대 해당 심볼의 값이 변경될 경우 알림이 서비스에 등록된 함수를 호출하는 서비스이다.
우선, 원격 오브젝트가 등록하고자 하는 알림이 서비스를 위하여 대상 심볼의 이름과 콜백될 함수에 대한 참조를 알림이 서비스 관리자(214)로 전달하면, 알림이 서비스 관리자(214)는 알림이 테이블에 해당 심볼에 대한 이름(“B.symbol_1”)과 콜백 함수에 대한 참조(A.on_B.symbol_1_changed)를 결합하여 알림이 테이블 엔트리를 구성한 후, 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110) 측에 알림이 등록을 요청하는 등의 기능을 수행한다.
이에 응답하여, 로봇 플러그인 실행 엔진 장치(110)의 연결 관리자(116)에서는 알림이 등록 요청을 보낸 오브젝트에 상응하는 프락시를 찾고(오브젝트 프락시 A) 이 객체에 알림이 등록 요청을 하며, 프락시 오브젝트는 요청 받은 심볼의 이름과 이 심볼이 변경되었을 때 알림 받을 콜백 함수(on_any_symbol_changed)를 함수 서비스 관리자(113)에게 등록 요청한다. 여기에서, on_any_symbol_changed 함수는 해당 오브젝트가 등록하는 모든 알림이 서비스를 위하여 마련된 공통 콜백 함수를 의미한다. 즉, 대상 심볼의 이름이 변하더라도 로봇 플러그인 실행 엔진에 등록되는 콜백 함수는 동일하다. 그 이유는, 이 함수를 통하여 상응하는 원격 오브젝트로 요청을 전달하는 기능만 수행하고, 실제적인 콜백 함수의 호출은 원격 플러그인 장치에서 이루어지기 때문이다. 로봇 플러그인 실행 엔진 장치(110)의 알림이 서비스 관리자(114)는 전달받은 심볼 이름(B.symbol_1)과 호출될 함수 이름(A.on_any_symbol_changed)을 결합하여 알림이 서비스 엔트리를 만든 후 이를 알림이 서비스 테이블에 등록한다.
또한, 타이머 서비스 관리자(215)는 각 원격 오브젝트가 등록한 타이머를 로봇 플러그인 실행 엔진 장치(110)에 등록하는 관리하는 역할을 수행하는 모듈을 의미하는 것으로, 타이머 서비스는 일정한 주기마다 로봇 플러그인 실행 엔진 장치(110)가 원격 오브젝트의 특정 함수를 호출하는 서비스이다.
우선, 원격 오브젝트가 등록하고자 하는 타이머 서비스를 위하여 콜백될 함수에 대한 참조(A.on_timeout_1)와 호출될 주기(1초)를 타이머 서비스 관리자(215)에게 전달하면, 타이머 서비스 관리자(215)는 타이머 이름(“A.on_timeout_1”)과 함수에 대한 참조(A.on_timeout_1)와 결합하여 타이머 테이블 엔트리를 구성한 후, 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110) 측에 타이머 서비스 등록을 요청하는 등의 기능을 수행한다.
이에 응답하여, 로봇 플러그인 실행 엔진 장치(110)의 연결 관리자(116)에서는 이 요청을 보낸 오브젝트에 상응하는 프락시를 찾고(오브젝트 프락시 A) 이 객체에 타이머 서비스 등록을 요청하고, 프락시 오브젝트는 전달받은 타이머 이 름(A.timeout_1)과 자신의 함수인 on_any_timeout을 결합하여 타이머 서비스 엔트리를 만든 후 이를 타이머 서비스 관리자(115)에게 등록 요청하며, 타이머 서비스 관리자(115)는 타이머 서비스 엔트리를 타이머 서비스 테이블에 등록한다. 여기에서, on_any_timeout 함수는 해당 오브젝트가 등록하는 모든 타이머 서비스를 위하여 마련된 공통 콜백 함수이다. 즉, 대상 타이머의 이름이 변하더라도 로봇 플러그인 실행 엔진 장치(110)에 등록되는 콜백 함수는 동일하다. 그 이유는, 이 함수를 통하여 상응하는 원격 오브젝트로 타임아웃을 전달하는 기능만 수행하고, 실제적인 콜백 함수의 호출은 원격 플러그인 장치(210)에서 이루어지기 때문이다.
그리고, 연결 관리자(216)는 네트워크를 통해 원격 플러그인 장치(210)와 로봇 플러그인 실행 엔진 장치(110)와의 통신을 담당하는 모듈이다.
도 4는 본 발명에 따른 원격 오브젝트와 오브젝트 프락시의 구조를 도시한 것으로, 원격 오브젝트(410)는 원격지 컴퓨터(200)에 탑재된 원격 플러그인 장치(210) 내에서 정의되고 실체화되며, 오브젝트 프락시(420)는 로봇(100)에 탑재된 로봇 플러그인 실행 엔진 장치(110)에서 실체화되는데, 여기에서 원격 오브젝트(410)는 등록 인터페이스(412), 공통 인터페이스(414), 개별 인터페이스/개별 데이터 정의부(416)로 된 세 부분의 논리 영역으로 구성되고, 오브젝트 프락시(420)는 등록 인터페이스(422) 및 공통 인터페이스(424)로 된 두 부분의 논리 영역으로 구성된다.
먼저, 원격 플러그인 장치(210)에서 등록된 각 오브젝트는 로봇 플러그인 실행 엔진 장치(110)에서 그에 상응하는 프락시를 생성하게 된다. 즉, 원격 오브젝 트(410)와 오브젝트 프락시(420)는 한 쌍으로 생성되고 소멸한다.
즉, 원격 플러그인 장치(210)는 등록 인터페이스(412)에 정의된 오브젝트에 대한 생성, 삭제를 담당하게 되는 함수를 플러그인에 전달하는데, 플러그인이 이 함수를 호출함으로써, 해당 오브젝트에 대한 객체를 생성 또는 삭제하게 된다.
그리고, 공통 인터페이스부(414)는 오브젝트와 플러그인간에 미리 약속된 인터페이스인 것으로, 오브젝트를 초기화하기 위한 Init(), 그리고 오브젝트를 활성화하기 위한 On(), 오브젝트를 비활성화하기 위한 Off()로 구성된다.
또한, 개별 인터페이스/개별 데이터 정의부(416)는 오브젝트에서 나름대로 정의하는 부분인 것으로, 실제 오브젝트에서 수행하는 주요 함수 및 심볼은 이 부분에서 정의되며, 이 부분은 오브젝트를 개발하는 개발자가 임의로 정의할 수 있다.
한편, 오브젝트 프락시(420)의 경우에는 공통 인터페이스부(424)가 오브젝트를 초기화하기 위한 Init(), 그리고 오브젝트를 활성화하기 위한 On(), 오브젝트를 비활성화하기 위한 Off() 이외에 다수의 인터페이스를 추가적으로 포함하는데, On_any_timeout 인터페이스는 로봇 플러그인 실행 엔진 장치(110)에서 타이머 이벤트가 발생하였을 경우, 이를 처리하기 위한 인터페이스이며, 이 인터페이스를 통하여 로봇 플러그인 실행 엔진 장치(110)에서 발생한 타이머 이벤트를 수령하고, 이를 원격지에 있는 상응하는 원격 오브젝트에게 전달한다. On_any_symbol_changed 인터페이스는 심볼의 값이 변경되었을 때, 알림을 받기 위한 인터페이스인 것으로, 이 함수가 로봇 플러그인 실행 엔진 장치(110)에 의하여 호출되면, 이를 다시 원격 지에 있는 원격 오브젝트에 전달하는 역할을 수행한다. Get_symbol 함수는 오브젝트의 심볼값을 얻어가기 위한 함수로서, 호출되면 이를 원격지에 있는 원격 오브젝트에 전달하는 역할을 수행한다. Set_symbol 함수는 오브젝트의 심볼값을 변경하기 위한 함수로서, 호출되면 이를 원격지에 있는 원격 오브젝트에 전달하는 역할을 수행한다. Call_function 함수는 오브젝트의 함수를 호출하기 위한 인터페이스인 것으로, 로봇 플러그인 실행 엔진 장치(110)에서 이 함수를 호출하면, 이를 원격지의 원격 오브젝트에 전달하는 역할을 수행한다.
도 5는 로봇 원격 플러그인 장치가 내부에 있는 오브젝트를 로봇에서 실행 중인 로봇 플러그인 실행 엔진 장치에 등록하는 과정을 설명하기 위한 구성도이다.
도 5를 참조하면, 원격 플러그인 장치(210)에서 오브젝트가 생성되면 오브젝트 관리자(211)에게 등록을 요청한다(단계 502). 이에 응답하여, 오브젝트 관리자(211)는 해당 오브젝트를 자신의 내부 테이블에 보관한 후, 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110)에 오브젝트 등록을 요청하며(단계 504), 연결 관리자(216)에서는 오브젝트 등록 요청을 로봇 플러그인 실행 엔진 장치(110) 측으로 전달한다(단계 506).
다음에, 로봇 플러그인 실행 엔진 장치(110) 측에서는 연결 관리자(116)가 오브젝트 등록 요청을 받는데, 연결 관리자(116)는 오브젝트 등록요청을 받은 오브젝트의 이름(A)과 동일한 이름을 갖는 오브젝트 프락시 객체(A)를 생성하며(단계 508), 이와 같이 생성된 오브젝트 프락시 객체(A)는 오브젝트 관리자(111)로 전달되어 로봇 플러그인 실행 엔진 장치(110)에 프락시로서 등록된다(단계 510).
도 6은 원격 오브젝트가 외부로 노출시키고자 하는 심볼을 등록하는 과정을 설명하기 위한 구성도이다.
도 6을 참조하면, 원격 오브젝트가 등록하고자 하는 심볼(A.symbol_1)과 오브젝트 객체를 심볼 서비스 관리자(212)로 넘겨주면(단계 602), 심볼 서비스 관리자(212)에서는 심볼 테이블(221)에 해당 심볼에 대한 이름(A.symbol_1)과 해당 심볼에 대한 참조(A.Symbol_1)를 결합하여 심볼 테이블 엔트리를 구성한다(단계 604). 이후, 심볼 서비스 관리자(212)는 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110)에 심볼에 대한 등록을 요청하며(단계 606), 연결 관리자(216)에서는 심볼 등록 요청을 로봇 플러그인 실행 엔진 장치(110) 측으로 전달한다(단계 608). 여기에서, 각 심볼이나 함수 등 원격 오브젝트가 노출시키는 모든 엔터티는 로봇 플러그인 실행 엔진 장치(110)에 등록되어야만 다른 플러그인에서 활용가능하기 때문이다.
다음에, 로봇 플러그인 실행 엔진 장치(110) 측에서는 연결 관리자(116)가 심볼 등록 요청을 받는데, 연결 관리자(116)는 심볼 등록 요청을 보낸 오브젝트에 상응하는 프락시를 찾고(오브젝트 프락시 A) 이 객체에 심볼 등록을 요청한다(단계 610). 이후, 프락시 오브젝트는 요청 받은 심볼의 이름과 프락시 오브젝트 자신의 참조를 심볼 서비스 관리자(112)에게 전달한다(단계 612).
이에 응답하여, 심볼 서비스 관리자(112)는 해당 심볼의 이름과 프락시 오브젝트의 참조를 결합하여 심볼 서비스 엔트리를 만든 후 심볼 서비스 테이블(121)에 등록한다(단계 614).
도 7은 원격 오브젝트가 외부로 노출시키고자 하는 함수를 등록하는 과정을 설명하기 위한 구성도이다.
도 7을 참조하면, 원격 오브젝트가 등록하고자 하는 함수(A.f1)를 함수 서비스 관리자(213)에게 넘겨주면(단계 702), 함수 서비스 관리자(213)는 함수 테이블(222)에 해당 함수에 대한 이름(“A.f1”)과 해당 함수에 대한 참조(A.f1)를 결합하여 함수 테이블 엔트리를 구성한다(단계 704). 이후, 함수 서비스 관리자(213)는 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110)에 함수에 대한 등록을 요청하며(단계 706), 연결 관리자(216)에서는 함수 등록 요청을 로봇 플러그인 실행 엔진 장치(110) 측으로 전달한다.
다음에, 로봇 플러그인 실행 엔진 장치(110) 측에서는 연결 관리자(116)가 함수 등록 요청을 받는데, 연결 관리자(116)는 함수 등록 요청을 오브젝트에 상응하는 프락시를 찾고(오브젝트 프락시 A) 이 객체에 함수 등록을 요청한다(단계 708).
이후, 프락시 오브젝트가 요청받은 함수의 이름과 이 함수가 호출될 때 대신 호출될 함수(on_any_function)를 함수 서비스 관리자(113)에게 등록 요청하면(단계 710), 함수 서비스 관리자(113)는 전달받은 함수 이름(A.f1)과 호출될 함수 이름(A.on_any_function)을 결합하여 함수 서비스 엔트리를 만든 후 함수 서비스 테이블(122)에 등록한다(단계 712).
도 8은 원격 오브젝트가 알림이 서비스를 등록하는 과정을 설명하기 위한 구성도이다.
도 8을 참조하면, 알림이 서비스는 로봇 플러그인 실행 엔진 장치(110)에 등록된 특정 심볼이 변경될 경우 이를 알림 받는 서비스로서, 해당 심볼의 값이 변경될 경우, 알림이 서비스에 등록된 함수를 호출하는 서비스이다.
먼저, 원격 오브젝트가 등록하고자 하는 알림이 서비스를 위하여 대상 심볼의 이름과 콜백될 함수에 대한 참조를 알림이 서비스 관리자(214)에게 전달하면(단계 802), 알림이 서비스 관리자(214)는 알림이 테이블(223)에 해당 심볼에 대한 이름(“B.symbol_1”)과 콜백 함수에 대한 참조(A.on_B.symbol_1_changed)를 결합하여 알림이 테이블 엔트리를 구성한다(단계 804). 이후, 알림이 서비스 관리자(214)는 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110)에 알림이에 대한 등록을 요청하며(단계 806), 연결 관리자(216)에서는 알림이 등록 요청을 로봇 플러그인 실행 엔진 장치(110) 측으로 전달한다.
다음에, 로봇 플러그인 실행 엔진 장치(110) 측에서는 연결 관리자(116)가 알림이 등록 요청을 받는데, 연결 관리자(116)는 알림이 등록 요청을 보낸 오브젝트에 상응하는 프락시를 찾고(오브젝트 프락시 A) 이 객체에 알림이 등록을 요청한다(단계 808).
이후, 프락시 오브젝트는 요청 받은 심볼의 이름과 이 심볼이 변경되었을 때 알림 받을 콜백 함수(on_any_symbol_changed)를 알림이 서비스 관리자(114)에게 등록 요청한다(단계 810). 여기에서, on_any_symbol_changed 함수는 해당 오브젝트가 등록하는 모든 알림이 서비스를 위하여 마련된 공통 콜백 함수이다. 즉, 대상 심볼의 이름이 변하더라도 로봇 플러그인 실행 엔진에 등록되는 콜백 함수는 동일하다. 그 이유는, 이 함수를 통하여 상응하는 원격 오브젝트로 요청을 전달하는 기능만 수행하고, 실제적인 콜백 함수의 호출은 원격 플러그인 장치(210)에서 이루어지기 때문이다.
이에 응답하여, 알림이 서비스 관리자(114)는 전달받은 심볼 이름(B.symbol_1)과 호출될 함수 이름(A.on_any_symbol_changed)을 결합하여 알림이 서비스 엔트리를 만든 후 이를 알림이 서비스 테이블에(123) 등록한다(단계 812).
도 9는 원격 오브젝트가 타이머 서비스를 등록하는 과정을 설명하기 위한 구성도이다.
도 9를 참조하면, 타이머 서비스는 일정한 주기마다 로봇 플러그인 실행 엔진 장치(110)가 원격 오브젝트의 특정 함수를 호출하는 서비스이다.
먼저, 원격 오브젝트가 등록하고자 하는 타이머 서비스를 위하여 콜백될 함수에 대한 참조(A.on_timeout_1)와 호출될 주기(1초)를 타이머 서비스 관리자(215)에게 전달하면(단계 902), 타이머 서비스 관리자(215)는 타이머 테이블(224)에 타이머 이름(“A.on_timeout_1”)과 함수에 대한 참조(A.on_timeout_1)와 결합하여 타이머 테이블 엔트리를 구성한다(단계 904). 이후, 타이머 서비스 관리자(215)는 연결 관리자(216)를 통해 로봇 플러그인 실행 엔진 장치(110)에 타이머에 대한 등록을 요청하며(단계 906), 연결 관리자(216)에서는 타이머 등록 요청을 로봇 플러그인 실행 엔진 장치(110) 측으로 전달한다.
다음에, 로봇 플러그인 실행 엔진 장치(110) 측에서는 연결 관리자(116)가 타이머 등록 요청을 받는데, 연결 관리자(116)는 타이머 등록 요청을 보낸 오브젝 트에 상응하는 프락시를 찾고(오브젝트 프락시 A) 이 객체에 타이머 서비스 등록을 요청한다(단계 908).
이후, 프락시 오브젝트는 전달받은 타이머 이름(A.timeout_1)과 자신의 함수인 on_any_timeout을 결합하여 타이머 서비스 엔트리를 만든 후 타이머 서비스 관리자(115)에게 등록을 요청한다(단계 910). 여기에서, on_any_timeout 함수는 해당 오브젝트가 등록하는 모든 타이머 서비스를 위하여 마련된 공통 콜백 함수이다. 즉, 대상 타이머의 이름이 변하더라도 로봇 플러그인 실행 엔진에 등록되는 콜백 함수는 동일하다. 그 이유는, 이 함수를 통하여 상응하는 원격 오브젝트로 타임아웃을 전달하는 기능만 수행하고, 실제적인 콜백 함수의 호출은 원격 플러그인 장치(210)에서 이루어지기 때문이다.
이에 응답하여, 타이머 서비스 관리자(114)는 타이머 서비스 엔트리를 타이머 서비스 테이블(124)에 등록한다(단계 912).
도 10은 각종 원격 플러그인 장치가 자신이 가지고 있는 원격 오브젝트들에 대한 등록 및 초기화가 완료된 상태에서의 일련의 동작을 예시한 도면이다.
도 10을 참조하면, 본 예시에서는 두 개의 원격 오브젝트(예컨대, 장애물 감지 오브젝트, 장애물 회피 오브젝트)가 이용되는데, 각 오브젝트는 서로 다른 원격 플러그인 장치(1200, 1300)에 정의되어 있다. 또한, 각 원격 플러그인 장치(1200, 1300)는 서로 다른 컴퓨팅 노드에서 수행된다. 따라서, 본 예시에서는 로봇과 다른 두 개의 컴퓨팅 노드를 합하여 총 3개의 컴퓨팅 노드가 활용된다.
본 예시의 전체적인 흐름은 장애물 감지 오브젝트의 find_obstacle 함수가 일정한 주기로 로봇 플러그인 실행 엔진 장치(1100)에 의하여 호출된다. 이때, find_obstacle 함수는 장애물과 로봇과의 거리를 측정하여 장애물이 존재한다고 판단되면 자신의 obstacle_found 심볼에 이를 설정한다. 이 설정이 변경되게 되면, 이 심볼의 값이 변경되었을 때 알림을 받기로 등록한 장애물 회피 오브젝트의 on_obstacle_found 함수가 호출되고 장애물 회피를 위하여 avoid_obstacle함수를 호출하게 된다. 이러한 시나리오 상에서 각 단계별 흐름을 설명하면 다음과 같다.
(1)타이머 서비스 관리자(1102)에 위하여 detector. time_out1 타이머가 매 1초마다 타임아웃 된다. 이때, 이 타이머와 연결된 detector. on_any_ timeout 콜백 함수가 매 1초마다 호출되는데, 이 함수에 대한 파라미터로 타이머 이름(detector. time_ out1)이 연결 관리자(1108)를 통해 원격 플러그인 장치(1200) 측으로 전달된다.
(2), (3) detector. on_any_ timeout 함수를 호출 받은 장애물 감지 오브젝트 프락시는 이를 연결 관리자(1206)를 통하여 장애물 감지 오브젝트로 전송한다.
(4) 원격 플러그인 장치(1200)의 연결 관리자(1206)는 타이머 서비스 관리자(1202)에 detector. time_out1 이 타임아웃 된 것을 알린다.
(5) 타이머 서비스 관리자(1202)는 detector. time_out1 타이머에 해당하는 콜백 함수(detector. find_ obstacle)를 호출한다.
(6) 장애물 감지 오브젝트는 find_obstacle 함수에서 장애물과의 거리를 계산한 후, 장애물이 있다고 판단되면 detector. obstacle 심볼의 값을 변경하도록 심볼 서비스 관리자(1204)에게 요청한다.
(7), (8) 심볼 서비스 관리자(1204)는 해당 심볼의 값을 변경하기 위하여, 로봇 플러그인 실행 엔진 장치(1100) 측에 해당 심볼의 값을 변경하도록 요청하는데, 이러한 요청은 연결 관리자(1206)를 통하여 로봇 플러그인 실행 엔진 장치(1100) 측에 전달된다.
(9) 심볼 값 변경 요청을 받은 로봇 플러그인 실행 엔진 장치(1100) 측의 연결 관리자(1108)는 심볼 서비스 관리자(1104)에게 해당 값을 변경할 것을 요청한다.
(10) 심볼 서비스 관리자(1104)는 해당 변수의 값을 변경한 후, 해당 심볼에 알림 서비스가 등록되어 있는지 알림이 서비스 관리자(1106)에게 서비스를 요청한다
(11) 알림이 서비스 관리자(1106)는 detector. obstacle_ found라는 심볼 이름에 해당하는 알림 콜백이 등록되어 있는지 조사한다. 여기서는 avoider. on_any_ symbol_changed 라는 콜백 함수가 등록되어 있기 때문에, 해당 함수를 호출한다. 이때, 해당 심볼의 이름(detector. obstacle_ found)을 파라미터로 전달한다.
(12), (13) 장애물 회피 오브젝트 프락시는 연결 관리자(1110)를 통해 호출 받은 on_any_symbol_changed 함수에서 자신과 상응하는 원격 오브젝트인 장애물 회피 오브젝트에 이 사실을 통보한다. 이때, 연결관리자를 통한다.
(14) 원격 플러그인 장치(1300) 측의 연결 관리자(1304)는 심볼 값 알림이 서비스 요청을 받고, 해당 심볼의 이름(detector. obstacle_ found)을 알림이 서비스 관리자(1302)에 전달한다.
(15) 알림이 서비스 관리자(1302)는 해당 심볼의 이름(detector. obstacle_ found)을 가지고 이 심볼에 등록된 콜백 함수인 avoider. avoid_ obstacle 함수를 호출한다. 이 함수를 호출 받은 avoider 장애물 회피 오브젝트는 avoid_obstacle 함수를 호출하여 장애물을 회피한다.
(16) 매 1초마다 (2)~(15) 과정을 반복 수행함으로써, 로봇 플러그인 실행 엔진 장치(1100)는 장애물이 나타날 때마다 장애물 회피 동작을 기동시킨다.
이상의 설명에서는 본 발명의 바람직한 실시 예들을 제시하여 설명하였으나 본 발명이 반드시 이에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능함을 것을 쉽게 알 수 있을 것이다.
도 1은 도 1은 본 발명에 따라 로봇과 원격지 컴퓨터가 네트워크를 통해 연결되는 구조를 보여주는 시스템 계통도,
도 2는 본 발명에 따른 로봇 플로그인 실행 엔진 장치의 블록구성도,
도 3은 본 발명에 따른 원격 플로그인 장치의 블록구성도,
도 4는 본 발명에 따른 원격 오브젝트와 오브젝트 프락시의 구조도,
도 5는 로봇 원격 플러그인 장치가 내부에 있는 오브젝트를 로봇에서 실행 중인 로봇 플러그인 실행 엔진 장치에 등록하는 과정을 설명하기 위한 구성도,
도 6은 원격 오브젝트가 외부로 노출시키고자 하는 심볼을 등록하는 과정을 설명하기 위한 구성도,
도 7은 원격 오브젝트가 외부로 노출시키고자 하는 함수를 등록하는 과정을 설명하기 위한 구성도,
도 8은 원격 오브젝트가 알림이 서비스를 등록하는 과정을 설명하기 위한 구성도,
도 9는 원격 오브젝트가 타이머 서비스를 등록하는 과정을 설명하기 위한 구성도,
도 10은 각종 원격 플러그인 장치가 자신이 가지고 있는 원격 오브젝트들에 대한 등록 및 초기화가 완료된 상태에서의 일련의 동작을 예시한 도면.
<도면의 주요부분에 대한 부호의 설명>
100 : 로봇 110 : 로봇 플러그인 실행 엔진 장치
111, 211 : 오브젝트 관리자 112, 211 : 심볼 서비스 관리자
113, 213 : 함수 서비스 관리자 114, 214 : 알림이 서비스 관리자
115, 215 : 타이머 서비스 관리자 116, 216 : 연결 관리자

Claims (17)

  1. 각 원격 플러그인 내부에 들어 있는 각 원격 오브젝트들을 관리하는 오브젝트 관리자와,
    상기 각 원격 오브젝트들이 등록한 심볼들을 로봇 플러그인 실행 엔진 장치에 등록하고 관리하는 심볼 서비스 관리자와,
    상기 각 원격 오브젝트가 등록한 함수들을 상기 로봇 플러그인 실행 엔진 장치에 등록하고 관리하는 함수 서비스 관리자와,
    상기 각 원격 오브젝트가 등록한 알림이 함수들을 상기 로봇 플러그인 실행 엔진 장치에 등록하고 관리하는 알림이 서비스 관리자와,
    상기 각 원격 오브젝트가 등록한 타이머들을 상기 로봇 플러그인 실행 엔진 장치에 등록하고 관리하는 타이머 서비스 관리자와,
    네트워크를 통해 상기 각 관리자들과 상기 로봇 플러그인 실행 엔진 장치와의 통신을 담당하는 연결 관리자
    를 포함하는 원격 플러그인 장치.
  2. 제 1 항에 있어서,
    상기 오브젝트 관리자는,
    상기 로봇 플러그인 실행 엔진 장치에 등록하고자 하는 원격 오브젝트가 생성될 때 상기 생성된 원격 오브젝트를 내부 오브젝트 테이블에 저장한 후 상기 연 결 관리자로 전달하는
    원격 플러그인 장치.
  3. 제 1 항에 있어서,
    상기 심볼 서비스 관리자는,
    특정 원격 오브젝트가 외부로 노출시키고자 하는 실볼을 등록할 때 해당 심볼에 대한 이름과 상기 해당 심볼에 대한 참조를 결합하여 심볼 테이블 엔트리를 구성한 후 상기 연결 관리자로 전달하는
    원격 플러그인 장치.
  4. 제 1 항에 있어서,
    상기 함수 서비스 관리자는,
    특정 원격 오브젝트가 외부로 노출시키고자 하는 함수를 등록할 때 해당 함수에 대한 이름과 상기 해당 함수에 대한 참조를 결합하여 함수 테이블 엔트리를 구성한 후 상기 연결 관리자로 전달하는
    원격 플러그인 장치.
  5. 제 1 항에 있어서,
    상기 알림이 서비스 관리자는,
    특정 원격 오브젝트가 등록하고자 하는 알림이 서비스를 위해 대상 심볼의 이름과 콜백될 함수에 대한 참조가 전달될 때 상기 대상 심볼에 대한 이름과 콜백 함수에 대한 참조를 결합하여 알림이 테이블 엔트리를 구성한 후 상기 연결 관리자로 전달하는
    원격 플러그인 장치.
  6. 제 1 항에 있어서,
    상기 타이머 서비스 관리자는,
    특정 원격 오브젝트가 등록하고자 하는 타이머 서비스를 위해 콜백할 함수에 대한 참조와 호출될 주기가 전달될 때 상기 타이머 이름과 함수에 대한 참조를 결합하여 타이머 테이블 엔트리를 구성한 후 상기 연결 관리자로 전달하는
    원격 플러그인 장치.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 각 원격 오브젝트는,
    각 오브젝트에 대한 생성, 삭제를 정의하는 등록 인터페이스와,
    각 오브젝트와 플러그인간에 미리 약속된 인터페이스를 제공하는 공통 인터페이스부와,
    실제 오브젝트에서 수행하는 주요 함수 및 심볼을 정의하는 개별 인터페이스/개별 데이터 정의부
    를 포함하는 원격 플러그인 장치.
  8. 제 7 항에 있어서,
    상기 공통 인터페이스부는,
    오브젝트를 초기화하기 위한 Init(), 오브젝트를 활성화하기 위한 On(), 오브젝트를 비활성화하기 위한 Off()로 구성되는
    원격 플러그인 장치.
  9. 각 로컬 플러그인 내부에 들어 있는 오브젝트들을 관리하고, 오브젝트의 등록 요청이 있을 때 그에 상응하는 오브젝트 프락시를 생성 및 등록하는 오브젝트 관리자와,
    상기 각 로컬 플러그인에서 등록한 심볼들을 관리하고, 각 심볼들의 참조 및 변경을 담당하는 심볼 서비스 관리자와,
    상기 각 로컬 플러그인에서 등록한 함수들을 관리하고, 각 함수들에 대한 호출 및 결과 값의 반환을 담당하는 함수 서비스 관리자와,
    특정 이벤트가 발생할 때 해당 로컬 플러그인에서 등록한 함수를 호출해 주는 알림이 서비스 관리자와,
    특정 주기별로 상기 각 로컬 플러그인에서 등록한 함수를 호출하는 타이머 서비스 관리자와,
    네트워크를 통해 상기 각 관리자들과 원격 플러그인 장치와의 통신을 담당하 는 연결 관리자
    를 포함하는 로봇 플러그인 실행 엔진 장치.
  10. 제 9 항에 있어서,
    상기 오브젝트 관리자는,
    상기 원격 플러그인 장치로부터 등록을 요청받은 해당 오브젝트의 이름과 동일한 이름을 갖는 오브젝트 프락시 객체를 생성하여 프락시로서 등록하는
    로봇 플러그인 실행 엔진 장치.
  11. 제 9 항에 있어서,
    상기 심볼 서비스 관리자는,
    상기 원격 플러그인 장치로부터 심볼 등록을 요청받은 해당 심볼의 이름과 상응하는 프락시 오브젝트의 참조를 결합하여 심볼 서비스 엔트리를 구성한 후 심볼 서비스 테이블에 등록하는
    로봇 플러그인 실행 엔진 장치.
  12. 제 9항에 있어서,
    상기 함수 서비스 관리자는,
    상기 원격 플러그인 장치로부터 함수 등록을 요청받은 해당 함수의 이름과 호출될 함수 이름을 결합하여 함수 서비스 엔트리를 구성한 후 함수 서비스 테이블 에 등록하는
    로봇 플러그인 실행 엔진 장치.
  13. 제 9 항에 있어서,
    상기 알림이 서비스 관리자는,
    상기 원격 플러그인 장치로부터 알림이 등록을 요청받은 해당 심볼의 이름과 호출될 함수 이름을 결합하여 알림이 서비스 엔트리를 구성한 후 알림이 서비스 테이블에 등록하는
    로봇 플러그인 실행 엔진 장치.
  14. 제 9 항에 있어서,
    상기 타이머 서비스 관리자는,
    상기 원격 플러그인 장치로부터 타이머 등록을 요청받은 해당 타이머의 이름과 자신이 함수를 결합하여 타이머 서비스 엔트리를 구성한 후 타이머 서비스 테이블에 등록하는
    로봇 플러그인 실행 엔진 장치.
  15. 제 9 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 오브젝트 프락시는,
    각 오브젝트에 대한 생성, 삭제를 정의하는 등록 인터페이스와,
    각 오브젝트와 플러그인간에 미리 약속된 인터페이스를 제공하는 공통 인터페이스부
    를 포함하는 로봇 플러그인 실행 엔진 장치.
  16. 제 15 항에 있어서,
    상기 공통 인터페이스부는,
    오브젝트를 초기화하기 위한 Init(), 오브젝트를 활성화하기 위한 On(), 오브젝트를 비활성화하기 위한 Off(), 상기 로봇 플러그인 실행 엔진 장치에서 타이머 이벤트가 발생하였을 경우, 이를 처리하기 위한 On_any_timeout 인터페이스, 심볼의 값이 변경되었을 때, 알림을 받기 위한 On_any_symbol_changed 인터페이스,오브젝트의 심볼 값을 얻어가기 위한 인터페이스를 제공하는 Get_symbol 함수, 오브젝트의 심볼값을 변경하기 위한 인터페이스를 제공하는 Set_symbol 함수, 오브젝트의 함수를 호출하기 위한 인터페이스를 제공하는 Call_function 함수로 구성되는
    로봇 플러그인 실행 엔진 장치.
  17. 각 원격 플러그인 내부에 들어 있는 각 원격 오브젝트들을 관리하고, 연결 관리자를 이용한 네트워크 통신을 통해 상기 각 원격 오브젝트들이 등록한 심볼들, 함수들, 알림이 함수들, 타이머들을 로봇 플러그인 실행 엔진에 등록하고 관리하는 원격 플러그인과,
    각 로컬 플러그인 내부에 들어 있는 오브젝트들을 관리하고, 연결 관리자를 이용한 네트워크 통신을 통해 상기 각 로컬 플러그인에서 등록한 심볼들, 각 함수들, 상기 각 함수들에 대한 호출 및 결과 값의 반환, 상기 각 함수들의 호출을 서비스하는 상기 로봇 플러그인 실행 엔진
    을 포함하는 로봇 플러그인 실행 시스템.
KR1020090119220A 2009-12-03 2009-12-03 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템 KR101242662B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090119220A KR101242662B1 (ko) 2009-12-03 2009-12-03 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템
JP2010164186A JP5264837B2 (ja) 2009-12-03 2010-07-21 遠隔プラグイン装置、ロボットプラグイン実行エンジン装置及びロボットプラグイン実行システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090119220A KR101242662B1 (ko) 2009-12-03 2009-12-03 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템

Publications (2)

Publication Number Publication Date
KR20110062480A true KR20110062480A (ko) 2011-06-10
KR101242662B1 KR101242662B1 (ko) 2013-03-12

Family

ID=44284072

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090119220A KR101242662B1 (ko) 2009-12-03 2009-12-03 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템

Country Status (2)

Country Link
JP (1) JP5264837B2 (ko)
KR (1) KR101242662B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6054677B2 (ja) * 2012-06-19 2016-12-27 株式会社スクウェア・エニックス・ホールディングス 処理システム、情報処理装置、制御方法、プログラム、及び記録媒体
JP6205689B2 (ja) * 2012-08-22 2017-10-04 沖電気工業株式会社 データ処理装置及びプログラム
CN110297675A (zh) * 2019-04-23 2019-10-01 五八有限公司 模块间相互调用的方法、装置、电子设备及存储介质
KR102509453B1 (ko) * 2020-11-20 2023-03-13 주식회사 카카오모빌리티 로봇장치의 원격 제어 시스템 및 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07225685A (ja) * 1994-02-09 1995-08-22 Hitachi Ltd 分散オブジェクト指向システム構築方法
JPH11306151A (ja) 1998-04-27 1999-11-05 Fujitsu Ltd 分散オブジェクト処理装置及びプログラム記憶媒体
JP3738598B2 (ja) * 1999-03-30 2006-01-25 横河電機株式会社 分散オブジェクトシステムにおける通信方法及び分散オブジェクトシステムにおける通信装置
US6826523B1 (en) * 2000-11-01 2004-11-30 Sony Computer Entertainment America Inc. Application development interface for multi-user applications executable over communication networks
JP2003114805A (ja) * 2001-10-09 2003-04-18 Hitachi Ltd 情報処理装置および方法
JP2005228183A (ja) * 2004-02-16 2005-08-25 Hitachi Ltd プログラム実行方法、および、プログラム実行のための計算機システム
KR100869587B1 (ko) * 2007-02-02 2008-11-21 주식회사 유진로봇 로봇 미들웨어 프레임워크 시스템

Also Published As

Publication number Publication date
KR101242662B1 (ko) 2013-03-12
JP5264837B2 (ja) 2013-08-14
JP2011118867A (ja) 2011-06-16

Similar Documents

Publication Publication Date Title
Aksakalli et al. Deployment and communication patterns in microservice architectures: A systematic literature review
Verbelen et al. AIOLOS: Middleware for improving mobile application performance through cyber foraging
US9430294B2 (en) Elastic management framework
Dobaj et al. A microservice architecture for the industrial Internet-of-Things
Cooke et al. A model for distributed in-network and near-edge computing with heterogeneous hardware
KR101242662B1 (ko) 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템
Agha et al. Actors: A unifying model for parallel and distributed computing
CN112363857B (zh) 微前端架构的应用系统、同步方法、存储介质和设备
Fohler et al. Evaluation of DREAMS resource management solutions on a mixed-critical demonstrator
Chen et al. A type theory for robust failure handling in distributed systems
US20220158960A1 (en) Managing and executing serverless function command sets in a messaging service
Baldoni et al. Facilitating distributed data-flow programming with Eclipse Zenoh: The ERDOS case
Képes et al. Deployment of distributed applications across public and private networks
KR102013704B1 (ko) 로봇용 소프트웨어 컴포넌트 조합 장치 및 방법
CN114640614B (zh) Rpc接口自动化测试方法、系统、电子设备、介质及产品
Bračevac et al. CPL: A core language for cloud computing
Schulz et al. Cohesion—a microkernel based desktop grid platform for irregular task-parallel applications
Brugali et al. Service component architectures in robotics: The sca-orocos integration
Hamerski et al. Publish-subscribe programming for a NoC-based multiprocessor system-on-chip
Daga et al. Federated learning operations made simple with flame
Brand et al. *‐Predictable MPSoC execution of real‐time control applications using invasive computing
Castañeda et al. VNF-based network service consistent reconfiguration in multi-domain federations: A distributed approach
Manolakos et al. Distributed Matlab based signal and image processing using JavaPorts
Bainomugisha et al. Crane Cloud: A resilient multi-cloud service abstraction layer for resource-constrained settings
Castain et al. The Open Run-Time Environment (OpenRTE): A transparent multicluster environment for high-performance computing

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee