KR20170095108A - 로봇 태스크 운영 장치 및 방법 - Google Patents

로봇 태스크 운영 장치 및 방법 Download PDF

Info

Publication number
KR20170095108A
KR20170095108A KR1020160078037A KR20160078037A KR20170095108A KR 20170095108 A KR20170095108 A KR 20170095108A KR 1020160078037 A KR1020160078037 A KR 1020160078037A KR 20160078037 A KR20160078037 A KR 20160078037A KR 20170095108 A KR20170095108 A KR 20170095108A
Authority
KR
South Korea
Prior art keywords
node
robot task
robot
scenario
task
Prior art date
Application number
KR1020160078037A
Other languages
English (en)
Other versions
KR101931857B1 (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 강원대학교산학협력단
Publication of KR20170095108A publication Critical patent/KR20170095108A/ko
Application granted granted Critical
Publication of KR101931857B1 publication Critical patent/KR101931857B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1658Programme controls characterised by programming, planning systems for manipulators characterised by programming language
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1661Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric

Abstract

컴퓨팅 디바이스에 의해 수행되는 로봇 태스크 운영 방법에 있어서, 상기 방법은 상기 컴퓨팅 디바이스의 적어도 하나의 프로세서에 의해 수행되는: 적어도 하나의 로봇 태스크를 포함하는 시나리오를 생성하는 단계; 상기 시나리오에 기초하여 상기 적어도 하나의 로봇 태스크가 할당되는 복수의 노드를 연결하는 파스 트리(parse tree)를 생성하는 단계; 및 상기 파스 트리에 따른 상기 복수의 노드의 연결에 기초하여 상기 노드에 할당된 상기 적어도 하나의 로봇 태스크를 수행하는 단계를 포함하는 로봇 태스크 운영 방법dl 제공될 수 있다.

Description

로봇 태스크 운영 장치 및 방법{APPARATUS AND METHOD FOR MANAGING ROBOT TASKS}
로봇 태스크 운영 장치 및 방법에 연관된다. 더욱 구체적으로는, 병렬, 조건, 병합, 반복 조건 등에 따라 로봇 태스크를 다양한 방식으로 운영할 수 있는 로봇 태스크 운영 방법 및 장치에 연관된다.
로봇 태스크란 로봇이 자원을 할당하여 처리할 수 있는 일의 단위를 말한다. 태스크의 개념은 자원의 효율적 사용, 다중 처리에서의 스루풋의 향상을 도모하기 위해 생긴 것이며 각 프로그램은 태스크를 거쳐 로봇 내부의 컴퓨터 자원을 할당하여 주행하게 된다. 이러한 로봇 태스크를 프로세서 내부에서 유기적을 수행하도록 하기 위한 다양한 연구들이 진행되어 왔다.
로봇 태스크를 구성하는 태스크를 순차적으로 수행하는 경우, 앞의 태스크가 종료되면 다음 태스크를 시작하도록 프로그래밍한다. 또 하나 이상의 로봇 태스크가 동시에 수행을 하면 두 개 이상의 프로그램을 프로세스로 만들어 실행시키거나, 스레드를 이용하여 두 개 이상의 태스크를 수행한다. 하지만 프로세스기반이든 스레드 기반이든 각각의 태스크가 수행이 되면 종료될 때까지 간섭이 없이 수행되어야 한다. 따라서 선행되는 태스크들이 모두 종료되거나 일부만 종료되면 다음 태스크가 시작되거나 또는 선행 태스크가 종료된 후에 하나 이상의 태스크를 실행시키거나 태스크를 반복 횟수 또는 설정된 반복지속시간 동안 수행하는 등의 다양한 형태의 태스크를 운영하지는 못한다는 단점이 존재하였다.
이에 따라, 로봇 태스크의 시퀀스를 일련의 순서대로 처리할 수 있도록 하는 시스템에 대한 연구가 필요하다.
일실시예에 따른 컴퓨팅 디바이스에 의해 수행되는 로봇 태스크 운영 방법에 있어서, 상기 방법은 상기 컴퓨팅 디바이스의 적어도 하나의 프로세서에 의해 수행되는, 적어도 하나의 로봇 태스크를 포함하는 시나리오를 생성하는 단계, 상기 시나리오에 기초하여 상기 적어도 하나의 로봇 태스크가 할당되는 복수의 노드를 연결하는 파스 트리(parse tree)를 생성하는 단계, 및 상기 파스 트리에 따른 상기 복수의 노드의 연결에 기초하여 상기 노드에 할당된 상기 적어도 하나의 로봇 태스크를 수행하는 단계를 포함할 수 있다.
일실시예에 따른 로봇 태스크 운영 방법은, 상기 복수의 노드 중 어느 하나의 상위 노드에 할당된 로봇 태스크를 수행하는 경우, 상기 노드에 연결된 하위 노드로 이벤트 메시지를 전달하는 단계를 더 포함할 수 있다.
일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 수행하는 단계는, 적어도 하나의 상위 노드의 개수와 적어도 하나의 상위 노드로부터 수신한 이벤트 메시지의 개수를 비교하는 단계; 및 상기 비교 결과에 따라 상기 하위 노드에 할당된 로봇 태스크를 수행하는 단계를 포함할 수 있다.
일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 하위 노드에 할당된 로봇 태스크를 수행하는 단계는, 상기 비교 결과에 따라, 상기 시나리오에 의해 결정된 병렬적, 조건적, 병합적, 반복적인 수행 방법 중 어느 하나의 방법을 선택하여 상기 로봇 태스크를 수행하는 단계를 포함할 수 있다.
일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 수행하는 단계는, 상기 로봇 태스크를 동적 라이브러리로 읽어서 수행하는 단계를 더 포함할 수 있다.
일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 파스 트리를 생성하는 단계는, 상기 노드 및 연결을 토큰으로 분해하여 상기 파스 트리를 생성하는 단계를 포함할 수 있다.
일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 시나리오를 생성하는 단계는, 상기 시나리오를 XML 형식으로 생성하는 단계를 포함할 수 있다.
일실시예에 따른 컴퓨팅 디바이스에 의해 구현되는 로봇 태스크 운영 장치에 있어서, 상기 컴퓨팅 디바이스의 프로세서에 의해 적어도 일시적으로 구현되는: 적어도 하나의 로봇 태스크를 포함하는 시나리오를 생성하는 시나리오 생성부, 상기 시나리오에 기초하여 상기 적어도 하나의 로봇 태스크가 할당되는 복수의 노드를 연결하는 파스 트리(parse tree)를 생성하는 파스 트리 생성부, 및 상기 파스 트리에 따른 상기 복수의 노드의 연결에 기초하여 상기 노드에 할당된 상기 적어도 하나의 로봇 태스크를 수행하는 프로세서를 포함하는 로봇 태스크 운영 장치.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 프로세서는, 상기 복수의 노드 중 어느 하나의 상위 노드에 할당된 로봇 태스크를 수행하는 경우, 상기 노드에 연결된 하위 노드로 이벤트 메시지를 전달할 수 있다.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 프로세서는, 적어도 하나의 상위 노드의 개수와 적어도 하나의 상위 노드로부터 수신한 이벤트 메시지의 개수를 비교하고, 상기 비교 결과에 따라 상기 하위 노드에 할당된 로봇 태스크를 수행할 수 있다.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 프로세서는, 상기 비교 결과에 따라, 상기 시나리오에 의해 결정된 병렬적, 조건적, 병합적, 반복적인 수행 방법 중 어느 하나의 방법을 선택하여 상기 로봇 태스크를 수행할 수 있다.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 프로세서는 상기 로봇 태스크를 라이브러리로 읽어서 수행할 수 있다. 일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 파스 트리 생성부는, 상기 노드 및 연결을 토큰으로 분해하여 상기 파스 트리를 생성할 수 있다.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 시나리오 생성부는 상기 시나리오를 XML 형식으로 생성할 수 있다.
도 1은 일실시예에 따른 로봇 태스크 운영 방법의 대한 흐름도를 나타내는 도면이다.
도 2는 일실시예에 따른 로봇 태스크를 포함하는 시나리오를 예시적으로 나타낸다.
도 3은 일실시예에 따른 도 2의 시나리오에 대한 파스트리를 나타낸다.
도 4는, 본원의 일실시예에 따른 시나리오 스크립트 파일을 실행하는 스크립트 인터프리터를 설명하기 위한 도면이다.
도 5는 일실시예에 따른 로봇 태스크 운영 장치의 구성을 나타내는 블록 다이어그램이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 일실시예에 따른 로봇 태스크 운영 방법의 대한 흐름도를 나타내는 도면이다.
단계(110)에서는, 적어도 하나의 로봇 태스크를 포함하는 시나리오를 생성할 수 있다. 로봇 태스크란 로봇의 프로세서에 의해 처리되는 일의 최소 단위를 의미할 수 있다. 시나리오란, 로봇 태스크들을 일련의 순서대로 실행되도록 하는 내용에 따라 순서를 정한 가상적인 결과 또는 그 구체적인 과정을 의미할 수 있다. 시나리오는 시나리오 에디터에 의해서 생성될 수 있으며, 시나리오 에디터는 사용자가 그래픽 기반으로 시나리오를 구성하도록 하는 프로그램을 통칭할 수 있다. 시나리오를 생성하는 구성 및 시나리오에 대한 구체적인 내용은 도 2에서 자세하게 설명하기로 한다. 단계(120)에서는, 시나리오에 기초하여 적어도 하나의 로봇 태스크가 할당되는 복수의 노드를 연결하는 파스 트리를 생성할 수 있다. 하나의 로봇 태스크는 하나의 노드에 할당되어 실행될 수 있으며, 로봇 태스크가 실행되는 순서에 따라 노드를 배치하고 노드들 간의 연결선을 생성하여 파스 트리를 생성할 수 있다. 단계(130)에서는, 파스 트리에 따른 상기 복수의 노드의 연결에 기초하여 상기 노드에 할당된 상기 적어도 하나의 로봇 태스크를 수행할 수 있다.
본원에서 제공되는 로봇 태스크 운영 방법에 있어서, 앞서 설명한 바와 같이 시나리오는 로봇 태스크의 시퀀스를 의미할 수 있다. 로봇 행동들은 수행되어야 하는 순서가 정해져 있기 때문에, 시나리오는 하나의 루트 노드를 갖는 방향 그래프로도 표현할 수 있다. 노드가 그래프에서 루트 노드로부터 같은 레벨을 갖는 경우, 노드는 같은 시간에 동작할 것이라는 것을 의미한다. 서로 다른 레벨은 다음 레벨의 노드가 수행되기 전에 이전의 노드가 동작을 종료한다는 것을 의미한다. 같은 레벨에서, 각각의 노드는 로봇 행동을 수행하기 위해 하나의 스레드에 할당되어 실행될 수 있다. 상기 레벨에서, 형제 노드(sibling node)가 종료될 때까지 기다리지 않고 스레드가 시작된다.
본원에서 제공되는 로봇 태스크 운영 방법에 있어서 로봇 태스크는 태스크의 수행 조건에 따라 로봇 태스크 운영 알고리즘을 수행하는 순차적 또는 동시적인 병렬적 방식 이외에도 조건, 병합, 반복 방식으로 태스크를 다양한 방식으로 수행할 수 있다. 일실시예에 따른 로봇 태스크 운영 방법에 따른 로봇 태스크는 병렬적 방식에 따라 로봇 태스크를 수행할 수 있다. 사용자가 스크립트로 로봇 행동의 흐름을 기재할 때, 병렬적으로 동시에 수행될 수행 노드의 수가 결정될 수 있다. 스크립트가 읽힐 때, 상기 수행 노드의 수와 같은 수의 스레드가 생성되어, 상기 스레드에 노드를 할당하고 로봇 태스크를 수행할 수 있다. 일실시예에 따른 로봇 태스크 운영 방법은, 조건에 따라서 다음 노드(또는 하위 노드)에 대한 로봇 태스크를 수행할 수 있다. 예를 들면, 먼저 수행되고 있는 두 개의 태스크가 종료되는 경우 다음 태스크를 수행할 수 있다. 노드가 수행을 마쳤을 때, 상기 수행에 대한 결과를 산출하게 되며 다음 노드의 태스크를 수행할 지를 선택하게 된다. 상기 선택이 논리적 연산자에 의한 선택, 비교/관계형 연산자에 의한 선택에 의해 이루어지는 경우, 이를 애드온(Addon)이라고 한다. 시나리오가 읽히는 동안에, 사용자는 조건 수행기의 타입 및 비교될 값들을 구체화한다. 로봇 태스크의 조건적인 수행은 이전의 행동의 결과가 다음의 행동을 선택하는 경우, 조건문에 의해 그 조건이 표현되어야 한다. 예를 들어 A키가 눌리는 경우 오디오 파일이 재생되고 B키가 눌리는 경우 비디오 파일이 재생되는 등의 조건 등이 명시되어 표현될 수 있다. 일실시예에 따른 태스크 운영 방법은 로봇 태스크를 병합적으로 수행하는 것을 포함할 수 있다. 이는 특정 하위 노드의 수행에 있어서 선행되어야 할 모든 태스크의 수행이 종료된 경우 다음 태스크를 수행하는 방식을 의미할 수 있다. 또한, 일실시예에 따른 태스크 수행 방법 중 반복적 수행은 설정된 반복 횟수 또는 반복 지속 시간에 따라 태스크를 수행하는 방식을 의미할 수 있다. 몇몇 태스크에 있어서, 반복이 필요한 로봇 행동들이 있다. 상기 반복은 시스템 상에서의 특정 시각에서 다른 시각까지 지속되는 반복 지속 시간에 따른 반복일 수 있고, 설정된 반복 횟수에 따른 반복일 수 있다.
도 2는 일실시예에 따른 로봇 태스크를 포함하는 시나리오를 예시적으로 나타낸다.
도 2는 로봇 태스크를 포함하는 시나리오의 예시이다. 본 발명의 로봇 태스크 시나리오가 이에 국한되는 것은 아니지만 설명을 돕기 위한 것이다. 먼저, 첫 번째 로봇 태스크로 startCommet.avi 음성파일을 스피커를 통해 출력한다. 위의 로봇 태스크가 종료를 하면 60초 동안 로봇이 다닐 경로를 출력하면서 RobotPathDisplay.mp3를 스피커를 통해서 출력하고 로봇이 2M전진하고 순차적으로 90도 회전하는 것을 4회 반복한다. 이 세가지 로봇태스크는 A점에서 동시에 수행되도록 분기한다. 위의 세 가지 로봇 태스크 중에 로봇이 2M전진하고 90도 회전하는 것을 4회 반복하고, RobotPathDisplay.mp3를 스피커를 통해서 출력하는 것이 모두 종료하면 로봇이 장애물을 5회 만날 때 까지 원더링 하는 로봇 태스크를 시작한다. B점에서 두 가지 로봇 태스크가 병합한다. 로봇이 장애물을 5회 만날 때까지 원더링 하는 로봇 태스크와 60초동안 로봇이 다닐 경로를 출력하는 두가지의 로봇 태스크가 종료되면 exitComment.mp3 파일을 스피커에 출력한다. C점에서 두가지 로봇 태스크가 병합한다. 이후에는 더 이상 수행될 로봇 태스크가 없으므로 종료된다.
일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 시나리오를 생성하는 단계는, 상기 시나리오를 XML 형식으로 생성하는 단계를 포함할 수 있다. 본 발명의 일실시예에 따라 시나리오를 XML 형식으로 생성할 수 있으며, 이러한 시나리오 에디터 등에서 작성을 마쳐 생성되는 XML 형식의 파일을 시나리오 파일이라고 통칭할 수 있다. 도 2에서, 첫 번째 로봇 태스크는 "startComment.avi 파일을 출력한다”이다. 이는 도 3에서 1번 노드에 해당한다. 첫 번째 로봇 태스크가 종료된 후 연결된 3가지 태스크를 병렬적으로 동시에 시작한다. 도 3에서는 노드1번이 노드2번, 3번, 4번과 연결선이 추가된다. 이 세가지 로봇태스크는 A점에서 동시에 수행되도록 분기한다. 도 2에서, "60초 동안 주행경로를 디스플레이 한다”는, 도 3에서 2번 노드에 해당한다. "2M 전진한다” 와 "90도 회전한다” 가 4회 반복한다. 반복을 위하여 도 3에서 3번 노드가 추가되며, 반복의 횟수를 확인 하기 위하여 도 3에서 7번 노드가 추가된다. B점에서 두 가지 로봇 태스크가 병합한다. 도 2에서 "RobotPathDisplay.mp3 파일을 스피커에 출력한다”는 도 3에서 4번 노드에 해당한다. "2M 전진한다”는 도 3의 5번 노드에 해당된다. 도 2에서, "90도 회전한다”는 도 3의 6번 노드에 해당된다. 4회반복 로봇 태스크와 "RobotPathDisplay.mp3 파일을 스피커에 출력한다”가 모두 종료되는 것을 확인하는 단계는, 8번 노드에 해당한다. 하위 노드를 실행시키기 위한 카운트 수만 만족하면 바로 하위에 연결된 로봇 태스크가 실행된다. "로봇이 장애물 5번 만날 때까지 원더링을 수행한다”는 도 3에서 9번 노드에 해당한다. "60초동안 주행경로는 디스플레이 한다”와 "로봇이 장애물 5번 만날 때까지 원더링을 수행한다”가 모두 종료되는 것을 확인하면, C점에서 두가지 로봇 태스크가 병합된다. "exitComment.mp3 파일을 스피커에 출력한다”는 로봇 태스크는 도 3의 11번 노드에 해당되며 오디오 파일이 플레이된다.
도 3은 일실시예에 따른 도 2의 시나리오에 대한 파스트리를 나타낸다.
일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 파스 트리를 생성하는 단계는, 상기 노드 및 연결을 토큰으로 분해하여 상기 파스 트리를 생성하는 단계를 포함할 수 있다. 도 2의 시나리오를 기반으로 노드, 연결선, 이벤트 메시지 등의 토큰을 생성하고, 그 연결관계를 나타낸 시나리오 인터프리터가 전처리 과정에 사용되는 도식이다. 도 3에서 노드는 원형, 노드 간의 연결은 화살표, 이벤트 메시지는 사각형으로 표시한다. 이벤트 메시지란 노드와 노드 사이에 전달되는 메시지를 통칭하며, 하위 노드에서 로봇 태스크를 수행하도록 하위 노드를 활성화시키는 메시지를 의미할 수 있다. 노드란, 시나리오 파일에서 시나리오 운영을 위한 시작 노드, 미디어 및 동작 프로그램을 할당 받은 행동 노드와 노드들 간 병합을 제어하기 위한 병합 노드 그리고 반복을 제어하기 위한 패스 노드를 포함하는 객체의 개념에 해당한다. 이후에서 자세하게 설명하겠지만, 하위 노드가 동작하는데 확인해야 할 종료된 상위 노드의 숫자를 알고 있어야 하며, 노드에는 상위 노드로부터 수신한 이벤트 메시지를 저장할 수 있다.
본 발명의 일실시예에 따라, 노드는 이벤트 메시지의 저장소로 데이터 구조를 가지는데, 그 한 예로 큐(Queue)가 사용될 수 있다. 도 3에서, 생성된 모든 노드는 로봇 태스크의 실행을 위해 기본 값으로 초기화 한다. 노드의 이벤트 메시지 값은 모두 공백으로 초기화 한다. 도 3에서, 노드는 하나 이상의 연결선을 가지게 된다. 노드 간의 연결은 연결을 통해 이벤트 메시지가 도달할 하위 노드의 아이디를 가진다. 노드 간의 연결은 사용될 이벤트 메시지의 이름을 가진다. 도 2의 시나리오 등에서 사용되는 이벤트 메시지 이름을 지정할 수 있다.
일실시예에 따른 로봇 태스크 운영 방법은, 상기 복수의 노드 중 어느 하나의 상위 노드에 할당된 로봇 태스크를 수행하는 경우, 상기 노드에 연결된 하위 노드로 이벤트 메시지를 전달하는 단계를 더 포함할 수 있다. 일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 수행하는 단계는, 적어도 하나의 상위 노드의 개수와 적어도 하나의 상위 노드로부터 수신한 이벤트 메시지의 개수를 비교하는 단계; 및 상기 비교 결과에 따라 상기 하위 노드에 할당된 로봇 태스크를 수행하는 단계를 포함할 수 있다.
일실시예에 따른 시나리오 프로세서는 데이터구조의 하나인 Queue를 적용한 실행큐를 노드의 관리를 위해서 사용할 수 있다. 프로세서는 노드가 종료되면 모든 직접 연결된 하위 노드를 실행 큐에 삽입하여 동일한 깊이의 로봇태스크는 연속적으로 실행되는 것을 보장하여, 복수의 로봇 태스크가 순차적이거나 병렬적으로, 동시에 수행이 가능하도록 할 수 있다. 첫번째 시작 노드에서 도 3의 아이디 0번의 노드를 실행 큐에 삽입한다. 실행 큐가 비어있으면 프로그램을 종료하며, 실행 큐가 비었을 때까지 아래의 실행을 반복한다. 실행 큐가 비어있지 않으면 저장된 노드를 앞에서부터 꺼낸다. 꺼낸 노드의 확인해야 할 종료된 상위 노드의 숫자와 노드가 가지고 있는 이벤트 메시지 큐 에 저장된 이벤트 메시지의 숫자가 동일한지 확인한다. 확인해야 할 종료된 상위 노드의 숫자와 도달한 이벤트 메시지의 숫자가 일치하지 않으면 노드를 실행큐에 다시 삽입한다.
일실시예에 따른 로봇 태스크 운영 방법에 있어서, 상기 수행하는 단계는, 상기 로봇 태스크를 동적 라이브러리로 읽어서 수행하는 단계를 더 포함할 수 있다. 확인해야 할 종료된 상위 노드의 숫자와 도달한 이벤트 메시지의 숫자가 일치하면 노드의 실행 내용 즉 로봇태스크를 동적 라이브러리로 읽어서 수행할 수 있다. 로봇 태스크를 수행하며, 노드가 가지고 있는 노드 간의 연결 하나를 가져온다. 가져온 노드 간의 연결에 있는 이벤트 메시지와 노드의 이벤트 메시지 큐에 있는 이벤트를 비교해서 일치하지 않으면 다음 노드 간의 연결을 가져온다. 노드 간의 연결에 있는 이벤트 메시지와 노드의 이벤트 메시지 큐에 있는 이벤트를 비교해서 일치하면 이벤트 메시지와 애드온(Addon)을 처리한다. 애드온이란, 각 연결에 할당되는 이벤트 메시지를 사용하는 산술, 논리 비교 연산하는 함수를 통칭할 수 있다. 처리된 이벤트 메시지와 애드온의 결과값을 노드 간의 연결이 가진 하위 노드의 이벤트큐에 복사하여 삽입하고, 노드 간의 연결이 가진 하위 노드의 객체주소를 실행큐에 삽입한다. 노드 객체가 가진 모든 노드 간의 연결에 대해서 위의 실행을 할 때까지 반복한다. 노드를 할당된 스레드를 통해서 지정된 동작 프로그램인 스레드 또는 프로세스를 실행한다. 이 때, 동작 프로그램은 미디어 또는 동작을 구동하는 스크립트 혹은 실행 코드 일 수 있다.
도 4는, 본원의 일실시예에 따른 시나리오 스크립트 파일을 실행하는 스크립트 인터프리터를 설명하기 위한 도면이다.
위 시나리오 파일은, 도 4와 같은 스크립트 인터프리터 프로그램을 통해 각 키워드를 파싱하여, 컴파일이 없이, 해당 부분을 실행할 수 있다. 스크립트 인터프리터 프로그램은 action구역이 최상위 구역이며, 그 하부에 그림5와 같이 media, start, end 구역뿐 만 아니라 input, eapi, 그리고 사용자가 정의하는 구역을 위한 "state 새구역이름”이 있다. 구역 내부는 C언어와 같이 작성이 가능하다. media구역에서 사용될 자원에 대한 위치를 action구역 내부에서 사용하는 변수에 할당하여 변수의 이름이 호출되면 해당자원을 실행한다. start구역은 스크립트의 시작점이므로 필수구역이며, 다른 구역의 이동은 transit 뒤에 명시된 구역으로 이동한다. print, play, stop, wait, media, action, transit, start, end 는 스크립트 인터프리터 내부에 등록된 명령어들이다. 본 스크립트 언어는 시나리오 시스템의 예시적인 구현에 해당한다. 스크립트 인터프리터는 start구역에서 자원으로 명시된 음성파일과 영상파일을 실행하고 end구역에서 모니터에 수행된 내용을 문자로 출력한다. 이동할 새 구역이 필요하면, "state 새구역이름 {?}" 으로 구역을 생성한다. 구역 내부에서는 C언어와 같이 구문을 작성한다. 산술연산자, 논리연산자, 비교연산자, 대입연산자, 비트연산자 및 괄호 연산자 사용이 가능하며, 반복 및 조건을 위한 for구문과 if-else구문의 사용이 가능하다. 사용자 정의 함수는 C 언어처럼 선언 후 호출이 가능하다.
도 5는 일실시예에 따른 로봇 태스크 운영 장치의 구성을 나타내는 블록 다이어그램이다.
본원에서 제공되는 로봇 태스크 운영 장치(500)는, 시나리오 생성부(510), 파스트리 생성부(520), 및 프로세서(530)를 포함할 수 있다. 시나리오 생성부(510)는, 적어도 하나의 로봇 태스크를 포함하는 시나리오를 생성할 수 있다. 로봇 태스크란 로봇의 프로세서에 의해 처리되는 일의 최소 단위를 의미할 수 있다. 시나리오란, 로봇 태스크들을 일련의 순서대로 실행되도록 하는 내용에 따라 순서를 정한 가상적인 결과 또는 그 구체적인 과정을 의미할 수 있다. 시나리오는 시나리오 에디터에 의해서 생성될 수 있으며, 시나리오 에디터는 사용자가 그래픽 기반으로 시나리오를 구성하도록 하는 프로그램을 통칭할 수 있다. 시나리오를 생성하는 구성 및 시나리오에 대한 구체적인 내용은 도 2에서 자세하게 설명하기로 한다. 파스트리 생성부(520)는, 시나리오에 기초하여 적어도 하나의 로봇 태스크가 할당되는 복수의 노드를 연결하는 파스 트리를 생성할 수 있다. 하나의 로봇 태스크는 하나의 노드에 할당되어 실행될 수 있으며, 로봇 태스크가 실행되는 순서에 따라 노드를 배치하고 노드들 간의 연결선을 생성하여 파스 트리를 생성할 수 있다. 프로세서(530)는, 파스 트리에 따른 상기 복수의 노드의 연결에 기초하여 상기 노드에 할당된 상기 적어도 하나의 로봇 태스크를 수행할 수 있다.
본원에서 제공되는 로봇 태스크 운영 장치에 있어서, 앞서 설명한 바와 같이 시나리오는 로봇 태스크의 시퀀스를 의미할 수 있다. 로봇 행동들은 수행되어야 하는 순서가 정해져 있기 때문에, 시나리오는 하나의 루트 노드를 갖는 방향 그래프로도 표현할 수 있다. 노드가 그래프에서 루트 노드로부터 같은 레벨을 갖는 경우, 노드는 같은 시간에 동작할 것이라는 것을 의미한다. 서로 다른 레벨은 다음 레벨의 노드가 수행되기 전에 이전의 노드가 동작을 종료한다는 것을 의미한다. 같은 레벨에서, 각각의 노드는 로봇 행동을 수행하기 위해 하나의 스레드에 할당되어 실행될 수 있다. 상기 레벨에서, 형제 노드(sibling node)가 종료될 때까지 기다리지 않고 스레드가 시작된다.
본원에서 제공되는 로봇 태스크 운영 장치에 있어서 로봇 태스크는 태스크의 수행 조건에 따라 로봇 태스크 운영 알고리즘을 수행하는 순차적 또는 동시적인 병렬적 방식 이외에도 조건, 병합, 반복 방식으로 태스크를 다양한 방식으로 수행될 수 있다. 일실시예에 따른 로봇 태스크 운영 장치의 로봇 태스크는 병렬적 방식에 따라 로봇 태스크를 수행할 수 있다. 사용자가 스크립트로 로봇 행동의 흐름을 기재할 때, 병렬적으로 동시에 수행될 수행 노드의 수가 결정될 수 있다. 스크립트가 읽힐 때, 상기 수행 노드의 수와 같은 수의 스레드가 생성되어, 상기 스레드에 노드를 할당하고 로봇 태스크를 수행할 수 있다. 일실시예에 따른 로봇 태스크 운영 방법은, 조건에 따라서 다음 노드(또는 하위 노드)에 대한 로봇 태스크를 수행할 수 있다. 예를 들면, 먼저 수행되고 있는 두 개의 태스크가 종료되는 경우 다음 태스크를 수행할 수 있다. 노드가 수행을 마쳤을 때, 상기 수행에 대한 결과를 산출하게 되며 다음 노드의 태스크를 수행할 지를 선택하게 된다. 상기 선택이 논리적 연산자에 의한 선택, 비교/관계형 연산자에 의한 선택에 의해 이루어지는 경우, 이를 애드온(Addon)이라고 한다. 시나리오가 읽히는 동안에, 사용자는 조건 수행기의 타입 및 비교될 값들을 구체화한다. 로봇 태스크의 조건적인 수행은 이전의 행동의 결과가 다음의 행동을 선택하는 경우, 조건문에 의해 그 조건이 표현되어야 한다. 예를 들어 A키가 눌리는 경우 오디오 파일이 재생되고 B키가 눌리는 경우 비디오 파일이 재생되는 등의 조건 등이 명시되어 표현될 수 있다. 일실시예에 따른 태스크 운영 방식은 로봇 태스크를 병합적으로 수행하는 것을 포함할 수 있다. 이는 특정 하위 노드의 수행에 있어서 선행되어야 할 모든 태스크의 수행이 종료된 경우 다음 태스크를 수행하는 방식을 의미할 수 있다. 또한, 일실시예에 따른 태스크 수행 방식 중 반복적 수행은 설정된 반복 횟수 또는 반복 지속 시간에 따라 태스크를 수행하는 방식을 의미할 수 있다. 몇몇 태스크에 있어서, 반복이 필요한 로봇 행동들이 있다. 상기 반복은 시스템 상에서의 특정 시각에서 다른 시각까지 지속되는 반복 지속 시간에 따른 반복일 수 있고, 설정된 반복 횟수에 따른 반복일 수 있다.
앞서 설명한 바와 같이, 도 2는 로봇 태스크를 포함하는 시나리오의 예시이다. 본 발명의 로봇 태스크 시나리오가 이에 국한되는 것은 아니지만 설명을 돕기 위해 제공된다. 먼저, 첫 번째 로봇 태스크로 startCommet.avi 음성파일을 스피커를 통해 출력한다. 위의 로봇 태스크가 종료를 하면 60초 동안 로봇이 다닐 경로를 출력하면서 RobotPathDisplay.mp3를 스피커를 통해서 출력하고 로봇이 2M전진하고 순차적으로 90도 회전하는 것을 4회 반복한다. 이 세가지 로봇태스크는 A점에서 동시에 수행되도록 분기한다. 위의 세 가지 로봇 태스크 중에 로봇이 2M전진하고 90도 회전하는 것을 4회 반복하고, RobotPathDisplay.mp3를 스피커를 통해서 출력하는 것이 모두 종료하면 로봇이 장애물을 5회 만날 때 까지 원더링 하는 로봇 태스크를 시작한다. B점에서 두 가지 로봇 태스크가 병합한다. 로봇이 장애물을 5회 만날 때까지 원더링 하는 로봇 태스크와 60초동안 로봇이 다닐 경로를 출력하는 두가지의 로봇 태스크가 종료되면 exitComment.mp3 파일을 스피커에 출력한다. C점에서 두가지 로봇 태스크가 병합한다. 이후에는 더 이상 수행될 로봇 태스크가 없으므로 종료된다.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 시나리오 생성부는, 상기 시나리오를 XML 형식으로 생성할 수 있다. 본 발명의 일실시예에 따라 시나리오를 XML 형식으로 생성할 수 있으며, 이러한 시나리오 에디터 등에서 작성을 마쳐 생성되는 XML 형식의 파일을 시나리오 파일이라고 통칭할 수 있다. 도 2에서, 첫 번째 로봇 태스크는 "startComment.avi 파일을 출력한다”이다. 이는 도 3에서 1번 노드에 해당한다. 첫 번째 로봇 태스크가 종료된 후 연결된 3가지 태스크를 병렬적으로 동시에 시작한다. 도 3에서는 노드1번이 노드2번, 3번, 4번과 연결선이 추가된다. 이 세가지 로봇태스크는 A점에서 동시에 수행되도록 분기한다. 도 2에서, "60초 동안 주행경로를 디스플레이 한다”는, 도 3에서 2번 노드에 해당한다. "2M 전진한다” 와 "90도 회전한다” 가 4회 반복한다. 반복을 위하여 도 3에서 3번 노드가 추가되며, 반복의 횟수를 확인 하기 위하여 도 3에서 7번 노드가 추가된다. B점에서 두 가지 로봇 태스크가 병합한다. 도 2에서 "RobotPathDisplay.mp3 파일을 스피커에 출력한다”는 도 3에서 4번 노드에 해당한다. "2M 전진한다”는 도 3의 5번 노드에 해당된다. 도 2에서, "90도 회전한다”는 도 3의 6번 노드에 해당된다. 4회반복 로봇 태스크와 "RobotPathDisplay.mp3 파일을 스피커에 출력한다”가 모두 종료되는 것을 확인하는 단계는, 8번 노드에 해당한다. 하위 노드를 실행시키기 위한 카운트 수만 만족하면 바로 하위에 연결된 로봇 태스크가 실행된다. "로봇이 장애물 5번 만날 때까지 원더링을 수행한다”는 도 3에서 9번 노드에 해당한다. "60초동안 주행경로는 디스플레이 한다”와 "로봇이 장애물 5번 만날 때까지 원더링을 수행한다”가 모두 종료되는 것을 확인하면, C점에서 두가지 로봇 태스크가 병합된다. "exitComment.mp3 파일을 스피커에 출력한다”는 로봇 태스크는 도 3의 11번 노드에 해당되며 오디오 파일이 플레이된다.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 파스 트리 생성부는, 상기 노드 및 연결을 토큰으로 분해하여 상기 파스 트리를 생성할 수 있다. 도 2의 시나리오를 기반으로 노드, 연결선, 이벤트 메시지 등의 토큰을 생성하고, 그 연결관계를 나타낸 시나리오 인터프리터가 전처리 과정에 사용되는 도식이다. 도 3에서 노드는 원형, 노드 간의 연결은 화살표, 이벤트 메시지는 사각형으로 표시한다. 이벤트 메시지란 노드와 노드 사이에 전달되는 메시지를 통칭하며, 하위 노드에서 로봇 태스크를 수행하도록 하위 노드를 활성화시키는 메시지를 의미할 수 있다. 노드란, 시나리오 파일에서 시나리오 운영을 위한 시작 노드, 미디어 및 동작 프로그램을 할당 받은 행동 노드와 노드들 간 병합을 제어하기 위한 병합 노드 그리고 반복을 제어하기 위한 패스 노드를 포함하는 객체의 개념에 해당한다. 이후에서 자세하게 설명하겠지만, 하위 노드가 동작하는데 확인해야 할 종료된 상위 노드의 숫자를 알고 있어야 하며, 노드에는 상위 노드로부터 수신한 이벤트 메시지를 저장할 수 있다.
본 발명의 일실시예에 따라, 노드는 이벤트 메시지의 저장소로 데이터 구조를 가지는데, 그 한 예로 큐(Queue)가 사용될 수 있다. 도 3에서, 생성된 모든 노드는 로봇 태스크의 실행을 위해 기본 값으로 초기화 한다. 노드의 이벤트 메시지 값은 모두 공백으로 초기화 한다. 도 3에서, 노드는 하나 이상의 연결선을 가지게 된다. 노드 간의 연결은 연결을 통해 이벤트 메시지가 도달할 하위 노드의 아이디를 가진다. 노드 간의 연결은 사용될 이벤트 메시지의 이름을 가진다. 도 2의 시나리오 등에서 사용되는 이벤트 메시지 이름을 지정할 수 있다.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 프로세서는, 상기 복수의 노드 중 어느 하나의 상위 노드에 할당된 로봇 태스크를 수행하는 경우, 상기 노드에 연결된 하위 노드로 이벤트 메시지를 전달할 수 있다. 일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 프로세서는, 적어도 하나의 상위 노드의 개수와 적어도 하나의 상위 노드로부터 수신한 이벤트 메시지의 개수를 비교하고, 상기 비교 결과에 따라 상기 하위 노드에 할당된 로봇 태스크를 수행할 수 있다.
일실시예에 따른 시나리오 프로세서는 데이터구조의 하나인 큐를 적용한 실행큐를 노드의 관리를 위해서 사용할 수 있다. 프로세서는 노드가 종료되면 모든 직접 연결된 하위 노드를 실행 큐에 삽입하여 동일한 깊이의 로봇태스크는 연속적으로 실행되는 것을 보장하여, 복수의 로봇 태스크가 순차적이거나 병렬적으로, 동시에 수행이 가능하도록 할 수 있다. 첫번째 시작 노드에서 도 3의 아이디 0번의 노드를 실행 큐에 삽입한다. 실행 큐가 비어있으면 프로그램을 종료하며, 실행 큐가 비었을 때까지 아래의 실행을 반복한다. 실행 큐가 비어있지 않으면 저장된 노드를 앞에서부터 꺼낸다. 꺼낸 노드의 확인해야 할 종료된 상위 노드의 숫자와 노드가 가지고 있는 이벤트 메시지 큐 에 저장된 이벤트 메시지의 숫자가 동일한지 확인한다. 확인해야 할 종료된 상위 노드의 숫자와 도달한 이벤트 메시지의 숫자가 일치하지 않으면 노드를 실행큐에 다시 삽입한다.
일실시예에 따른 로봇 태스크 운영 장치에 있어서, 상기 프로세서는, 상기 로봇 태스크를 동적 라이브러리로 읽어서 수행할 수 있다. 확인해야 할 종료된 상위 노드의 숫자와 도달한 이벤트 메시지의 숫자가 일치하면 노드의 실행 내용 즉 로봇태스크를 동적 라이브러리로 읽어서 수행할 수 있다. 로봇 태스크를 수행하며, 노드가 가지고 있는 노드 간의 연결 하나를 가져온다. 가져온 노드 간의 연결에 있는 이벤트 메시지와 노드의 이벤트 메시지 큐에 있는 이벤트를 비교해서 일치하지 않으면 다음 노드 간의 연결을 가져온다. 노드 간의 연결에 있는 이벤트 메시지와 노드의 이벤트 메시지 큐에 있는 이벤트를 비교해서 일치하면 이벤트 메시지와 애드온(Addon)을 처리한다. 애드온이란, 각 연결에 할당되는 이벤트 메시지를 사용하는 산술, 논리 비교 연산하는 함수를 통칭할 수 있다. 처리된 이벤트 메시지와 애드온의 결과값을 노드 간의 연결이 가진 하위 노드의 이벤트큐에 복사하여 삽입하고, 노드 간의 연결이 가진 하위 노드의 객체주소를 실행큐에 삽입한다. 노드 객체가 가진 모든 노드 간의 연결에 대해서 위의 실행을 할 때까지 반복한다. 노드를 할당된 스레드를 통해서 지정된 동작 프로그램인 스레드 또는 프로세스를 실행한다. 이 때, 동작 프로그램은 미디어 또는 동작을 구동하는 스크립트 혹은 실행 코드 일 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.

Claims (14)

  1. 컴퓨팅 디바이스에 의해 수행되는 로봇 태스크 운영 방법에 있어서, 상기 방법은 상기 컴퓨팅 디바이스의 적어도 하나의 프로세서에 의해 수행되는:
    적어도 하나의 로봇 태스크를 포함하는 시나리오를 생성하는 단계;
    상기 시나리오에 기초하여 상기 적어도 하나의 로봇 태스크가 할당되는 복수의 노드를 연결하는 파스 트리(parse tree)를 생성하는 단계; 및
    상기 파스 트리에 따른 상기 복수의 노드의 연결에 기초하여 상기 노드에 할당된 상기 적어도 하나의 로봇 태스크를 수행하는 단계를 포함하는 로봇 태스크 운영 방법.
  2. 제1항에 있어서,
    상기 복수의 노드 중 어느 하나의 상위 노드에 할당된 로봇 태스크를 수행하는 경우, 상기 노드에 연결된 하위 노드로 이벤트 메시지를 전달하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서, 상기 수행하는 단계는,
    적어도 하나의 상위 노드의 개수와 적어도 하나의 상위 노드로부터 수신한 이벤트 메시지의 개수를 비교하는 단계; 및
    상기 비교 결과에 따라 상기 하위 노드에 할당된 로봇 태스크를 수행하는 단계를 포함하는 방법.
  4. 제3항에 있어서, 상기 하위 노드에 할당된 로봇 태스크를 수행하는 단계는,
    상기 비교 결과에 따라, 상기 시나리오에 의해 결정된 병렬적, 조건적, 병합적, 반복적인 수행 방법 중 어느 하나의 방법을 선택하여 상기 로봇 태스크를 수행하는 단계를 포함하는 단계를 포함하는 방법.
  5. 제1항에 있어서, 상기 수행하는 단계는,
    상기 로봇 태스크를 동적 라이브러리로 읽어서 수행하는 단계를 더 포함하는 방법.
  6. 제1항에 있어서, 상기 파스 트리를 생성하는 단계는,
    상기 노드 및 연결을 토큰으로 분해하여 상기 파스 트리를 생성하는 단계를 포함하는 방법.
  7. 제1항에 있어서, 상기 시나리오를 생성하는 단계는,
    상기 시나리오를 XML 형식으로 생성하는 단계를 포함하는 방법.
  8. 컴퓨팅 디바이스에 의해 구현되는 로봇 태스크 운영 장치에 있어서, 상기 컴퓨팅 디바이스의 프로세서에 의해 적어도 일시적으로 구현되는:
    적어도 하나의 로봇 태스크를 포함하는 시나리오를 생성하는 시나리오 생성부;
    상기 시나리오에 기초하여 상기 적어도 하나의 로봇 태스크가 할당되는 복수의 노드를 연결하는 파스 트리(parse tree)를 생성하는 파스 트리 생성부; 및
    상기 파스 트리에 따른 상기 복수의 노드의 연결에 기초하여 상기 노드에 할당된 상기 적어도 하나의 로봇 태스크를 수행하는 프로세서를 포함하는 로봇 태스크 운영 장치.
  9. 제8항에 있어서,
    상기 프로세서는, 상기 복수의 노드 중 어느 하나의 상위 노드에 할당된 로봇 태스크를 수행하는 경우, 상기 노드에 연결된 하위 노드로 이벤트 메시지를 전달하는 로봇 태스크 운영 장치.
  10. 제9항에 있어서,
    상기 프로세서는, 적어도 하나의 상위 노드의 개수와 적어도 하나의 상위 노드로부터 수신한 이벤트 메시지의 개수를 비교하고, 상기 비교 결과에 따라 상기 하위 노드에 할당된 로봇 태스크를 수행하는 장치.
  11. 제8항에 있어서,
    상기 프로세서는 상기 로봇 태스크를 라이브러리로 읽어서 수행하는 장치.
  12. 제8항에 있어서, 상기 파스 트리 생성부는,
    상기 노드 및 연결을 토큰으로 분해하여 상기 파스 트리를 생성하는 장치.
  13. 제8항에 있어서,
    상기 시나리오 생성부는 상기 시나리오를 XML 형식으로 생성하는 장치.
  14. 제1항 내지 제7항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.

KR1020160078037A 2016-02-12 2016-06-22 로봇 태스크 운영 장치 및 방법 KR101931857B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160016576 2016-02-12
KR20160016576 2016-02-12

Publications (2)

Publication Number Publication Date
KR20170095108A true KR20170095108A (ko) 2017-08-22
KR101931857B1 KR101931857B1 (ko) 2018-12-21

Family

ID=59757938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160078037A KR101931857B1 (ko) 2016-02-12 2016-06-22 로봇 태스크 운영 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101931857B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108500967A (zh) * 2018-05-05 2018-09-07 深圳市越疆科技有限公司 控制方法、模块式关节机器人和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101182727B1 (ko) * 2008-12-22 2012-09-18 한국전자통신연구원 로봇 태스크 모델의 생성 및 실행 방법과 그 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108500967A (zh) * 2018-05-05 2018-09-07 深圳市越疆科技有限公司 控制方法、模块式关节机器人和存储介质

Also Published As

Publication number Publication date
KR101931857B1 (ko) 2018-12-21

Similar Documents

Publication Publication Date Title
US8806464B2 (en) Process flow optimized directed graph traversal
US7882498B2 (en) Method, system, and program of a compiler to parallelize source code
Heizmann et al. Termination analysis by learning terminating programs
KR101126255B1 (ko) 신호처리장치
US8984493B2 (en) Distributed static analysis of computer software applications
US20160364473A1 (en) Source code search engine
US20090113308A1 (en) Administering Communications Schedules for Data Communications Among Compute Nodes in a Data Communications Network of a Parallel Computer
US10228920B2 (en) Automatic selection of an abstract data type
US8756587B2 (en) Static analysis of computer software applications
US20120297389A1 (en) Systems and methods associated with a parallel script executer
US20130167126A1 (en) In-order execution in an asynchronous programming environment
WO2016000548A1 (zh) 一种基于本地的流式计算方法及流式计算系统
CN102955698A (zh) 基于多终端的软件开发的处理方法和装置
US10521209B2 (en) Machine-based normalization of machine instructions
US10936323B2 (en) Optimize control-flow convergence on SIMD engine using divergence depth
KR101931857B1 (ko) 로봇 태스크 운영 장치 및 방법
Castro-Perez et al. Compiling first-order functions to session-typed parallel code
Estlin et al. Plan execution interchange language (PLEXIL)
KR20190070627A (ko) 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법
US20170286271A1 (en) Symbolic execution of alternative branches
US10747508B2 (en) Function block framework generation
US20080282237A1 (en) Method and Apparatus For Generating Execution Equivalence Information
US7581214B2 (en) Live set transmission in pipelining applications
Kleijn et al. A process algebra based verification of a production system
KR101127469B1 (ko) 네트워크 기반 로봇의 소프트웨어 개발 시스템 및 방법

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