Skip to content
david20120720 edited this page Feb 3, 2018 · 8 revisions

11111111111111111

1. Overview

가제보는 모델들을 프로그램이나 GUI를 통해 시뮬레이션에 로드 할 수 있다. 모델은 다운로드 하거나 사용자가 만들어서 사용자 컴퓨터에 저장 시킬 수 있다. 이번 튜토리얼은 가제보 모델의 폴더 구조와 모델 폴더 내에 필요한 파일에 대해 설명한다.

가제보의 모델들은 동역학, 기구학, 시각적 요소들의 물리적인 정보를 정의한다. 게다가 모델은 하나 혹은 그 이상의 플러그인들을 포함한다. 이런 플러그인들은 모델의 행동에 영향을 준다. 모델은 단순한 형태에서 복잡한 로봇까지 어떤 것들이나 표현 할 수 있다. 심지어 지면까지 모델이다.

가제보는 시뮬레이션 내에 사용할 수 있는 모델을 저장하거나 유지하기 위해 데이터베이스에 의존한다. 모델 데이터베이스는 공동자원이다. 따라서 사용자가 만든 모델을 업로드하거나 유지해주기를 바란다.

2. The Model Database Repository

모델의 데이터베이스는 https://bitbucket.org/osrf/gazebo_models 에서 찾을 수 있다.

$ hg clone https://bitbucket.org/osrf/gazebo_models

3. Model Database Structure

모델의 데이터베이스는 특정 폴더와 파일 구조에 따라야 한다. 모델 데이터베이스의 root는 각 모델에 대한 하나의 폴더와 모델 데이터베이스의 관련된 정보를 가진 database.config파일을 포함한다. 각 모델의 폴더는 모델에 관련된 meta data를 포함하는 model.config 파일을 가지고 있다. 모델의 폴더는 모델의 대한 SDF와 물질, 메시, 플러그인들을 포함한다.

구조는 아래와 같다.(이번 예제에서 데이터베이스는 model_1이라 불리는 단 하나의 모델만 가진다)

Database
    database.config : Meta data about the database. This is now populated automatically from CMakeLists.txt
    model_1 : A directory for model_1
        model.config : Meta-data about model_1
        model.sdf : SDF description of the model
        model.sdf.erb : Ruby embedded SDF model description
        meshes : A directory for all COLLADA and STL files
        materials : A directory which should only contain the textures and scripts subdirectories
            textures : A directory for image files (jpg, png, etc).
            scripts : A directory for OGRE material scripts
        plugins: A directory for plugin source and header files

4. Plugins Directory

이 폴더는 선택적인 폴더이며 모델에 대한 모든 플러그인들을 포함한다.

5. Meshes Directory

이 폴더는 선택적인 폴더이며 모델에 대한 COLLADA, STL 파일들을 포함한다.

6. Material Directory

이 폴더는 선택적인 폴더이며 모델에 대한 texture, image, OGRE script들을 포함한다. Texture image들은 반드시 textures의 하위 폴더에 있어야하며, OGRE scripts 파일들은 scripts 폴더에 위치해야 한다.

7. Database Config

모델 데이터베이스 root에 있는 database.config 파일이다. 이 파일은 모델에 대한 라이센스 정보, 데이터베이스의 이름, 유요한 모델의 리스트 정보를 포함한다.

Note: database.config 파일은 오직 online repositories를 위해 필요하다. 사용자의 local 컴퓨터에 전체 모델의 폴더는 database.config 파일을 필요로 하지 않는다.

database.config의 포맷은 아래와 같다.

    <?xml version='1.0'?>
    <database>
      <name>name_of_this_database</name>
      <license>Creative Commons Attribution 3.0 Unported</license>
      <models
        <uri>file://model_directory</uri>
      </models>
    </database>
Tag Description
<name> 데이터베이스의 이름, 이것은 GUI와 다른 툴에 의해 사용된다.
<license> 데이터베이스 내에 있는 모델의 라이센스,
우리는 Creative Commons Atrribution 3.0 Unported 라이센스를 강력히 추천
<model> 데이터베이스 내의 모든 모델들의 URI들의 리스트
<uri> 모델에 대한 URI, file://model_directory_name

8. Model Config

각 모델은 반드시 모델의 대한 메타 정보를 포함하는 root 폴더내에 model.config 파일을 포함해야 한다. model.config의 포맷은 아래와 같다.

    <?xml version="1.0"?>

    <model>
      <name>My Model Name</name>
      <version>1.0</version>
      <sdf version='1.5'>model.sdf</sdf>

      <author>
        <name>My name</name>
        <email>[email protected]</email>
      </author>

      <description>
        A description of the model
      </description>
    </model>
Tag Description
<name> 모델의 이름
<version> 모델의 버전을 필요로 한다.
Note:이것은 모델이 사용하는 sdf의 버전이 아니라 model.sdf파일 내에 유지되는 정보이다.
<sdf> 이 모델을 나타내는 SDF, URDF파일의 이름을 필요로 한다. version atrribute는 파일이 사용하는 SDF 버전이 무엇인지를 나타내며 URDF의 버전은 필요로 하지 않는다. 다양한 sdf 버전을 사용하기 위해 다양한 sdf 요소 또한 사용되어 질 수 있다.
<author> 모델의 작가 이름을 필요로 하는 <name>과 작가의 이메일을 필요로 하는 <email>을 필요로 한다.
<description> 모델이 무엇인지(robot, table, cup...), 플러그인이 무엇을 하는지(모델의 기능)를 포함해야 한다.
<depend> 옵션이며 이 모델의 모든 의존성들이다. 이것은 보통 다른 모델들이다.
<model> 옵션이며 <uri>는 종속모델의 URI를 필요로 하며 <version>은 모델의 버전을 필요로 한다.

9. Model SDF

각 모델은 모델의 Simulator Description Format을 포함하는 model.sdf파일을 필요로 한다. SDF 관련 정보는 http://sdformat.org 에서 찾을 수 있다.

10. Model SDF.ERB

Standard SDF 파일은 ruby code를 포함 할 수 있다. 이 옵션은 Embedded ruby code templese를 사용하여 프로그램적으로 sdf 파일을 생성하는데 사용될 수 있다. ruby conversion은 수동으로 행해져야 한다.(erb model.sdf.erb > model.sdf) 그리고 최종적으로 model.sdf 파일은 model.sdf.efr와 함께 업로드 되어야 된다.

sdf.efr 파일의 예들은 gazebo_models repository에서 이용할 수 있고, 쉬운 ERB file은 flocking.world.erb이며 이는 단순한 루프를 사용한다.

Table of Contents




Clone this wiki locally