KR101951908B1 - 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법 - Google Patents

로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법 Download PDF

Info

Publication number
KR101951908B1
KR101951908B1 KR1020120116146A KR20120116146A KR101951908B1 KR 101951908 B1 KR101951908 B1 KR 101951908B1 KR 1020120116146 A KR1020120116146 A KR 1020120116146A KR 20120116146 A KR20120116146 A KR 20120116146A KR 101951908 B1 KR101951908 B1 KR 101951908B1
Authority
KR
South Korea
Prior art keywords
data
channel
sharing
service
callback
Prior art date
Application number
KR1020120116146A
Other languages
English (en)
Other versions
KR20140049837A (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 KR1020120116146A priority Critical patent/KR101951908B1/ko
Priority to US13/919,467 priority patent/US20140114475A1/en
Publication of KR20140049837A publication Critical patent/KR20140049837A/ko
Application granted granted Critical
Publication of KR101951908B1 publication Critical patent/KR101951908B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/12Arrangements for remote connection or disconnection of substations or of equipment thereof
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Manipulator (AREA)
  • Automation & Control Theory (AREA)
  • Artificial Intelligence (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Stored Programmes (AREA)
  • Evolutionary Computation (AREA)

Abstract

본 발명은 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유에 있어서, 로봇 소프트웨어 플랫폼에서 다수의 디바이스 자원을 다수의 사용자 컴포넌트에서 공유할 수 있도록 하여 로봇 응용 개발자가 로봇 시스템을 보다 효율적으로 구성할 수 있도록 한다.

Description

로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법{APPARATUS AND METHOD FOR SHARING DEVICES FOR ROBOT SOFTWARE COMPONENTS}
본 발명은 로봇 소프트웨어 컴포넌트에 관한 것으로, 특히 로봇 소프트웨어 플랫폼(robot software platform)에서 다수의 디바이스(device) 자원을 다수의 사용자 컴포넌트(user component)에서 공유할 수 있도록 하여 로봇 응용 개발자가 로봇 시스템을 보다 효율적으로 구성할 수 있도록 하는 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법에 관한 것이다.
보통 로봇 응용 개발자가 로봇 시스템을 구성할 때 다음 세 가지 형태를 취하는 것이 일반적이다.
먼저, 첫 번째 방법은 OS(operating system)가 적재된 하나의 임베디드 보드(embeded board)로 로봇을 구성하는 형태로 휠(wheel)이나 센서(sensor)와 같은 디바이스(device)가 보드에 직접 연결된다. 이 경우 로봇 개발자는 연결되는 디바이스에 대한 디바이스 드라이버(device driver) 및 컴포넌트(component)를 필요로 하게 되므로 새로 제작한 디바이스이거나 사용하고자 하는 OS에 맞는 디바이스 드라이버를 제작사에서 제공하지 않으면 적용하기 어렵다는 제약을 가지고 있다.
두 번째 방법은 OS가 적재된 두 개 이상의 임베디드 보드로 구성하는 형태로 액추에이터 및 센서 등이 연결되는 서브 보드들과 응용이 실행되는 마스터 보드가 이더넷(ethernet)과 같은 네트워크로 연결된다. 이 경우에도 로봇 개발자는 필요로 하는 디바이스 드라이버를 모두 구해야 한다는 제약을 가지고 있다.
세 번째 방법은 디바이스가 연결된 마이컴 보드(micom board)와 소프트웨어 플랫폼(software platform)이 설치된 마스터 보드(master board)가 하나의 시리얼 포트(serial port)를 통해 연결되는 형태이다. 이 경우 개발자는 소프트웨어 컴포넌트에서 직접 시리얼 포트를 통한 마이컴 보드상의 디바이스와 다수의 컴포넌트를 연결하는 다중 통신 기능을 구현해야 한다는 어려움이 있다. 또한, 이렇게 작성된 컴포넌트는 다수의 디바이스와의 인터페이스를 제공하기 위해 복잡한 인터페이스를 가지게 되고 재사용과 유지보수가 어려운 문제점이 있다.
대한민국 공개특허번호 10-2012-58456호 공개일자 2012년 06월 07일에는 홈 네트워크, 홈 네트워크 시스템 사이의 장치 정보 공유 방법 및 홈 네트워크 시스템에 관한 기술이 개시되어 있다.
따라서, 본 발명은 로봇 소프트웨어 플랫폼에서 다수의 디바이스 자원을 다수의 사용자 컴포넌트에서 공유할 수 있도록 하여 로봇 응용 개발자가 로봇 시스템을 보다 효율적으로 구성할 수 있도록 하는 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법을 제공하고자 한다.
상술한 본 발명은 디바이스 공유장치로서, 로봇 소프트웨어 사용자 컴포넌트간 공유 대상 디바이스로부터 전달되는 데이터를 수신하기 위해 설정되는 상기 사용자 컴포넌트의 콜백부와, 프레임웍과 연결하여 상기 디바이스로 데이터를 전달하거나 상기 콜백부를 통해 수신된 데이터를 상기 사용자 컴포넌트의 프로그램으로 전달하는 디바이스 서비스 대리자와, 각각의 사용자 컴포넌트의 상기 디바이스 서비스 대리자를 관리하는 디바이스 서비스 대리자 관리부와, 상기 디바이스와 연결되어 데이터를 송수신하는 디바이스 채널과, 상기 디바이스 채널을 관리하고, 상기 디바이스 채널과 상기 디바이스 서비스 대리자를 연결하는 디바이스 채널 관리부를 포함한다.
또한, 상기 디바이스 서비스 대리자는, 상기 디바이스의 공유를 위해 상기 디바이스 서비스 대리자 관리부에 등록되며, 상기 등록되는 시점에 상기 디바이스 서비스 대리자 관리부로부터 상기 디바이스의 공유를 위한 설정 정보를 수신하여 상기 사용자 컴포넌트와 디바이스간 데이터 송수신을 지원하는 것을 특징으로 한다.
또한, 상기 디바이스 서비스 대리자는, 상기 디바이스 서비스 대리자 관리부에서 제공하는 채널 탐색 기능을 이용하여 공유하고자 하는 디바이스와 연결된 디바이스 채널을 탐색하고, 상기 탐색된 디바이스 채널에 데이터 수신자로 등록하여 상기 디바이스로부터의 데이터를 수신하는 것을 특징으로 한다.
또한, 상기 디바이스 서비스 대리자 관리부는, 상기 디바이스 서비스 대리자로부터 임의의 공유 대상 디바이스로 데이터 전송 요청을 수신하는 경우, 상기 디바이스와 연결된 디바이스 채널을 검색하고, 상기 검색된 디바이스 채널로 상기 디바이스 서비스 대리자로부터 송신된 데이터를 전송하는 것을 특징으로 한다.
또한, 상기 디바이스 채널은, 상기 디바이스 서비스 대리자 관리부로부터 상기 디바이스로 전송 요청되는 데이터를 수신하는 경우, 상기 디바이스의 데이터 출력 대기열에 상기 데이터를 저장하여 상기 디바이스에서 이전에 진행중인 데이터 출력이 완료되는 시점에 상기 데이터가 상기 디바이스로 전달되도록 제어하는 것을 특징으로 한다.
또한, 상기 디바이스 채널은, 상기 디바이스로부터 데이터를 수신하는 경우 상기 디바이스를 공유 대상 디바이스로 등록한 해당 디바이스 서비스 대리자의 콜백 공통 인터페이스를 호출하여 상기 콜백 공통 인터페이스를 통해 상기 데이터를 전송하는 것을 특징으로 한다.
또한, 상기 디바이스 채널은, 상기 디바이스 각각에 대해 하나씩 할당되는 것을 특징으로 한다.
또한, 상기 디바이스 채널은, 상기 사용자 컴포넌트에 의해 식별될 수 있는 고유 아이디(ID) 또는 키(key)로 상기 디바이스 채널 관리부에 등록되는 것을 특징으로 한다.
또한, 상기 디바이스는, 로봇을 구성하거나 로봇과 연결되는 장치인 것을 특징으로 한다.
또한, 상기 디바이스는, 시리얼 포트(serial port), HID(human interface device), 센서, 액츄에이터 또는 휠을 포함하는 것을 특징으로 한다.
시리얼 포트(serial port) 또는 HID(human interface device) 인 것을 특징으로 한다.
또한, 본 발명은 디바이스 공유방법으로서, 디바이스 채널 관리부에서 로봇 소프트웨어 사용자 컴포넌트간 공유 대상 디바이스와 연결되는 디바이스 채널을 등록하는 단계와, 디바이스 서비스 대리자 관리부에서 상기 사용자 컴포넌트에 내장된 디바이스 서비스 대리자를 등록하는 단계와, 상기 사용자 컴포넌트에서 공유 대상으로 설정한 디바이스에 연결된 디바이스 채널과 상기 디바이스 서비스 대리자를 연결시키는 단계와, 상기 디바이스 서비스 대리자와 상기 디바이스간 데이터 송수신을 수행하는 단계를 포함한다.
또한, 상기 데이터 송수신을 수행하는 단계는, 상기 사용자 컴포넌트에서 데이터 송신시 상기 디바이스 서비스 대리자와 디바이스 채널을 통해서 해당 디바이스로 상기 데이터를 송신하는 단계와, 상기 디바이스로부터 데이터 수신시 상기 디바이스 채널에서 수신자로 등록된 상기 디바이스 서비스 대리자로 상기 데이터를 전달하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 디바이스 서비스 대리자를 등록하는 단계에서, 상기 디바이스 서비스 대리자 관리부는 상기 디바이스 서비스 대리자의 등록시점에 상기 디바이스 서비스 대리자로 상기 디바이스의 공유를 위한 설정 정보를 전송하는 것을 특징으로 한다.
또한, 상기 데이터를 송신하는 단계는, 상기 사용자 컴포넌트에서 데이터 송신 시 상기 디바이스 서비스 대리자 관리부에서 상기 디바이스 서비스 대리자로부터 상기 디바이스로 데이터 전송 요청을 수신하는 단계와, 상기 디바이스 서비스 대리자 관리부에서 상기 디바이스와 연결된 디바이스 채널을 검색하고, 상기 검색된 디바이스 채널로 상기 전송 요청된 데이터를 전송하는 단계와, 상기 디바이스 채널에서 상기 디바이스로 상기 데이터를 전송하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 데이터를 전달하는 단계에서, 상기 디바이스 채널은 상기 디바이스로부터 데이터를 수신하는 경우 상기 디바이스를 공유 대상 디바이스로 등록한 해당 디바이스 서비스 대리자의 콜백 공통 인터페이스를 호출하여 상기 콜백 공통 인터페이스를 통해 상기 데이터를 전달하는 것을 특징으로 한다.
또한, 상기 디바이스 서비스 대리자는, 상기 디바이스 서비스 대리자 관리부에서 제공하는 채널 탐색 기능을 이용하여 공유하고자 하는 디바이스와 연결된 디바이스 채널을 탐색하고, 상기 탐색된 디바이스 채널에 데이터 수신자로 등록하여 상기 디바이스로부터의 데이터를 수신하는 것을 특징으로 한다.
또한, 상기 디바이스 채널은, 상기 디바이스 각각에 대해 하나씩 할당되는 것을 특징으로 한다.
또한, 상기 디바이스 채널은, 상기 사용자 컴포넌트에 의해 식별될 수 있는 고유 아이디 또는 키로 상기 디바이스 채널 관리부에 등록되는 것을 특징으로 한다.
본 발명은 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유에 있어서, 로봇 소프트웨어 플랫폼에서 다수의 디바이스 자원을 다수의 사용자 컴포넌트에서 공유할 수 있도록 하여 로봇 응용 개발자가 로봇 시스템을 보다 효율적으로 구성할 수 있도록 하는 이점이 있다.
도 1은 본 발명의 실시예에 따른 디바이스 공유를 위한 컴포넌트 구성도,
도 2는 본 발명의 실시예에 따른 디바이스 공유를 위한 컴포넌트 엔진의 구성도,
도 3은 본 발명의 실시예에 따른 디바이스 공유 과정을 나타낸 흐름도.
이하, 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 실시 예에 따른 디바이스 공유를 위한 컴포넌트의 구성도이다.
위 도 1을 참조하면, 컴포넌트 베이스(110)는 사용자 컴포넌트의 기본 기능들이 구현되어 있는 구성을 의미한다. 콜백부(callback module)(111)은 사용자 콜백 함수(121)를 등록하기 위해 사용자에 의해 생성될 수 있다. 디바이스 서비스 대리자(device service surrogate)(112)는 프레임웍(frame work)과 연결하여 디바이스로 데이터를 전달하거나 콜백부(111)를 통해 수신된 데이터를 사용자 프로그램으로 전달한다. 사용자 코드(120)는 콜백부(111)에 참조하는 사용자 콜백함수(user callback module)(121)를 생성하는 모듈로 사용자가 직접 작성하는 사용자 코드 부분이 될 수 있다. 사용자 콜백 함수(121)는 디바이스 데이터 수신을 위해 작성된 사용자 콜백 함수 코드를 나타낸다.
도 2는 본 발명의 실시 예에 따른 디바이스 공유를 위한 컴포넌트 엔진(component engine)(220)의 구성도를 도시한 것이다.
위 도 2를 참조하면, 사용자 컴포넌트(user component)(210)는 사용자가 작성한 컴포넌트를 의미하며, 프레임웍과 연결하여 디바이스로 데이터를 전달하거나 디바이스로부터 수신된 데이터를 사용자 프로그램으로 전달하는 디바이스 서비스 대리자(device service surrogate)(112)를 포함할 수 있다.
디바이스 서비스 대리자 관리부(device service surrogate manager)(230)는 각 사용자 컴포넌트(210)의 디바이스 서비스 대리자(112)를 관리한다.
디바이스 채널부(250)는 시리얼 포트나 HID(human interface device)와 같은 디바이스와 직접 연결하여 데이터 송신하거나 수신하는 채널을 의미하며, 시리얼 디바이스(262)와 직접 연결되는 시리얼 디바이스 채널(252)과 HID 디바이스(261)와 직접 연결되는 HID 디바이스 채널(251)을 포함할 수 있다.
디바이스 채널 관리부(device channel manager)(240)는 디바이스 채널부(250)내 다수의 디바이스 채널(251, 252)을 관리하고 디바이스 채널(251, 252)과 디바이스 서비스 대리자(112)를 연결할 수 있다.
참조번호 (261)는 HID 디바이스 채널(251)과 연동되는 HID 하드웨어 디바이스, 참조번호 (262)는 시리얼 디바이스 채널(252)과 연동되는 시리얼 하드웨어 디바이스를 나타낸다.
도 3은 본 발명에 따른 로봇 소프트웨어 플랫폼에서 디바이스 공유의 과정을 나타낸 흐름도이다. 이하 도 1, 도 2 및 도 3을 참조하여 본 발명의 실시예에 따른 디바이스 공유 방법을 상세히 설명하기로 한다.
먼저, 디바이스 공유 장치가 실행을 시작하는 시점에 디바이스 채널 등록 단계(S300)에서, 시리얼 디바이스(262) 및 HID 디바이스(261)와 같이 공유 대상이 되는 디바이스 각각에 대해 데이터를 읽고(read), 쓰는(write) 작업을 전담하는 모듈인 디바이스 채널부(250)의 HID 디바이스 채널(251)과 시리얼 디바이스 채널(252)의 인스턴스(instance)가 생성된다. 이때, HID 디바이스(261)와 시리얼 디바이스(262) 등 각각의 디바이스에는 HID 디바이스 채널(251), 시리얼 디바이스 채널(252) 등 반드시 대응되는 하나의 디바이스 채널이 할당된다.
또한, 이때 시리얼 디바이스(262)와 같이 여러 개의 포트(port)가 존재하는 경우 각각의 포트가 다른 디바이스로 간주되어 각각의 포트에 대해 별도의 디바이스 채널이 할당될 수 있다. 즉, 예를 들어 시리얼 포트의 경우 COM1을 위한 디바이스 채널은 COM2를 위한 디바이스 채널과 공유되지 않는다.
위와 같이 생성된 디바이스 채널(251, 252)는 디바이스 사용자에 의해 식별될 수 있는 고유 아이디(ID) 또는 키(key)로 디바이스 채널 관리부(240)에 등록된다.
이어, 사용자 컴포넌트(210)의 실행 초기화 시점에 디바이스 서비스 대리자 등록 단계(S302)에서, 디바이스 공유 기능이 실행되는 컴포넌트 엔진(220)은 각각의 사용자 컴포넌트(210)로부터 디바이스 서비스 대리자(112)를 요청하고, 이들을 디바이스 서비스 대리자 관리부(230)에 등록한다. 디바이스 서비스 대리자(112)가 등록되는 시점에 디바이스 서비스 대리자(112)에는 디바이스 서비스 대리자 관리부(230)로부터 디바이스 공유 기능을 사용하기 위한 정보가 설정되고, 이후 사용자 컴포넌트(210)에서는 HID 디바이스(261), 시리얼 디바이스(262) 등의 디바이스에 데이터를 읽고 쓰는 기능을 수행할 수 있게 된다.
다음으로, 사용자 컴포넌트(210)의 실행이 수행되는 시점에 디바이스 서비스 대리자 채널 연결 단계(S304)에서, 사용자 컴포넌트(210)가 시리얼 디바이스(262) 또는 HID 디바이스(261)와 같은 외부 디바이스로부터 비동기적으로 데이터를 읽는 기능을 사용하고자 하는 경우, 사용자 컴포넌트(210)는 사용자 코드(120)내에 디바이스 별로 수신된 데이터를 처리하는 사용자 콜백 함수(121)를 작성하고, 컴포넌트 베이스(110)가 제공하는 콜백 모듈 생성기능을 사용하여 콜백부(111)를 생성한다.
이와 같이, 생성된 콜백부(111)는 컴포넌트 베이스(110)에서 제공하는 콜백 등록 기능을 이용하여 디바이스 서비스 대리자(112)에 등록된다.
그러면, 디바이스 서비스 대리자(112)는 사용자 코드(120)에서 콜백 등록 기능이 요청된 경우 디바이스 서비스 대리자 관리부(230)가 디바이스 채널 관리부(240)와 연동하여 제공하는 채널 탐색 기능을 사용하여 사용자 콜백부(111)가 요청하는 채널을 찾고, 검색된 디바이스 채널, 예를 들어 HID 디바이스 채널(251) 또는 시리얼 디바이스 채널(252)에 데이터 수신자로 디바이스 서비스 대리자(112)를 등록한다.
또한, 사용자 컴포넌트(210)가 시리얼 디바이스(262) 또는 HID 디바이스(261)와 같은 외부 디바이스로부터 동기적으로 데이터를 읽는 기능을 사용하고자 하는 경우, 사용자 컴포넌트(210)는 사용자 코드(120)에서 디바이스 서비스 대리자(112)가 제공하는 동기 데이터 수신 기능을 사용할 수 있다.
그러면, 디바이스 서비스 대리자(112)는 사용자 콜백 함수(121) 대신 디바이스 서비스 대리자(112)에서 미리 구현해놓은 내장 콜백 함수를 이용하여 콜백부(111)를 생성한 후, 이를 내부 콜백 관리 부분에 등록하고, 디바이스 서비스 대리자 관리부(230)가 제공하는 채널 탐색 기능을 사용하여 찾은 디바이스 채널에 데이터 수신자로 디바이스 서비스 대리자(112)를 등록할 수 있다.
위와 같이 디바이스 서비스 대리자(112)와 디바이스 채널부(250)내 디바이스 채널(251, 252)간 연결이 수행된 경우, 디바이스 서비스 대리자(112)와 디바이스(261, 262)간 데이터 송/수신이 수행될 수 있다.
먼저, 사용자 컴포넌트(210)에서 시리얼 디바이스(262) 또는 HID 디바이스(261)와 같은 외부 디바이스에 데이터를 쓰는 기능을 사용하고자 하는 경우(S306), 사용자 컴포넌트(210)는 사용자 코드(120)내에 디바이스 서비스 대리자(112)가 제공하는 디바이스 데이터 송신 기능을 호출한다.
그러면, 디바이스 서비스 대리자(112)는 사용자 코드(120)에서 디바이스 데이터 송신 기능이 호출된 경우, 디바이스 서비스 대리자 관리부(230) 및 디바이스 채널 관리부(240)와 연동하여 채널 탐색 기능을 통해 사용자 컴포넌트(210)가 요청한 데이터의 송신 대상 디바이스 채널을 찾는다. 이때 디바이스 채널은 예를 들어 HID 디바이스 채널(251) 또는 시리얼 디바이스 채널(252) 등이 될 수 있다.
이와 같이 송신 대상 디바이스 채널을 찾은 경우, 해당 디바이스 채널(251, 252)이 제공하는 데이터 출력(write data) 요청 기능을 사용하여 데이터를 해당 디바이스 채널(251, 252)로 전송한다(S308). 이때 위와 같이 찾아진 송신 대상 디바이스 채널의 정보는 이후에 데이터 송신 요청에서 빠르게 찾을 수 있도록 디바이스 대리자(112)에 저장될 수 있다.
이어, 디바이스 채널(251, 252)은 데이터 출력 요청 기능이 호출되면 전달받은 데이터를 출력 데이터 대기열에 저장하고, 현재 진행중인 디바이스(261, 262)에 대한 데이터 출력이 완료되면 출력 대기열에서 다음으로 출력할 데이터를 가져와서 디바이스(261, 262)에 대한 데이터 출력을 수행한다(S310). 이때 디바이스 채널(251, 252)의 데이터 출력 대기열에 저장되는 데이터의 순서는 우선 순위, 데드라인, 유효시간 등의 조건에 따라 정해지는데 각 조건의 가중치는 사용자에 의해 결정될 수 있다.
다음으로, 사용자 컴포넌트(210)가 시리얼 디바이스(262) 또는 HID 디바이스(261)와 같은 외부 디바이스로부터 비동기적으로 데이터를 읽는 기능을 사용하는 경우에 대해 설명하기로 한다.
HID 디바이스 채널(251) 또는 시리얼 디바이스 채널(252)와 같은 디바이스 채널은 시리얼 디바이스(262) 또는 HID 디바이스(261)와 같은 디바이스로부터 데이터가 수신된 경우(S312), 디바이스 서비스 대리자 채널 연결 단계(330)에서 수신자로 채널에 등록된 디바이스 서비스 대리자(112)가 제공하는 콜백 공통 인터페이스를 호출한다(S314). 그러면, 디바이스 서비스 대리자(112)는 등록된 콜백부(111)중 해당 디바이스에 대한 수신 콜백으로 설정된 콜백부(111)의 공통 데이터 수신 인터페이스를 호출한다. 이에 따라 디바이스(261, 262)로부터 전송된 데이터가 콜백부(111)로 수신되는데, 그러면 콜백부(111)는 사용자가 요청한 콜백 함수(121)의 파라미터 타입(parameter type)에 맞추어 공통 데이터 수신 인터페이스로 전달된 데이터를 변환한 다음 사용자 콜백 함수(121)을 호출하여 수신 데이터 처리를 수행할 수 있다.
즉, 시리얼 디바이스(262) 또는 HID 디바이스(261)와 같은 외부 디바이스로부터 동기적으로 데이터를 읽는 기능을 사용하는 경우(S312), 사용자 컴포넌트(210)가 디바이스 서비스 대리자(112)가 제공하는 동기 데이터 수신 기능을 호출하면 수신 대상 디바이스 채널(251, 252)로부터 디바이스 서비스 대리자(112)의 콜백 공통 인터페이스가 호출될 때까지 동기 데이터 수신 기능의 실행을 멈춘다.
이때, 만일 데이터 수신 대상인 디바이스 채널(251, 252)이 디바이스(261, 262)로부터 데이터를 수신하면 해당 디바이스 채널(251, 252)은 수신자로 등록되었던 디바이스 서비스 대리자(112)의 콜백 공통 인터페이스를 호출하고(S314), 디바이스(261, 262)로부터 수신된 데이터를 콜백 공통 인터페이스를 통해 내장 콜백으로 데이터를 전달한다(S316). 내장 콜백으로 데이터가 전달되면 디바이스 서비스 대리자(112)는 멈추었던 동기 데이터 수신 기능의 실행을 재개하여 수신된 데이터를 사용자 프로그램으로 리턴 값의 형태로 전달하고 디바이스 서비스 대리자(112)에 등록했던 내장 콜백 모듈을 제거한다.
이어, 디바이스 서비스 대리자(112)가 내장 콜백을 제거하고 디바이스 서비스 대리자(112)에 등록된 해당 디바이스 채널(251, 252)의 수신자인 콜백이 더 이상 존재하지 않으면 디바이스 서비스 대리자(112)는 해당 디바이스 채널(251, 252)로부터 더 이상 데이터를 수신하지 않도록 디바이스 채널(251, 252)에 수신 철회를 요청한다.
상기한 바와 같이, 본 발명은 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유에 있어서, 로봇 소프트웨어 플랫폼에서 다수의 디바이스 자원을 다수의 사용자 컴포넌트에서 공유할 수 있도록 하여 로봇 응용 개발자가 로봇 시스템을 보다 효율적으로 구성할 수 있도록 한다.
한편 상술한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
100 : 컴포넌트 베이스 111 : 콜백부
112 : 디바이스 서비스 대리자 120 : 사용자 코드
121 : 사용자 콜백함수 220 : 컴포넌트 엔진
230 : 디바이스 서비스 대리자 관리부 240 : 디바이스 채널 관리부
250 : 디바이스 채널부 251 : HID 디바이스 채널
252 : 시리얼 디바이스 채널 261 : HID 디바이스
262 : 시리얼 디바이스

Claims (18)

  1. 로봇 소프트웨어 사용자 컴포넌트간 공유 대상 디바이스로부터 전달되는 데이터를 수신하기 위해 설정되는 상기 사용자 컴포넌트의 콜백부와,
    프레임웍과 연결하여 상기 디바이스로 데이터를 전달하거나 상기 콜백부를 통해 수신된 데이터를 상기 사용자 컴포넌트의 프로그램으로 전달하는 디바이스 서비스 대리자와,
    각각의 사용자 컴포넌트의 상기 디바이스 서비스 대리자를 관리하는 디바이스 서비스 대리자 관리부와,
    상기 디바이스와 연결되어 데이터를 송수신하는 디바이스 채널과,
    상기 디바이스 채널을 관리하고, 상기 디바이스 채널과 상기 디바이스 서비스 대리자를 연결하는 디바이스 채널 관리부를 포함하고,
    상기 디바이스 서비스 대리자는,
    상기 디바이스 서비스 대리자 관리부에서 제공하는 채널 탐색 기능을 이용하여 공유하고자 하는 디바이스와 연결된 디바이스 채널을 탐색하고, 상기 탐색된 디바이스 채널에 데이터 수신자로 등록하여 상기 디바이스로부터의 데이터를 수신하는 것을 특징으로 하는 디바이스 공유장치.
  2. 제 1 항에 있어서,
    상기 디바이스 서비스 대리자는,
    상기 디바이스의 공유를 위해 상기 디바이스 서비스 대리자 관리부에 등록되며, 상기 등록되는 시점에 상기 디바이스 서비스 대리자 관리부로부터 상기 디바이스의 공유를 위한 설정 정보를 수신하여 상기 사용자 컴포넌트와 디바이스간 데이터 송수신을 지원하는 디바이스 공유장치.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 디바이스 서비스 대리자 관리부는,
    상기 디바이스 서비스 대리자로부터 임의의 공유 대상 디바이스로 데이터 전송 요청을 수신하는 경우, 상기 디바이스와 연결된 디바이스 채널을 검색하고, 상기 검색된 디바이스 채널로 상기 디바이스 서비스 대리자로부터 송신된 데이터를 전송하는 디바이스 공유장치.
  5. 제 4 항에 있어서,
    상기 디바이스 채널은,
    상기 디바이스 서비스 대리자 관리부로부터 상기 디바이스로 전송 요청되는 데이터를 수신하는 경우, 상기 디바이스의 데이터 출력 대기열에 상기 데이터를 저장하여 상기 디바이스에서 이전에 진행중인 데이터 출력이 완료되는 시점에 상기 데이터가 상기 디바이스로 전달되도록 제어하는 디바이스 공유장치.
  6. 제 1 항에 있어서,
    상기 디바이스 채널은,
    상기 디바이스로부터 데이터를 수신하는 경우 상기 디바이스를 공유 대상 디바이스로 등록한 해당 디바이스 서비스 대리자의 콜백 공통 인터페이스를 호출하여 상기 콜백 공통 인터페이스를 통해 상기 데이터를 전송하는 디바이스 공유장치.
  7. 제 1 항에 있어서,
    상기 디바이스 채널은,
    상기 디바이스 각각에 대해 하나씩 할당되는 디바이스 공유장치.
  8. 제 1 항에 있어서,
    상기 디바이스 채널은,
    상기 사용자 컴포넌트에 의해 식별될 수 있는 고유 아이디(ID) 또는 키(key)로 상기 디바이스 채널 관리부에 등록되는 디바이스 공유장치.
  9. 제 1 항에 있어서,
    상기 디바이스는,
    로봇을 구성하거나 로봇과 연결되는 장치인 디바이스 공유장치.
  10. 제 9 항에 있어서,
    상기 디바이스는,
    시리얼 포트(serial port), HID(human interface device), 센서, 액츄에이터 또는 휠을 포함하는 디바이스 공유장치.
  11. 디바이스 채널 관리부에서 로봇 소프트웨어 사용자 컴포넌트간 공유 대상 디바이스와 연결되는 디바이스 채널을 등록하는 단계와,
    디바이스 서비스 대리자 관리부에서 상기 사용자 컴포넌트에 내장된 디바이스 서비스 대리자를 등록하는 단계와,
    상기 사용자 컴포넌트에서 공유 대상으로 설정한 디바이스에 연결된 디바이스 채널과 상기 디바이스 서비스 대리자를 연결시키는 단계와,
    상기 디바이스 서비스 대리자와 상기 디바이스간 데이터 송수신을 수행하는 단계
    를 포함하는 디바이스 공유 방법.
  12. 제 11 항에 있어서,
    상기 데이터 송수신을 수행하는 단계는,
    상기 사용자 컴포넌트에서 데이터 송신시 상기 디바이스 서비스 대리자와 디바이스 채널을 통해서 해당 디바이스로 상기 데이터를 송신하는 단계와,
    상기 디바이스로부터 데이터 수신시 상기 디바이스 채널에서 수신자로 등록된 상기 디바이스 서비스 대리자로 상기 데이터를 전달하는 단계
    를 포함하는 디바이스 공유 방법.
  13. 제 11 항에 있어서,
    상기 디바이스 서비스 대리자를 등록하는 단계에서,
    상기 디바이스 서비스 대리자 관리부는 상기 디바이스 서비스 대리자의 등록시점에 상기 디바이스 서비스 대리자로 상기 디바이스의 공유를 위한 설정 정보를 전송하는 디바이스 공유 방법.
  14. 제 12 항에 있어서,
    상기 데이터를 송신하는 단계는,
    상기 사용자 컴포넌트에서 데이터 송신 시 상기 디바이스 서비스 대리자 관리부에서 상기 디바이스 서비스 대리자로부터 상기 디바이스로 데이터 전송 요청을 수신하는 단계와,
    상기 디바이스 서비스 대리자 관리부에서 상기 디바이스와 연결된 디바이스 채널을 검색하고, 상기 검색된 디바이스 채널로 상기 전송 요청된 데이터를 전송하는 단계와,
    상기 디바이스 채널에서 상기 디바이스로 상기 데이터를 전송하는 단계
    를 포함하는 디바이스 공유 방법.
  15. 제 12 항에 있어서,
    상기 데이터를 전달하는 단계에서,
    상기 디바이스 채널은 상기 디바이스로부터 데이터를 수신하는 경우 상기 디바이스를 공유 대상 디바이스로 등록한 해당 디바이스 서비스 대리자의 콜백 공통 인터페이스를 호출하여 상기 콜백 공통 인터페이스를 통해 상기 데이터를 전달하는 디바이스 공유 방법.
  16. 제 11 항에 있어서,
    상기 디바이스 서비스 대리자는,
    상기 디바이스 서비스 대리자 관리부에서 제공하는 채널 탐색 기능을 이용하여 공유하고자 하는 디바이스와 연결된 디바이스 채널을 탐색하고, 상기 탐색된 디바이스 채널에 데이터 수신자로 등록하여 상기 디바이스로부터의 데이터를 수신하는 디바이스 공유 방법.
  17. 제 11 항에 있어서,
    상기 디바이스 채널은,
    상기 디바이스 각각에 대해 하나씩 할당되는 디바이스 공유 방법.
  18. 제 11 항에 있어서,
    상기 디바이스 채널은,
    상기 사용자 컴포넌트에 의해 식별될 수 있는 고유 아이디 또는 키로 상기 디바이스 채널 관리부에 등록되는 디바이스 공유 방법.
KR1020120116146A 2012-10-18 2012-10-18 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법 KR101951908B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120116146A KR101951908B1 (ko) 2012-10-18 2012-10-18 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법
US13/919,467 US20140114475A1 (en) 2012-10-18 2013-06-17 Apparatus and method for sharing device resources between robot software components

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120116146A KR101951908B1 (ko) 2012-10-18 2012-10-18 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140049837A KR20140049837A (ko) 2014-04-28
KR101951908B1 true KR101951908B1 (ko) 2019-04-25

Family

ID=50486068

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120116146A KR101951908B1 (ko) 2012-10-18 2012-10-18 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법

Country Status (2)

Country Link
US (1) US20140114475A1 (ko)
KR (1) KR101951908B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430414B2 (en) 2013-03-16 2016-08-30 Intel Corporation Bus independent platform for sensor hub peripherals to provide coalescing of multiple reports
US9542347B2 (en) * 2013-03-16 2017-01-10 Intel Corporation Host interface crossbar for sensor hub
CN105594272A (zh) * 2013-04-26 2016-05-18 歌拉利旺株式会社 通信设备和蓝牙通信系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012105249A (ja) 2010-11-10 2012-05-31 Korea Electronics Telecommun ネットワークロボットのプリング方式に基づくロボットソフトウェアを管理するためのシステム及びその方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7124302B2 (en) * 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6976134B1 (en) * 2001-09-28 2005-12-13 Emc Corporation Pooling and provisioning storage resources in a storage network
US20040162637A1 (en) * 2002-07-25 2004-08-19 Yulun Wang Medical tele-robotic system with a master remote station with an arbitrator
US6925357B2 (en) * 2002-07-25 2005-08-02 Intouch Health, Inc. Medical tele-robotic system
US20040103220A1 (en) * 2002-10-21 2004-05-27 Bill Bostick Remote management system
US7158860B2 (en) * 2003-02-24 2007-01-02 Intouch Technologies, Inc. Healthcare tele-robotic system which allows parallel remote station observation
US7171286B2 (en) * 2003-02-24 2007-01-30 Intouch Technologies, Inc. Healthcare tele-robotic system with a robot that also functions as a remote station
US7813836B2 (en) * 2003-12-09 2010-10-12 Intouch Technologies, Inc. Protocol for a remotely controlled videoconferencing robot
US7577959B2 (en) * 2004-06-24 2009-08-18 International Business Machines Corporation Providing on-demand capabilities using virtual machines and clustering processes
US20060075199A1 (en) * 2004-10-06 2006-04-06 Mahesh Kallahalla Method of providing storage to virtual computer cluster within shared computing environment
US8583282B2 (en) * 2005-09-30 2013-11-12 Irobot Corporation Companion robot for personal interaction
US20070291128A1 (en) * 2006-06-15 2007-12-20 Yulun Wang Mobile teleconferencing system that projects an image provided by a mobile robot
US9160783B2 (en) * 2007-05-09 2015-10-13 Intouch Technologies, Inc. Robot system that operates through a network firewall
US8463435B2 (en) * 2008-11-25 2013-06-11 Intouch Technologies, Inc. Server connectivity control for tele-presence robot
US9138891B2 (en) * 2008-11-25 2015-09-22 Intouch Technologies, Inc. Server connectivity control for tele-presence robot
CN101873303B (zh) 2009-04-27 2014-07-09 华为终端有限公司 一种家庭网络、家庭网络间设备信息共享方法及家庭网络系统
US10343283B2 (en) * 2010-05-24 2019-07-09 Intouch Technologies, Inc. Telepresence robot system that can be accessed by a cellular phone
US10808882B2 (en) * 2010-05-26 2020-10-20 Intouch Technologies, Inc. Tele-robotic system with a robot face placed on a chair
KR101231771B1 (ko) * 2010-12-31 2013-02-08 강원대학교산학협력단 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012105249A (ja) 2010-11-10 2012-05-31 Korea Electronics Telecommun ネットワークロボットのプリング方式に基づくロボットソフトウェアを管理するためのシステム及びその方法

Also Published As

Publication number Publication date
US20140114475A1 (en) 2014-04-24
KR20140049837A (ko) 2014-04-28

Similar Documents

Publication Publication Date Title
CN100466604C (zh) 促进可分页模式虚拟环境中的数据传输的方法和系统
US10846124B2 (en) Communication method, apparatus and system for virtual machine and host machine
US20090328038A1 (en) Computer System and Device Controlling Method for Computer System
KR101557833B1 (ko) 머신 비젼 애플리케이션을 위한 멀티-코어 분산형 처리
JP2006196014A5 (ko)
US20120127512A1 (en) Branch office direct printing
US20130160006A1 (en) Apparatus and method for controlling sensor data in cloud system
KR101951908B1 (ko) 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법
JP2011076437A (ja) デバイス共有システム、デバイス共有サーバ、デバイス共有クライアント、およびデバイス共有方法
KR101749023B1 (ko) IoT DIY 플랫폼을 지원하는 전자 장치
CN102646082B (zh) 在嵌入式平台上连接多种外接设备的方法及装置
KR20190044098A (ko) 컨테이너를 액세스하는데 사용하기 위한 방법 및 디바이스
CN109445960B (zh) 应用的路由方法、装置及存储介质
JP4590582B2 (ja) コンピュータネットワークと小デバイスのインターフェイス方法とシステム
CN108874699B (zh) 多系统使用mtp功能的方法、装置及电子设备
JPH11265297A (ja) 分散シミュレータシステム
JPH09330243A (ja) 計算機システム
US7079999B2 (en) Bus simulation apparatus and bus simulation program
JP2017107382A (ja) プログラム実行システム、プログラム実行方法、および、プログラム
US10904208B2 (en) Controller for changing a conversion destination of a virtual area
CN117076409B (zh) 文件共享方法、装置、系统、电子设备及存储介质
US12001184B2 (en) Control system for an automation system and method for operating an automation system
JP2009020581A (ja) アプリケーション間通信システム
JP2000137690A (ja) マルチcpuシステム
US20220269546A1 (en) Control device, method, program, and vehicle

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant