How to contribute a model - modulabs/gazebo-tutorial GitHub Wiki

1. Overview

์ด๋ฒˆ ํŠœํ† ๋ฆฌ์–ผ์€ ๋ชจ๋ธ์„ ์–ด๋–ป๊ฒŒ Gazebo Model Database์— ์ถ”๊ฐ€ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ ํŠœํ† ๋ฆฌ์–ผ์€ ๋‹น์‹ ์ด ๊ฐ€์ œ๋ณด ๋ชจ๋ธ์„ ์ƒ์„ฑํ–ˆ๊ณ  ๊ณต๋™์ฒด์™€ ๊ทธ๊ฒƒ์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์ด๋ฒˆ ํŠœํ† ๋ฆฌ์–ผ์€ ๋˜ํ•œ ๋‹น์‹ ์ด Bitbucket ๊ณ„์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  Mercurial ๊ณ ๊ฐ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

Note : ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ๋ชจ๋ธ์„ ๊ฐ€์ œ๋ณด์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ์ „์ฒด ๊ณต๋™์ฒด๋ฅผ ์œ„ํ•ด ์œ ์šฉํ•œ ๋ชจ๋ธ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ ์žฅ์†Œ์ด๋‹ค.

Note : ๋‹น์‹ ์€ ๋ชจ๋ธ์— ํฌํ•จ๋œ ๋ชจ๋“  ํŒŒ์ผ๋“ค์„ ๋ฐฐํฌํ•  ๊ถŒ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ทธ๊ฒƒ๋“ค์€ ์ €์ž‘๊ถŒ์„ ๊ฐ€์ง„ ์ž๋ฃŒ๋“ค์ด ์•„๋‹ˆ๋‹ค.

2. Fork and clone the orsf/gazebo_model repository

https://bitbucket.org/osrf/gazebo_models๋กœ ๊ฐ€์„œ ํ™”๋ฉด์˜ ์™ผ์ชฝ ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด์—์„œ Fork๋ฅผ ์„ ํƒ ํ•ด๋ผ. ์ดˆ๊ธฐ ์˜ต์…˜๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ fine ์ด๋‹ค. ์ €์žฅ์†Œ๋ฅผ ๋ถ„๊ธฐํ•œ ์ดํ›„, ๊ทธ๊ฒƒ์„ ๋ณต์‚ฌํ•ด๋ผ. ์ €์žฅ์†Œ๋ฅผ ์œ„ํ•ด ๋‹น์‹ ์ด ์ดˆ๊ธฐ ์ด๋ฆ„์„ ์„ ํƒํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด ๋‹น์‹ ์€ ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ํ„ฐ๋ฏธ๋„์— ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์‚ฌ๋ฅผ ํ•  ๊ฒƒ์ด๋‹ค.

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

์—ฌ๊ธฐ์„œ yourname์€ ๋‹น์‹ ์˜ Bitbucket username ์ด๋‹ค.

3. Creating a model

gazebo_models ํด๋” ์•„๋ž˜ ๋‹น์‹ ์˜ ๋ชจ๋ธ์˜ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด๋ผ. ์ด๋ฒˆ ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์šฐ๋ฆฌ๋Š” ์ด ํด๋”๋ฅผ mymodel์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋กœ ๊ฐ€์ •ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ์ด ๋ชจ๋ธ์— ๋Œ€ํ•ด ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ด๋ฅผ์„ ํด๋”์— ๋ถ€์—ฌ ํ•ด์•ผ ํ•œ๋‹ค. ์ด ํด๋”๋Š” ๋ฐ˜๋“œ์‹œ model.config ํŒŒ์ผ๊ณผ ์ ์–ด๋„ ํ•˜๋‚˜์˜ .sdf ํŒŒ์ผ์„ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค. ์ด ํด๋”๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ(meshes, textures, templates...)๋“ค ๋˜ํ•œ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋‹น์‹ ์€ ๋ชจ๋ธ์˜ ํด๋”๋ฅผ CMakeLists.txt ํŒŒ์ผ์—๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

4. Contents of model.config

model.config ํŒŒ์ผ์€ ์ ์ ˆํ•œ SDF ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ด ์ •๋ณด๋Š” ๋ชจ๋ธ์˜ ์ €์ž ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋ธ์˜ ํ…์ŠคํŠธ ์„ค๋ช…์ด๋‹ค. ์ƒ˜ํ”Œ์˜ model.confg๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

    <?xml version="1.0"?>
    <model>
      <name>Wedge juggler</name>
      <version>1.0</version>
      <sdf version="1.5">model.sdf</sdf>

      <author>
        <name>Evan Drumwright</name>
        <email>[email protected]</email>
      </author>

      <description>
        A ball-in-wedge juggler.
      </description>
    </model>

์ด model.config ํŒŒ์ผ์€ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์˜ ๋ชจ๋ธ์˜ ์ •์˜(visual, inertial, kinematics, geometric properites...)๋ฅผ ํƒ€๋‚˜๋‚ธ๋‹ค. ๋ชจ๋ธ์˜ ์ •์˜๋“ค์€ model.sdf์— ์žˆ๊ณ  SDF standard 1.5๋ฅผ ๋”ฐ๋ฅธ๋‹ค. ๋‹น์‹  ๋ชจ๋ธ์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „๋“ค์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๊ฒƒ์€ ๋งŒ์•ฝ ๋‹น์‹ ์ด ๋‹น์‹ ์˜ ๋ชจ๋ธ์ด ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ๊ฐ€์ œ๋ณด์— ์‚ฌ์šฉ๋ ๋•Œ ์œ ์šฉํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ๋Š” ์ด์ œ ์„ธ๊ฐ€์ง€์˜ ๋‹ค๋ฅธ SDF๋ฒ„์ „์„ ์ œ๊ณตํ•˜๋„๋ก ์œ„์˜ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ฐ”๊ฟ€ ๊ฒƒ์ด๋‹ค.

    <?xml version="1.0"?>
    <model>
      <name>Wedge juggler</name>
      <version>1.0</version>
      <sdf version="1.5">model.sdf</sdf>
      <sdf version="1.4">model-1.4.sdf</sdf>

      <author>
        <name>Evan Drumwright</name>
        <email>[email protected]</email>
      </author>

      <description>
        A ball-in-wedge juggler.
      </description>
    </model>

5. Adding the directory(and files) to the repository

๋‹น์‹ ์€ ๋‹น์‹ ์˜ ๋ชจ๋“  ํŒŒ์ผ๋“ค์„ gazebo_models์˜ root ํด๋”์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒ€์ดํ•‘ ํ•˜๋ฏ€๋กœ์จ ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค.

$ hg add mymodel

ํ˜น์€ ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ €์žฅํ•˜๊ธฐ ์›ํ•˜์ง€ ์•Š๋Š” ์ผ๋ถ€ ํŒŒ์ผ๋“ค์ด ์žˆ๋‹ค๋ฉด ๊ฐœ๋ณ„์ ์œผ๋กœ ํŒŒ์ผ๋“ค์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค.

$ hg add mymodel/model.config
$ hg add mymodel/model.sdf

6. Committing and pushing

Bitbucket์˜ ๋‹น์‹ ์˜ ๋ถ„๊ธฐ์— ๋ณ€ํ™”๋œ ๊ฒƒ๋“ค์„ Commit ํ•˜๊ณ  Push ํ•ด๋ผ. ์„ค๋ช… ๋ฉ”์‹œ์ง€๋ฅผ Commitํ•ด๋ผ. ์˜ˆ๋ฅผ ๋“ ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. $ hg commit -m "Adding mymodel to the database" $ hg push

7. Final step: creating a pull request

๋‹น์‹ ์˜ Bitbucket username ์ด yourname์ด๊ณ  ๋‹น์‹ ์˜ ๋ถ„๊ธฐ์— ๋Œ€ํ•ด ์ดˆ๊ธฐํ™”๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด ๋‹น์‹ ์€ ๋ถ„๊ธฐ ์ €์žฅ์†Œ๋ฅผ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. https://bitbucket.org/yourname/gazebo_models

  1. ์ด ์‚ฌ์ดํŠธ ์›นํŽ˜์ด์ง€์˜ ์™ผ์ชฝ ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด์—์„œ Creat pull request๋ฅผ ์„ ํƒํ•œ๋‹ค.
  2. ์˜ค๋ฅธ์ชฝ ํ™”์‚ดํ‘œ๋กœ orsf/gazebo_models ๊ฐ€ ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  3. ๋‹น์‹  ๋ชจ๋ธ์˜ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์„ ๋ถ€์—ฌํ•œ๋‹ค.
  4. description์— ๋‹น์‹ ๋ชจ๋ธ์˜ ๊ด€๋ จ๋œ ์ •๋ณด์™€ ์ด ๋ชจ๋ธ๋กœ ๋ถ€ํ„ฐ ์™œ ๊ณต๋™์ฒด๊ฐ€ ์ด์ต์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์„œ์ˆ  ํ•œ๋‹ค.
    ๋ชจ๋ธ์˜ ๊ทธ๋ฆผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ์ถ”์ฒœํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋‹น์‹ ์€ ์ข‹์€ ์˜ˆ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. https://bitbucket.org/osrf/gazebo_models/pull-requests/241/added-model-demo-joint-types/diff
  5. ๋‹น์‹ ์˜ ๋‹ค๋ฅธ ์˜ต์…˜๋“ค์— ๋งŒ์กฑ ํ•  ๋•Œ Creat pull request๋ฅผ ํด๋ฆญํ•œ๋‹ค.
  6. OSRF๋Š” ๋‹น์‹ ์˜ pull request๋ฅผ ๋ฆฌ๋ทฐํ•  ๊ฒƒ์ด๊ณ  ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋‹น์‹ ์˜ ์ˆ˜์ •์‚ฌํ•ญ๋“ค์„ ํ•ฉ์น  ๊ฒƒ์ด๋‹ค.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ