KR100772175B1 - 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법 - Google Patents

네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법 Download PDF

Info

Publication number
KR100772175B1
KR100772175B1 KR1020060103163A KR20060103163A KR100772175B1 KR 100772175 B1 KR100772175 B1 KR 100772175B1 KR 1020060103163 A KR1020060103163 A KR 1020060103163A KR 20060103163 A KR20060103163 A KR 20060103163A KR 100772175 B1 KR100772175 B1 KR 100772175B1
Authority
KR
South Korea
Prior art keywords
robot
remote
server
communication
asynchronous operation
Prior art date
Application number
KR1020060103163A
Other languages
English (en)
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 KR1020060103163A priority Critical patent/KR100772175B1/ko
Priority to US11/975,754 priority patent/US20080098065A1/en
Priority to AT07119056T priority patent/ATE435454T1/de
Priority to JP2007275488A priority patent/JP4527144B2/ja
Priority to EP07119056A priority patent/EP1916600B1/en
Priority to DE602007001433T priority patent/DE602007001433D1/de
Priority to CNA2007103068608A priority patent/CN101202689A/zh
Application granted granted Critical
Publication of KR100772175B1 publication Critical patent/KR100772175B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • 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
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Computer And Data Communications (AREA)
  • Manipulator (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은, 다수의 센서 및 서버와 로봇 간의 통신을 처리하는 미들웨어를 구비하는 네트워크 로봇 시스템에서, 상기 로봇의 기능을 상기 다수의 센서 및 서버를 이용하여 분산 처리를 위한 상기 미들웨어의 통신 프레임 워크를 미리 설정하고, 상기 미리 설정된 통신 프레임 워크를 이용하여 상기 다수의 센서 및 서버와 상기 로봇 간의 통신을 수행함으로써 로봇의 성능을 향상시킬 수 있으며, 상기 로봇에서 호출된 원격 객체의 데이터 크기에 따라 동기/비동기 연산을 수행함으로써, 크기가 큰 데이터의 전송을 대기하지 않고 바로 효과적으로 처리할 수 있으며, 원격 객체 호출을 위해 바이너리 메시지 인코딩 방식으로 전송 메시지를 최소화함으로써, 상대적으로 자원이 제한된 장치와의 효율적인 통신을 수행할 수 있는 효과가 있다.
네트워크 로봇 시스템, 미들웨어, 로봇, 센서, 서버, 비동기 연산.

Description

네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신 방법{NETWORK ROBOT SYSTEM AND COMMUNICATION METHOD IN NETWORK ROBOT SYSTEM}
도 1은 본 발명의 실시예에 따른 네트워크 로봇 시스템의 구조를 도시한 구성도,
도 2는 일반적인 분산 시스템에서의 미들웨어에서 원격 객체 호출의 개념을 도시한 상태도,
도 3은 본 발명의 실시예에 따른 네트워크 로봇 시스템에서의 통신 계층 구조를 도시한 구성도,
도 4는 본 발명의 실시예에 따라 네트워크 로봇 시스템에서의 동기 오퍼레이션 계층의 통신 과정을 도시한 흐름도,
도 5는 본 발명의 실시예에 따른 네트워크 로봇 시스템에서 로봇과 서버간에 전달되는 데이터 포맷을 도시한 도면,
도 6은 본 발명의 실시예에 따른 네트워크 로봇 시스템에서 로봇과 서버간에 전달되는 메시지들의 포맷을 도시한 도면.
본 발명은 로봇 시스템에서의 통신 방법 및 시스템에 관한 것으로서, 특히 로봇의 기능을 네트워크를 통해 분산 처리하기 위한 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신 방법에 관한 것이다.
일반적으로 로봇은 외부 환경을 센싱하고, 센싱된 정보를 바탕으로 판단하고, 판단 결과에 따라 행동하는 세 가지 기능 요소를 갖으며, 이러한 기능들을 처리하기 위한 장치들을 구비하고 있다. 하지만, 로봇에 다양한 기능을 모두 부가하거나 새로운 기능을 부가하기 위해서는 그만큼 복잡한 구성 및 고가의 장비들이 필요하게 되므로 다양한 기능을 제공하기 어려우며, 비용 부담이 증가하게 된다.
따라서 최근에는 보다 저렴한 로봇을 제공하기 위해 로봇에서의 기능들을 네트워크를 통해 분산 처리하기 위한 네트워크 로봇 시스템이 개발되고 있다.
일반적으로 네트워크 로봇 시스템은 다수의 로봇 클라이언트와 서버로 구성된 분산 시스템으로 이루어져 있다. 이러한 분산 시스템에서의 네트워크 통신은 통신 미들웨어를 활용하여 분산된 시스템 간의 메시지 교환을 통해 이루어진다. 이들 미들웨어는 객체지향 개념과 결합되어 원격 객체 호출 기능을 제공하며, DCOM, CORBA, RMI, XML Web Services 등의 다양한 방법이 제안되어 사용되어 왔다.
하지만, 이들 미들웨어는 요구사항을 적절히 만족시키지 못하여 로봇과 서버 간의 통신 미들웨어로 활용되기에 미흡하다. 즉, 상기 DCOM이나 RMI의 경우에는 이들이 특정 OS나 특정 언어에 제한된 통신 미들웨어로서, 다양한 OS의 로봇이나 다양한 언어로 개발되는 로봇을 고려할 때 효율성이 떨어지는 문제점이 있다. 반면, 상기 CORBA의 경우에는 다양한 OS이나 다양한 언어를 지원하지만, 임베디드 시스템과 같이 상대적으로 자원이 제한된 장치 환경에 탑재되기에는 무거우므로 이용가치가 떨어지는 문제점이 있다. 그리고 상기 XML Web Services는 전송 메시지가 XML 형태이기 때문에 메시지 사이즈가 상대적으로 크고, 응답 시간이 느리다는 단점을 갖고 있으며, HTTP를 기반으로 하기 때문에 사설망 접속 등에서는 사용하기 어려운 문제점이 있다.
또한, 네트워크 로봇 시스템은 이용할 자원이 제한되어 있으므로 내비게이션, 음성 합성, 스트리밍 데이터 처리 등과 같이 장기간 수행되는 연산 및 대용량 데이터에 대한 전송을 하기 어렵다. 때문에 네트워크 로봇 시스템에서 기존의 통신 미들웨어를 활용하기에는 부족한 점이 있다.
따라서 본 발명의 목적은 네트워크 로봇 시스템에서 외부의 센싱 기능과 외부의 프로세싱 기능을 네트워크를 통해 활용하기 위한 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신 방법을 제공함에 있다.
본 발명의 다른 목적은 네트워크 로봇 시스템의 특성에 맞게 로봇 내비게이션, 로봇 또는 소프트웨어 로봇의 음성 합성, 영상처리 등 장기간 수행되는 연산 및 대용량 데이터의 전송을 지원하기 위한 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신 방법을 제공함에 있다.
본 발명의 또 다른 목적은 네트워크 로봇 시스템에서 제한된 자원을 갖는 로 봇과의 효율적인 통신을 위하여 개선된 데이터 인코딩 방식을 제공하기 위한 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신 방법을 제공함에 있다.
상기 이러한 본 발명의 목적들을 달성하기 위한 방법은, 다수의 센서 및 서버와 로봇 간의 통신을 처리하는 미들웨어를 구비하는 네트워크 로봇 시스템에서의 통신 방법으로서, 상기 로봇의 기능을 상기 다수의 센서 및 서버를 이용하여 분산 처리를 위한 상기 미들웨어의 통신 프레임 워크를 미리 설정하는 과정과, 상기 미리 설정된 통신 프레임 워크를 이용하여 상기 다수의 센서 및 서버와 상기 로봇 간의 통신을 수행하는 과정을 포함하며, 상기 로봇에서 호출된 원격 객체의 데이터 크기에 따라 동기/비동기 연산을 수행함을 특징으로 한다.
상기 본 발명의 목적들을 달성하기 위한 네트워크 로봇 시스템은, 외부 환경의 정보를 인식하여 서비스를 제공하는 로봇과, 상기 외부 환경 정보를 센싱하는 상기 로봇의 기능을 분산 처리하는 다수의 센서와, 상기 외부 환경 정보에 따른 상기 로봇에서의 서비스 처리 기능을 분산 처리하는 서버와, 원격지에 위치한 상기 다수의 센서 및 상기 서버와 상기 로봇을 연결하고, 상기 다수의 센서/상기 서버와 상기 로봇 간의 원격 통신을 위한 통신 프레임 워크를 미리 설정하는 미들웨어를 포함하며, 상기 미들웨어는 상기 로봇에서 호출된 원격 객체의 데이터 크기에 따라 동기/비동기 연산을 수행함을 특징으로 한다.
이하, 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 우선 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 그리고 본 발명을 설명함에 있어, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 발명의 실시예 따른 통신 방법 및 장치의 설명에 앞서, 본 발명의 실시예에서는 다음과 같은 조건을 고려할 필요가 있다.
첫째, 네트워크 로봇 시스템은 컴퓨팅 환경뿐만 아니라 임베디드 시스템과 같이 상대적으로 자원이 제한된 장치 환경을 고려하여 전송 메시지를 최소화할 수 있는 가벼운 프로토콜이 필요하므로 전송 메시지를 매우 간결한 형태의 이진 포맷으로 인코딩하는 방식을 이용한다.
둘째, 네트워크 로봇 시스템은 다양한 OS 혹은 다양한 언어로 개발된 응용을 고려해야 하기 때문에 특정 플랫폼이나 언어에 독립적으로 운용될 수 있어야 한다.
셋째, 네트워크 로봇 시스템은 비교적 불안전한 무선 통신을 사용하기 때문에 통신의 단절에 대한 대처를 고려하여 단절 후 재접속이 응용 개발자에게 최대로 투명하게 이루어질 필요가 있다.
넷째, 네트워크 로봇 시스템은 음성, 영상 등 크기가 큰 데이터의 전송을 효과적으로 처리하기 위한 방안이 고려되어야 한다.
본 발명의 실시예에서는 이러한 고려사항을 기반으로 네트워크 로봇 시스템의 통신 시스템을 제안할 수 있다. 따라서 이하, 본 발명의 실시예에서는 이종의 다양한 로봇들이 외부의 서버 컴퓨터에서 제공하는 다양한 기능(음성인식, 영상인식, 상황인식, 로봇제어명령, 로봇 서비스 등)을 활용하여 다양한 서비스를 제공하기 위한 통신 방법 및 장치에 대해 구체적으로 설명하기로 한다.
그러면 본 발명의 실시예에 따른 네트워크 로봇 시스템의 구조를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 네트워크 로봇 시스템의 구조를 도시한 구성도이다.
상기 도 1을 참조하면, 네트워크 로봇 시스템(100)은 다수의 로봇들(110)과, 서버(120)와, 다수의 센서들(130)로 분산되어 구성되며, 이들의 통신을 위한 미들웨어(140)로 구성된다.
상기 다수의 로봇들(110)은 최소한의 센싱 및 프로세싱 능력을 갖는 저가의 하드웨어(H/W) 로봇으로서, 음성 및 영상인식 기능은 고성능 서버(120)를 통해 지원 받게 된다.
상기 서버(120)는 음성인식, 영상인식, 상황인식 및 인증 서버 등이 포함할 수 있다. 그리고 상기 서버(120)는 상기 상황인식 서버를 통해 외부 환경으로부터 센싱된 정보와 사용자에 대한 상황 정보를 모델링, 수집 및 분배하여 상기 다수의 로봇(110)으로 전송한다.
상기 다수의 센서(130)는 주변 환경에 내재된 센서들로서, 센싱된 정보를 상기 미들웨어(140)를 통해 상기 서버(120)로 전달한다.
상기 미들웨어(140)는 상기 다수의 로봇(110)과 서버(120) 간의 통신 기능을 제공하는 역할을 한다. 이로써 상기 다수의 로봇(110)은 상기 서버(120)의 음성, 영상, 상황 인식 기능을 이용할 수 있고, 서버(120)는 상기 로봇(110)에게 이동 명령 등을 내릴 수 있다. 이러한 미들웨어(140)의 구조에 대해 보다 구체적으로 살펴보기로 한다.
우선, 일반적인 분산 시스템에서의 미들웨어 구조에 따라 원격 제어 호출에 대해 첨부된 도 2를 참조하여 간략하게 살펴본 후, 기존 분산 통신 미들웨어를 확장한 본 발명의 실시예에 따른 미들웨어 구조에 대해 설명하기로 한다.
상기 도 2를 참조하면, 일반적으로 미들웨어는 스텁(stub)/ 스켈레톤(SKeleton) 계층(12), 인코딩/디코딩을 위한 계층(Serialization/Deserialization)(13, 14) 및 전송(Transport(TCP)) 계층(15)으로 구분될 수 있다. 이러한 일반적인 미들웨어에서, 원격 제어 호출은 클라이언트(11)가 IDL 컴파일을 통해 생성된 스텁(12)을 이용하여 원격 제어 요청을 한다. 그러면 다음 계층의 Serialization(13)에서 호출 정보를 인코딩 패킹하여 전송 계층(15)을 통해 전달한다. 일반 연산의 경우, 호출이 가능한지를 판단한 후 실제 호출을 수행한다. 그러면 서버는 전달된 메시지를 Deserialization(14)에서 풀어서 객체를 호출한다. 이렇게 호출된 결과, 객체는 다시 서버측에서 인코딩하여 클라이언트측으로 전달된다. 즉, 서비스 오브젯(Service Object)에서 얻은 결과를 Serialization(13)에서 인코딩하여 전송 계층(15)을 통해 클라이언트 에플리케이션(11)으로 전달한다.
이와 같은 일반적인 미들웨어 구조를 기반으로 확장된 본 발명의 실시예에 따른 미들웨어를 첨부된 도면을 참조하여 설명하기로 한다.
도 3은 본 발명의 실시예에 따른 네트워크 로봇 시스템에서의 통신 계층 구조를 도시한 구성도이다.
상기 도 3을 참조하면, 통신 미들웨어(140)는 스텁/스켈레톤 계층(210), 비동기 오퍼레이션 계층(220), 원격 레퍼런스 계층(230), 전송 계층(Transport Layer)(240)으로 구성되며, 메시지의 전송에 따른 원격호출이 이루어진다.
상기 스텁/스켈레톤 계층(Stub/Skeleton Layer)(210)은 객체 호출을 요청하는 클라이언트가 객체를 호출할 때 실제로 호출되는 계층이다. 여기서 스텁(Stub)(Proxy Object)(211)은 클라이언트 측의 프록시 객체로 호출을 요청하는 측이며, 반대로 스켈레톤(Skeleton)(212)은 호출을 요청받는 측이다.
상기 비동기 오퍼레이션 계층(Asynchronous Layer)(220)은 네비게이션, 음성 합성 등과 같이 장기간 수행되는 연산의 경우 요청 직후 바로 반환하고, 나중에 원하는 경우 그 결과를 확인할 수 있는 기능을 위해 비동기 연산을 수행하기 위한 계층이다. 여기서 비동기 연산 수행 함수의 경우에는 오퍼레이션 핸들(OperationHandle) 타입으로 정의되어 장시간 수행되는 연산의 객체를 반환하게 된다. 이러한 상기 오퍼레이션 핸들(OperationHandle)은 장시간 비동기 연산에 대한 상태 확인, 제어 그리고 연산의 결과를 얻을 수 있는 인터페이스를 제공한다.
상기 비동기 오퍼레이션 계층(220)은 오퍼레이션 핸들러(OperationHandler)(221) 및 오퍼레이션 어댑터(OperationAdapter)(222)로 구분 되며, 상기 오퍼레이션 어뎁터(222)는 다시 액세스 제어기(Access Controller)(223) 및 록 매니저(Lock Manager)(224)로 이루어진 액세스 미디에이터(Acess Mediator)와, 스케줄러(Scheduler)(225) 및 스트림 펌프(Stream Pump)(226)로 구분된다. 여기서 비동기 연산이 아닐 경우는 상기 비동기 오퍼레이션 계층(220)은 거치지 않게 된다.
상기 오퍼레이션 핸들러(221)는 오퍼레이션 핸들(OperationHandle)의 인터페이스로 정의된 클라이언트 측의 비동기 연산 처리를 담당하며, 서버측의 상기 오퍼레이션 어댑터(222)로 연산 요청을 전달한다.
상기 오퍼레이션 어댑터(222)는 클라이언트측의 상기 오퍼레이션 핸들러(221)로부터의 연산 요청받아서 요청된 각 비동기 연산을 처리할 독립적인 스레드를 할당하여 스케줄러(225)의 큐에 삽입한다. 여기서 다중 세션인 경우 한 세션에서 연산을 수행하는 중에 또 다른 세션에서 그 연산을 다시 요청할 수 있다. 이에 따라 상기 록 매니저(223)는 상기 다중 세션에서의 동시 접근 제어를 수행하며, 상기 액세스 제어기(224) 연산 요청에 대한 접근 제어를 수행한다.
상기 스트림 펌프(226)는 음성이나 영상 데이터와 같은 사이즈가 큰 데이터를 스트리밍 형태로 전송할 경우 전송된 데이터를 처리한다.
상기 원격 레퍼런스 계층(Remote Reference Layer)(230)은 호출 정보를 패킹해서 전달하며, 일반 연산의 경우, 호출이 가능한지를 판단한 후 실제 호출을 수행한다. 단, 비동기 연산일 경우는 실제 호출이 상기 비동기 오퍼레이션 계층(220)을 거쳐 수행된다. 그리고 상기 원격 레퍼런스 계층(Remote reference Layer)(230)은 클라이언트 측과 서버측으로 구분되어 각각 요청 송신기(231) 및 요청 수신기(232)를 포함한다. 상기 클라이언트 측의 요청 송신기(231)는 전달 메시지를 인코딩하여 패킹하며 이를 서버 측 요청 수신기(232)에게 전달한다. 상기 요청 수신기(232)는 전달된 메시지를 풀어서 객체를 호출하며, 그 결과는 서버 측 요청 송신기를 통해 클라이언트 측에 전달한다.
상기 전송 계층(Transport Layer)(240)은 실제 연결을 담당하는 계층으로서 로봇의 사설망 접속 등을 고려하여 'connection-oriented' 기반의 통신 방식인 TCP를 사용한다.
한편, 일반적인 연산은 동기적으로 수행되기 때문에 그 수행이 모두 마칠 때까지 대기하지만, 장기간 수행되는 연산의 경우에는 요청 직후 바로 반환되고, 추후 원하는 경우 그 결과를 확인할 수 있는 기능이 필요하다. 이를 위해서는 상기 미들웨어에서의 상기 비동기 오퍼레이션 계층을 이용하여 비동기 연산(asynchronous operation)을 수행해야 한다.
따라서 상기와 같은 구조를 갖는 미들웨어에서 로봇 네비게이션, 로봇 또는 소프트웨어 로봇의 음성 합성, 영상처리 등 장기간 수행되는 연산 및 대용량 데이터의 전송을 지원하는 비동기 연산을 통한 통신 수행 과정에 대해 첨부된 도면을 참조하여 설명하기로 한다.
도 4는 본 발명의 실시예에 따라 네트워크 로봇 시스템에서의 비동기 오퍼레이션 계층의 통신 과정을 도시한 흐름도이다.
상기 도 4를 참조하면, 301단계에서 미들웨어에서의 객체 호출을 요청하는 클라이언트는 해당 원격 객체의 스텁(Stub)을 호출한다. 여기서 비동기 연산 수행 함수의 경우에는 OperationHandle 타입으로 정의된다. 이에 따라 미들웨어의 오퍼레이션 핸들러(Operation Handler)는 이와 같은 인터페이스로 정의된 클라이언트 측의 비동기 연산 처리를 담당한다.
302단계에서 미들웨어(140)는 상기 오퍼레이션 핸들러(221)에서 서버측의 오퍼레이션 어댑터(222)로 상기 비동기 연산에 대한 작업 수행을 요청한 후 그 결과를 기다린다. 이때, 오퍼레이션 핸들러(221)는 서버 측 연산의 수행이 종료될 때 기다릴 수도 있고, 또는 정해진 시간만큼만 기다리거나 수행을 중간에 중단시킬 수 있다. 여기서 상기 요청에 대한 결과는 상기 오퍼레이션 핸들러(221)에 포함된 오퍼레이션 리스너(Operation Listener)를 통해 받는다.
상기 오퍼레이션 핸들러(221)가 비동기 연산을 요청하면, 303단계에서 미들웨어는 상기 오퍼레이션 어댑터(222)로 상기 비동기 연산 작업을 전달한다. 즉, 요청 송신기(Request Sender)(231)를 통해 상기 비동기 연산 요청에 대한 요청 메시지를 인코딩하여 상기 서버측으로 전달한다. 이에 따라 서버측에서는 요청 수신기(Request Receiver)(232)를 통해 상기 수신한 요청 메시지를 디코딩하여 실행 객체로서 상기 오퍼레이션 어댑터(222)로 전달한다.
그러면 304단계에서 미들웨어는 상기 서버측에서 요청된 연산을 수행할 준비를 한다. 이때, 서버측에서는 연산을 위한 데이터가 음성 또는 영상 데이터인지를 확인한다.
확인결과, 영상 또는 음성 등과 같이 크기가 큰 데이터인 경우 305단계에서 미들웨어는 상기 영상 또는 음성 데이터에 대한 연산을 오퍼레이션 어댑터(222)에 포함된 스트림 펌프(226)를 통해 실행시킨다. 여기서 크기가 큰 데이터들은 스트림(Streaming) 형태 전송된다.
그런 다음 306단계에서 미들웨어는 상기 실행을 마치면, 상기 연산을 요청한 클라이언트의 오퍼레이션 리스너로 연산 결과를 전송한다.
반면, 304단계에서 확인한 결과, 영상 또는 음성 데이터가 아닌 경우 307단계에서 미들웨어는 서버측에서 'ProvideOperation' 연산 객체를 생성한 후 큐(Queue)에 저장한다.
그런 다음 308단계에서 미들웨어는 많은 클라이언트로부터 서버 측으로 연산 요청을 하는 경우, 이들의 실행을 스케줄링한다. 즉, 미들웨어는 오퍼레이션 어댑터(222)에 포함된 스케줄러(225)를 통해 각 연산 요청에 하나의 워크 스레드(Work Thread)를 할당하고, 큐(Queue)에 저장된 연산 객체를 하나씩 수행시킨다. 이때, 309단계에서 미들웨어의 오퍼레이션 어댑터(222)는 스텁(211)를 통해 객체를 요청한 후 306단계로 진행하여 연산 실행 결과를 클라이언트측으로 전달한다.
이와 같은 비동기 연산 과정에서, 장기간 수행연산의 경우, 그 수행시간이 비교적 길기 때문에 수행중 동일 연산에 대한 연산 요청이 발생할 수 있다. 따라서 미들웨어는 서버측에서 연산을 수행하고 있는 경우 클라이언트측의 오퍼레이션 핸들러(221)를 통해 요청된 연산을 대기시키거나, 동시에 수행시키기 위한 요청을 할 수 있다.
또한, 미들웨어는 장기간 수행 연산 요청 후, 필요에 따라 그 연산이 완료되기 전에 중단시킬 수 있다. 중단될 연산의 범위로는 자신이 요청한 연산만을 중단시킬 수 있는 방법과 동일 연산에서 현재 수행중이거나 수행 대기중인 모든 연산을 중단시킬 수 있는 중단 가능(interruptible operation) 연산을 제공한다.
본 발명의 실시예에 따른 네트워크 로봇 시스템에서 미들웨어의 원격 레퍼런스 계층을 통해 로봇(클라이언트)과 서버 간에 전송되는 전송 메시지의 데이터 인코딩 방식에 대해 설명하기로 한다. 여기서 인코딩 방식에 대한 표현은 BNF(Backus-Naur Form)을 사용한다.
데이터 인코딩은 메시지의 수신 측(서버)에서 데이터의 타입을 미리 아는 경우와 데이터의 타입을 미리 알 수 없는 경우의 두 가지 경우가 있는데, 데이터 타입을 미리 아는 경우는 메시지의 크기를 줄일 수 있도록 데이터 인코딩에 포함하지 않는다. 반면, 데이터 타입을 알 수 없는 경우에는 전달할 데이터의 타입을 수신 측이 알 수 있도록 실제 데이터 인코딩 전에 타입 정보를 추가한다. 이렇게 타입 정보가 추가된 경우에는 터미널 이름 앞에 't'를 추가하여 표시한다.
이와 같은 데이터 인코딩에 따른 데이터 포맷에 대해 첨부된 도 5를 참조하여 살펴보기로 한다.
boolean은 진위값을 나타내기 위한 자료형으로, '참'인 경우는 1이고 '거짓'인 경우는 2로 각 1 바이트로 표현된다.
'byte' 자료형은 bit signed 정수값을 표현하는 것으로 최소 -128부터 최대 127까지의 값을 갖는다.
'short' 자료형은 16 bit signed 정수를 표현하는 것으로 최소 -215부터 최대 215-1까지의 값을 취할 수 있으며, 상기 short은 multi-byte 인코딩으로 big-endian 인코딩 방식을 사용한다.
'int' 자료형은 32 bit signed 정수를 표현하는 것으로 최소 -231부터 최대 231-1까지의 값을 취할 수 있으며 big-endian 인코딩 방식을 사용한다.
'long' 자료형은 64 bit signed 정수를 표현하는 것으로 최소 -263부터 최대 263-1까지의 값을 취할 수 있으며 big-endian 인코딩 방식을 사용한다.
'double' 자료형은 64 bit signed 부동소수점을 표현하는 것으로 'IEEE floating point number' 표현 방법에 따라 인코딩된다.
'string' 자료형은 문자열을 위한 자료형으로 UTF-8 형식으로 인코딩된 byte열로, 첫 4 바이트에는 실제 문자열을 byte들의 길이를 포함한다. 만일 길이 0인 경우는 zero-length 문자열("")을 의미하고, -1인 경우는 널(null) 문자열을 의미한다.
'binary' 자료형은 byte 배열을 위한 자료형으로 첫 4 바이트는 실제 byte 배열의 길이 값이 <int>형 값으로 추가된다. 만일 길이 -1인 경우는 널(null) 배열을 의미한다.
'array' 자료형은 임의의 자료형의 배열을 기록한다. 여기서 인코딩 방식은 처음에 배열의 길이('length')가 'int' 방식으로 인코딩되고, 배열의 각 원소 데이타들이 차례대로 인코딩된다. 길이가 -1인 경우는 배열이 널(null)임을 의미하고, 0인 경우는 길이 0인 배열을 의미한다. 객체 지향 언어를 사용하는 경우, 타입 T의 배열(즉 T[])이라면 단순히 타입 T의 데이터뿐 만 아니라 타입 T에서 상속된 임의의 타입의 데이터들도 배열의 원소로 포함될 수 있다. 또한, 자바(Java) 언어와 같이 인터페이스를 지원하는 경우 해당 인터페이스를 구현하는 모든 타입의 데이터도 포함될 수도 있다. 그러므로 배열의 원소를 인코딩하는 경우 각 원소 데이터마다 따로 타입 정보가 포함된 인코딩 방법을 사용한다.
'parray'는 기본 자료형의 배열을 위한 자료형이다. 인코딩 방식은 앞서의 array 자료형 방식과 유사하되, 원소값은 반드시 기본 자료형(boolean, byte, short, int, long, double, string, binary)이어야 한다. 기본 자료형 또는 상속될 수 없는 원소 타입의 배열이기 때문에, 원소로 오는 데이터는 모두 선언된 배열 원소 타입과 동일하므로, 앞서의 'array'에서와는 달리 각 원소의 타입 정보를 추가로 기록할 필요가 없다.
'list'는 임의의 자료형의 가변 길이 리스트를 위한 자료형이다. 인코딩 방식은 앞서의 'array' 자료형과 유사하되, 'array' 자료형의 맨 처음에 위치하는 원소 객체의 자료형 이름("elm_type")이 포함되지 않고, 리스트에 포함되는 원소 데이터의 자료형에 제약을 주지 않는다.
'map'은 임의의 타입의 두 데이터 (키와 데이터)의 순서쌍들의 매핑 정보를 위한 인코딩 방식이다. 인코딩 방식은 맨 처음에 매핑에 포함된 엔트리(entry)의 개수가 위치하고, 다음으로는 (key, value) 데이터의 순서쌍들이 차례대로 기록된다. 만일 "length" 값이 음수인 경우는 널(null) 값을 의미한다. 저장되는 'key'와 'value' 데이터의 타입은 임의의 것이 포함될 수 있기 때문에, 각각을 인코딩할 때 타입 코드를 추가시킨다.
'valued'는 임의 타입의 객체를 인코딩하기 위한 방식이다. 본 표준의 객체 인코딩 범위에는 객체에 포함한 멤버 데이터만을 포함하고, 객체의 메소드 및 기타 정적 멤버(static member) 등은 범위에 포함하지 않는다. 인코딩 방법은 첫 4바이트는 객체를 구성하는 멤버들의 개수가 위치하고, 그 뒤로 객체를 구성하는 각 멤버에 대해 멤버 이름(string)과 멤버 객체(typed)들이 하나의 순서쌍으로 인코딩된다.
'valued'는 객체를 인코딩하면 객체를 구성하는 각 멤버에 대해 이름과 값의 순서쌍을 차례대로 인코딩하게 된다. 이러한 인코딩 방식은 배열, 리스트 등과 같이 동일 타입의 다수 객체를 인코딩하는 경우 같은 멤버 이름을 불필요하게 중복되어 인코딩되므로 원격 메소드 호출시 요청 메시지의 크기를 불필요하게 커지게 되어 호출 처리 시간을 증가시키게 된다.
'remote'는 원격 객체의 레퍼런스(reference)를 인코딩하는 방식이다. 인코딩 방식은 원격 객체가 위치한 통신 미들웨어 서버의 IP 주소(host) 이름과 포트 번호(port)가 오고, 서버 내의 객체의 식별자 경로(path)가 스트링(string) 타입의 배열 값으로 오고, 마지막으로 해당 원격 객체의 제공하는 원격 타입의 이름이 위 치한다. 여기서 레퍼런스(reference)는 한 객체를 인코딩하는 과정 중에 이미 인코딩을 시작한 객체를 다시 인코딩하게 될 경우, 다시 인코딩하지 않고 특별한 표식을 사용하여 앞서 인코딩된 것을 가리키도록 한다. 이는 객체의 멤버가 직간접으로 자기 자신을 reference하는 경우가 있을 수 있는데, 이러한 경우 앞서 valued 방식으로 객체를 인코딩하면 이미 인코딩된 객체를 다시 순환 인코딩하게 되어 무한이 인코딩 작업이 진행되므로 이를 해결하기 위한 것이다.
'appdef'는 데이터를 송수신하는 양측에서 서로 미리 약속된 방식을 사용하는 방식으로, 앞서 언급한 valued 인코딩 방식이 갖는 단점을 해결할 수 있다. 다만 이 방식은 호출자와 비호출자가 동일 데이터 인코딩/디코딩 방식을 사용해야 한다는 단점을 갖는다. 타입 추가 (tappdef) 방식에서는 데이터 인코딩 방식을 상대방에 알려 줄 수 있는 문자열 형식의 인코딩 태그를 전달하여, 상대방으로 하여금 적절한 디코더를 사용할 수 있도록 한다. 일반적으로 인코딩 태그는 인코딩되는 데이터의 타입(클래스) 이름을 사용하게 된다.
'throwable'은 예외 객체를 표현하는 인코딩 방식으로, 발생된 예외 객체의 이름(exception_name)과 예외 상황에 대한 설명(details)이 인코딩된다. 만일 예외 객체 이름 값이 널(null)인 경우는 'throwable'이 널(null)인 것으로 간주한다. 예외 객체 이름은 일반적으로 발생된 예외 객체의 타입 이름을 사용하며, 추가 설명이 없는 경우의 설명(details)은 널(null)로 인코딩된다.
한편, 상술한 바와 같은 데이터 인코딩 방식을 기반으로 한 네트워크 서비스 시스템에서의 로봇과 서버 간에 전달되는 메시지 인코딩 방식에 대해 설명하기로 한다.
본 발명의 실시예에서 사용되는 메시지 인코딩 방식은 BNF를 사용하며, 각 메시지들은 첨부된 도 6에 도시된 바와 같다.
연결 요청 메시지(connect)(610)는 로봇(클라이언트 측)에서 서버로 통신을 시작하기 위해 연결을 요청할 때 전달되는 메시지이다. 상기 연결 요청 메시지(610)는 로봇과 서버간의 TCP 소켓 연결이 생성되고 나서, 연결을 시도한 측에서 상대방에게 전달할 때만 사용되고, 그 뒤로는 사용되지 않는다.
상기 연결 요청 메시지(610)를 제외한 모든 메시지는 정의된 헤더를 처음에 포함한다. 이러한 헤더(header)(620)는 'magic', 'request_id', 'length', 'code'로 구성된다. 상기 'magic'은 통신 미들웨어 메시지임을 알리는 4바이트 정수 값으로 십진수 970208을 사용한다. 상기 'request_id'는 요청 식별자로, 통신 미들웨어에 의해 부여되는 번호로 외부로 전송하는 'call' 또는 'notify' 메시지마다 단조 증가하여 유일하게 배정하는 값이다. 상기 'length'는 메시지의 크기로 헤더를 포함한 값이다. 그리고 'code'는 메시지 종류를 기록하는 1바이트 값으로 하기 <표 1>과 같은 의미를 갖는다.
Code 의미
100 호출(call) 메시지
101 응답(reply) 메시지
102 에러(error) 메시지
103 통지(notity) 메시지
상기 헤더에서 code 값이 100인 경우, 호출(call) 메시지를 나타내며, 첨부된 도 6에 도시된 바와 같이 상기 호출(call) 메시지(630)는 지정된 원격 객체의 메소드(연산)를 호출하기 위해 송신자(caller)에서 수신자(callee)로 전달되는 메시지이다. 상기 호출 메시지(630)의 메시지 포맷은 BNF에서와 같이 메시지 헤더, 대상 객체의 경로(path), 호출 대상 메소드, 그리고 마지막으로 호출에 사용될 인자로 구성된다. 여기서 인자의 개수가 0인 경우는 인자가 없는 메소드의 호출을 의미한다.
상기 헤더에서 code 값이 101인 경우, 응답(reply) 메시지를 나타내며, 도 6에 도시된 바와 같이 응답(reply) 메시지(640)는 호출(call) 메시지(630)로 인해 원격 객체 호출하여 수신자(callee) 측에서 수행한 결과를 송신자(caller)에게 전달할 때 사용되는 메시지이다. 이러한 응답 메시지(640)의 메시지 포맷은 처음에 앞서 설명한 헤더가 위치하고, 다음에는 호출된 메소드 정의에서 선언된 반환 타입 값과 실제 수행 반환 값이 위치한다. 상기 응답 메시지(640)의 헤더 내 req_id는 호출 결과의 'pairing' 정보를 알려주기 위해 반드시 상기 호출 메시지(630)에서 기술된 request_id 값을 사용하여야 한다. 메소드의 반환 값을 통해 반환되는 데이터의 타입을 명시적으로 알 수 있음에도 불구하고 메소드에 선언된 반환 타입 정보를 따로 보내는 까닭은 실제 반환 값이 선언된 타입 외에도, 해당 타입에서 상속된 타입의 값을 반환할 수 있기 때문이다.
상기 헤더에서 code 값이 102인 경우, 에러(error) 메시지를 나타내며, 첨부된 도 6에 도시된 바와 같이 에러(error) 메시지(650)는 원격 객체 호출을 수행하던 중 예외 발생으로 실패한 경우, 수신자(callee)측에서 발생된 예외 객체를 송신자(caller)에게 전달할 때 사용되는 메시지이다. 에러(error) 메시지(650)의 메시지 포맷은 처음에 메시지 헤더가 위치하고, 다음에는 발생된 예외 객체가 위치하게 된다. 여기서 어떤 호출로 인한 오류인지를 알려주기 위해 에러 메시지 헤더의 request_id는 반드시 call 메시지에서 기술된 request_id 값을 사용하여야 한다.
상기 헤더에서 code 값이 102인 경우, 통지(notify) 메시지를 나타내며, 첨부된 도 6에 도시된 바와 같이 통지(notify) 메시지(660)는 특정 이벤트가 발생하는 경우 알려주는 메시지이다. 이는 호출 메시지(630)와 유사하지만, 응답 메시지(640)를 기다리지 않는다. 상기 통지 메시지(660)의 메시지 포맷은 메시지 헤더, 대상 객체의 경로(path), 호출 대상 메소드 그리고 마지막으로 호출에 사용될 인자로 구성된다. 인자가 개수가 0인 경우는 인자가 없는 메소드의 호출을 의미한다.
상술한 바에 따라 본 발명은 다양한 로봇이 서버와의 통신을 통해 효과적으로 서버 측에서 제공하는 로봇의 기본 기능들을 활용할 수 있으며, 상기 미들웨어의 통신 프레임워크는 원격 객체 호출을 위해 바이너리 메시지 인코딩 방식으로 전송 메시지를 최소화함으로써, 임베디드 시스템과 같이 상대적으로 자원이 제한된 장치 환경에서도 탑재될 수 있다.
또한, 본 발명은 다양한 OS 상에서 다양한 언어로 개발된 다양한 로봇에 탑재될 수 있으며, 이를 통해 서버와의 원격 통신이 매우 쉽고 효율적으로 이루어질 수 있으며, TCP를 이용하여 인터넷 공유기를 활용한 사설망에 접속에 문제가 없어 어떤 네트워크 망에서도 통신이 가능하다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 발명청구의 범위뿐 만 아니라 이 발명청구의 범위와 균등한 것들에 의해 정해져야 한다.
상술한 바와 같이 본 발명은 본 발명은 네트워크 로봇 시스템은 외부 환경에 내재된 센서 기능을 활용하고, 로봇의 프로세싱을 높이기보다 원격지의 고기능 서버를 활용함으로써, 로봇의 성능을 향상시킬 수 있으며, 비동기 연산을 제공함으로써, 크기가 큰 데이터의 전송을 효과적으로 처리하기 위해 비동기 연산을 수행할 수 있는 효과가 있으며, 원격 객체 호출을 위해 바이너리 메시지 인코딩 방식으로 전송 메시지를 최소화함으로써, 상대적으로 자원이 제한된 장치와의 효율적인 통신을 수행할 수 있는 효과가 있다.

Claims (10)

  1. 다수의 센서 및 서버와 로봇간의 통신을 처리하는 미들웨어를 구비하는 네트워크 로봇 시스템에서의 통신 방법에 있어서,
    상기 로봇의 기능을 상기 다수의 센서 및 서버를 이용하여 분산 처리를 위한 상기 미들웨어의 통신 프레임 워크를 미리 설정하는 과정과,
    상기 미리 설정된 통신 프레임 워크를 이용하여 상기 다수의 센서 및 서버와 상기 로봇간의 통신을 수행하는 과정을 포함하며, 상기 로봇에서 호출된 원격 객체의 데이터 크기에 따라 동기/비동기 연산을 수행함을 특징으로 하는 네트워크 로봇 시스템에서의 통신 방법.
  2. 제1항에 있어서, 상기 미들웨어의 통신 프레임 워크를 미리 설정하는 과정은,
    상기 로봇의 객체 호출 요청에 따라 상기 원격 객체를 원격 호출 명령/수신하는 스텁/스켈레톤 계층을 설정하는 단계와,
    상기 원격 호출 명령에 따라 상기 원격 객체의 데이터 크기에 따라 비동기 연산을 수행하는 비동기 오퍼레이션 계층을 설정하는 단계와,
    상기 원격 호출에 대한 정보를 패킹하여 전달하는 원격 레퍼런스 계층을 설정하는 단계와,
    상기 원격 호출에 따라 전송 프로토콜을 이용하여 상기 로봇과 상기 서버간 의 연결을 수행하는 전송 계층을 설정하는 단계를 포함하는 것을 특징으로 하는 네트워크 로봇 시스템에서의 통신 방법.
  3. 제2항에 있어서,
    상기 비동기 오퍼레이션 계층은 상기 객체를 원격 호출에 따라 비동기 연산의 수행을 요청하는 영역과, 상기 연산 수행 요청에 따라 결과를 바로 전달하고 추후 원하는 경우 상기 결과를 확인하도록 비동기 연산을 수행하는 영역으로 설정됨을 특징으로 하는 네트워크 로봇 시스템에서의 통신 방법.
  4. 제1항에 있어서, 상기 다수의 센서 및 서버와 상기 로봇간의 통신을 수행하는 과정은,
    상기 미리 설정된 통신 프레임 워크의 클라이언트 측에서, 상기 로봇이 요청한 상기 원격 객체를 원격 호출하는 단계와,
    상기 원격 호출에 대한 연산 수행을 요청하는 단계와,
    상기 연산 수행 요청에 대한 전송 메시지를 인코딩하여 전송하는 단계와,
    상기 미리 설정된 통신 프레임 워크의 서버 측에서, 상기 원격 객체에 대한 데이터의 크기가 큰 경우 비동기 연산을 수행하는 단계와,
    상기 비동기 연산 수행 결과를 바로 상기 클라이언트 측으로 전달하는 단계와,
    상기 원격 객체에 대한 데이터의 크기가 크지 않은 경우 스케쥴링을 통해 동기 연산을 수행하는 단계를 포함하는 것을 특징으로 하는 네트워크 로봇 시스템에서의 통신 방법.
  5. 외부 환경의 정보를 인식하여 서비스를 제공하는 로봇과,
    상기 외부 환경 정보를 센싱하는 상기 로봇의 기능을 분산 처리하는 다수의 센서들과,
    상기 외부 환경 정보에 따른 상기 로봇에서의 서비스 처리 기능을 분산 처리하는 서버와,
    원격지에 위치한 상기 다수의 센서들 및 상기 서버와 상기 로봇을 연결하고, 상기 다수의 센서들/상기 서버와 상기 로봇간의 원격 통신을 위한 통신 프레임 워크를 미리 설정하는 미들웨어를 포함하며, 상기 미들웨어는 상기 로봇에서 호출된 원격 객체의 데이터 크기에 따라 동기/비동기 연산을 수행함을 특징으로 하는 네트워크 로봇 시스템.
  6. 제5항에 있어서, 상기 미들웨어의 통신 프레임 워크는,
    상기 로봇의 객체 호출 요청에 따라 상기 원격 객체를 원격 호출 명령/수신하는 스텁/스켈레톤 계층과,
    상기 원격 호출 명령에 따라 상기 원격 객체의 데이터 크기에 따라 비동기 연산을 수행하는 비동기 오퍼레이션 계층과,
    상기 원격 호출에 대한 정보를 패킹하여 전달하는 원격 레퍼런스 계층과,
    상기 원격 호출에 따라 전송 프로토콜을 이용하여 상기 로봇과 상기 서버간 의 연결을 수행하는 전송 계층을 포함하는 것을 특징으로 하는 네트워크 로봇 시스템.
  7. 제6항에 있어서, 상기 비동기 오퍼레이션 계층은,
    상기 원격 객체를 원격 호출에 따라 비동기 연산의 수행을 요청하는 오퍼레이션 핸들러와,
    상기 연산 수행 요청에 따라 결과를 바로 전달하고 추후 원하는 경우 상기 결과를 확인하도록 비동기 연산을 수행하는 오퍼레이션 어뎁터를 포함하는 것을 특징으로 하는 네트워크 로봇 시스템.
  8. 제7항에 있어서,
    상기 오퍼레이션 어뎁터는, 상기 원격 객체에 대한 데이터의 크기가 큰 경우 비동기 연산을 수행하고, 상기 비동기 연산 수행 결과를 바로 상기 클라이언트 측으로 전달함을 특징으로 하는 네트워크 로봇 시스템.
  9. 제7항에 있어서,
    상기 오퍼레이션 어뎁터는, 상기 원격 객체에 대한 데이터의 크기가 크지 않은 경우 스케쥴링을 하는 스케쥴러를 포함하며, 상기 스케쥴링을 통해 동기 연산을 수행함을 특징으로 하는 네트워크 로봇 시스템.
  10. 제6항에 있어서, 상기 원격 레퍼런스 계층은,
    상기 연산 수행 요청에 대한 전송 메시지를 인코딩하는 요청 송신기와,
    상기 인코딩된 전송 메시지를 디코딩하는 요청 수신기를 포함하며, 상기 요청 수신기 및 상기 요청 송신기는 상기 로봇측과 상기 서버측으로 구분되어 포함됨을 특징으로 하는 네트워크 로봇 시스템.
KR1020060103163A 2006-10-23 2006-10-23 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법 KR100772175B1 (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020060103163A KR100772175B1 (ko) 2006-10-23 2006-10-23 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법
US11/975,754 US20080098065A1 (en) 2006-10-23 2007-10-22 Network robot system and method of communication therein
AT07119056T ATE435454T1 (de) 2006-10-23 2007-10-23 Vernetztes robotersystem und kommunikationsverfahren
JP2007275488A JP4527144B2 (ja) 2006-10-23 2007-10-23 ネットワークロボットシステム及びネットワークロボットシステムにおける通信方法
EP07119056A EP1916600B1 (en) 2006-10-23 2007-10-23 Network robot system and method of communication therein
DE602007001433T DE602007001433D1 (de) 2006-10-23 2007-10-23 Vernetztes Robotersystem und Kommunikationsverfahren
CNA2007103068608A CN101202689A (zh) 2006-10-23 2007-10-23 网络机器人系统以及其中的通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060103163A KR100772175B1 (ko) 2006-10-23 2006-10-23 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법

Publications (1)

Publication Number Publication Date
KR100772175B1 true KR100772175B1 (ko) 2007-11-01

Family

ID=38738794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060103163A KR100772175B1 (ko) 2006-10-23 2006-10-23 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법

Country Status (7)

Country Link
US (1) US20080098065A1 (ko)
EP (1) EP1916600B1 (ko)
JP (1) JP4527144B2 (ko)
KR (1) KR100772175B1 (ko)
CN (1) CN101202689A (ko)
AT (1) ATE435454T1 (ko)
DE (1) DE602007001433D1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120059976A (ko) * 2010-12-01 2012-06-11 한국전자통신연구원 원격 함수호출 방식 기반 네트워크 로봇 시스템의 서비스를 제어하기 위한 장치 및 그 방법
WO2019152761A1 (en) * 2018-02-02 2019-08-08 Covidien Lp Surgical robotic system including synchronous and asynchronous networks and a method employing the same
KR20210155103A (ko) 2020-06-15 2021-12-22 휴림로봇 주식회사 미들웨어를 포함하는 자율이동로봇

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8359605B2 (en) * 2009-01-13 2013-01-22 Disney Enterprises, Inc. System and method for integrated hardware platform for flash applications with distributed objects
DE102009025891A1 (de) * 2009-05-29 2010-12-02 Schneider Electric Automation Gmbh Verfahren zur Konfiguration einer Service-orientierten Fertigungslinie umfassend virtuelle und/oder reale Geräte und Komponenten
US20120059514A1 (en) * 2010-09-02 2012-03-08 Electronics And Telecommunications Research Institute Robot system and method for controlling the same
US8549094B2 (en) * 2011-06-30 2013-10-01 International Business Machines Corporation Facilitating communication between isolated memory spaces of a communications environment
US8428777B1 (en) 2012-02-07 2013-04-23 Google Inc. Methods and systems for distributing tasks among robotic devices
CN104965864B (zh) * 2015-06-04 2018-05-08 深圳市腾讯计算机系统有限公司 一种远程对象的标识方法及远程对象的标识系统
US12004831B2 (en) 2018-02-02 2024-06-11 Covidien Lp Surgical robotic system including synchronous and asynchronous networks and a method employing the same

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000051058A (ko) * 1999-01-18 2000-08-16 추호석 중앙제어기와 로봇 컨트롤러 사이의 네트웍 장치 및 이를 이용한 통신 방법
KR20040106920A (ko) * 2003-06-05 2004-12-20 한국과학기술원 Csma/crr의 통신방법
KR20060003255A (ko) * 2004-07-05 2006-01-10 한국과학기술원 고유 아이피 주소를 지닌 네트워크 기반 소프트웨어 로봇 시스템
KR20060093552A (ko) * 2005-02-22 2006-08-25 주식회사 대우일렉트로닉스 로봇과 홈 게이트웨이 간의 홈 네트워크 시스템 제어 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE9900123L (sv) * 1999-01-15 2000-07-16 Abb Ab Metod för robot
JP3762173B2 (ja) * 1999-11-26 2006-04-05 株式会社東芝 計算機システム及びネットワークシステム並びに記録媒体
US6889257B1 (en) * 1999-12-03 2005-05-03 Realnetworks, Inc. System and method of transmitting data packets
JP2001222316A (ja) * 2000-02-09 2001-08-17 Sony Corp ロボットの管理システム及びロボットの管理方法
US6985780B2 (en) * 2000-03-10 2006-01-10 Adept Technology, Inc. Smart camera
JP4765155B2 (ja) * 2000-09-28 2011-09-07 ソニー株式会社 オーサリング・システム及びオーサリング方法、並びに記憶媒体
JP2002113675A (ja) * 2000-10-11 2002-04-16 Sony Corp ロボット制御システム並びにロボット制御用ソフトウェアの導入方法
EP1327503B1 (en) * 2000-10-11 2017-12-06 Sony Corporation Robot control system and robot control method
US7882253B2 (en) * 2001-04-05 2011-02-01 Real-Time Innovations, Inc. Real-time publish-subscribe system
US20030009539A1 (en) * 2001-06-15 2003-01-09 Ntt Software Corporation Distributed object middleware connection method
JP2004240890A (ja) * 2003-02-07 2004-08-26 Nec Corp ミドルウェア透過分散アプリケーションアクセス方式
US7113848B2 (en) * 2003-06-09 2006-09-26 Hanson David F Human emulation robot system
JP2005078456A (ja) * 2003-09-01 2005-03-24 Sony Corp コンテンツ提供システム
US7099745B2 (en) * 2003-10-24 2006-08-29 Sap Aktiengesellschaft Robot system using virtual world
US7546309B1 (en) * 2005-03-31 2009-06-09 Emc Corporation Methods and apparatus for creating middleware independent software
KR100834761B1 (ko) * 2005-11-23 2008-06-05 삼성전자주식회사 이동 로봇의 자기 위치 인식 방법 및 장치
US7596572B1 (en) * 2006-01-03 2009-09-29 Emc Corporation Methods and apparatus for providing a categorical approach to valuetype bridge support

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000051058A (ko) * 1999-01-18 2000-08-16 추호석 중앙제어기와 로봇 컨트롤러 사이의 네트웍 장치 및 이를 이용한 통신 방법
KR20040106920A (ko) * 2003-06-05 2004-12-20 한국과학기술원 Csma/crr의 통신방법
KR20060003255A (ko) * 2004-07-05 2006-01-10 한국과학기술원 고유 아이피 주소를 지닌 네트워크 기반 소프트웨어 로봇 시스템
KR20060093552A (ko) * 2005-02-22 2006-08-25 주식회사 대우일렉트로닉스 로봇과 홈 게이트웨이 간의 홈 네트워크 시스템 제어 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120059976A (ko) * 2010-12-01 2012-06-11 한국전자통신연구원 원격 함수호출 방식 기반 네트워크 로봇 시스템의 서비스를 제어하기 위한 장치 및 그 방법
KR101714791B1 (ko) * 2010-12-01 2017-03-09 한국전자통신연구원 원격 함수호출 방식 기반 네트워크 로봇 시스템의 서비스를 제어하기 위한 장치 및 그 방법
WO2019152761A1 (en) * 2018-02-02 2019-08-08 Covidien Lp Surgical robotic system including synchronous and asynchronous networks and a method employing the same
KR20210155103A (ko) 2020-06-15 2021-12-22 휴림로봇 주식회사 미들웨어를 포함하는 자율이동로봇

Also Published As

Publication number Publication date
DE602007001433D1 (de) 2009-08-13
EP1916600B1 (en) 2009-07-01
US20080098065A1 (en) 2008-04-24
JP2008146634A (ja) 2008-06-26
JP4527144B2 (ja) 2010-08-18
CN101202689A (zh) 2008-06-18
EP1916600A1 (en) 2008-04-30
ATE435454T1 (de) 2009-07-15

Similar Documents

Publication Publication Date Title
KR100772175B1 (ko) 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법
US7305681B2 (en) Method and apparatus for providing multi-client support in a sip-enabled terminal
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
US5926636A (en) Remote procedural call component management method for a heterogeneous computer network
US20030009539A1 (en) Distributed object middleware connection method
US7917629B2 (en) Interface for external system management
WO2021042840A1 (zh) 数据处理方法、装置、服务器和计算机可读存储介质
CN109815025B (zh) 一种业务模型调用方法、装置及存储介质
US7039710B2 (en) Method and apparatus for providing multi-client support in a SIP-enabled terminal
TW202038581A (zh) 管理用戶端、設備監控系統及方法
CN101764843A (zh) 远程过程调用的处理方法、系统及客户端、服务器
US7363355B2 (en) Transparent disconnected services discovery and use
WO2018077284A1 (zh) 通信方法和系统、电子设备和计算机集群
US20020046304A1 (en) Dynamic class loading
US7934218B2 (en) Interprocess communication management using a socket layer
CN112256246A (zh) 一种用于电力系统中支持跨语言调用的微服务集成架构
US7739389B2 (en) Providing web services from a service environment with a gateway
WO2019061636A1 (zh) 调用系统工具的方法、装置、可读存储介质及设备
US10742776B1 (en) Accelerating isochronous endpoints of redirected USB devices
KR20160080487A (ko) 디바이스간 원격 프로시저 호출 방법
CN113849449A (zh) 一种通信系统和信息交互方法、设备和介质
US11337041B2 (en) Methods and apparatus for distributing publish-subscribe messages
CN113176957B (zh) 一种基于rpc的远程应用自动化系统
JP2002505478A (ja) 分散形システムにおけるイベント通知のためのオブジェクトの据置き復元及び遠隔ローディング
WO2021208834A1 (zh) 底层驱动转发方法及基于uefi实现的多核系统

Legal Events

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

Payment date: 20101001

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee