How to contribute a model - modulabs/gazebo-tutorial GitHub Wiki
์ด๋ฒ ํํ ๋ฆฌ์ผ์ ๋ชจ๋ธ์ ์ด๋ป๊ฒ Gazebo Model Database์ ์ถ๊ฐํ๋์ง์ ๋ํด ์ค๋ช ํ ๊ฒ์ด๋ค. ์ด๋ฒ ํํ ๋ฆฌ์ผ์ ๋น์ ์ด ๊ฐ์ ๋ณด ๋ชจ๋ธ์ ์์ฑํ๊ณ ๊ณต๋์ฒด์ ๊ทธ๊ฒ์ ๊ณต์ ํ๊ณ ์ ํ๋ค๊ณ ๊ฐ์ ํ๋ค. ์ด๋ฒ ํํ ๋ฆฌ์ผ์ ๋ํ ๋น์ ์ด Bitbucket ๊ณ์ ์ ๊ฐ์ง๊ณ ์๊ณ Mercurial ๊ณ ๊ฐ์ด๋ผ๊ณ ๊ฐ์ ํ๋ค.
Note : ๋น์ ์ ๋น์ ์ ๋ชจ๋ธ์ ๊ฐ์ ๋ณด์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ถ๊ฐํ ํ์๊ฐ ์๋ค. ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ ์ ์ฒด ๊ณต๋์ฒด๋ฅผ ์ํด ์ ์ฉํ ๋ชจ๋ธ์ ์ฐพ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์ฅ์์ด๋ค.
Note : ๋น์ ์ ๋ชจ๋ธ์ ํฌํจ๋ ๋ชจ๋ ํ์ผ๋ค์ ๋ฐฐํฌํ ๊ถ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ๊ทธ๊ฒ๋ค์ ์ ์๊ถ์ ๊ฐ์ง ์๋ฃ๋ค์ด ์๋๋ค.
https://bitbucket.org/osrf/gazebo_models๋ก ๊ฐ์ ํ๋ฉด์ ์ผ์ชฝ ์ฌ์ด๋ ๋ฉ๋ด์์ Fork๋ฅผ ์ ํ ํด๋ผ. ์ด๊ธฐ ์ต์ ๋ค์ ์ผ๋ฐ์ ์ผ๋ก fine ์ด๋ค. ์ ์ฅ์๋ฅผ ๋ถ๊ธฐํ ์ดํ, ๊ทธ๊ฒ์ ๋ณต์ฌํด๋ผ. ์ ์ฅ์๋ฅผ ์ํด ๋น์ ์ด ์ด๊ธฐ ์ด๋ฆ์ ์ ํํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด ๋น์ ์ ๋ค์๊ณผ ์ ์ฌํ๊ฒ ํฐ๋ฏธ๋์ ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ฌ๋ฅผ ํ ๊ฒ์ด๋ค.
$ hg clone https://bitbucket.org/yourname/gazebo_models
์ฌ๊ธฐ์ yourname์ ๋น์ ์ Bitbucket username ์ด๋ค.
gazebo_models ํด๋ ์๋ ๋น์ ์ ๋ชจ๋ธ์ ํด๋๋ฅผ ๋ง๋ค์ด๋ผ. ์ด๋ฒ ํํ ๋ฆฌ์ผ์์ ์ฐ๋ฆฌ๋ ์ด ํด๋๋ฅผ mymodel์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ก ๊ฐ์ ํ๋ค. ๊ทธ๋ฌ๋ ๋น์ ์ ์ด ๋ชจ๋ธ์ ๋ํด ์ ์ฉํ ์ ๋ณด๋ฅผ ์ค ์ ์๋ ์ด๋ฅผ์ ํด๋์ ๋ถ์ฌ ํด์ผ ํ๋ค. ์ด ํด๋๋ ๋ฐ๋์ model.config ํ์ผ๊ณผ ์ ์ด๋ ํ๋์ .sdf ํ์ผ์ ํฌํจํด์ผ ํ๋ค. ์ด ํด๋๋ ๋ค๋ฅธ ํ์ผ(meshes, textures, templates...)๋ค ๋ํ ํฌํจ ํ ์ ์๋ค. ๋ํ ๋น์ ์ ๋ชจ๋ธ์ ํด๋๋ฅผ CMakeLists.txt ํ์ผ์๋ ์ถ๊ฐํด์ผ ํ๋ค.
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>๋น์ ์ ๋น์ ์ ๋ชจ๋ ํ์ผ๋ค์ gazebo_models์ root ํด๋์ ๋ค์๊ณผ ๊ฐ์ด ํ์ดํ ํ๋ฏ๋ก์จ ์ ์ฅ์์ ์ถ๊ฐ ํ ์ ์๋ค.
$ hg add mymodel
ํน์ ๋ง์ฝ ๋น์ ์ด ์ ์ฅํ๊ธฐ ์ํ์ง ์๋ ์ผ๋ถ ํ์ผ๋ค์ด ์๋ค๋ฉด ๊ฐ๋ณ์ ์ผ๋ก ํ์ผ๋ค์ ์ถ๊ฐ ํ ์ ์๋ค.
$ hg add mymodel/model.config
$ hg add mymodel/model.sdf
Bitbucket์ ๋น์ ์ ๋ถ๊ธฐ์ ๋ณํ๋ ๊ฒ๋ค์ Commit ํ๊ณ Push ํด๋ผ. ์ค๋ช ๋ฉ์์ง๋ฅผ Commitํด๋ผ. ์๋ฅผ ๋ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. $ hg commit -m "Adding mymodel to the database" $ hg push
๋น์ ์ Bitbucket username ์ด yourname์ด๊ณ ๋น์ ์ ๋ถ๊ธฐ์ ๋ํด ์ด๊ธฐํ๋ค์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด ๋น์ ์ ๋ถ๊ธฐ ์ ์ฅ์๋ฅผ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ ๊ฒ์ด๋ค. https://bitbucket.org/yourname/gazebo_models
- ์ด ์ฌ์ดํธ ์นํ์ด์ง์ ์ผ์ชฝ ์ฌ์ด๋ ๋ฉ๋ด์์ Creat pull request๋ฅผ ์ ํํ๋ค.
- ์ค๋ฅธ์ชฝ ํ์ดํ๋ก orsf/gazebo_models ๊ฐ ์ ํ๋์ด ์๋์ง ํ์ธํ๋ค.
- ๋น์ ๋ชจ๋ธ์ ์๋ฏธ ์๋ ์ด๋ฆ์ ๋ถ์ฌํ๋ค.
- description์ ๋น์ ๋ชจ๋ธ์ ๊ด๋ จ๋ ์ ๋ณด์ ์ด ๋ชจ๋ธ๋ก ๋ถํฐ ์ ๊ณต๋์ฒด๊ฐ ์ด์ต์ ์ป์ ์ ์๋์ง์ ๋ํด ์์ ํ๋ค.
๋ชจ๋ธ์ ๊ทธ๋ฆผ์ ์ถ๊ฐํ๋ ๊ฒ ๋ํ ์ถ์ฒํ๋ค. ์ฌ๊ธฐ์์ ๋น์ ์ ์ข์ ์๋ฅผ ๋ณผ ์ ์๋ค. https://bitbucket.org/osrf/gazebo_models/pull-requests/241/added-model-demo-joint-types/diff - ๋น์ ์ ๋ค๋ฅธ ์ต์ ๋ค์ ๋ง์กฑ ํ ๋ Creat pull request๋ฅผ ํด๋ฆญํ๋ค.
- OSRF๋ ๋น์ ์ pull request๋ฅผ ๋ฆฌ๋ทฐํ ๊ฒ์ด๊ณ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น์ ์ ์์ ์ฌํญ๋ค์ ํฉ์น ๊ฒ์ด๋ค.