KR100972120B1 - 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법 - Google Patents

컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법 Download PDF

Info

Publication number
KR100972120B1
KR100972120B1 KR1020080017455A KR20080017455A KR100972120B1 KR 100972120 B1 KR100972120 B1 KR 100972120B1 KR 1020080017455 A KR1020080017455 A KR 1020080017455A KR 20080017455 A KR20080017455 A KR 20080017455A KR 100972120 B1 KR100972120 B1 KR 100972120B1
Authority
KR
South Korea
Prior art keywords
components
sbc
component
computing resources
sbcs
Prior art date
Application number
KR1020080017455A
Other languages
English (en)
Other versions
KR20090092128A (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 KR1020080017455A priority Critical patent/KR100972120B1/ko
Publication of KR20090092128A publication Critical patent/KR20090092128A/ko
Application granted granted Critical
Publication of KR100972120B1 publication Critical patent/KR100972120B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1218Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources
    • G06F3/122Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources with regard to computing resources, e.g. memory, CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리 방법에 관한 것으로, 더욱 상세하게는 소프트웨어 아키텍처를 구성하는 컴포넌트가 소모하는 컴퓨팅 자원 소모량에 따라 컴포넌트를 재배치하여, 실시간으로 소프트웨어 아키텍처를 관리하는 방법에 관한 것이다. 본 발명의 일 실시예에 따른 동적 로봇 소프트웨어 아키텍처 관리 방법은, 복수의 SBC를 갖는 로봇 소프트웨어를 컴퓨팅 자원에 기반하여 관리하는 방법으로서, (a) 상기 각 로봇 소프트웨어 아키텍처를 분석하고 모델링하는 단계; (b) 상기 각 아키텍처 내의 컴포넌트들을 디자인하고 실행시키는 단계; (c) 상기 각 컴포넌트들이 소모하는 컴퓨팅 자원들을 추정하는 단계; 및 (d) 상기 컴포넌트들이 소모하는 컴퓨팅 자원량에 따라서 상기 컴포넌트들을 상기 복수의 SBC 내로 재배치시키는 단계를 포함한다. 본 발명에 따른 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리 방법은 복수의 SBC를 탑재하여 다양한 기능을 수행하는 로봇의 제한된 자원량을 아키텍처 내 컴포넌트들의 재배치를 통해 효율적으로 사용할 수 있는 효과가 있다.
로봇, 아키텍처, 컴포넌트, SBC

Description

컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리 방법{DYNAMIC ROBOT SOFTWARE ARCHITECTURE MANAGEMENT METHOD BASED ON COMPUTING RESOURCES}
본 발명은 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리 방법에 관한 것으로, 더욱 상세하게는 아키텍처 내의 컴포넌트가 소모하는 컴퓨팅 자원 소모량에 따라 컴포넌트를 재배치하여, 실시간으로 로봇 소프트웨어 아키텍처를 관리하는 방법에 관한 것이다.
로봇은 점차적으로 인간 업무의 많은 부분을 대체하고 있다. 그러나, 일반적으로 로봇은 특정 작업만을 수행하도록 설계된다.
근래 들어, 설거지, 빨래, 요리, 청소 등의 다양한 가사일을 수행하기 위한 로봇이 개발 중에 있으며, 상기 다양한 작업을 수행하기 위해 로봇은 일반적으로 다수의 컴퓨터를 탑재한다. 그 이유는 로봇에 다수의 센서 및 액츄에이터 등이 설치되고, 상기 센서 및 액츄에이터를 제어하기 다양한 소프트웨어가 설정되어야 하기 때문이다.
상기 각 컴퓨터는 SBC(single board computer)로 불리며, 일반적인 PC와 기본적인 형태는 동일하나, 로봇에 탑재하기 위해 크기를 최소한으로 축소한 형태이 다.
로봇은 서비스를 수행하기 위해 소프트웨어 함수들(functions)의 집합(set)을 필요로 한다. 예를 들어, 음료수 한 컵을 서비스하기 위해, 발성 인식자(사용자로부터의 명령을 인식함), 다이얼로그 프로세서(사용자가 원하는 종류의 음료수를 찾음), 텍스트-음성 변환모듈(사용자에게 음성 전달), 내비게이터(사용자 또는 부엌으로 이동하기 위함), 암 조작자(컵을 집기 위함)가 필요하다. 이것은 로봇이 소프트웨어 함수들을 동시에 실행해야 하며, 필연적으로 자원 경합(resource contention)을 겪게 되는 것을 의미한다.
로봇에 있어서, 소프트웨어 함수들을 증가시킴에 따라 로봇은 한정된 자원을 사용하므로, 동시에 모든 소프트웨어 함수들을 수행하는 것이 거의 불가능하게 된다.
종래 로봇의 경우, 모든 소프트웨어 함수들이 하나의 특정 SBC에서 디자인되고 실행되었다. 이 경우, 소프트웨어 함수들은 전개 시간(development time)에서 상호간섭이 없으며, SBC들 사이에 통신 오버헤드를 일으키지 않고, 컴퓨팅 자원들을 독립적으로 이용한다.
그러나 하나의 특정 SBC에서 실행되도록 디자인된 소프트웨어 함수들의 집합이 동시에 실행되는 경우, 상기 로봇은 유용하게 사용할 수 없게 된다. 이 상황에서, 다른 SBC들이 충분한 자원을 가지고 있음에도 불구하고 소프트웨어 함수들이 경합으로 인해 충분한 자원, 예를 들어, CPU 타임, 메모리 및 네트워크 대역폭을 사용하지 못하며, 결과적으로 로봇이 오작동을 일으키기 때문이다.
또한, 모든 소프트웨어 함수들은 작은 모듈로 분리될 수 없다. 이 문제는 비효율적인 로봇 자원 사용을 유발한다. 예를 들어, 소프트웨어 함수들의 집합이 SBC-A에서 CPU 타임의 70%를 소모하고, 다른 소프트웨어 함수 집합이 SBC-B에서 CPU 타임의 80%를 소모한다고 할때, CPU 타임의 50%를 사용하는 새로운 소프트웨어 함수는 비록 SBC-A와 SBC-B를 합쳐서, 사용가능한 전체 CPU 타임이 50%일지라도 실행될 수 없게 되는 문제가 발생한다.
따라서, 제한된 SBC의 자원량을 효과적으로 사용할 수 있는 방법의 개발이 요구된다.
본 발명의 목적은 사용자와 상호 작용하는 로봇이 다양한 기능을 수행하는 것으로 인한 컴퓨팅 자원 부족 현상을 해결할 수 있는 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리 방법을 제공하는 것이다.
전술한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 동적 로봇 소프트웨어 아키텍처 관리 방법은, 복수의 SBC를 갖는 로봇 소프트웨어를 컴퓨팅 자원에 기반하여 관리하는 방법으로서, (a) 상기 각 로봇 소프트웨어 아키텍처를 분석하고 모델링하는 단계; (b) 상기 각 아키텍처를 구성하는 컴포넌트들을 실행시키는 단계; (c) 상기 각 컴포넌트들이 소모하는 컴퓨팅 자원들을 추정하는 단계; 및 (d) 상기 추정된 컴포넌트들이 소모하는 컴퓨팅 자원량에 따라서 상기 컴포넌트들을 상기 복수의 SBC 내로 재배치시키는 단계를 포함한다.
상기 (c) 단계는 오프-라인 추정에 따라서 상기 각 컴포넌트들을 상기 아키텍처들 내로 배치하기 전에 실시간으로 컴퓨팅 자원 사용을 추정할 수 있다.
상기 (d) 단계는, (d1) 전체 컴포넌트의 컴퓨팅 자원 소모량을 산출하는 단계; (d2) 상기 컴퓨팅 자원을 최대로 소모하는 컴포넌트부터 순차적으로 컴포넌트들을 전개시키는 단계; 및 (d3) 하기 수학식 1의 목적 함수 F를 최소화하도록 SBC를 선택하여, 선택된 SBC 내에 컴포넌트들을 배치시키는 단계를 포함할 수 있다:
[수학식 1]
Figure 112008014151644-pat00001
여기서, F는 목적 함수이며,
V(SBC)는 SBC들의 잔여 자원들의 분배이고,
ω1, ω2는 각각에 대한 분배 및 통신 오버헤드의 합산의 가중치이며,
(Ci - Cj)는 Ci와 Cj 사이의 통신 오버헤드 값이다.
상기 수학식 1은 하기 수학식 2및 3에 의해 제한될 수 있다:
[수학식 2]
Figure 112008014151644-pat00002
[수학식 3]
Figure 112008014151644-pat00003
여기서, xi ,j는 SBCi 내에 컴포넌트 Cj가 배치되는 경우 1이 되며, 그렇지 않은 경우, 0이 되고,
CPUSBCi 및 MemSBCi 는 각각의 SBCi에서 컴포넌트 집합이 사용하는 컴퓨팅 자원들이며,
CPUcj와 Memcj 는 각각의 컴포넌트 Cj가 소모하는 컴퓨팅 자원들이다.
상기 (d1) 단계에서 산출된 컴퓨팅 자원 소모량이 전체 SBC의 자원량을 초과하는 경우, 상기 컴포넌트들의 재배치를 종료할 수 있다.
상기 (d3) 단계는, (d31) SBC 사이에 이동이 요구되는 컴포넌트의 실행을 일시 정지시키는 단계; (d32) 상기 일시 정지된 컴포넌트를 상기 수학식 1에 따라 결정되는 해당 SBC로 이동시키는 단계; (d33) 상기 이동한 컴포넌트의 상태를 복사하는 단계; 및 (d34) 상기 이동이 완료된 컴포넌트를 재실행시키는 단계를 포함할 수 있다.
본 발명에 따른 컴퓨팅 자원의 동적 로봇 소프트웨어 아키텍처 관리 방법은 복수의 SBC를 탑재하여 다양한 기능을 수행하는 로봇의 제한된 자원량을 아키텍처 내 컴포넌트들의 재배치를 통해 효율적으로 사용할 수 있는 효과가 있다.
로봇 소프트웨어 시스템은 자원 경합을 조절하도록 동적 재구성이 필요하다.
로봇은 서비스를 제공하기 위해서 내비게이션, 사물 인식, 자동 발성 인식 등과 같은 소프트웨어 함수들의 집합을 갖는다. 각각의 소프트웨어 함수는 독립적인 기능을 수행하는 아키텍처로써 디자인된다.
컴포넌트는 아키텍처가 제공하는 기능성(functionality)을 수행하도록 실행가능한 코드 단편(code fragment)을 가지며, 다른 컴포넌트들과 교신하기 위한 인 터페이스를 갖는다.
태스크(task)는 하나 이상의 아키텍처(architecture)가 필요하며, 상기 아키텍처는 하나 이상의 컴포넌트(component)가 필요하다.
모든 컴포넌트들은 CPU 타임(time), 메모리, 센서, 액츄에이터 및 네트워크 대역폭과 같은 로봇 자원들을 소모한다. 각각의 아키텍처는 일정량의 로봇 자원들을 소모하며, 결과적으로 각각의 태스크는 로봇 자원의 많은 부분, 때때로 전체 로봇 자원을 필요로 한다.
만약, 상기 컴포넌트의 동적 소프트웨어 아키텍처 관리가 이루어지지 않는다면, 로봇의 오작동이 발생할 수 있다. 본 발명은 실시간으로 공간적인(spatial) 아키텍처 관리를 통해 동적 재구성을 수행하며, 상기 공간적인 아키텍처 관리는 특정 시간에서의 아키텍처 배치와 관련된다.
이하에서는 첨부한 도면을 참조하여 본 발명의 바람직한 실시예들에 따른 컴퓨팅 자원의 동적 재구성 방법에 대하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 동적 로봇 소프트웨어 아키텍처 관리 방법을 도시한 순서도이다.
도 1을 참조하면, 복수의 SBC(single board computer)를 갖는 로봇의 컴퓨팅 자원을 관리하는 방법으로서, 우선 각 SBC의 아키텍처들을 분석하고 모델링한다(S110).
소프트웨어 아키텍처는 컴퓨팅 유닛(unit)인 컴포넌트의 집합과 상기 컴포넌트들 간의 통신을 가능하게 하는 커넥터들의 집합으로 구성된다. 또한, 소프트웨어 아키텍처는 소프트웨어가 특정 작용(behavior)을 실행할 수 있도록 컴포넌트들과 커넥터들 사이의 조직(organization)을 정의한다.
도 2는 소프트웨어 아키텍처의 구성을 예시적으로 도시한 도면으로써, 각 컴포넌트들(C1, C2, ..., C14)은 개발자가 아키텍처(Arch1, Arch2, Arch3)에서 정의한 대로 서로 연결되어 사용자가 요구하는 기능을 수행한다.
본 발명의 동적 로봇 소프트웨어 아키텍처 관리 방법은 소프트웨어 함수들을 컴포넌트들(C1, C2, ..., C14)로 리파인(refine)하고, 로봇의 SBC 상에서 효율적이며 동적으로 컴포넌트들(C1, C2, ..., C14)을 관리하도록 적용된다.
계속하여, 각 아키텍처들(Arch1, Arch2, Arch3)을 구성하는 컴포넌트들(C1, C2, ..., C14)을 실행시킨다(S120). 아키텍처(Arch1, Arch2, Arch3)를 분석하고 모델링한 후, 아키텍처들(Arch1, Arch2, Arch3)을 구성하는 컴포넌트들(C1, C2, ..., C14)이 실행되며, 이 컴포넌트들(C1, C2, ..., C14)은 본 발명에 따른 방법에 의해 배치된다.
도 3은 컴포넌트의 구성을 개략적으로 도시한 도면이다.
도 3을 참조하면, 컴포넌트(300)는 예비 포트(provided port, 310), 필수 포트(required port, 320), 서비스 매니저(330) 및 복수의 모듈(340)을 포함한다.
예비 포트(310)와 필수 포트(320)는 각 컴포넌트(300)가 실행 중에 SBC 사이에서 이동이 가능하도록 하는 내부 기능을 가지며, 다른 컴포넌트로부터 요약된 메 시지(encapsulated message, 302)를 수신하거나, 전송한다.
서비스 매니저(330)는 외부에서 입력된 요약된 메시지(302)를 처리하고, 필수 포트(320)로 아규먼트(argument, 304)를 전달하여, 요약된 메시지(302)를 다른 컴포넌트로 전송할 수 있다. 또한, 서비스 매니저(330)는 컴포넌트(300)를 구성하는 각각의 모듈(340)과 아규먼트(304)를 상호 전송할 수 있다.
본 발명에 따르면, 컴포넌트들(C1, C2, ..., C14)은 실시간으로 동적 배치될 수 있다. 예를 들어, 만약, 컴포넌트(C2 및 C3)가 동일한 SBC, 예를 들어, SBC1에 배치되면, 직접 호출(invocation)을 사용하는 커넥터(미도시)에 의해 자동적으로 2개의 컴포넌트들(C2 및 C3)이 연결될 수 있다. 만약, 컴포넌트(C3)가 SBC2로 이동하는 경우, 원거리 호출(예를 들어, RMI)을 사용하는 커넥터에 의해 자동적으로 2개의 컴포넌트들(C2 및 C3)을 재연결할 수 있다.
계속하여, 각 컴포넌트가 소모하는 컴퓨팅 자원들을 추정한다(S130). 실시간으로 공간적인 아키텍처 관리를 수행하도록, 모든 컴포넌트의 공간적인 자원 사용 정보가 추정되어야 한다.
자원 사용을 추정하는 방법은 컴포넌트를 배치한 후에 실시간으로 컴포넌트의 자원 사용을 추정하는 온-라인 추정이 사용될 수 있으며, 이 방법은 많은 산출 파워(computation power)를 필요로 한다.
한편, 자원 사용을 추정하는 다른 방법은 각각의 아키텍처에 대해 배치 전에 실시간으로 자원 사용을 추정하는 오프-라인 추정이다. 비록, 이 방법은 아키텍처 들의 실시간 실행을 추정할 수 없더라도, 배치 타임(deployment time) 이후에 오버헤드 없이 의미있는 데이터를 추정할 수 있다. 오프-라인 추정에서, 각각의 아키텍처는 로봇 시스템에서 독립적으로 실행되며, 각각의 컴포넌트의 자원 사용이 추정된다. 이러한 컴포넌트의 자원 사용의 추정은 컴포넌트 배치 단계에서 사용된다.
계속하여, 컴포넌트들이 소모하는 컴퓨팅 자원량에 따라서 상기 컴포넌트들을 아키텍처들(Arch1, Arch2, Arch3) 내로 재배치시킨다(S140).
아키텍처 집합 내의 모든 컴포넌트들은 실행될 수 있도록 SBC들 내에 배치되어야 하며, 컴포넌트 배치는 각각의 SBC 내에서 자원 제한을 만족시켜야 한다.
공간적인 아키텍처 관리는 0-1 다중차원(multidimensional), 다중 배낭(multiple knapsack) 문제로 모델화될 수 있다. 예를 들어, 특정 시간에, 태스크는 사용자가 서비스를 요청할 때 아키텍처들의 집합을 필요로 한다. 각각의 아키텍처들은 컴포넌트들의 조합을 필요로 하며, 이것은 로봇 자원들을 소모할 것이다.
하나의 특정 아키텍처는 하나의 SBC 내에서 실행되나, 상기 태스크는 하나의 SBC 내에 과도한 아키텍처들을 필요로 할 수 있으며, 이것은 SBC의 컴퓨팅 자원들의 과소모가 될 수 있다.
여기서, 로봇은 아키텍처들의 효율적인 배치를 필요로 하며, 이는 결과적으로 컴포넌트들의 효율적인 배치를 의미한다.
설명의 편의를 위해, SBC의 개수를 N으로 놓고, n을 컴포넌트의 개수로 놓는다. 또한, C = {C1, C2,..., Cn} 를 특정 시간에서 SBC = {SBC1, SBC2,...,SBCN} 집합 내에 배치된 컴포넌트 집합으로 놓는다.
CPUSBCi 및 MemSBCi 는 각각의 SBCi에서 컴포넌트 집합이 사용하는 컴퓨팅 자원들이다. CPUcj와 Memcj 는 각각의 컴포넌트 Cj가 소모하는 컴퓨팅 자원들이며, 여기서, j= 1,2,...,n이다.
아키텍처 Archk는 컴포넌트 집합 C의 부집합들(subset)로 구성되며, 여기서, k=1,2,3,... 이며, 각각의 아키텍처는 아키텍처 내의 컴포넌트 사이의 결합을 정의한다.
예를 들어, 하기 매트릭스는 아키텍처 Arch2의 예시적인 결합정보를 나타낸다.
(C6 - C7) (C7 - C8) (C8 - C9)
오버헤드(overhead) 1 0.5 2.5
상기 매트릭스 내의 각각의 요소들은 각각의 결합에 있어서의 통신 오버헤드를 나타낸다. 예를 들어, 0 은 2개의 컴포넌트들 사이에 결합이 없는 것을 나타내고, 0 이상의 실수 요소들은 결합이 있음을 의미한다. 각각의 실수 요소들은 로봇 소프트웨어 시스템 내의 상대적인 통신 오버헤드의 양을 나타낸다.
이 실수 요소 값들은 예를 들어, MB/S와 같은 시스템-종속 값들을 사용하는 것에 의해 변환될 수 있다.
본 발명은 SBC들의 잔여 자원들의 분배(distribution)를 최소화하는 제한 하에 SBC 집합 내로 컴포넌트 집합 C를 배치하는 것이다. 이것은 오류나 예상치 못한 상황과 같은 일부 특정 이유들로 인해 일부 컴포넌트들이 자원들을 과다사용할 때, 자원의 과소모 문제를 해결하기 위해 필요하다.
상기 목표는 다음과 같이 수식화될 수 있다.
Figure 112008014151644-pat00004
여기서, F는 목적 함수이며, V(SBC)는 SBC들의 잔여 자원들의 분배(distribution)이다. 또한, ω1, ω2는 각각에 대한 분배 및 통신 오버헤드의 합산의 가중치이다. (Ci - Cj)는 Ci와 Cj 사이의 통신 오버헤드 값이다.
상기 수학식 1은 하기 수학식 2와 3에 의해 제한된다.
Figure 112008014151644-pat00005
Figure 112008014151644-pat00006
여기서, xi ,j는 SBCi 내에 컴포넌트 Cj가 배치되는 경우 1이 되며, 그렇지 않은 경우, 0이 된다. 만약, 수학식 2와 3에 의한 제한을 충족시키며 F를 최소화할 수 있는 xi ,j의 매트릭스를 찾을 수 있다면, 모든 컴포넌트들은 로봇의 컴퓨팅 자원 들을 사용하는 SBC들 내에 효과적으로 배치될 수 있다.
계속하여, 컴포넌트들을 배치시키는 단계는 하기와 같은 그리디 알고리즘(greedy algorithm)에 의해 구체화될 수 있다.
(1) 전체 컴포넌트의 컴퓨팅 자원 소모량을 산출하는 단계;
(2) 상기 컴퓨팅 자원을 최대로 소모하는 컴포넌트부터 순차적으로 컴포넌트들을 전개시키는 단계; 및
(3) 상기 수학식 1의 목적 함수 F를 최소화하도록 SBC를 선택하여, 선택된 SBC 내에 컴포넌트들을 배치시키는 단계. 여기서, 상기 (1) 단계에서 산출된 컴퓨팅 자원 소모량이 전체 SBC의 자원량을 초과하는 경우, 상기 컴포넌트들의 재배치가 종료될 수 있다.
그리디 알고리즘의 설명을 위해, 예를 들어, 컴포넌트 집합 C가 3개의 컴포넌트들(C1, C2, C3)을 갖는다고 가정하고, 상기 컴포넌트들을 실행할 수 있는 2개의 SBC들이 있다고 가정한다. 목적 함수 F 내의 가중치들은 ω1= 5 이고, ω2= 1로 가정한다.
상기 컴포넌트들을 위한 아키텍처는 (C1 - C2), (C1 - C3), (C2 - C3) 사이의 결합을 정의하며, 결합 오버헤드 데이터는 (C1 - C2)=1.5, (C1 - C3)=1, (C2 - C3)=2 이다. CPU 사용의 가중치(weight)를 1이라 하고, 메모리 사용의 가중치를 3으로 놓으며, 각각의 컴포넌트들의 자원 사용은 하기 표 2과 같다.
C1 C2 C3
CPU 20 40 15
Memory 5 10 4
다음으로, 각각의 컴포넌트의 전체 자원 사용을 계산하면, C1=35, C2=70, C3=27이다. 컴포넌트들의 자원 사용을 계산한 후에, 가장 큰 자원을 소모하는 컴포넌트를 선택한다. 여기서는, C2가 된다.
C2가 SBC1에 배치된다고 가정한다. 다음 단계에서 배치되는 컴포넌트는 C2 다음으로 자원 소모량이 큰 C1을 선택한다. 만약 C1이 SBC1에 배치되면, F=60이며, 만약 C1이 SBC2에 배치되면, F=27.5가 된다. 따라서, C1은 SBC2에 배치되며, 동일한 방법으로 C3는 SBC1에 배치된다.
본 발명의 그리디 알고리즘에 따르면, 선형 시간(linear time)에서 의미 있는 솔루션(solution)을 산출할 수 있다.
도 4 및 도 5는 본 발명에 따른 컴포넌트의 배치를 설명하기 위한 도면들이다.
도 4는 각 SBC 내에 컴포넌트들(C1, C2, ..., C14)이 재배치 되기 전의 상태를 나타내며, 각 SBC 내에서 컴포넌트들(C1, C2, ..., C14)이 소모하는 컴퓨팅 자원, 즉, CPU 및 메모리의 사용량을 도시한다. SBC1의 경우, 컴포넌트(C1, C2, C3, C4, C5)의 자원 사용량이 CPU 용량을 초과하고 있다.
상기 그리디 알고리즘에 따라 컴포넌트의 재배치 구성 판단이 수행되어, 재배치 방법이 결정되면, SBC 사이에 이동이 요구되는 컴포넌트(C3, C5)의 실행을 일시 정지시킨다.
이어서, 상기 일시 정지된 컴포넌트(C3, C5)를 상기 수학식 1에 따라 결정된 해당 SBC로 이동시키며, 도 5는 SBC1 내에 배치되어 있던 컴포넌트(C3, C5)가 SBC2로 이동한 상태를 도시한다.
다음으로, 상기 이동한 컴포넌트의 상태를 복사한다. 여기서, 상태라 함은 컴포넌트마다 갖고 있는 자신만의 고유 자료구조(persistent data)를 의미하며, 컴포넌트가 어느 SBC에 배치되든 관계 없이 반드시 그 컴포넌트의 수행을 위해서 유지되어야 하는 정보로써, 각 컴포넌트마다 저장된다. 이어서, 상기 이동이 완료된 컴포넌트(C3, C5)를 재실행시켜서, 아키텍처의 기능을 수행하도록 한다.
상기한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대한 통상의 지식을 가지는 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 동적 로봇 소프트웨어 아키텍처 관리 방법을 도시한 순서도이다.
도 2는 소프트웨어 아키텍처의 구성을 예시적으로 도시한 도면이다.
도 3은 컴포넌트의 구성을 개략적으로 도시한 도면이다.
도 4 및 도 5는 본 발명에 따른 컴포넌트의 배치를 설명하기 위한 도면들이다.

Claims (6)

  1. 복수의 SBC를 갖는 로봇 소프트웨어를 컴퓨팅 자원에 기반하여 관리하는 방법으로서,
    (a) 상기 각 로봇 소프트웨어 아키텍처를 분석하고 모델링하는 단계;
    (b) 상기 각 아키텍처를 구성하는 컴포넌트들을 실행시키는 단계;
    (c) 상기 각 컴포넌트들이 소모하는 컴퓨팅 자원들을 추정하는 단계; 및
    (d) 상기 추정된 컴포넌트들이 소모하는 컴퓨팅 자원량에 따라서 상기 컴포넌트들을 상기 복수의 SBC 내로 재배치시키는 단계를 포함하는 것을 특징으로 하는 동적 로봇 소프트웨어 아키텍처 관리 방법.
  2. 제 1 항에 있어서, 상기 (c) 단계는 상기 각 컴포넌트들을 재배치하여 아키텍처들을 구성하기 전에, 오프-라인 추정에 따라서 각 컴포넌트의 컴퓨팅 자원 사용을 추정하는 것을 특징으로 하는 동적 로봇 소프트웨어 아키텍처 관리 방법.
  3. 제 1 항에 있어서, 상기 (d) 단계는,
    (d1) 전체 컴포넌트의 컴퓨팅 자원 소모량을 산출하는 단계;
    (d2) 상기 컴퓨팅 자원을 최대로 소모하는 컴포넌트부터 순차적으로 컴포넌 트들을 전개시키는 단계; 및
    (d3) 하기 수학식 1의 목적 함수 F를 최소화하도록 SBC를 선택하여, 선택된 SBC 내에 컴포넌트들을 배치시키는 단계를 포함하는 것을 특징으로 하는 동적 로봇 소프트웨어 아키텍처 관리 방법:
    [수학식 1]
    Figure 112008014151644-pat00007
    여기서, F는 목적 함수이며,
    V(SBC)는 SBC들의 잔여 자원들의 분배이고,
    ω1, ω2는 각각에 대한 분배 및 통신 오버헤드의 합산의 가중치이며,
    (Ci - Cj)는 Ci와 Cj 사이의 통신 오버헤드 값이다.
  4. 제 3 항에 있어서, 상기 수학식 1은 하기 수학식 2및 3에 의해 제한되는 것을 특징으로 하는 동적 로봇 소프트웨어 아키텍처 관리 방법:
    [수학식 2]
    Figure 112008014151644-pat00008
    [수학식 3]
    Figure 112008014151644-pat00009
    여기서, xi ,j는 SBCi 내에 컴포넌트 Cj가 배치되는 경우 1이 되며, 그렇지 않은 경우, 0이 되고,
    CPUSBCi 및 MemSBCi 는 각각의 SBCi에서 컴포넌트 집합이 사용하는 컴퓨팅 자원들이며,
    CPUcj와 Memcj 는 각각의 컴포넌트 Cj가 소모하는 컴퓨팅 자원들이다.
  5. 제 3 항에 있어서, 상기 (d1) 단계에서 산출된 컴퓨팅 자원 소모량이 전체 SBC의 자원량을 초과하는 경우, 상기 컴포넌트들의 재배치를 종료하는 것을 특징으로 하는 동적 로봇 소프트웨어 아키텍처 관리 방법.
  6. 제 3 항에 있어서, 상기 (d3) 단계는,
    (d31) SBC 사이에 이동이 요구되는 컴포넌트의 실행을 일시 정지시키는 단계;
    (d32) 상기 일시 정지된 컴포넌트를 상기 수학식 1에 따라 결정되는 해당 SBC로 이동시키는 단계;
    (d33) 상기 이동한 컴포넌트의 상태를 복사하는 단계; 및
    (d34) 상기 이동이 완료된 컴포넌트를 재실행시키는 단계를 포함하는 것을 특징으로 하는 동적 로봇 소프트웨어 아키텍처 관리 방법.
KR1020080017455A 2008-02-26 2008-02-26 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법 KR100972120B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080017455A KR100972120B1 (ko) 2008-02-26 2008-02-26 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080017455A KR100972120B1 (ko) 2008-02-26 2008-02-26 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법

Publications (2)

Publication Number Publication Date
KR20090092128A KR20090092128A (ko) 2009-08-31
KR100972120B1 true KR100972120B1 (ko) 2010-07-26

Family

ID=41209296

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080017455A KR100972120B1 (ko) 2008-02-26 2008-02-26 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법

Country Status (1)

Country Link
KR (1) KR100972120B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101231771B1 (ko) * 2010-12-31 2013-02-08 강원대학교산학협력단 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법
KR101437483B1 (ko) 2012-11-20 2014-09-04 한국과학기술연구원 로봇 컴포넌트의 동적 재구성 장치 및 방법
KR102116858B1 (ko) * 2019-09-06 2020-05-29 한국과학기술정보연구원 스케줄링장치 및 그 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1321853A2 (en) * 2001-12-10 2003-06-25 Sap Ag Dynamic component transfer based on resource negotiations between computer systems
KR20060023951A (ko) * 2003-03-10 2006-03-15 인터내셔널 비지네스 머신즈 코포레이션 가변 워크로드의 존재시 컴퓨팅 배치 관리 방법 및 장치
KR20070041462A (ko) * 2007-02-27 2007-04-18 한국정보통신대학교 산학협력단 유효자원 쿼럼 생성 모듈 기반 그리드 자원 관리 시스템 및그 방법
KR102200603B1 (ko) * 2018-11-12 2021-01-08 김은태 대기 전원 제어 장치와 시스템 및 이의 운용 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1321853A2 (en) * 2001-12-10 2003-06-25 Sap Ag Dynamic component transfer based on resource negotiations between computer systems
KR20060023951A (ko) * 2003-03-10 2006-03-15 인터내셔널 비지네스 머신즈 코포레이션 가변 워크로드의 존재시 컴퓨팅 배치 관리 방법 및 장치
KR20070041462A (ko) * 2007-02-27 2007-04-18 한국정보통신대학교 산학협력단 유효자원 쿼럼 생성 모듈 기반 그리드 자원 관리 시스템 및그 방법
KR102200603B1 (ko) * 2018-11-12 2021-01-08 김은태 대기 전원 제어 장치와 시스템 및 이의 운용 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"서비스 로봇을 위한 self-managed 소프트웨어 프레임워크 개발", 박수용외4인, 정보과학회지 v.24, no.3 pp.35-42, 2006.03.

Also Published As

Publication number Publication date
KR20090092128A (ko) 2009-08-31

Similar Documents

Publication Publication Date Title
Berman High-performance schedulers
Vadhiyar et al. A performance oriented migration framework for the grid
US9052957B2 (en) Method and system for conducting intensive multitask and multiflow calculation in real-time
KR101437483B1 (ko) 로봇 컴포넌트의 동적 재구성 장치 및 방법
Hategan et al. Coasters: uniform resource provisioning and access for clouds and grids
US7487504B2 (en) Thread dispatch for multiprocessor computer systems
Gupta et al. Towards realizing the potential of malleable jobs
WO2007016657A2 (en) Methods and system for distributing data to technical computing workers
CN108351783A (zh) 多核数字信号处理系统中处理任务的方法和装置
US11620510B2 (en) Platform for concurrent execution of GPU operations
US20210224113A1 (en) System and method of scheduling and computing resource allocation optimization of machine learning flows
CN105094984A (zh) 资源调度的方法及系统
Bambha et al. Intermediate representations for design automation of multiprocessor DSP systems
CN110401695A (zh) 云资源动态调度方法、装置和设备
CN105808346B (zh) 一种任务调度方法与装置
KR100972120B1 (ko) 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법
CN112256414A (zh) 一种连接多种计算存储引擎的方法及系统
CN101976204A (zh) 面向服务的异构多核计算平台及其使用的任务调度方法
Branding et al. On Providing Soft and Hard Real-Time Capabilities in an Active DBMS.
Ykman-Couvreur et al. Design-time application exploration for MP-SoC customized run-time management
US20080077925A1 (en) Fault Tolerant System for Execution of Parallel Jobs
CN115220908A (zh) 资源调度方法、装置、电子设备及存储介质
JP5045576B2 (ja) マルチプロセッサシステム及びプログラム実行方法
Martinez et al. Integrating scheduling policies into workflow engines
Goumas et al. Coarse-grain parallel execution for 2-dimensional PDE problems

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: 20130710

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140701

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150727

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160707

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170703

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180703

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190717

Year of fee payment: 10