KR20110122574A - 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법 - Google Patents
중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법Info
- Publication number
- KR20110122574A KR20110122574A KR1020100042148A KR20100042148A KR20110122574A KR 20110122574 A KR20110122574 A KR 20110122574A KR 1020100042148 A KR1020100042148 A KR 1020100042148A KR 20100042148 A KR20100042148 A KR 20100042148A KR 20110122574 A KR20110122574 A KR 20110122574A
- Authority
- KR
- South Korea
- Prior art keywords
- intermediate language
- robot
- robot programming
- identifier
- token
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1671—Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mechanical Engineering (AREA)
- Robotics (AREA)
- Numerical Control (AREA)
- Stored Programmes (AREA)
- Programmable Controllers (AREA)
Abstract
본 발명은 다양한 사용자 인터페이스(User Interface, UI)의 소프트웨어와 다양한 기능의 로봇을 통합하여 연동할 수 있도록 중간언어의 표준형식을 규정하고, 이를 바탕으로 중간언어 생성기를 이용하여 중간언어 코드를 생성한 후, 이를 로봇에 실장하여 로봇 내의 가상 머신을 통해 해석 및 실행할 수 있도록 하는 중간언어 생성기를 기반으로 하는 UCR 프로그래밍 툴 및 그를 이용한 중간언어 생성기를 기반으로 하는 UCR 프로그래밍 방법에 관한 것으로서, 본 발명에 따른 중간언어 생성기를 기반으로 하는 UCR 프로그래밍 툴은, 복수의 로봇에 개별적으로 탑재되는 상이한 로봇 프로그래밍 소프트웨어의 소스 코드를 상기 복수의 로봇에서 호환되는 중간 언어 코드로 변환하는 중간언어 생성기와, 상기 복수의 로봇에 개별적으로 탑재되어 상기 중간언어 생성기에서 생성된 중간 언어 코드의 파일을 상기 복수의 로봇 별 중간언어 실행파일로 변환하는 중간언어 어셈블러와, 상기 중간언어 실행파일을 저장하는 메모리를 포함하여 이루어지는 것을 특징으로 한다.
Description
본 발명은 중간언어 생성기를 포함한 로봇 프로그래밍 툴에 관한 것으로서, 특히 다양한 사용자 인터페이스(User Interface, UI)의 소프트웨어와 다양한 기능의 로봇을 통합하여 연동할 수 있도록 중간언어의 표준형식을 규정하고, 이를 바탕으로 중간언어 생성기를 이용하여 중간언어 코드를 생성한 후, 이를 로봇에 실장하여 로봇 내의 가상 머신을 통해 해석 및 실행할 수 있도록 하는 중간언어 생성기를 기반으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법에 관한 것이다.
로봇 산업은 종래에는 주로 산업용 로봇 위주로 전개되었으나, 최근 로봇 기술의 발전, 정부의 지원정책, 로봇의 이용에 대한 대중의 관심 등을 통해 개인용 로봇 산업이 부상하고 있다. 이러한 개인용 로봇의 주요 적용 분야로 엔터테인먼트 로봇을 들 수 있는데, 엔터테인먼트 로봇은 사람의 일을 대신해 주는 것보다는 사람에게 놀이, 오락, 취미, 기분전환, 심리치료 등의 엔터테인먼트 기능을 제공하는 것을 주요 목적으로 한다.
초창기의 엔터테인먼트 로봇들은 일본 소니사의 '아이보'와 같이 대체로 완성형 로봇 형태로 제공되었으며, 따라서 마치 가전제품과 같이 제조업체에서 지정한 사양대로 제작되었다. 즉, 초창기의 엔터테인먼트 로봇은 결국 하나의 고정된 형태를 가지고 지정된 종류의 기능을 구현하게 되므로, 살아있는 로봇이라는 관점에서 볼 때 그 동작, 형태, 기능의 자유도 내지 확장성에 상당한 제한이 있을 수밖에 없었다.
초창기 엔터테인먼트 로봇의 이러한 단점을 고려하여 최근에는 UCR(User Created Robot:사용자가 직접 제작하는 로봇) 개념의 로봇이 제공되고 있다. 즉, 액츄에이터, 센서 등 로봇을 구성하는 각 구성 부분을 모듈화하여 조립식 블록처럼 각 모듈을 서로 다른 몇 가지 방식으로 조립함으로써 서로 다른 형태의 로봇을 구성할 수 있는 소위 블록형 로봇이 개발되고 있다. 또한, 로봇 내부에 칩을 내장하여 소프트웨어적으로 로봇의 동작을 설정 및 제어할 수 있는 방식의 소위 프로그래머블 로봇들이 개발되고 있다.
그리고, 서로 다른 종류의 프로그래머블 로봇은 그 동작의 설정 및 제어를 위한 해당 프로그램(펌웨어, 가상머신 등)을 각각 탑재하고 있으며, 여기서 프로그래머블 로봇의 동작 설정 및 제어를 위한 프로그램은 통상 PC를 통해 해당 프로그래머블 로봇에 다운로드 된다.
그러나, 프로그래머블 로봇을 제조하는 회사에 따라 자사의 프로그래머블 로봇에 탑재되는 전용 프로그램을 제작하여 사용하고 있으며, 이에 따라 서로 다른 제조사의 프로그래머블 로봇을 구입한 사용자는 그에 맞는 프로그램을 종류 별로 마련해야 하는 어려움이 있었다.
한편, 프로그램머블 로봇의 경우에도, 프로그램 작성에 익숙치 않은 로봇 유저들의 경우 자체적으로 로봇 콘텐츠의 제작이 불가능한 상황임에도 제조업체 등에서 제공되는 로봇 콘텐츠가 절대적으로 부족하여 결국 프로그래머블 로봇의 구입을 꺼리게 되며, 프로그램 작성이 가능한 로봇 유저들의 경우에도 자신이 제작한 로봇 콘텐츠를 자신의 로봇에 적용하여 이용할 뿐 타인들과 상호교환 내지 매매할 수 있는 시스템이 없었으므로 새로운 로봇 콘텐츠의 지속적 창출에 대한 동기가 부여되지 않으며, 이러한 상황들은 결국 프로그래머블 로봇 시장의 확대에 큰 걸림돌이 되고 있다.
따라서, 본 발명은 다양한 사용자 인터페이스(User Interface, UI)의 소프트웨어와 다양한 기능의 로봇을 통합하여 연동할 수 있도록 중간언어의 표준형식을 규정하고, 이를 바탕으로 중간언어 생성기를 이용하여 중간언어 코드를 생성한 후, 이를 로봇에 실장하여 로봇 내의 가상 머신을 통해 해석 및 실행할 수 있도록 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 제공하는데 그 목적이 있다.
또한, 본 발명은 상기 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법을 제공하는데 다른 목적이 있다.
상기 목적을 달성하기 위하여, 본 발명에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴은, 복수의 로봇에 개별적으로 탑재되는 상이한 로봇 프로그래밍 소프트웨어의 소스 코드를 상기 복수의 로봇에서 호환되는 중간 언어 코드로 변환하는 중간언어 생성기와, 상기 복수의 로봇에 개별적으로 탑재되어 상기 중간언어 생성기에서 생성된 중간 언어 코드의 파일을 상기 복수의 로봇 별 중간언어 실행파일로 변환하는 중간언어 어셈블러와, 상기 중간언어 실행파일을 저장하는 메모리를 포함하여 이루어지는 것을 특징으로 한다.
또한, 상기 로봇 프로그래밍 소프트웨어의 소스 코드는 C 언어로 개발된 소스 코드인 것을 특징으로 한다.
또한, 상기 중간언어 어셈블러는, 가상 머신(Virtual Mashine)인 것을 특징으로 한다.
또한, 상기 중간언어 생성기는, 상기 로봇 프로그래밍 소프트웨어의 소스 코드의 각 문장을 토큰 단위로 만드는 토큰 단위 생성모듈과, 상기 토큰단위 생성모듈에서 생성된 각 토큰들이 문법 구조에 맞게 배열되어 있는지 검사하고, 트리 구조로 재배열하는 토큰의 문법 검사모듈과, 변수 테이블 및 함수와 라벨 테이블을 생성하는 식별자 테이블 생성모듈과, 상기 식별자 테이블 생성모듈을 통해 생성된 테이블에 상기 소스 코드 상에서 참조하는 식별자가 존재하는지 여부를 검사하는 식별자 참조 검사모듈과, 스크립트 정의 체계에 맞게 코드를 변환하는 스크립트 변환모듈과, 각 토큰을 중간언어 바이트 코드(IL Byte code)로 변환하는 중간언어 바이트 코드 생성모듈을 포함하는 것을 특징으로 한다.
또한, 상기 토큰의 문법 검사 모듈은, 모든 파라미터의 정의 여부, 존재하는 장치의 ID 또는 Address 사용 여부, 각 문장이 문법에 맞게 기술되어 있는지의 여부, 식별자(함수와 라벨 또는 변수)의 이름이 명명 규칙에 맞는지 여부, 블록의 시각과 끝({, })을 짝이 맞게 사용했는지 여부 중 적어도 하나에 대해 검사하는 것을 특징으로 한다.
또한, 상기 식별자 테이블 생성모듈은, 메인 함수 중복 여부, 함수 중복 여부, 라벨 중복 여부 중 적어도 하나에 대해 검사하는 것을 특징으로 한다.
또한, 중간언어 바이트 코드 생성모듈은, 식별자는 식별자 테이블을 참조하여 상수로 대체하는 것을 특징으로 한다.
상기 목적을 달성하기 위하여, 본 발명에 따른 상기 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법은, 복수의 로봇에 개별적으로 탑재되는 상이한 로봇 프로그래밍 소프트웨어의 스크립트 언어를 바이트 코드 형태로 변환하기 위한 중간언어를 정의하는 중간언어 정의단계와, 상기 로봇 프로그래밍 소프트웨어의 소스 코드를 상기 중간언어 정의단계에 의한 중간언어의 정의에 따라 상기 복수의 로봇 각각에 맞는 중간 언어 코드로 변환하는 중간언어 코드 변환단계와, 상기 복수의 로봇에 개별적으로 탑재되어 상기 중간언어 생성기에서 생성된 중간 언어 코드의 파일을 상기 복수의 로봇 별 중간언어 실행파일로 변환하는 중간언어 실행파일 변환단계와, 상기 중간언어 실행파일을 메모리에 저장하고 이를 해당 로봇에 제공하는 로봇 실행단계를 포함하는 것을 특징으로 한다.
또한, 상기 중간언어 코드 변환단계는, 토큰 단위 생성모듈에서 상기 로봇 프로그래밍 소프트웨어의 소스 코드의 각 문장을 토큰 단위로 만드는 토큰 생성 단계와, 토큰의 문법 검사모듈에서 각 토큰들의 문법 구조에 맞게 배열되었는지 여부를 검사하고, 트리 구조로 재배열하는 토큰 문법 검사단계와, 식별자 테이블 생성모듈에서 변수 테이블 및 함수와 라벨 테이블을 생성하는 식별자 테이블 생성단계와, 식별자 참조 검사모듈에서 상기 식별자 테이블 생성모듈을 통해 생성된 테이블에 상기 소스 코드 상에서 참조하는 식별자가 존재하는지 여부를 검사하는 식별자 테이블 검사단계와, 스크립트 변환모듈에서 스크립트 정의 체계에 맞게 코드를 변환하는 스크립트 코드 변환단계와, 중간언어 바이트 코드 생성모듈에서 각 토큰을 중간언어 바이트 코드(IL Byte code)로 변환하는 중간언어 바이트 코드 생성단계를 포함하는 특징으로 한다.
또한, 상기 중간언어 바이트 코드 생성단계는, 식별자 테이블을 참조하여 식별자를 상수로 대체하는 과정을 포함하는 것을 특징으로 한다.
본 발명에 따르면, 다양한 사용자 인터페이스(User Interface, UI)의 소프트웨어와 다양한 기능의 로봇을 통합하여 연동할 수 있도록 중간언어의 표준형식이 규정되고, 이를 바탕으로 중간언어 생성기를 이용하여 중간언어 코드를 생성한 후, 이를 로봇에 실장하여 로봇 내의 가상 머신을 통해 해석 및 실행할 수 있게 된다.
또한, 중간언어 생성기를 기반으로 하는 UCR 프로그래밍 툴을 이용한 UCR 프로그래밍 방법을 제공할 수 있게 된다.
도 1은 본 발명의 일 실시예에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 개략적으로 보인 구성도
도 2는 본 발명의 일 실시예에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴의 블럭도
도 3과 도 4는 본 발명의 일 실시예에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법의 흐름도
도 2는 본 발명의 일 실시예에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴의 블럭도
도 3과 도 4는 본 발명의 일 실시예에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법의 흐름도
이하에서는 도면을 참조하여 본 발명의 일 실시예를 통해 본 발명을 더욱 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 개략적으로 보인 구성도이다.
도시된 바와 같이, 본 발명의 일 실시예에 따른 중간언어 생성기를 기반으로 하는 UCR 프로그래밍 툴은, 로봇 프로그래밍 소프트웨어(100a~100c)와 로봇 하드웨어(300a~300c,이하 로봇이라 함) 사이에 중간언어(Intermediate Language:IL) 표준체계가 구비된다.
다시 말해, 복수의 로봇(300a~300c)에 개별적으로 탑재되는 로봇 프로그래밍 소프트웨어(100a~100c)의 스크립트 언어를 바이트 코드 형태로 변환하기 위한 중간언어(Intermediate Language:IL)를 정의하고, 이렇게 정의된 중간언어를 통해 로봇의 사용자 애플리케이션의 행동 기술 프로그램을 스크립트화 한 후, 중간언어 생성기(200)를 통해 중간언어로 변환한다. 그리고, 중간언어를 해석하고 실제로 동작시키는 중간언어 어셈블러가 구비되며, 본 실시예에서는 이러한 중간언어 어셈블러로 가상 머신(310a~310c,Virtual Machine)을 예로 하였다. 이러한 가상 머신(310a~310c)의 동작에 의해 로봇이 실제로 동작하게 된다.
도 2는 본 발명의 일 실시예에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴의 블럭도로서, 이를 참조하여 본 발명의 일 실시예에 따른 중간언어 생성기를 기반으로 하는 UCR 프로그래밍 툴에 대해 더 구체적으로 설명한다.
본 발명의 일 실시예에 따른 중간언어 생성기를 기반으로 하는 UCR 프로그래밍 툴은, 중간언어 생성기(200), 중간언어 어셈블러, 메모리(미도시)를 포함하여 형성된다.
중간언어 생성기(200)는 복수의 로봇(300a~300c)에 개별적으로 탑재되는 상이한 로봇 프로그래밍 소프트웨어(100a~100c)의 소스 코드를 상기 복수의 로봇(300a~300c)에서 호환되는 중간 언어 코드로 변환한다. 중간언어 어셈블러는 복수의 로봇(300a~300c)에 개별적으로 탑재되어 중간언어 생성기(200)에서 생성된 중간 언어 코드의 파일을 상기 복수의 로봇 별 중간언어 실행파일로 변환한다. 그리고 메모리는 중간언어 실행파일을 저장한다.
그리고, 중간언어 생성기(200)는 토큰 단위 생성모듈(210), 토큰의 문법 검사모듈(220), 식별자 테이블 생성모듈(230), 식별자 참조 검사모듈(240), 스크립트 변환모듈(250), 중간언어 바이트 코드 생성모듈(260)을 포함하여 형성된다.
토큰 단위 생성모듈(210)은 로봇 프로그래밍 소프트웨어의 소스 코드의 각 문장을 토큰 단위로 만든다.
토큰의 문법 검사모듈(220)은 토큰단위 생성모듈(210)에서 생성된 각 토큰들이 문법 구조에 맞게 배열되어 있는지 검사하고, 트리 구조로 재배열한다. 여기서, 토큰의 문법 검사 모듈(220)은, 모든 파라미터의 정의 여부, 존재하는 장치의 ID 또는 Address 사용 여부, 각 문장이 문법에 맞게 기술되어 있는지의 여부, 식별자(함수와 라벨 또는 변수)의 이름이 명명 규칙에 맞는지 여부, 블록의 시각과 끝({, })을 짝이 맞게 사용했는지 여부 중 적어도 하나에 대해 검사하는 것일 수 있다.
식별자 테이블 생성모듈(230)은 변수 테이블 및 함수와 라벨 테이블을 생성한다. 여기서, 식별자 테이블 생성모듈(230)은, 메인 함수 중복 여부, 함수 중복 여부, 라벨 중복 여부 중 적어도 하나에 대해 검사하는 것일 수 있다.
식별자 참조 검사모듈(240)은 식별자 테이블 생성모듈(230)을 통해 생성된 테이블에 소스 코드 상에서 참조하는 식별자가 존재하는지 여부를 검사한다.
스크립트 변환모듈(250)은 스크립트 정의 체계에 맞게 코드를 변환한다.
중간언어 바이트 코드 생성모듈(260)은 각 토큰을 중간언어 바이트 코드(IL Byte code)로 변환한다. 여기서, 중간언어 바이트 코드 생성모듈(260)은, 식별자는 식별자 테이블을 참조하여 상수로 대체하는 것일 수 있다.
또한, 본 실시예에서는 로봇 프로그래밍 소프트웨어(100a~100c)의 소스 코드는 C 언어로 개발된 소스 코드인 것을 예로 하였다.
다음은 도 3을 참조하여 본 발명의 일 실시예에 따른 본 발명에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법에 대해 설명한다.
본 발명의 일 실시예에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법은 중간언어 정의단계(S110), 중간언어 코드 변환단계(S120), 중간언어 실행파일 변환단계(S130), 로봇 실행단계(S140)를 포함하여 이루어진다.
중간언어 정의단계(S110)는 복수의 로봇(300a~300c)에 개별적으로 탑재되는 상이한 로봇 프로그래밍 소프트웨어(100a~100c)의 스크립트 언어를 바이트 코드 형태로 변환하는 과정이다.
아래의 표 1은 로봇 프로그래밍 소프트웨어의 스크립트 언어를 바이트 코드 형태로 전환하기 위한 중간언어 명령어를 정리한 표이다.
[표 1]
여기서, IL 조건절의 형식은 [파라미터1] [비교연산자] [파라미터2]이며, 파라미터1과 파라미터2를 비교연산자를 이용하여 비교한 결과가 참이면 1, 거짓이면 0으로 나타낸다.
그리고, 복합 조건절의 형식은 [조건절1] [논리연산자] contif [조건절2] [논리연산자] ...이며, contif를 이용하여 계속 연결할 수 있다. 이때, 다음 조건절을 연결시키기 위한 논리연산자는 then이 아니어야 하고, 복합 조건절의 마지막 조건절 다음 논리연산자는 반드시 then이어야 한다. 조건절 연산 순서는 왼쪽에서 오른쪽 방향으로 흘러간다.
표 2 내지 표 4는 중간언어의 연산자를 정리한 표이다.
[표 2]
[표 3]
[표 4]
IL 파라미터의 형식은 [파라미터 타입] [파라미터 값1] [파라미터 값2]로 이루어지며, IL Instruction을 수행하기 위해 사용되는 데이터이고, 총 3byte 로 이루어진다. 파라미터 타입에 따라 사용되는 값의 형태가 달라진다. 표 5 내지 7은 그 예를 나타낸 것이다.
[표 5]
[표 6]
[표 7]
표 8은 중간언어 정의를 정리한 표이다.
[표 8]
중간언어 코드 변환단계(S120)는 로봇 프로그래밍 소프트웨어(100a~100c)의 소스 코드를 상기 중간언어 정의단계(S110)에 의한 중간언어의 정의에 따라 상기 복수의 로봇(300a~399c) 각각에 맞는 중간 언어 코드로 변환하는 과정이다.
여기서, 중간언어 코드 변환단계(S120)는 도 4에 도시된 바와 같이 토큰 생성 단계(S121), 토큰 문법 검사단계(S122), 식별자 테이블 생성단계(S123), 식별자 테이블 검사단계(S124), 중간언어 바이트 코드 생성단계(S125)를 포함하여 형성된다.
토큰 생성 단계(S121)는 토큰 단위 생성모듈(210)에서 로봇 프로그래밍 소프트웨어(100a~100c)의 소스 코드의 각 문장을 토큰 단위로 만드는 과정이다.
토큰 문법 검사단계(S122)는 토큰의 문법 검사모듈에서 각 토큰들의 문법 구조에 맞게 배열되었는지 여부를 검사하고, 트리 구조로 재배열하는 과정이다.
식별자 테이블 생성단계(S123)는 식별자 테이블 생성모듈(230)에서 변수 테이블 및 함수와 라벨 테이블을 생성하는 과정이다.
식별자 테이블 검사단계(S124)는 식별자 참조 검사모듈(240)에서 상기 식별자 테이블 생성모듈(230)을 통해 생성된 테이블에 상기 소스 코드 상에서 참조하는 식별자가 존재하는지 여부를 검사하는 과정이다.
스크립트 코드 변환단계(S125)는 스크립트 변환모듈(250)에서 스크립트 정의 체계에 맞게 코드를 변환하는 과정이다.
중간언어 바이트 코드 생성단계(S126)는 중간언어 바이트 코드 생성모듈(260)에서 각 토큰을 중간언어 바이트 코드(IL Byte code)로 변환하는 과정이다.
아래의 표를 예로 설명한다.
표 9는 로봇 프로그래밍 소프트웨어에서 C 언어로 작성된 소스를 나타낸 것이다.
[표 9]
1차 스크립트 변환에 대해 설명하면, 코드 진입점 처리 및 각 키워드 변환 방법에 따라 C 소스를 스크립트로 변환하기 위해 명령어 규칙 등에 따라 재배열하면 아래와 같다. 굵은 글씨로 표기된 부분은 명령어이며, 밑줄 표기된 부분은 식별자로, 최후에는 Address 값으로 대체될 부분이다. 실제 C 소스 코드에는 사용되지 않았지만 스크립트로 나타내기 위해 임시로 사용된 변수의 경우 해당 변수의 소속에 따라 임시 이름을 부여하여 추가해 준다.
변환된 스크립트는 아래의 표 10과 같다
[표 10]
식별자 처리를 한 변수 테이블은 아래의 표 11과 같다.
[표 11]
또한 식별자 처리를 한 함수 테이블은 아래의 표 12와 같다.
[표 12]
여기서, 함수 어드레스(Address)를 알기 위해서는 byte 단위로 계산을 수행한다. 또한, 명령어, 연산자는 1 byte 로 계산하고, - 파라미터는 3 byte 로 계산하며, f_label, label 등은 무시한다.
또한, 함수별 레벨 테이블은 아래의 표 13과 같다.
[표 13]
함수별 레벨은 함수 어드레스를 기준으로 상대적인 어드레스를 계산한다. 즉, 전체 어드레스를 기준으로 main_loop_1의 절대 Address는 18 + 14 = 32이다
다음은 식별자 제거를 하게 되며, 여기서 식별자 테이블을 참고하여 해당 이름을 어드레스로 변경한다. jump 위치 표기를 위한 f_label 및 label 라인은 Address로 대체하므로 제거한다.
식별자 제거 결과를 표 14로 나타낸다.
[표 14]
이어서 중간언어 바이트 코드가 생성된다. IL 정의 테이블에 따라 각 문자를 Byte code 로 변환한다. 아래 변환 결과에서는 임의로 변환 전 코드와 비교를 위해 요소 구분자로 ‘[’ 와 ‘]’를 붙이고, 줄바꿈을 넣어주었다. 요소 중 파라미터는 3 byte를 차지한다.
표 15는 생성된 중간언어 바이트 코드를 나타낸 것이다.
[표 15]
그리고, 실제 바이너리 데이터는 아래의 표 16과 같다. 여기서, 코드 사이즈는 0x57 (87) byte이고, 사용 변수 개수는 5이다.
[표 16]
그리고, 중간언어 실행파일 변환단계(S130)는 복수의 로봇(300a~300c)에 개별적으로 탑재되어 중간언어 생성기(200)에서 생성된 중간 언어 코드의 파일을 복수의 로봇 별 중간언어 실행파일로 변환하는 과정이다.
마지막으로 로봇 실행단계(S140)는 중간언어 실행파일을 메모리에 저장하고 이를 해당 로봇(300a~300c)에 제공하는 과정이다.
상기에 따라, 다양한 사용자 인터페이스(로봇 플래폼 등)의 소프트웨어와 다양한 기능의 로봇을 통합하여 연동할 수 있도록 중간언어의 표준형식을 규정하고, 이를 바탕으로 중간언어 생성기를 이용하여 중간언어 코드를 생성한 후, 이를 로봇에 실장하여 로봇 내의 가상 머신을 통해 해석 및 실행할 수 있게 된다.
이상에서 설명한 것은 본 발명에 따른 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법을 실시하기 위한 하나의 실시예에 불과한 것으로서, 본 발명은 상기한 실시 예에 한정되지 않고, 이하의 특허청구범위에서 청구하는 바와 같이 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 정신이 있다고 할 것이다.
100a,100b,100c: 로봇 프로그래밍 소프트웨어
200 : 중간언어 생성기 210 : 코큰단위 생성모듈
220 : 토큰의 문법 검사모듈 230 : 식별자 테이블 생성모듈
240 : 식별자 참조 검사모듈 250 : 스크립트 변환모듈
260 : 중간언어 바이트 코드 생성 모듈 300a,300b,300c : 로봇
310a,310b,310c: 가상머신
200 : 중간언어 생성기 210 : 코큰단위 생성모듈
220 : 토큰의 문법 검사모듈 230 : 식별자 테이블 생성모듈
240 : 식별자 참조 검사모듈 250 : 스크립트 변환모듈
260 : 중간언어 바이트 코드 생성 모듈 300a,300b,300c : 로봇
310a,310b,310c: 가상머신
Claims (10)
- 복수의 로봇에 개별적으로 탑재되는 상이한 로봇 프로그래밍 소프트웨어의 소스 코드를 상기 복수의 로봇 각각에 맞는 중간 언어 코드로 변환하는 중간언어 생성기;
상기 복수의 로봇에 개별적으로 탑재되어 상기 중간언어 생성기에서 생성된 중간 언어 코드의 파일을 상기 복수의 로봇 별 중간언어 실행파일로 변환하는 중간언어 어셈블러;
상기 중간언어 실행파일을 저장하는 메모리를 포함하여 이루어지는 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴. - 제 1 항에 있어서,
상기 로봇 프로그래밍 소프트웨어의 소스 코드는 C 언어로 개발된 소스 코드인 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴 - 제 1 항에 있어서,
상기 중간언어 어셈블러는, 가상 머신(Virtual Mashine)인 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴 - 제 1 항 또는 제 3 항 중 어느 한 항에 있어서,
상기 중간언어 생성기는,
상기 로봇 프로그래밍 소프트웨어의 소스 코드의 각 문장을 토큰 단위로 만드는 토큰 단위 생성모듈;
상기 토큰단위 생성모듈에서 생성된 각 토큰들이 문법 구조에 맞게 배열되어 있는지 검사하고, 트리 구조로 재배열하는 토큰의 문법 검사모듈;
변수 테이블 및 함수와 라벨 테이블을 생성하는 식별자 테이블 생성모듈;
상기 식별자 테이블 생성모듈을 통해 생성된 테이블에 상기 소스 코드 상에서 참조하는 식별자가 존재하는지 여부를 검사하는 식별자 참조 검사모듈;
스크립트 정의 체계에 맞게 코드를 변환하는 스크립트 변환모듈;
각 토큰을 중간언어 바이트 코드(IL Byte code)로 변환하는 중간언어 바이트 코드 생성모듈을 포함하는 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴. - 제 4 항에 있어서,
상기 토큰의 문법 검사 모듈은, 모든 파라미터의 정의 여부, 존재하는 장치의 ID 또는 Address 사용 여부, 각 문장이 문법에 맞게 기술되어 있는지의 여부, 식별자(함수와 라벨 또는 변수)의 이름이 명명 규칙에 맞는지 여부, 블록의 시각과 끝({, })을 짝이 맞게 사용했는지 여부 중 적어도 하나에 대해 검사하는 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴 - 제 4 항에 있어서,
상기 식별자 테이블 생성모듈은, 메인 함수 중복 여부, 함수 중복 여부, 라벨 중복 여부 중 적어도 하나에 대해 검사하는 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴. - 제 4 항에 있어서,
중간언어 바이트 코드 생성모듈은, 식별자는 식별자 테이블을 참조하여 상수로 대체하는 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴. - 복수의 로봇에 개별적으로 탑재되는 상이한 로봇 프로그래밍 소프트웨어의 스크립트 언어를 바이트 코드 형태로 변환하기 위한 중간언어를 정의하는 중간언어 정의단계;
상기 로봇 프로그래밍 소프트웨어의 소스 코드를 상기 중간언어 정의단계에 의한 중간언어의 정의에 따라 상기 복수의 로봇 각각에 맞는 중간 언어 코드로 변환하는 중간언어 코드 변환단계;
상기 복수의 로봇에 개별적으로 탑재되어 상기 중간언어 생성기에서 생성된 중간 언어 코드의 파일을 상기 복수의 로봇 별 중간언어 실행파일로 변환하는 중간언어 실행파일 변환단계;
상기 중간언어 실행파일을 메모리에 저장하고 이를 해당 로봇에 제공하는 로봇 실행단계를 포함하는 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법. - 제 8 항에 있어서, 상기 중간언어 코드 변환단계는,
토큰 단위 생성모듈에서 상기 로봇 프로그래밍 소프트웨어의 소스 코드의 각 문장을 토큰 단위로 만드는 토큰 생성 단계;
토큰의 문법 검사모듈에서 각 토큰들의 문법 구조에 맞게 배열되었는지 여부를 검사하고, 트리 구조로 재배열하는 토큰 문법 검사단계;
식별자 테이블 생성모듈에서 변수 테이블 및 함수와 라벨 테이블을 생성하는 식별자 테이블 생성단계;
식별자 참조 검사모듈에서 상기 식별자 테이블 생성모듈을 통해 생성된 테이블에 상기 소스 코드 상에서 참조하는 식별자가 존재하는지 여부를 검사하는 식별자 테이블 검사단계;
스크립트 변환모듈에서 스크립트 정의 체계에 맞게 코드를 변환하는 스크립트 코드 변환단계;
중간언어 바이트 코드 생성모듈에서 각 토큰을 중간언어 바이트 코드(IL Byte code)로 변환하는 중간언어 바이트 코드 생성단계를 포함하는 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법. - 제 9 항에 있어서,
상기 중간언어 바이트 코드 생성단계는, 식별자 테이블을 참조하여 식별자를 상수로 대체하는 과정을 포함하는 것을 특징으로 하는 중간언어 생성기를 포함한 로봇 프로그래밍 툴을 기반으로 하는 로봇 프로그래밍 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100042148A KR101658795B1 (ko) | 2010-05-04 | 2010-05-04 | 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100042148A KR101658795B1 (ko) | 2010-05-04 | 2010-05-04 | 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110122574A true KR20110122574A (ko) | 2011-11-10 |
KR101658795B1 KR101658795B1 (ko) | 2016-09-23 |
Family
ID=45393093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100042148A KR101658795B1 (ko) | 2010-05-04 | 2010-05-04 | 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101658795B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110861080A (zh) * | 2018-08-27 | 2020-03-06 | 大众汽车有限公司 | 用于对机器人编程的方法以及计算装置和计算机程序 |
CN118418140A (zh) * | 2024-07-04 | 2024-08-02 | 深圳墨影科技有限公司 | 基于跨平台语言的智能机器人控制终端 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030012488A (ko) * | 2001-08-01 | 2003-02-12 | 주식회사 마이크로로보트 | 마이크로로봇 제어프로그램 교육 시스템 및 그 방법 |
KR20040044655A (ko) * | 2002-11-21 | 2004-05-31 | 한국전자통신연구원 | 자바 가상머신에서 루프 문 처리를 위해 바이트코드를생성 및 수행하는 방법 |
-
2010
- 2010-05-04 KR KR1020100042148A patent/KR101658795B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030012488A (ko) * | 2001-08-01 | 2003-02-12 | 주식회사 마이크로로보트 | 마이크로로봇 제어프로그램 교육 시스템 및 그 방법 |
KR20040044655A (ko) * | 2002-11-21 | 2004-05-31 | 한국전자통신연구원 | 자바 가상머신에서 루프 문 처리를 위해 바이트코드를생성 및 수행하는 방법 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110861080A (zh) * | 2018-08-27 | 2020-03-06 | 大众汽车有限公司 | 用于对机器人编程的方法以及计算装置和计算机程序 |
CN118418140A (zh) * | 2024-07-04 | 2024-08-02 | 深圳墨影科技有限公司 | 基于跨平台语言的智能机器人控制终端 |
Also Published As
Publication number | Publication date |
---|---|
KR101658795B1 (ko) | 2016-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101667134B (zh) | 一种构建编译系统的方法及编译系统构建装置 | |
CN103814333B (zh) | 用于对可编程控制装置编程和配置的方法和设备 | |
CN110149800B (zh) | 一种用于处理与源程序的源代码相关联的抽象语法树的装置 | |
EP1729213A1 (en) | Development of parallel/distributed applications | |
JP5271994B2 (ja) | リアルタイム・ランタイムシステムおよびそのようなランタイムシステムのための機能モジュール | |
US20130211545A1 (en) | Embedded Multi-Processor Parallel Processing System and Operating Method for Same | |
JPH0561683A (ja) | オブジエクトに基づく情報処理システム及びソフトウエア保守システム | |
CN109460231B (zh) | 基于xml的上位机软件实现方法 | |
JP2016197440A (ja) | スクリプトを形成する方法および装置 | |
CN108700864B (zh) | 可编程逻辑控制器中网络攻击弹性控制的程序随机化 | |
KR101658795B1 (ko) | 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법 | |
US11169510B2 (en) | Engineering system and method for planning an automation system | |
CN103150195A (zh) | 将以自动化语言表示的控制程序翻译为中间语言的方法 | |
US10977099B2 (en) | Interchanging real-time data between program modules | |
Pinto et al. | Icaru-fb: An IEC 61499 compliant multiplatform software infrastructure | |
JP2016539444A (ja) | 自動化システムを構成するための処理装置および方法 | |
Ollinger et al. | An integrated concept for the model-driven engineering of distributed automation architectures on embedded systems | |
JP5619331B1 (ja) | プログラミング装置及び実行コード生成方法 | |
US8832670B2 (en) | Programmable controller and programming tool for communication with legacy equipment | |
KR20120119402A (ko) | 사용자 제작 로봇 에뮬레이팅 장치 및 사용자 제작 로봇 모델 임포팅 방법 | |
CN104461566B (zh) | 一种基于对象实例的行为变体的jcop扩展实现方法 | |
Runde et al. | EDDL and semantic web—From field device integration (FDI) to Future Device Management (FDM) | |
WO2021024520A1 (ja) | 情報処理装置、サポートプログラムおよびサポートシステム | |
US8490069B2 (en) | Method for validating a graphical workflow translation | |
JP5726108B2 (ja) | 編集装置および編集方法 |
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 |