KR101286141B1 - 다관절 로봇 uml 설계 모델의 자동 생성방법 - Google Patents

다관절 로봇 uml 설계 모델의 자동 생성방법 Download PDF

Info

Publication number
KR101286141B1
KR101286141B1 KR1020110114752A KR20110114752A KR101286141B1 KR 101286141 B1 KR101286141 B1 KR 101286141B1 KR 1020110114752 A KR1020110114752 A KR 1020110114752A KR 20110114752 A KR20110114752 A KR 20110114752A KR 101286141 B1 KR101286141 B1 KR 101286141B1
Authority
KR
South Korea
Prior art keywords
robot
model
class
generating
uml
Prior art date
Application number
KR1020110114752A
Other languages
English (en)
Other versions
KR20130049621A (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 KR1020110114752A priority Critical patent/KR101286141B1/ko
Publication of KR20130049621A publication Critical patent/KR20130049621A/ko
Application granted granted Critical
Publication of KR101286141B1 publication Critical patent/KR101286141B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/17Mechanical parametric or variational design

Abstract

본 발명에 따른 다관절 로봇 UML 설계 모델의 자동 생성방법은, 다관절 로봇 개발에 필요한 요구사항을 정의하는 과정과, 상기 정의된 요구사항을 분석한 후, 가상의 로봇 프로토타이핑 모델을 생성하는 과정과, 아틀라스 변환 언어(ATL)로 구현된 변환기를 통해 XML형태의 상기 로봇 프로토타이핑 모델을 변환하여, 클래스 다이어그램을 생성하는 과정과, 상기 생성된 클래스 다이어그램을 로봇동작을 위한 코드로 변환하는 과정을 포함하여 구성된다.
본 발명은 가상 프로토타입 모델을 클래스 다이어그램으로 자동 생성할 수 있다. 자동 생성된 클래스 다이어그램은 코드생성 기법을 통해서 다관절 로봇을 동작할 수 있는 코드를 생성할 수 있다. 기존의 방법처럼 가상의 프로토타입 모델을 쓰고 버리는 것이 아니라 설계에 재사용할 수 있는 것이다. 이렇게, 가상의 프로토타입 모델의 정보를 이용하여 설계모델을 생성하기 때문에 설계 단계의 시간을 절약할 수 있고 수작업으로 만들 때 발생하는 정보의 손실 문제를 방지할 수 있다. 결론적으로, 가상의 프로토타입 개발과 동시에 프로그램 개발이 가능하여 전체 개발 프로세스의 시간과 비용을 절감할 수 있는 효과가 있다.

Description

다관절 로봇 UML 설계 모델의 자동 생성방법{SYSTEM AND METHOD FOR Automatic Generation of UML Design Model for Multi-jointed Robot}
본 발명은 다관절 로봇 UML 설계 모델의 생성방법에 관한 것으로, 더욱 상세하게는 가상 프로토 타이핑을 이용한 다관절 로봇 UML 설계 모델의 자동 생성방법에 관한 것이다.
다관절 로봇은 여러 개의 관절로 이루어진 로봇으로 일족에서 다족의 형태이다. 이전에는 다리의 기계적인 메커니즘을 이용해 단순 동작만 가능하였다. 그러나 최근에는 다리의 관절을 모두 제어할 수 있게 하여 다양한 동작할 수 있도록 제작한다. 다관절 로봇에 의해, 물건 옮기기, 계단 오르기 등과 같이 복잡한 작업이 가능해졌고 교육, 엔터테이먼트, 군사용 등 그 활용도가 매우 높다.
다관절 로봇에는 LAURON, AirBug, Climber, Dante II 와 같은 여러 가지 형태의 로봇이 존재한다. 상기 LAURON은 평탄하지 않은 지역에서 안정적인 보행을 구현하기 위해 구성된 로봇으로 대벌레의 보행 모델을 제어 시스템에 적용하였다. 상기 AirBug는 자연계에서 관절의 가장 큰 특징인 근육과 힘줄을 모델링하였으며, 생물체의 근육은 가볍고 파워 효율이 좋으며, 큰 토크를 빠르게 움직일 수 있고, 제어 가능한 스프링-댐퍼 시스템이다. 상기 Climber는 6개의 다리를 사용하는 벽면을 기어 다닐 수 있게 제작된 로봇이다. 상기 Dante II는 화산 연구에 필요한 각종 샘플들을 수집하고 화산 상태를 감시하고 8족 보행의 팬터 그래프 방식의 다리를 지녔다.
다관절 로봇을 개발하기 위해서는 많은 관절 및 다수의 다리 제어를 위해 복잡한 처리를 수행하는 소프트웨어가 필요하다. 예를 들어 소형 다관절 로봇인 6족 로봇은 3개의 관절에 총 18개의 모터를 사용한다. 하나의 모터에는 동작하기 위해 최소 시간을 가지고 있기 때문에 모터의 수가 많아 질 경우 동작제어에 문제가 생긴다. 그 만큼 정교한 제어가 필요한 것이다. 또한, 동시에 여러 개의 다리를 움직여야 하기 때문에 가상의 모형을 이용하여 동작을 얻어내는 방법을 사용한다.
다관절 로봇의 동작을 만들기 위해서 가상 프로토타입(Virtual Prototype)을 이용한 개발방법이 사용된다. 이 방법은 로봇의 하드웨어를 만들기 전에 가상의 모형을 만들고 관절이 자연스럽게 움직이는지 이동성에 문제가 없는지를 검사한다. 또한 로봇의 동작을 미리 생성해보고 이를 가상으로 실행시켜 볼 수 도 있다.
가상 프로토타이핑(Virtual Prototyping)은 조립체의 가시화 및 조립 과정의 적합성을 검증하기 위하여 각 부품을 3차원 형상 모델로 표현하고 이들을 조립한 디지털 목업(digital mock-up (DMU)) 또는 가상 시제품(virtual prototype)을 생성시키는 작업을 수행한다. 실제 제품을 만들어 테스트하기에는 현실적으로 비용이 많이 들어 갈 때 사용한다.
도1은 종래의 가상 프로토타이핑 개발 절차를 나타낸 흐름도이다.
디자이너, 사용자가 가상현실 인터페이스(Virtual Reality Interface)를 이용하여 모델을 설계하는 단계를 디자인 월드(Design World)라고 한다. 디자인 월드(Design World)에서 만들어진 모델은 버츄얼 월드(Virtual World)에 놓아지게 된다. 이때 버츄얼 월드(Virtual World)에서 구동되는 모델을 가상 프로토타입 (Virtual Prototype)이라고 한다. 이렇게 만들어진 가상 프로토타입(Virtual Prototype)은 리얼 월드(Real World)에 하드웨어 프로토타입(Hardware Prototype)으로 만들어지기도 한다.
가상 프로토타이핑(Virtual Prototyping)에서 사용한 가상의 모델은 시스템 개발에 사용되는 것이 아니라 동작을 수행하였을 때 역학이나 기구적인 문제 등 에 사용된다. 결국에 소프트웨어 설계를 위해서는 가상 프로토타입(Virtual Prototype) 모델은 버려지고 재설계를 한다.
예를 들어, MSRS(Microsoft Robotics Studio)에서도 가상의 환경에 로봇을 만들지만 시뮬레이션 용도로만 사용되고 소프트웨어 개발을 위해서는 사용되지 않는다. MSRS는 로봇 분야에 관심이 있는 개발자, 학생 또는 일반인들이 프로그래밍에 대한 기본적인 지식만 가지고 있으면, 다양한 로봇 하드웨어 상에서 필요로 하는 다양한 로봇 어플리케이션을 쉽게 개발할 수 있도록 지원하는 개발 툴 및 환경이다. 시뮬레이션 환경을 지원하여 H/W 로봇이 없이도 로봇 프로그램이 가능하다. 이때, 사용되는 시뮬레이션은 로봇의 수행 동작을 가상으로 확인하는 용도로 사용된다.
가상 프로토 타이핑 방법을 이용하면 소프트웨어 개발 전에 많은 정보를 얻을 수가 있다. 하지만 소프트웨어 개발을 위해서 가상의 모형을 UML 다이어그램을 이용한 재설계를 해야 하기 때문에 개발 생명주기(Life Cycle)가 길어진다. 가상의 모형을 정교하게 만들수록 소프트웨어를 설계할 시간이 그 만큼 짧아진다. 만약에 가상의 프로토타입 모델이 소프트웨어 설계 모델로 자동변환 된다면 소프트웨어 설계에 들어가는 비용을 절약할 수 있고 그 노력을 더 좋은 프로토타입 모델을 만드는데 투자할 수 있을 것이다.
한국공개특허 10-2009-0093142호(발명의 명칭: 다관절 로봇 시뮬레이션 제어프로그램 개발 도구)
기존의 가상 프로토타이핑 모델을 이용한 시스템 개발은 프로토타이핑 모델을 설계 후 이것을 개발하기 위해서 다시 UML모델로 재설계해야 했다. 하지만 이 방법은 UML모델의 재설계로 인해 시스템의 개발 기간이 길어지는 문제점이 있다.
본 발명은 이러한 문제를 해결하기 위한 것으로, 다관절 로봇의 프로토타이핑 모델을 UML으로 자동 생성하는 다관절 로봇 UML 설계 모델의 자동 생성방법을 제공하는데 그 목적이 있다.
본 발명의 부가적인 특성 및 이점들은 아래의 설명에 기재될 것이며, 부분적으로는 상기 설명에 의해 명백해지거나 본 발명의 실행을 통해 숙지될 것이다. 본 발명의 목표 및 다른 이점들은 특히 아래 기재된 설명 및 부가된 도면뿐만 아니라 청구항에서 지적한 구조에 의해 구현될 것이다.
본 발명은 가상 프로토타입 모델을 클래스 다이어그램으로 자동 생성할 수 있다. 자동 생성된 클래스 다이어그램은 코드생성 기법을 통해서 다관절 로봇을 동작할 수 있는 코드를 생성할 수 있다. 기존의 방법처럼 가상의 프로토타입 모델을 쓰고 버리는 것이 아니라 설계에 재사용할 수 있는 것이다.
이렇게, 가상의 프로토타입 모델의 정보를 이용하여 설계모델을 생성하기 때문에 설계 단계의 시간을 절약할 수 있고 수작업으로 만들 때 발생하는 정보의 손실 문제를 방지할 수 있다. 결론적으로, 가상의 프로토타입 개발과 동시에 프로그램 개발이 가능하여 전체 개발 프로세스의 시간과 비용을 절감할 수 있는 효과가 있다.
도1은 종래의 가상 프로토타이핑 개발 절차를 나타낸 흐름도.
도2는 로봇 모델에서 UML모델로의 변환과정을 나타낸 절차도.
도3은 다관절 로봇의 모델 조합 도구를 나타낸 도면.
도4는 다관절 로봇의 모션 생성 도구를 나타낸 도면.
도5는 로봇 모델(Robot Model)의 메타모델을 나타낸 예시도.
도6은 KMC 로보틱스(Robotics)의 다관절 로봇에 관한 도면.
도7은 다관절 로봇의 구조를 모델로 표현한 구성도.
도8은 로봇 모델과 메타모델의 관계를 나타낸 도면.
도9는 하드웨어 컴포넌트의 종류를 나타낸 도면.
도10은 로봇 관절을 나타낸 도면.
도11은 로봇 모션 데이터를 나타낸 도면.
도12는 본 발명에 따른 Robot API의 예시도.
도13은 본 발명에 따른 클래스 다이어그램의 메타모델을 나타낸 도면.
도14는 데이터 타입(DataType)을 생성하기 위한 변환 룰1에 관한 도면.
도15는 데이터 클래스를 생성하기 위한 변환 룰2에 관한 도면.
도16은 모션 클래스를 생성하기 위한 변환 룰3에 관한 도면.
도17은 데이터 클래스와 모션 클래스간의 의존관계를 생성하기 위한 변환 룰4에 관한 도면.
도18은 Motion 클래스의 하위 클래스를 생성하는 변환룰5에 관한 도면.
도19는 RefAction를 이용하여 클래스를 생성하는 변환 룰6에 관한 도면.
도20은 매핑(Mapping)을 이용하여 연관관계를 생성하는 변환 룰7에 관한 도면.
도21은 관절을 이용하여 연관관계를 생성하는 변환 룰8에 관한 도면.
도22는 본 발명에 따라 모델 변환된 클래스 다이어그램에 관한 도면.
도23은 본 발명에 따른 6족 로봇의 모델 변환을 나타낸 도면.
도24는 본 발명에 따른 6족 로봇(센서추가)의 모델변환을 나타낸 도면.
도25는 본 발명에 따른 4족 로봇의 모델변환을 나타낸 도면.
상기와 같은 목적을 달성하기 위하여 본 발명에 따른 다관절 로봇 UML 설계 모델의 자동 생성방법은,
다관절 로봇 개발에 필요한 요구사항을 정의하는 과정과, 상기 정의된 요구사항을 분석한 후, 가상의 로봇 프로토타이핑 모델을 생성하는 과정과, ATLAS Transformation Language(ATL)로 구현된 변환기를 통해 XML형태의 상기 로봇 프로토타이핑 모델을 변환하여, 클래스 다이어그램을 생성하는 과정과, 상기 생성된 클래스 다이어그램을 로봇동작을 위한 코드로 변환하는 과정을 포함하여 구성된다.
바람직하게, 상기 가상의 로봇 프로토타이핑 모델을 생성하는 과정은, 모델 조합 도구에 의해, 로봇의 가상 프로토타입 모델을 생성하는 과정과, 모션 생성 도구에 의해, 상기 생성된 가상 프로토타입 모델을 가상의 환경에서 동작시키고, 그 동작에 관한 XML형태의 데이터 파일을 생성하는 과정으로 이루어지는 것을 특징으로 한다.
바람직하게, 상기 ATL로 구현된 변환기는, 크리에이션(Creation)룰, 모디피케이션(Modification)룰, 무브(Move)룰의 3가지 형태의 변환 룰을 수행하는 것을 특징으로 한다.
본 발명의 착안점은 다관절 로봇과 UML(Unified Modeling Language) 모델의 메타모델을 이용하여 다관절 로봇의 프로토타입 모델을 클래스 다이어그램으로 자동 생성시킬 수 있는 변환 룰을 고안하여, 다관절 로봇 UML 설계 모델을 자동으로 생성하는 방법을 구현하는데 있다. 본 발명은 Creation룰, Modification룰, Move룰을 이용하여, 총 8가지의 변환 룰을 제안하였다.
상기 Creation룰들은 다관절 로봇이 모션을 처리하는 소프트웨어 아키텍처를 만들어 내기 위해서 사용하였다. 상기 Modification룰들은 모션데이터를 각 클래스를 만들기 위해서 사용되었다. 상기 Move룰들은 로봇의 API가 클래스 구조의 형태로 변환되도록 사용되었다.
모델 변환의 실효성을 확인하기 위해서 3가지 모델에 대해서 각각 생성된 클래스 다이어그램의 모델과 수작업으로 생성한 클래스 다이어그램을 비교하였다. 그 결과 수작업으로 생성한 데이터와 자동 생성한 데이터가 일치하였다. 다관절 로봇을 사용하면 다관절 로봇의 모델만 생성하면 자동화 방법을 통해서 로봇을 동작할 수 있는 코드까지 생성할 수 있다.
본 발명은 서로 다른 형태의 이종 모델인 가상 프로토타이핑 모델을 클래스 다이어그램으로 자동 생성할 수 있다. 본 발명은 기존의 방법처럼 가상의 프로토타입 모델을 쓰고 버리는 것이 아니라 설계에 재사용할 수 있다. 그 결과, 가상의 프로토타입 개발과 동시에 프로그램 개발이 가능하여 전체 개발 프로세스의 시간과 비용을 절감할 수 있는 효과를 갖는다.
가상의 프로토타입 모델과 UML 모델과 같이, 서로 다른 이종의 모델 변환을 위해서는 모델을 정의한 메타모델이 필요하다. MDA(Model Driven Architecture)는 MOF(Meta-Object Facility)를 이용하여 이종의 메타모델을 하나의 메타모델 언어로 정의하여 상호운용을 가능하게 한다. UML은 이미 메타모델이 MOF로 설계되어 있으므로 그대로 사용이 가능하다. 하지만 가상의 프로토타입 모델은 그렇지 않기 때문에 MOF를 이용하여 메타모델을 설계할 필요가 있다. 본 발명은 모델 변환을 수행하기 위해서 가상의 프로토타입 모델을 MOF를 이용하여 설계하였다.
UML 메타모델은 모든 다이어그램을 포함하므로 여러 가지 패키지를 사용하여 복잡하게 구성되어있다. 그러나 본 발명은 UML의 모든 요소를 사용하는 것이 아니라 클래스 다이어그램만 사용한다. 그렇기 때문에 전체 UML 메타모델에서 필요한 기능만 추출하여 재설계하였다. 보다 정밀한 설계를 위해서는 클래스 다이어그램뿐만 아니라 시퀀스, 스테이트 다이어그램을 포함해야 한다. 하지만 가상의 프로토타입 모델의 정보는 정적인 구조만을 포함하고 있기 때문에 클래스 다이어그램만 생성이 가능하다. 또한 클래스 다이어그램은 프로그램 코드를 생성할 수 있는 가장 기본적인 다이어그램이기 때문에 현재의 방법을 이용하여 프로그램 개발이 충분하다. 향후, 가상의 프로토타입 모델 외에 시뮬레이션을 적용한다면 UML의 동적 모델을 적용 가능할 것이다.
모델 변환을 위해서는 메타모델의 정의와 변환을 위해 사용되는 언어가 필요하다. 모델변환 언어에는 UMT(UML Model Transformation), MTL(Model Transformation Language), QVT(Query / View / Transformation), ATL(ATLAS Transformation Language) 등이 있다. 상기 UMT(UML Model Transformation)는 XML, XMI[15], XSLT를 이용한 방법이다. 모델변환으로 입력되는 값이 XMI이지만 이는 근본적으로 XML이기 때문에 XML의 변환언어인 XSLT를 사용하여 변환한다. 상기 MTL(Model Transformation Language)은 DSL(Domain Specific Language)로 작성된 소스모델에 대해서 모델변환이 가능하며 자바 가상머신의 개념을 응용해서 메타모델 언어로 작성된 메타모델을 일종의 컴파일러처럼 변환한다. 상기 QVT(Query / View / Transformation)는 OMG에서 표준으로 추진하는 모델 변환 언어로 When, Where등과 같이 구체적으로 변환된 시점을 정확하게 표현할 수 있는 장점이 있으면 패턴을 만들어 재사용할 수 있다. 상기 ATL(ATLAS Transformation Language)은 상기 MTL과 마찬가지로 변환 정의 언어이면서 변환엔진으로 MDA 프레임워크를 이용한 모델변환을 지원한다.
ATL은 ATLAS INRIA & LINA 연구 단체가 개발한 모델 변환 언어이다. 이것은 메타모델 및 모델로 지정된 모델 변환 언어이다. ATL은 개발자들에게 원본 모델에서 다수 대상 모델로 일으키는 방법을 지정하는 방법 제공한다.
ATL언어는 서술적이고 긴급한 프로그램 언어의 일부이다. 변환 언어를 표현하는데 선호하는 방법은 서술적인 것이다. 그것은 단순히 원본과 대상 모델 성분 사이에 매핑을 표현하는 것을 가능하게 한다. 또한, ATL은 간단하게 서술적으로 표현될 수 없는 복잡한 명세를 위하여 OCL(Object Constraint Language)을 사용한다.
ATL이 정의하는 규칙은 원본 모델의 성분이 어떻게 일치하고 대상 모델의 성분을 창조하고 초기화하기 위한 방법으로 구성된다. 기본적인 모델 변환 외에, ATL는 모델에 요구를 지정하는 것을 가능하게 하는 질의문을 정의한다. 또한 ATL은 ATL 라이브러리의 정의를 통해 모듈화를 허용한다.
ATL 통합 개발 환경(IDE)은 다수 표준 ATL 변환의 디자인을 쉽게 하기 위하여 개발 도구를 제공한다. ATL 개발 환경은 또한, 모델과 메타모델의 취급에 다수 추가기능을 제안한다. 이 특징은 메타모델의 명세에 전념한 간단한 본문 표기법, 또한 일반적인 본문 통어론과 그들의 대응 모형 대표 사이 다수 기준 교량을 포함한다.
ATL은 무엇보다도 상기 MTL(Model Transformation Language)이 가지고 있었던 변환규칙 정의를 보다 명확하고 이해하기 쉬우며 복잡한 변환규칙에 대한 정의가 가능하다. 또한 변환모델에 대해서 재사용 및 합성을 지원하는 장점을 가지고 있다. 본 논문에서는 여러 가지 변환언어들 중에서 ATL이 가장 명확하고 이해하기 쉬운 언어였고 Eclipse와 같은 도구지원이 잘되어 있어서 변환언어로 사용하였다. 가상 프로토타입 모델을 클래스 다이어그램으로 변환하기 위해서 8가지 룰이 사용되었고 ATL로 기술하였다.
UML 모델의 코드 생성에 관해 설명하면, UML 모델의 코드 생성은 코드 메타 모델과 코드 생성 템플릿을 이용하여 코드를 생성한다. 코드 메타 모델은 클래스 다이어그램, 병렬 메시지 다이어그램, 병렬 상태 다이어그램의 정보를 공통의 저장하는 모델이다. 클래스 다이어그램에서는 정적인 구조인 클래스 이름, 메서드, 속성의 정보가 코드 메타 모델에 저장된다. 시퀀스 다이어그램은 코드 생성을 위한 중간단계로 클래스와 클래스의 상호작용에 대한 내용이 메서드 내부에 기록된다. 상태 다이어그램에서 이벤트는 메서드 이름이 되고 각 상태가 메서드의 내용이 된다. 최종적으로 상태 다이어그램이 완성되면 상태 다이어그램의 코드가 메서드 내부의 내용을 덮어씌운다.
코드 템플릿은 각 언어마다의 코드 형태가 지정되어 있어 코드 메타 모델의 요소에 관한 코드를 생성한다. 또한 코드 템플릿은 코드 생성의 확장을 관리하기 위해서 사용한다. 각각의 코드 템플릿에 맞게 코드 메타 모델을 매핑하면 해당 언어의 코드를 생성하게 된다. 생성된 코드 메타 모델이 해당 언어별 코드와 매핑되며 코드 템플릿이 적용되면서 그 위치에 코드 메타 모델이 반영된다.
> Virtual prototyping based Development Process for Multi-Joint Robot
도2는 로봇 모델에서 UML모델로의 변환과정을 나타낸 절차도이다.
도2에 도시된 바와 같이, 본 발명에 따른 다관절 로봇 개발 프로세스는 다관절 로봇의 개발을 위해서 프로토타이핑부터 코드 생성까지의 전 과정을 자동화로 수행한다.
다관절 로봇 개발 프로세스는 요구사항 분석, 프로토타이핑, 설계, 구현 순으로 진행된다. 상기 요구사항 분석단계에서는 요구사항을 정의한다. 요구사항 분석에는 Use case Approach가 사용되며 각 요구사항은 명세서로 기술된다. 상기 프로토타이핑 단계는 상기 요구사항 분석의 결과를 통해서 가상의 로봇 모형과 동작을 만든다. 로봇의 부품들을 이용하여 가상의 모형을 조립하고 모션 생성을 통해서 동작을 만든다. 이 가상의 프로토타입 모델은 본 논문에서 제안하는 변환규칙을 통해서 설계단계의 UML 모델을 생성하게 된다. 생성되는 UML 모델은 클래스 다이어그램이다. 현재에는 클래스 다이어그램만 적용되어 있지만 향후에 시뮬레이션과 동적인 요소를 추가하여 시퀀스 다이어그램, 상태 다이어그램을 추가할 것이다. 이렇게 생성된 UML 모델은 코드생성 기법을 통해서 최종 코드를 생성한다.
본 발명에 따른 모델변환 단계를 자세히 설명하면, 로봇 모델은 XML형태의 데이터가 입력되고 ATL을 이용하여 구현된 변환기를 통해서 클래스 다이어그램의 XMI를 자동 생성한다. 모델 변환은 가상의 프로토타이핑 모델과 설계를 자동 연결해 준다. 이렇게 이종의 모델을 변환하기 위해서는 각각의 메타모델이 필요하다. UML의 메타모델은 OMG 표준에 의해서 MOF로 정의되어 있다. 그러나 로봇 모델은 있지만 MOF로 메타모델이 설계되어 있지 않다. 그러므로 로봇 모델은 MOF형태로 메타모델의 재설계가 필요하다. 또한 기존의 UML의 메타모델의 내용은 광범위하기 때문에 적용한 모델로 축소할 필요가 있다.
상기 가상의 프로토타이핑을 위해서는 VirRobot이 사용된다. VirRobot은 모델 조합 도구와 모션 생성도구로 구성되어 있다. 그리고 모델 변환을 위해서는 Eclipse가 사용된다. Eclipse에는 ATL변환 프레임워크를 제공한다. 모델의 설계부터 구현은 HiMEM(Hongik MDD based Embedded S/W Component Development Methodology)을 사용한다. HiMEM은 이종의 임베디드 시스템을 개발하기 위한 도구로써 모델링부터 코드 생성과정을 지원하게 된다. 이렇게 가상 프로토타이핑을 위한 VirRobot 도구와 설계 및 코드 생성을 위한 도구 HiMEM이 기존에 사용되고 있지만 이 두 도구간의 상호 협력을 위해서 모델 변환 기법이 필요하였다.
VirRobot은 홍익대학교와 (주)케이엠씨로보틱스가 산학협력을 통해 만든 다관절 로봇용 프로토타이핑 도구이다. 이 도구는 현재 중고등학교를 대상으로 교육용으로 사용되고 있다. VirRobot에 사용하는 다관절 로봇은 다양한 형태로 만들어 질 수 있다. 다리를 1~10개를 만들 수 있고 카메라, 초음파, 온도 등의 여러 가지 센서들을 부착할 수 도 있다. VirRobot은 다관절 로봇을 만들기 위해서 모델 조합 도구와 모션 생성 도구로 구성되어 있다.
도3은 다관절 로봇의 모델 조합 도구를 나타낸 도면이다.
모델 조합 도구는 로봇의 가상 프로토타입 모델을 만들기 위한 것이다. 도3에 도시된 바와 같이, 각 부품들은 미리 등록되고, 등록된 부품들을 조립하는 것으로 다관절 로봇이 만들어지게 된다. 로봇의 부품은 등록 및 삭제가 가능하다. 부품의 조합에 따라 여러 가지 형태의 로봇을 완성할 수 있다.
이렇게 생성된 다관절 로봇의 프로토타입은 XML형태의 파일로 생성된다. 이것은 모션 생성 도구에서 로봇 모델을 읽을 수 있어야 하기 때문이다. 이렇게 로봇의 가상 프로토타입을 쉽게 생성하기 위해서 모델구성 도구를 사용한다.
도4는 다관절 로봇의 모션 생성 도구를 나타낸 도면이다.
모션 생성 도구는 모델 조합 도구로 생성한 가상의 프로토타입 모델을 가상의 환경에서 움직여 동작을 생성 할 수 있는 도구이다. 도4에 도시된 바와 같이, 모션 생성 도구는 각 관절을 움직일 수 있는 관절각이 화면에 표시된다. 또한, 한 동작 마다 생성되는 다관절 로봇의 모션이 순차적으로 수행되도록 하여 로봇을 움직이게 된다.
모션 생성 도구에서는 모델 조합 도구에서 입력한 가상의 프로토타입 모델과 모션들의 조합으로 XML형태의 데이터 파일을 생성할 수 있다. 이 파일에는 로봇의 부품 정보, 조인트 정보, 시스템에 연결 가능한 라이브러리 API 등을 포함한다. 모션 생성 도구가 가상의 프로토타입 모델을 포함하기 때문에 본 논문에서는 모션 생성 도구의 파일을 기반으로 모델 변환하였다. 또한 모션 생성 도구에는 로봇의 움직일 수 있는 모션 데이터를 가지고 있기 때문에 클래스 다이어그램 생성만으로도 로봇을 동작시킬 수 있는 코드를 생성할 수 있다.
본 발명에 관한 이해를 돕기 위해, 이하 본 발명이 제안한 개발프로세스에 따라 기술한다. 순서는 프로토타이핑 단계(Prototyping Phase), 변환 단계(Transformation Phase), 디자인 단계(Design Phase)로 기술된다.
> 프로토타이핑 단계( Prototyping Phase )
프로토타이핑 단계에서는 다관절로봇의 모델의 생성과 모션을 생성한다. 이러한 다관절 로봇의 모델과 모션을 생성하기 위해서는, 이를 정의할 수 있는 메타모델이 제공되어야 한다. 또한 로봇의 모델이 어떻게 구성되는지에 대한 설명이 필요하다. 그리고 UML 모델에 대한 메타모델의 정의가 필요하다. UML의 메타모델은 디자인 단계에서 설명해야 되지만 로봇의 메타모델과 UML 메타모델이 ATL에서 사용하기 때문에 미리 설명하였다. 이하에서 설명되는 내용은 모델 변환을 이해하기 위한 기초 자료가 된다.
>> 로봇 모델의 메타모델(Meta-model of Robot Model)
로봇 모델 구성 도구는 부품들을 불러와 모델을 만드는 로봇 모델 단계, 부품들을 연결하는 로봇 조합 단계, 로봇의 행위를 생성하는 모션생성 단계로 구성되어있다. 이러한 정보는 XML의 형태로 저장된다. 로봇 모델의 메타모델도 이러한 요소를 충분히 반영될 수 있도록 설계 되어야 한다.
도5는 로봇 모델(Robot Model)의 메타모델을 나타낸 예시도이다.
도5에 도시된 바와 같이, 본 발명에 따른 로봇 모델(Robot Model)은 하드웨어 컴포넌트(Hardware Component), 관절(Joint), 액션(Action)으로 이루어진다.
상기 하드웨어 컴포넌트(Hardware Component)는 로봇의 부품으로, 각 컴포넌트의 타입은 프레임(Frame), 센서(Sensor), 액츄에이터(Actuator), 바디(Body)로 나누어진다. 상기 프레임(Frame)은 아무런 움직임을 수행할 수 없는 것으로 3D 그래픽 데이터(Graphic Data)만 가지고 있다. 상기 센서(Sensor)는 액티브(Active)와 패시브(Passive) 이벤트를 만들 수 있다. 예를 들어, 초음파 센서는 계속적으로 초음파를 발생시켜 되돌아오는 초음파의 시간으로 거리를 측정한다. 이때, 거리의 변화가 발생할 때마다 인터럽트를 발생시키는 액티브 이벤트(Active Event)로 구성할 수 있지만 데이터의 요청이 있기 전까지 아무런 행동을 하지 않는 패시브 이벤트(Passive Event)로 구성할 수 있다. 상기 액츄에이터(Actuator)는 포스(Force)를 지정하여 움직임의 레벨과 속도를 지정할 수 있다. 액츄에이터(Actuator)의 종류에는 디씨 모터(DC Motor), 서보 모터(Servo Motor) 등이 있다. 상기 바디(Body)는 로봇을 제어할 수 있는 MCU를 말한다. 바디(Body)는 로봇의 하드웨어 프레임의 일부분이지만 로봇 몸체 안에는 MCU가 있으므로 바디(Body)를 통해 MCU를 제어할 수 있다고 정의하였다. 모든 하드웨어 컴포넌트는 'refActionID'를 갖는다. 이것은 로봇을 동작할 수 있는 API들과 연결시킬 수 있다.
상기 관절(Joint)은 각각 분리되어 있는 하드웨어컴포넌트를 연결시킨다. 관절 타입(Joint Type)에는 고정(Fixed), 볼(Ball), 힌지(Hinge), 슬라이더(Slider)로 구성되어 있다. 상기 고정(Fixed)형 관절은 단순히 고정할 수만 있다. 상기 볼(Ball)형 관절은 구형으로 360도 전 방향으로 움직일 수 있다. 상기 힌지(Hinge)형 관절은 경첩과 같은 형태로 180도만 수평적으로 움직일 수 있다. 상기 슬라이더(Slider)형 관절은 실린더와 같이 수직으로만 움직일 수 있다. 하나의 관절은 connectionStart, connection, connectionEnd의 묶음으로 존재한다. 여기에 'refComponentID'는 하드웨어컴포넌트를 말한다.
상기 액션(Action)은 RefAction, Mapping, Motion으로 구성된다. 상기 RefAction은 로봇을 동작시키기 위한 로봇 API들로 구성되어 있다. 하나의 RefAction에는 여러 가지의 변수와 함수로 구성할 수 있다. 상기 Mapping은 각 RefAction과의 관계를 형성하면 이를 연결할 수 있도록 한다. 상기 Motion은 로봇을 동작시키기 위한 정보로 로봇의 각 관절의 각도 값을 저장하고 있다.
>> Model of Robot for VirRobot
로봇 모델은 메타모델의 규칙을 통해서 생성된다. 그러므로 로봇의 모델은 메타모델에 비하여 더 많은 내용을 담고 있다. 모두 한 번에 설명이 가능하겠지만 효과적으로 설명하기 위해서 로봇 모델의 구조, 하드웨어 컴포넌트, 관절, 모션데이터, Robot API의 순서대로 분류하여 설명하겠다.
>>> 로봇 모델의 구조
도6은 KMC 로보틱스(Robotics)의 다관절 로봇에 관한 도면이다.
도6에 도시된 바와 같이, VirRobot에 사용하는 로봇 모델은 실제 로봇을 가상 프로토타이핑 한 모델이다. 이 다관절 로봇은 6개의 다리와 18개의 관절로 움직인다. 각 관절에 모터가 사용되어 18 자유도를 가진다. 다리가 많이 사용되기 때문에 2족을 사용하는 로봇에 비하여 균형을 쉽게 잡을 수 있는 장점이 있지만 많은 수의 다리를 제어해야 하기 때문에 배터리가 빨리 소모되고 이동 속도가 느린 단점이 있다. 하지만 다수의 다리를 통해서 다양한 동작이 가능하다.
도7은 다관절 로봇의 구조를 모델로 표현한 구성도이다.
도7에 도시된 바와 같이, 각각의 부품은 관절(Joint)로 연결되는데, 이 다관절 로봇에서는 고정(Fixed)형 관절과 힌지(Hinge)형 관절만 사용되었다. 다리에 사용되는 프레임(Frame)은 번호가 생성되고 이러한 이름은 가상의 프로토타입 모델의 3D그래픽과 연관되어진다. 총 24개의 프레임이 사용되었는데 Frame4, Frame8, Frame12, Frame16, Frame20, Frame24는 바닥면을 지지하는 원통형 막대이다. 그리고 바디(Body)는 각 다리를 연결할 수 있는 몸통을 말하고 헤드(Head)는 다관절 로봇을 반원모향의 머리부분을 가르킨다.
도8은 로봇 모델과 메타모델의 관계를 나타낸 도면이다.
상기 가상의 다관절 로봇 모델은 메타모델과 연결되어 있다. 전체 모형은 로봇 모델(RobotModel)이고 이것은 하드웨어 컴포넌트(HadwareComponet)와 관절(Joint)부분으로 나누어진다. 도8에 도시된 바와 같이, 하드웨어 컴포넌트(HardwareComponet)는 여러 개의 컴포넌트(Component)로 구성되는데 이 컴포넌트(Component)가 프레임(Frame)을 말한다. 그리고 과절(Joint)은 여러 개의 컴넥션(Connection)들로 구성되는데, 이 커넥션(Connection)은 시작과 끝을 포함한다. 그렇기 때문에 관절(Joint)은 커넥션스타트(ConnectionStart), 커넥션(Connection), 커넥션엔드 (ConnectionEnd)의 3부분으로 나누어진다. 힌지(Hinge)관절과 고정(Fixed)형 관절로 구성될 수 있는 부분이 커넥션(Connection)이다.
>>> 하드웨어 컴포넌트(Hardware Component)
로봇의 다관절 로봇을 부품의 종류는 프레임(Frame), 액츄에이터(Actuator), 센서(Sensor), 바디(Body)의 4가지로 구성되어있다. 다관절 로봇을 구성시키기 위해서는 머리, 몸통, 다리의 프레임(Frame)이 필요하다. 이것들은 각 컴포넌트(Component)를 구성하기 위한 타입일 뿐이고 모두 컴포넌트(Component)로 표현된다.
도9는 하드웨어 컴포넌트의 종류를 나타낸 도면으로, 하드웨어 컴포넌트 별 구성되는 3D 그래픽과 저장되는 XML에 대해서 설명하고 있다.
탑 바디(Top Body)를 보면 생성되는 XML은 타입(type), 아이디(id), 네임(name), 그래픽(graphic)으로 구성된다. 상기 타입(type)은 이 컴포넌트(component)가 형태의 근원이 어떤 것인지 표현한다. 상기 아이디(id)는 이 컴포넌트(component)를 식별할 수 있는 유일한 값이다. 상기 네임(name)은 이 컴포넌트(component)의 이름이다. 그리고 상기 그래픽(graphic)은 3D 데이터가 저장된 파일 이름과 경로를 나타낸다. 좀 더 복잡한 형태의 컴포넌트를 살펴보기 위해서 Leg4를 보면, 2개의 컴포넌트(component)로 구성되어 있는 것을 확인할 수 있다. 이것은 Leg4가 바디(Body)와 연결되기 때문에 이를 연결해주는 컴포넌트(component)가 필요하기 때문이다. 이 컴포넌트의 타입은 액츄에이터(Actuator)이다. 이것의 특징은 그래픽(Graphic) 속성이 없고 'refActionID'가 있다. 그래픽(Graphic) 속성이 없다는 것은 화면에 표시되지 않는 컴포넌트라는 의미이다. 그리고 'refActionID'가 있다는 것은 로봇의 API 함수와 연결된다는 것을 의미한다.
>>> 관절(Joint)
관절(Joint)은 실제로 화면에 보이지가 않는다. 이것은 컴포넌트와 컴포넌트를 연결시켜 주는 역할만 한다. 컴포넌트와 컴포넌트를 연결할 때 사용하는 'refComponetID'는 상기 관절과의 관계를 맺는 컴포넌트를 의미한다. 관절(Joint)은 이렇게 보이지는 않지만 각각의 컴포넌트와 연결되어 있다.
도10은 로봇 관절을 나타낸 도면이다.
도10에 도시된 바와 같이, 관절(Joint)의 종류에는 볼(Ball), 힌지(Hinge), 슬라이더(Slider)가 있다. 상기 힌지(Hinge)형 관절은 경첩형태로 0도에서 180도로 접었다 폈다할 수 있다. 이것은 주로 서보모터에 사용한다. 상기 볼(Ball)형 관절은 360도로 자유자제로 움직일 수 있는 형태로 하나의 모터가 아니라 2개의 모터를 사용하여 전 방향으로 구성할 때 사용한다. 상기 슬라이더(Slider)형 관절은 피스톤처럼 수평 이동할 수 있는 것으로 수직 운동을 할 때 사용한다.
>>> 모션 데이터(Motion Data)
도11은 로봇 모션 데이터를 나타낸 도면이다.
로봇의 모션 데이터는 각 관절의 모터 값들을 순차적으로 기록한 것이다. 도11의 Forward Step 1을 보면 id와 value의 속성을 가진다. 상기 id는 순번을 나타내고 value는 각 모터들의 관절값과 속도와 지연시간을 기록한 것이다. 다관절로봇이 앞으로 전진을 하기 위해서는 하나의 모션만으로 움직이는 것이 아니라 도11에 도시된 바와 같이 Forward Step 1~4까지의 모션을 순차적으로 수행해야 한다.
>>> 로봇(Robot) API
도12는 본 발명에 따른 Robot API의 예시도이다.
다관절 로봇에 사용되는 모터와 같은 일반적인 부분은 이것을 제어하는 API 함수를 가질 수 있다. VirRobot은 이러한 기존의 라이브러리와 로봇 모델간의 연결이 가능하기 때문에 도12에 도시된 바와 같이 Robot API를 기술하는 것이 가능하다. 본 발명에 따른 로봇 API는 객체지향과 절차지향 모두 사용할 수 있도록 'attr'와 'method'를 같이 기술할 수 있도록 하였다. 상기 attr의 name은 속성의 이름이고, type은 속성의 데이터 타입이다. method의 name은 메서드의 이름이고 returnType은 리턴 타입이고, parameter는 입력 매개 변수를 의미한다. 이러한 정보는 'refAction'으로 묶이고 객체지향일 때는 이 name이 클래스의 이름이 되고 절차지향일 때는 파일의 이름이 된다.
>> 클래스 다이어그램의 메타모델(Meta-model of Class Diagram)
UML 2.2의 메타모델은 컴플라이언스 레벨(Compliance Level)을 3까지 가지고 있다. UML 2.2의 메타모델의 전부인 Level 3은 14개의 랭귀지 유닛(Language Unit)과 39개의 패키지(Package)로 구성되어 있다.
하기 [표 1]은 Language Unit과 Package에 관한 테이블이다.
[표1]에서 클래스 다이어그램과 관련된 Language Unit은 Classes이고, 관련된 패키지는 Classes::Kernel, Classes::Dependencies, Classes::Interfaces, Classes::AssociationClasses, Classes::PowerTypes이다. 이와 관련된 클래스는 총 61개이다. 이중에서 클래스 다이어그램에서 사용하는 클래스는 Association, Aggregation, Class, Composition, Dependency, Generalization, Interface, InterfaceRealization, Realization으로 총 9개 이지만 연관된 클래스를 포함하면 더 많은 클래스를 포함한다.
Language Unit Metamodel Packages
Actions Actions::BasicActions
Actions::StructuredActions
Actions::IntermediateActions
Actions::CompleteActions
Activities Activities::FundamentalActivities
Activities::BasicActivities
Activities::IntermediateActivities
Activities::StructuredActivities
Activities::CompleteActivities
Activities::CompleteStructuredActivities
Activities::ExtraStructuredActivities
Classes Classes::Kernel
Classes::Dependencies
Classes::Interfaces
Classes::AssociationClasses
Classes::PowerTypes
Components Components::BasicComponents
Components::PackagingComponents
Deployments Deployments::Artifacts
Deployments::Nodes
Deployments::ComponentDeployments
General Behavior CommonBehaviors::BasicBehaviors
CommonBehaviors::Communications
CommonBehaviors::SimpleTime
Structures CompositeStructure::InternalStructures
CompositeStructures::InvocationActions
CompositeStructures::Ports
CompositeStructures::StructuredClasses
CompositeStructures::Collaborations
CompositeStructures::StructuredActivities
Interactions Interactions::Fragments
Interactions::BasicInteractions
State Machines StateMachines::BehaviorStateMachines
StateMachines::ProtocolStateMachines
UseCases UseCases
Information Flows AuxilliaryConstructs::InformationFlows
Models AuxilliaryConstructs::Models
Templates AuxilliaryConstructs::Templates
Profiles AuxilliaryConstructs::Profiles
도13은 본 발명에 따른 클래스 다이어그램의 메타모델을 나타낸 도면이다.
본 발명에서 사용하는 클래스 다이어그램은 UML 2.2 메타모델에서 정의하고 있는 많은 수의 메타모델의 클래스를 필요로 하지 않기 때문에 불필요한 클래스는 제거할 필요가 있었다. 그래서 도13에 도시된 바와 같이, 총 29개의 클래스로 축소시켰다. 그러나 UML 2.2의 메타모델의 구조는 변경하지 않았다. 다만, 필요없는 클래스만 제거한 것이다. 그 결과 복잡한 구조로 되어있는 UML 2.2 메타 모델을 한눈에 볼 수 있게 되었다.
> 변환 단계( Transformation Phase )
모델의 변환 단계에서는 아틀라스 변환 언어(ATL, ATLAS Translation Language)로 작성된 변환 룰을 실행한다. 변환 룰은 크리에이션(Creation), 모디피케이션(Modification), 무브(Move)로 총 3가지 형태로 분류될 수 있다. 상기 크리에이션(Creation)은 입력되는 모델없이 다관절 로봇의 기본 구조를 위해서 생성되는 룰이다. 이것은 다관절 로봇의 소프트웨어 기본구조가 이미 정해져 있기 때문이다. 즉 관절형 로봇을 개발할 때 사용되는 소프트웨어 아키텍처를 그대로 적용한다. 상기 모디피케이션(Modification)은 입력되는 모델의 데이터 값을 수정하거나 삽입하여 변형하는 형태를 말한다. 상기 무브(Move)는 메타모델의 구조만 달라 값들을 변환되는 메타모델의 형식에 맞도록 데이터 값을 이동하는 것을 말한다. 이러한 내용을 <표 2>에 정리 하였다. 이 표를 기준으로 각 룰을 설명하겠다. 하기 [표 2]는 이러한 카테고리 변환 룰에 관한 테이블이다.
Category Transformation Rule
Creation ATL_TR1 Create DataType
ATL_TR2 Create Data Class
ATL_TR3 Create Motion Class
ATL_TR4 Create Dependency between Data and Motion
Modification ATL_TR5 Create Sub-class of Motion class
Move ATL_TR6 Create Class Using RefAction
ATL_TR7 Create Association Using Mapping
ATL_TR8 Create Association Using Joint
>> ATL_TR1 Create DataType
도14는 데이터 타입(DataType)을 생성하기 위한 변환 룰1에 관한 도면이다.
클래스 다이어그램을 생성할 때 초기에 해야 하는 작업이 도14에 도시된 바와 같이, 데이터 타입(DataType)을 생성하는 것이다. UML도구를 사용하여 다이어그램을 생성할 때는, 도구가 알아서 만들어주지만 지금은 직접 생성해야 한다. 입력되는 로봇 모델의 내용은 관계없다. 하나의 로봇모델은 하나의 <RobotModel> 엘리먼트로 구성되기 때문에 한번 수행된다. 데이터 타입(DataType)을 생성하기 위한 변환 룰1은 도14에 자세히 도시되어 있다.
>> ATL_TR2 Create Data Class
도15는 데이터 클래스를 생성하기 위한 변환 룰2에 관한 도면이다.
Data 클래스는 로봇의 모션데이터를 넣을 수 있는 클래스이다. 모션데이터는 id와 value로 구성되기 때문에 이것을 생성한다. 입력되는 로봇 모델과 관계없이 단 한번만 생성된다. 데이터 클래스를 생성하기 위한 변환 룰2는 도15에 자세히 도시되어 있다.
>> ATL_TR3 Create Motion Class
도16은 모션 클래스를 생성하기 위한 변환 룰3에 관한 도면이다.
Motion 클래스는 Data 클래스들을 연결하여 하나의 행동을 저장하는 최상위 클래스이다. Motion클래스는 각 동작에 해당하는 하위 클래스를 가질 수 있다. 입력되는 로봇 모델과 관계없이 단 한번만 생성된다. 모션 클래스를 생성하기 위한 변환 룰3은 도16에 자세히 도시되어 있다.
>> ATL_TR4 Create Dependency between Data and Motion
도17은 데이터 클래스와 모션 클래스간의 의존관계를 생성하기 위한 변환 룰4에 관한 도면이다.
Motion 클래스에 메소드에 Data클래스가 사용되었으므로 이 둘은 의존관계를 가진다. 이것을 생성해준다. 입력되는 로봇 모델과 관계없이 단 한번만 생성된다. 데이터 클래스와 모션 클래스간의 의존관계를 생성하는 변환 룰4는 도17에 자세히 도시되어 있다.
>> ATL_TR5 Create Sub-class of Motion class
도18은 Motion 클래스의 하위 클래스를 생성하는 변환룰5에 관한 도면이다.
로봇모델의 모션 데이터를 읽어서, 행동과 관련된 클래스를 이미 생성한 Motion 클래스의 하위 클래스에 만들어 준다. 입력되는 Motion 데이터의 이름이 클래스 이름이 되고 각각의 data로서 Data클래스의 id와 value가 입력된다. 로봇모델의 모션데이터는 최종적으로 생성된 클래스에 new연산자를 이용하여 초기화된다. 그리고 생성한 클래스는 Motion클래스의 하위 클래스이기 때문에 Generalization 관계를 만들어 준다. Motion 클래스의 하위 클래스를 생성하는 변환 룰5는 도18에 자세히 도시되어 있다.
>> ATL_TR6 Create Class Using RefAction
도19는 RefAction를 이용하여 클래스를 생성하는 변환 룰6에 관한 도면이다.
로봇모델의 RefAction은 로봇의 부속 기관들(예: 모터 등)을 동작시키는 API(Application Program Interface)들의 집합이다. 그렇기 때문에 RefAction의 이름은 클래스 다이어그램의 이름으로 만든다. RefAction의 이름은 클래스 이름, Attr는 클래스의 멤버변수, Method는 클래스의 멤버함수, Parameter는 클래스의 메소드의 파라미터로 각각 대응된다. RefAction를 이용하여 클래스를 생성하는 변환 룰6은 도19에 자세히 도시되어 있다.
>> ATL_TR7 Create Association Using Mapping
도20은 매핑(Mapping)을 이용하여 연관관계를 생성하는 변환 룰7에 관한 도면이다.
다른 클래스들은 로봇모델의 Joint를 이용하여 연관관계를 설정할 수 있지만 로봇을 컨트롤하는 System 클래스와 미리 만들어 놓은 Motion클래스의 연관관계는 입력데이터 없이 만들 수 없다. 그래서 로봇 모델의 Mapping을 이용하여 System 클래스와 Motion클래스의 연관관계를 만든다. 입력모델에서의 Mapping은 System과 Motion을 연결한다는 의미를 가진다. 이것은 다관절 로봇의 동작을 위해서 System이 Motion으로부터 데이터를 가져온다는 것을 뜻한다. 이 연결은 모델 변환을 통해서 System 클래스와 Motion 클래스의 연관관계를 생성한다. 상기 System 클래스와 Motion클래스의 연관관계를 생성하는 변환 룰7은 도20에 자세히 도시되어 있다.
>> ATL_TR8 Create Association Using Joint
도21은 관절을 이용하여 연관관계를 생성하는 변환 룰8에 관한 도면이다.
관절(Joint)은 여러 개의 Connection으로 구성되고 Connection은 앞에서 정의한 다른 하드웨어 컴퍼넌트(Hardware Component)를 참조한다. 그리고 관절(Joint)은 고정(Fixed) 형태의 컴포넌트와 기능을 수행하지 않는 하드웨어 컴퍼넌트(그래픽만 표현하는 컴포넌트)들이 석여 있어 필요한 하드웨어 컴퍼넌트만 분리하는 작업이 필요하다. 그래서 모델 변환을 수행하기 전에 특별한 조건을 검사하도록 하고 ATL의 Helper를 이용하여 복잡한 부분을 간소화하였다. 관절(Joint)은 Connection - ConnectionStart - ConnectionEnd의 쌍으로 연결되는 구조이다. 이것은 하드웨어 컴퍼넌트-하드웨어 컴퍼넌트-하드웨어 컴퍼넌트의 구조와 같다. 이러한 형태는 클래스와 클래스 간의 연관관계와 비슷하기 때문에 관절(Joint)을 클래스 다이어그램으로 1:1변환하는게 가능하다. 이를 수행하기 위해서는 테이블 3의 조건1 또는 조건2를 만족하면 된다. 즉, Connection의 refComponetID가 무조건 -1이 아니어야 하고 ConnectionStart 또는 ConnectionEnd 둘 중에 하나만 RefAction을 가지고 있으면 된다. 하기 [표 3]은 관절(joint)의 클래스 변환 조건에 관한 테이블이다.
관절(Joint) 조건 1 조건 2
Connection Not -1 Not -1
ConnectionStart isRefAction -
ConnectionEnd - isRefAction
refComponentID가 -1이라는 것은 고정(Fixed) 형태로 모델에서 하드웨어 컴포넌트를 단순히 연결할 때 사용하는 것으로 클래스 다이어그램으로 생성이 불필요하다. 또한 ConnectionStart와 ConnectionEnd에 refActionID가 없는 것은 그래픽 형태의 하드웨어 컴포넌트이므로 클래스 다이어그램과 관계없다. 위에서 설명한 2가지 조건 중에 한가지만이라도 맞을 때 각각에 해당하는 클래스 다이어그램에 연관관계를 생성한다. 상기 관절을 이용하여 연관관계를 생성하는 변환 룰8은 도21에 자세히 도시되어 있다.
> 설계 단계( Design Phase )
도22는 본 발명에 따라 모델 변환된 클래스 다이어그램에 관한 도면이다.
설계 단계에 UML의 메타모델을 설계해야 하지만 이해를 돕기 위해 위에서 이미 클래스 다이어그램의 메타모델에 대해서 미리 설명하였다. 모델 변환시 UML의 메타모델을 기준으로 변환하게 된다. 다관절 로봇의 로봇모델을 입력으로 제안한 ATL Rule을 수행하면 도22에 도시된 바와 같이 클래스다이어그램이 생성된다. 총 6개의 클래스와 10개의 관계들이 생성되었다. System 클래스는 로봇을 제어하는 컨트롤 클래스이다. Motor클래스는 다관절 로봇을 동작하는 모터를 제어하는 클래스이다. Motion클래스는 로봇이 행동하는 각도 값을 저장하는 클래스로 하위 클래스로 Forward, Backward클래스를 가지고 있다. Forward는 앞으로 전진하는 모션이 저장되어 있고 Backward는 뒤로 후진하는 모션이 저장되어 있다. 이 클래스 다이어그램은 하나의 예이고 입력되는 로봇 모델의 데이터를 더 추가한다면 더 복잡한 클래스 다이어그램을 자동으로 생성할 수 있다. 또한 이 클래스 다이어그램과 기존에 만들어진 라이브러리의 API와 연동이 가능하다. 그렇기 때문에 클래스 다이어그램을 코드로 생성하여 로봇에 설치하면 로봇을 동작시킬 수 있다. 클래스 다이어그램은 모델변환 규칙에 의해서 D1 ~ D8 순으로 생성하게 된다. D1은 DataType으로 모델에서 사용하는 기본적인 변수 타입인 String, Integer, Boolean이 있다. D2는 하나의 모션값을 저장할 수 있는 Data 클래스이다. D3은 하나의 동작을 수행하기 위해 필요한 모션데이터를 관리하는 Motion 클래스이다. 이때 Data 클래스를 이용하여 각각의 모션데이터에 값을 속성으로 삽입된다. D4는 Data 클래스와 Motion 클래스의 의존관계이다. D5는 입력 모델에 생성되어 있는 행위들을 표현하기 위한 클래스로 Motion 클래스를 서브 클래싱한다. 현재 클래스는 Forward와 Backward만 가지고 있으므로 이 두 클래스가 표현되었다. D6은 입력 모델에 만들어진 Robot API를 이용하여 생성한 System과 Motor 클래스이다. Robot API에 따라서 다른 클래스가 생성될 수 있다. D7은 System 클래스가 행위를 수행하기 위해 모션을 사용하기 때문에 이들 간의 연관관계이다. D8은 입력모델의 관절을 통해서 생성된 System과 Motor클래스 간의 연관관계이다.
> 실험 및 검증
본 발명에 따른 다관절 로봇 모델 자동 생성방법의 실효성을 확인하기 위하여, 3 종류의 다관절 로봇에 대한 프로토타입 모델을 UML 모델로 자동 변환 하여 차이점을 비교 분석하였다. 3종류의 다관절 로봇 프로토타입은 6족 로봇의 모델, 6족 로봇에 센서를 추가한 모델, 4족 로봇의 모델이다. 생성된 XMI가 올바른 규칙을 가지는지 검증하기 위해서 기존의 UML 도구를 이용하여 클래스 다이어그램을 수작업으로 그려 생성된 XMI와 비교하였다.
도23은 본 발명에 따른 6족 로봇의 모델 변환을 나타낸 도면이다.
도23에 도시된 바와 같이, 본 발명의 모델변환에 따라 생성되는 클래스는 System, Motor, Motion, Data, Forward, Backward 이다. System 클래스와 Motor 클래스는 총 6개의 다리를 가지므로 6개의 연관관계 가 생성되었다. Motion, Data, Forward, Backward는 로봇의 모션데이터를 처리하기 위해 생성된 다관절 로봇의 아키텍처이다. 다관절 로봇은 이러한 구조로 설계되어진다.
상기 생성된 클래스다이어그램의 메타모델 단위로 수동으로 모델링한 경우와, 자동으로 생성된 경우를 비교하였다. 비교 요소는 DataType, Class, Attribute, 그 결과 id를 생성하는 메커니즘만 다를 뿐 전부 동일하였다. 하기 [표 4]는 6족 로봇의 XMI를 검증하기 위한 각 XMI의 비교 테이블이다.
DataType Automation <packagedElement xsi:type="uml:DataType" xmi:id="a2" name="String"/>
Manual <packagedElement xmi:type="uml:DataType" xmi:id="_Iac0WOtfEd6OJ99i0DhBUw" name="String" />
Class Automation <packagedElement xsi:type="uml:Class" xmi:id="a5" name="Data">
</packagedElement>
Manual <packagedElement xmi:type="uml:Class" xmi:id="_Iac0SetfEd6OJ99i0DhBUw" name="Data">
</packageElement>
Attribute Automation <ownedAttribute xsi:type="uml:Property" xmi:id="a9" name="data" type="a5" aggregation="composite">
<upperValue xsi:type="uml:LiteralUnlimitedNatural" xmi:id="a10" value="*"/>
</ownedAttribute>
Manual <ownedAttribute xmi:id="_Iac0TetfEd6OJ99i0DhBUw" name="data" type="_Iac0SetfEd6OJ99i0DhBUw" aggregation="composite">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Iac0TutfEd6OJ99i0DhBUw" value="*"/>
</ownedAttribute>
Operation Automation <ownedOperation xsi:type="uml:Operation" xmi:id="a11" name="GetData" visibility="public">
<ownedParameter xsi:type="uml:Parameter" xmi:id="a12" type="a5" direction="return">
<upperValue xsi:type="uml:LiteralUnlimitedNatural" xmi:id="a13" value="1"/>
</ownedParameter>
</ownedOperation>
Manual <ownedOperation xmi:id="_Iac0T-tfEd6OJ99i0DhBUw" name="GetData">
<ownedParameter xmi:id="_Iac0UOtfEd6OJ99i0DhBUw" type="_Iac0SetfEd6OJ99i0DhBUw" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Iac0UetfEd6OJ99i0DhBUw" value="1"/>
</ownedParameter>
</ownedOperation>
Parameter Automation <ownedParameter xsi:type="uml:Parameter" xmi:id="a25" name="degree" type="a3"/>
Manual <ownedParameter xmi:id="_Iac0ROtfEd6OJ99i0DhBUw" name="degree" />
Association Automation <packagedElement xsi:type="uml:Association" xmi:id="a66" name="system_motion" memberEnd="a67 a70">
<ownedEnd xsi:type="uml:Property" xmi:id="a67" name="system" type="a32" association="a66">
<upperValue xsi:type="uml:LiteralUnlimitedNatural" xmi:id="a68" value="*"/>
<lowerValue xsi:type="uml:LiteralInteger" xmi:id="a69" value="1"/>
</ownedEnd>
<ownedEnd xsi:type="uml:Property" xmi:id="a70" name="motion" type="a8" association="a66">
<upperValue xsi:type="uml:LiteralUnlimitedNatural" xmi:id="a71" value="1"/>
<lowerValue xsi:type="uml:LiteralInteger" xmi:id="a72" value="1"/>
</ownedEnd>
</packagedElement>
Manual <packagedElement xmi:type="uml:Association" xmi:id="_Iac0Y-tfEd6OJ99i0DhBUw" name="system_motion" memberEnd="_Iac0ZOtfEd6OJ99i0DhBUw _Iac0Z-tfEd6OJ99i0DhBUw">
<ownedEnd xmi:id="_Iac0ZOtfEd6OJ99i0DhBUw" name="system" type="_Iac0MOtfEd6OJ99i0DhBUw" association="_Iac0Y-tfEd6OJ99i0DhBUw">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Iac0ZetfEd6OJ99i0DhBUw" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Iac0ZutfEd6OJ99i0DhBUw" value="1"/>
</ownedEnd>
<ownedEnd xmi:id="_Iac0Z-tfEd6OJ99i0DhBUw" name="motion" type="_Iac0TOtfEd6OJ99i0DhBUw" association="_Iac0Y-tfEd6OJ99i0DhBUw">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Iac0aOtfEd6OJ99i0DhBUw" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Iac0aetfEd6OJ99i0DhBUw" value="1"/>
</ownedEnd>
</packagedElement>
Dependency Automation <packagedElement xsi:type="uml:Dependency" xmi:id="a14" name="data_motion" supplier="a5"
client="a8"/>
Manual <packagedElement xmi:type="uml:Dependency" xmi:id="_Iac0YutfEd6OJ99i0DhBUw" name="data_motion" supplier="_Iac0SetfEd6OJ99i0DhBUw" client="_Iac0TOtfEd6OJ99i0DhBUw"/>
Generalization Automation <generalization xsi:type="uml:Generalization" xmi:id="a61" general="a8"/>
Manual <generalization xmi:id="_Iac0U-tfEd6OJ99i0DhBUw" general="_Iac0TOtfEd6OJ99i0DhBUw"/>
도24는 본 발명에 따른 6족 로봇(센서추가)의 모델변환을 나타낸 도면이다.
도24에 도시된 바와 같이, 본 발명의 모델변환에 따라 생성되는 클래스는 기존의 6족로봇의 클래스에 UltraSonic이 추가적으로 생성되었다. 초음파 센서가 2개가 사용되었기 때문에 2개의 연관관계가 생성되었다.
기존의 6족 로봇에 센서를 추가하였기 때문에 비교대상은 새롭게 추가된 UltraSonic클래스와 이들의 연결해주는 연관관계를 비교하였다. 하기 [표 5]는 6족 로봇(센서추가)의 XMI를 검증하기 위한 각 XMI의 비교 테이블이다.
Class Automation <packagedElement xsi:type="uml:Class" xmi:id="a54" name="UltraSonic">
</packagedElement>
Manual <packagedElement xmi:type="uml:Class" xmi:id="_0hfWQQX4Ed-KYvZw-Au8DQ" name="UltraSonic">
</packagedElement>
Association Automation <packagedElement xsi:type="uml:Association" xmi:id="a133" name="body_u1" memberEnd="a134 a137">
<ownedEnd xsi:type="uml:Property" xmi:id="a134" name="system" type="a32" association="a133">
<upperValue xsi:type="uml:LiteralUnlimitedNatural" xmi:id="a135" value="1"/>
<lowerValue xsi:type="uml:LiteralInteger" xmi:id="a136" value="1"/>
</ownedEnd>
<ownedEnd xsi:type="uml:Property" xmi:id="a137" name="ultrasonic" type="a54" aggregation="composite"
association="a133">
<upperValue xsi:type="uml:LiteralUnlimitedNatural" xmi:id="a138" value="1"/>
<lowerValue xsi:type="uml:LiteralInteger" xmi:id="a139" value="1"/>
</ownedEnd>
</packagedElement>
Manual <packagedElement xmi:type="uml:Association" xmi:id="_0hfWfgX4Ed-KYvZw-Au8DQ" name="body_u1" memberEnd="_0hfWfwX4Ed-KYvZw-Au8DQ _0hfWggX4Ed-KYvZw-Au8DQ">
<ownedEnd xmi:id="_0hfWfwX4Ed-KYvZw-Au8DQ" name="system" type="_0hfWEAX4Ed-KYvZw-Au8DQ" association="_0hfWfgX4Ed-KYvZw-Au8DQ">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0hfWgAX4Ed-KYvZw-Au8DQ" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0hfWgQX4Ed-KYvZw-Au8DQ" value="1"/>
</ownedEnd>
<ownedEnd xmi:id="_0hfWggX4Ed-KYvZw-Au8DQ" name="ultraSonic" type="_0hfWQQX4Ed-KYvZw-Au8DQ" aggregation="composite" association="_0hfWfgX4Ed-KYvZw-Au8DQ">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0hfWgwX4Ed-KYvZw-Au8DQ" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0hfWhAX4Ed-KYvZw-Au8DQ" value="1"/>
</ownedEnd>
</packagedElement>
도25는 본 발명에 따른 4족 로봇의 모델변환을 나타낸 도면이다.
도25에 도시된 바와 같이, 본 발명의 모델변환에 따라 생성되는 클래스는 기존의 6족 로봇과 같다. 하지만 총 4개의 다리를 가지므로 System 클래스와 Motor 클래스는 연관관계가 4개 생성되었다.
기존의 6족 로봇에서 다리의 개수만 변동하였기 때문에 새롭게 생성되는 클래스는 없었다. 그러나 Motor와 System클래스의 연관관계가 차이가 있으므로 이것을 비교하였다. 하기 [표 6]은 4족 로봇의 XMI를 검증하기 위한 각 XMI의 비교 테이블이다.
Association Automation <packagedElement xsi:type="uml:Association" xmi:id="a112" name="body_c16" memberEnd="a113 a116">
<ownedEnd xsi:type="uml:Property" xmi:id="a113" name="motor" type="a15" aggregation="composite"
association="a112">
<upperValue xsi:type="uml:LiteralUnlimitedNatural" xmi:id="a114" value="1"/>
<lowerValue xsi:type="uml:LiteralInteger" xmi:id="a115" value="1"/>
</ownedEnd>
<ownedEnd xsi:type="uml:Property" xmi:id="a116" name="system" type="a32" association="a112">
<upperValue xsi:type="uml:LiteralUnlimitedNatural" xmi:id="a117" value="1"/>
<lowerValue xsi:type="uml:LiteralInteger" xmi:id="a118" value="1"/>
</ownedEnd>
</packagedElement>
Manual <packagedElement xmi:type="uml:Association" xmi:id="_wNtYdwX5Ed-KYvZw-Au8DQ" name="body_c16" memberEnd="_wNtYeAX5Ed-KYvZw-Au8DQ _wNtYewX5Ed-KYvZw-Au8DQ">
<ownedEnd xmi:id="_wNtYeAX5Ed-KYvZw-Au8DQ" name="system" type="_wNtYIgX5Ed-KYvZw-Au8DQ" association="_wNtYdwX5Ed-KYvZw-Au8DQ">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wNtYeQX5Ed-KYvZw-Au8DQ" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wNtYegX5Ed-KYvZw-Au8DQ" value="1"/>
</ownedEnd>
<ownedEnd xmi:id="_wNtYewX5Ed-KYvZw-Au8DQ" name="motor" type="_wNtYMAX5Ed-KYvZw-Au8DQ" aggregation="composite" association="_wNtYdwX5Ed-KYvZw-Au8DQ">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wNtYfAX5Ed-KYvZw-Au8DQ" value="1"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wNtYfQX5Ed-KYvZw-Au8DQ" value="1"/>
</ownedEnd>
</packagedElement>
6족 로봇, 센서를 추가한 6족 로봇, 4족 로봇의 모델을 변형한 결과 3가지 모델 모두 다 수작업으로 생성된 XMI 코드와 일치함을 알 수 있었다. 이 결과를 통해서 모델 변환기에 대한 본 발명의 실효성을 확인할 수 있었다.
본 발명은 도면에 도시된 실시 예(들)를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형이 이루어질 수 있으며, 상기 설명된 실시예(들)의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상에서 설명한 바와 같이, 본 발명은 가상 프로토타입 모델을 클래스 다이어그램으로 자동 생성할 수 있다. 자동 생성된 클래스 다이어그램은 코드생성 기법을 통해서 다관절 로봇을 동작할 수 있는 코드를 생성할 수 있다. 기존의 방법처럼 가상의 프로토타입 모델을 쓰고 버리는 것이 아니라 설계에 재사용할 수 있는 것이다.
이렇게, 가상의 프로토타입 모델의 정보를 이용하여 설계모델을 생성하기 때문에 설계 단계의 시간을 절약할 수 있고 수작업으로 만들 때 발생하는 정보의 손실 문제를 방지할 수 있다. 결론적으로, 가상의 프로토타입 개발과 동시에 프로그램 개발이 가능하여 전체 개발 프로세스의 시간과 비용을 절감할 수 있는 효과가 있다.

Claims (6)

  1. 다관절 로봇 개발에 필요한 요구사항을 정의하는 과정과;
    상기 정의된 요구사항을 분석한 후, 가상의 3D 로봇 프로토타이핑 모델을 생성하는 과정과;
    ATL(ATLAS Transformation Language)로 구현된 변환기를 통해 XML형태의 상기 가상의 3D 로봇 프로토타이핑 모델을 자동으로 변환하여, 클래스 다이어그램을 생성하는 과정과;
    상기 생성된 클래스 다이어그램을 로봇동작을 위한 코드로 변환하는 과정을 포함하여 구성되며,
    상기 가상의 3D 로봇 프로토타이핑 모델을 생성하는 과정은
    모델조합 도구에 의해, 가상의 3D 로봇 프로토타입 모델을 생성하는 과정과;
    모션생성 도구에 의해, 상기 생성된 3D 로봇 프로토타입 모델을 가상의 환경에서 동작시키고, 그 동작에 관한 XML형태의 데이터 파일을 생성하는 과정으로 이루어지는 것을 특징으로 하는 다관절 로봇 UML 설계 모델의 자동 생성방법.
  2. 삭제
  3. 제1항에 있어서, 상기 ATL로 구현된 변환기는
    크리에이션(Creation)룰, 모디피케이션(Modification)룰, 무브(Move)룰의 3가지 형태의 변환 룰을 수행하는 것을 특징으로 하는 다관절 로봇 UML 설계 모델의 자동 생성방법.
  4. 제3항에 있어서, 상기 크리에이션(Creation)룰은
    데이터 타입(DataType)을 생성하기 위한 변환 룰과;
    데이터 클래스를 생성하기 위한 변환 룰과;
    모션 클래스를 생성하기 위한 변환 룰과;
    데이터 클래스와 모션 클래스간의 의존관계를 생성하기 위한 변환 룰을 포함하여 이루어지는 것을 특징으로 하는 다관절 로봇 UML 설계 모델의 자동 생성방법.
  5. 제3항에 있어서, 상기 모디피케이션(Modification)룰은
    Motion 클래스의 하위 클래스를 생성하는 변환 룰을 포함하는 것을 특징으로 하는 다관절 로봇 UML 설계 모델의 자동 생성방법.
  6. 제3항에 있어서, 상기 무브(Move)룰은
    로봇의 부속 기관들을 동작시키는 API(Application Program Interface)들의 집합을 의미하는 RefAction를 이용하여 클래스를 생성하는 변환 룰과;
    매핑(Mapping)을 이용하여 연관관계를 생성하는 변환 룰과;
    관절(joint)을 이용하여 연관관계를 생성하는 변환 룰을 포함하는 것을 특징으로 하는 다관절 로봇 UML 설계 모델의 자동 생성방법.
KR1020110114752A 2011-11-04 2011-11-04 다관절 로봇 uml 설계 모델의 자동 생성방법 KR101286141B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110114752A KR101286141B1 (ko) 2011-11-04 2011-11-04 다관절 로봇 uml 설계 모델의 자동 생성방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110114752A KR101286141B1 (ko) 2011-11-04 2011-11-04 다관절 로봇 uml 설계 모델의 자동 생성방법

Publications (2)

Publication Number Publication Date
KR20130049621A KR20130049621A (ko) 2013-05-14
KR101286141B1 true KR101286141B1 (ko) 2013-07-15

Family

ID=48660310

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110114752A KR101286141B1 (ko) 2011-11-04 2011-11-04 다관절 로봇 uml 설계 모델의 자동 생성방법

Country Status (1)

Country Link
KR (1) KR101286141B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101825947B1 (ko) * 2014-02-28 2018-02-08 (주)로보티즈 로봇 조립 장치
KR101991364B1 (ko) * 2017-09-12 2019-06-24 한국기계연구원 모듈 기반 로봇의 기구학 소프트웨어를 자동으로 생성하는 장치 및 방법

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Integration and Evolution of Model-Based Tool Prototypes, 11th IEEE International Workshop on Rapid System Prototyping(2000.06.) *
Integration and Evolution of Model-Based Tool Prototypes, 11th IEEE International Workshop on Rapid System Prototyping(2000.06.)*
The ATL Transformation-based Model Management Framework, Jean Bezivin 외(2003) *
The ATL Transformation-based Model Management Framework, Jean Bezivin 외(2003)*
모델 변환 기법을 활용한 윈도우 모바일 어플리케이션 개발, 김우열 외, 정보과학회논문지(2010) *
모델 변환 기법을 활용한 윈도우 모바일 어플리케이션 개발, 김우열 외, 정보과학회논문지(2010)*

Also Published As

Publication number Publication date
KR20130049621A (ko) 2013-05-14

Similar Documents

Publication Publication Date Title
Alonso et al. V3cmm: A 3-view component meta-model for model-driven robotic software development
Shaer et al. A specification paradigm for the design and implementation of tangible user interfaces
US7783460B1 (en) Translating of geometric models into block diagrams
Huang et al. STEP: a scripting language for embodied agents
Shapiro et al. Dynamic animation and control environment
Hua et al. From AutomationML to ROS: A model-driven approach for software engineering of industrial robotics using ontological reasoning
Cossentino et al. A possible approach to the development of robotic multi-agent systems
KR20110034713A (ko) 사용자 제작 로봇을 위한 가상 테스트 시스템 및 그 방법
KR101286141B1 (ko) 다관절 로봇 uml 설계 모델의 자동 생성방법
WO2013176989A1 (en) Method and system for part model simulation
Alshareef et al. DEVS specification for modeling and simulation of the UML activities
Pellens et al. Conceptual modeling of object behavior in a virtual environment
Vitzthum SSIML/behaviour: Designing behaviour and animation of graphical objects in virtual reality and multimedia applications
Kobayashi et al. Software development based on software pattern evolution
Winiarski MeROS: SysML-based Metamodel for ROS-based Systems
Vitzthum SSIML/AR: A visual language for the abstract specification of augmented reality user interfaces
Son et al. Automatic transformation tools of UML design models from virtual prototypes of multi-jointed robots
Feng et al. FER/Mech—a software with interactive graphics for dynamic analysis of multibody system
Jia et al. Executable visual software modeling—the ZOOM approach
Kim et al. MDD based CASE Tool for Modeling Heterogeneous Multi-Jointed Robots
Son et al. Semi-automatic software development based on MDD for heterogeneous multi-joint robots
Pellens et al. Conceptual modelling of behaviour in a virtual environment
de Lara et al. Visual interactive simulation for distance education
Schröpfer et al. Unifying Modeling and Programming with Valkyrie.
US9959369B2 (en) Rigid body proxy for modeling in three-dimensional simulation

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
LAPS Lapse due to unpaid annual fee