Model structure and requirements - modulabs/gazebo-tutorial GitHub Wiki

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์ด๋ฉฐ ์ด๋Š” ๋‹จ์ˆœํ•œ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ