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

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

Info

Publication number
KR20140049837A
KR20140049837A KR1020120116146A KR20120116146A KR20140049837A KR 20140049837 A KR20140049837 A KR 20140049837A KR 1020120116146 A KR1020120116146 A KR 1020120116146A KR 20120116146 A KR20120116146 A KR 20120116146A KR 20140049837 A KR20140049837 A KR 20140049837A
Authority
KR
South Korea
Prior art keywords
data
channel
sharing
service
callback
Prior art date
Application number
KR1020120116146A
Other languages
English (en)
Other versions
KR101951908B1 (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

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. 제 1 항에 있어서,
    상기 디바이스 서비스 대리자는,
    상기 디바이스 서비스 대리자 관리부에서 제공하는 채널 탐색 기능을 이용하여 공유하고자 하는 디바이스와 연결된 디바이스 채널을 탐색하고, 상기 탐색된 디바이스 채널에 데이터 수신자로 등록하여 상기 디바이스로부터의 데이터를 수신하는 디바이스 공유장치.
  4. 제 1 항에 있어서,
    상기 디바이스 서비스 대리자 관리부는,
    상기 디바이스 서비스 대리자로부터 임의의 공유 대상 디바이스로 데이터 전송 요청을 수신하는 경우, 상기 디바이스와 연결된 디바이스 채널을 검색하고, 상기 검색된 디바이스 채널로 상기 디바이스 서비스 대리자로부터 송신된 데이터를 전송하는 디바이스 공유장치.
  5. 상기 4 항에 있어서,
    상기 디바이스 채널은,
    상기 디바이스 서비스 대리자 관리부로부터 상기 디바이스로 전송 요청되는 데이터를 수신하는 경우, 상기 디바이스의 데이터 출력 대기열에 상기 데이터를 저장하여 상기 디바이스에서 이전에 진행중인 데이터 출력이 완료되는 시점에 상기 데이터가 상기 디바이스로 전달되도록 제어하는 디바이스 공유장치.
  6. 제 3 항에 있어서,
    상기 디바이스 채널은,
    상기 디바이스로부터 데이터를 수신하는 경우 상기 디바이스를 공유 대상 디바이스로 등록한 해당 디바이스 서비스 대리자의 콜백 공통 인터페이스를 호출하여 상기 콜백 공통 인터페이스를 통해 상기 데이터를 전송하는 디바이스 공유장치.
  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 true KR20140049837A (ko) 2014-04-28
KR101951908B1 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
US9542347B2 (en) * 2013-03-16 2017-01-10 Intel Corporation Host interface crossbar for sensor hub
US9430414B2 (en) 2013-03-16 2016-08-30 Intel Corporation Bus independent platform for sensor hub peripherals to provide coalescing of multiple reports
JPWO2014174893A1 (ja) * 2013-04-26 2017-02-23 クラリオン株式会社 通信機器及びBluetooth通信システム

Citations (3)

* 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 ネットワークロボットのプリング方式に基づくロボットソフトウェアを管理するためのシステム及びその方法
KR20120058456A (ko) 2009-04-27 2012-06-07 후아웨이 디바이스 컴퍼니 리미티드 홈 네트워크, 홈 네트워크 시스템 사이의 장치 정보 공유 방법 및 홈 네트워크 시스템
KR20120077955A (ko) * 2010-12-31 2012-07-10 강원대학교산학협력단 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법

Family Cites Families (17)

* 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
US6925357B2 (en) * 2002-07-25 2005-08-02 Intouch Health, Inc. Medical tele-robotic system
US20040162637A1 (en) * 2002-07-25 2004-08-19 Yulun Wang Medical tele-robotic system with a master remote station with an arbitrator
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
ATE524784T1 (de) * 2005-09-30 2011-09-15 Irobot Corp Begleitroboter für persönliche interaktion
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
US9138891B2 (en) * 2008-11-25 2015-09-22 Intouch Technologies, Inc. Server connectivity control for tele-presence robot
US8463435B2 (en) * 2008-11-25 2013-06-11 Intouch Technologies, Inc. Server connectivity control for tele-presence robot
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120058456A (ko) 2009-04-27 2012-06-07 후아웨이 디바이스 컴퍼니 리미티드 홈 네트워크, 홈 네트워크 시스템 사이의 장치 정보 공유 방법 및 홈 네트워크 시스템
JP2012105249A (ja) * 2010-11-10 2012-05-31 Korea Electronics Telecommun ネットワークロボットのプリング方式に基づくロボットソフトウェアを管理するためのシステム及びその方法
KR20120077955A (ko) * 2010-12-31 2012-07-10 강원대학교산학협력단 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법

Also Published As

Publication number Publication date
KR101951908B1 (ko) 2019-04-25
US20140114475A1 (en) 2014-04-24

Similar Documents

Publication Publication Date Title
US10846124B2 (en) Communication method, apparatus and system for virtual machine and host machine
KR101557833B1 (ko) 머신 비젼 애플리케이션을 위한 멀티-코어 분산형 처리
JP2006196014A5 (ko)
KR101951908B1 (ko) 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법
WO2017051171A1 (en) Private access to human interface devices
KR101704751B1 (ko) 모듈 간의 타이밍 정보를 이용하는 멀티코어 시스템의 시뮬레이터, 및 그 시뮬레이션 방법
US20170293589A1 (en) Parallel processing apparatus and method for controlling communication
JP4590582B2 (ja) コンピュータネットワークと小デバイスのインターフェイス方法とシステム
CN102646082A (zh) 在嵌入式平台上连接多种外接设备的方法及装置
JP4856413B2 (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
JP6740600B2 (ja) プログラム実行システム、プログラム実行方法、および、プログラム
JPH11265297A (ja) 分散シミュレータシステム
JPH09330243A (ja) 計算機システム
US7079999B2 (en) Bus simulation apparatus and bus simulation program
JPWO2009131167A1 (ja) マルチプロセッサ制御装置、その方法及びそのプログラム
CN106850546B (zh) 一种雷达终端的地图模块软件组织方法
JP2008108089A (ja) データ処理システム、タスク制御方法及びそのプログラム
CN117076409B (zh) 文件共享方法、装置、系统、电子设备及存储介质
CN104426958B (zh) 一种通信方法、装置及系统
JP2009020581A (ja) アプリケーション間通信システム
US10904208B2 (en) Controller for changing a conversion destination of a virtual area
KR101070029B1 (ko) 철강 공정 제어를 위한 공통 인터페이스 지원 시스템 및 방법
US20210141357A1 (en) Control System for an Automation System and Method for Operating an Automation System
JPH05324574A (ja) プロセッサ間通信方式
JP2000137690A (ja) マルチcpuシステム

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