Population of models - modulabs/gazebo-tutorial GitHub Wiki

1. Overview

이 μ§€μΉ¨μ„œλŠ” 당신이 SDF <population> tag 을 μ΄μš©ν•΄μ„œ μ–΄λ–»κ²Œ λͺ¨λΈμ„ 볡제λ₯Ό ν• μˆ˜μžˆμ§€λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. λ³΅μ œλŠ” 고유의 λͺ¨λΈλͺ¨μŒμœΌλ‘œ ꡬ성이 λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λΈλ³΅μ œλŠ” λ‹€μŒμ˜ νŒŒλΌλ©”νƒ€λ₯Ό μ •ν•©λ‹ˆλ‹€.

  1. λͺ¨λΈ(예:ν…Œμ΄λΈ”, μ½œλΌλ³‘)
  2. 볡제λ₯Ό μ›ν•˜λŠ” 였브젝트수
  3. μ˜€λΈŒμ νŠΈλ“€μ΄ 배열될 ν˜•νƒœμ™€ λ””λ©˜μ „(예:λ°•μŠ€,싀린더)
  4. 볡제 μ»¨ν…Œμ΄λ„ˆμ˜ μœ„μΉ˜μ™€ λ°©ν–₯
  5. μ½˜ν…Œμ΄λ„ˆμ•ˆμ— 였브젝트의 배포(예: λ¬΄μž‘μœ„,GRID)

For reference, check the SDF specification for a complete specification of the tag and its parameters.

Creating an object population

Quick start

  1. 이 μ§€μΉ¨μ„œλ₯Ό μœ„ν•΄ 디렉토리λ₯Ό μƒμ„±ν•˜λŠ”κ²ƒμœΌλ‘œ μ‹œμž‘ν•˜μ„Έμš”
$ mkdir ~/tutorial_model_population
$ cd ~/tutorial_model_population
  1. 이화일을 ν˜„μž¬μ˜ 디렉토리에 λ‹€μš΄λ‘œλ“œ ν•˜μ„Έμš” : can_population.world
$ wget http://bitbucket.org/osrf/gazebo_tutorials/raw/default/model_population/files/can_population.world

νŒŒμΌμ—” μ•„λž˜μ™€ 같이 κΈ°μˆ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

<?xml version="1.0" ?>
<sdf version="1.5">
  <world name="default">

    <!-- A global light source -->
    <include>
      <uri>model://sun</uri>
    </include>

    <!-- A ground plane -->
    <include>
      <uri>model://ground_plane</uri>
    </include>

    <!-- Testing the automatic population of objects -->
    <population name="can_population1">
      <model name="can1">
        <include>
          <static>true</static>
          <uri>model://coke_can</uri>
        </include>
      </model>
      <pose>0 0 0 0 0 0</pose>
      <box>
        <size>2 2 0.01</size>
      </box>
      <model_count>10</model_count>
      <distribution>
        <type>random</type>
      </distribution>
    </population>

  </world>
</sdf> 
  1. κ°€μ œλ³΄λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
$ gazebo can_population.world

당신은 μ†Œλ‹€μΊ”μ˜ λ³΅μ œν’ˆμ„ λ³΄κ²Œλ©λ‹ˆλ‹€( 랜덀으둜 μœ„μΉ˜λ˜μ–΄ μžˆλŠ”) 이 캔듀은 BOX μ»¨ν…Œμ΄λ„ˆ (222 λ―Έν„°)이내에 배열이 λ©λ‹ˆλ‹€.

The world explained

쒀더 κ°€λ΄…μ‹œλ‹€. λ‹€λ₯Έ can_population.world 의 μš”μ†Œλ₯Ό μ΄ν•΄ν•©λ‹ˆλ‹€.

    <population name="can_population1">
      <model name="can1">
        <include>
          <static>true</static>
          <uri>model://coke_can</uri>
        </include>
      </model>

이 μ •λ³΄μ—μ„œ μš°λ¦¬λŠ” <population> tag.λ₯Ό μ΄μš©ν•΄μ„œ μ–΄λ–»κ²Œ λ³΅μ œν’ˆμ˜ spec이 μ •ν•΄μ§€λŠ”μ§€ μ•Œμˆ˜μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  λ³΅μ œν’ˆμ€ 고유의 이름을 κ°–κ³ μžˆμŠ΅λ‹ˆλ‹€. 이것은 μ΄λ¦„μ†μ„±μœΌλ‘œ νŠΉμ •μ§€μ–΄μ§‘λ‹ˆλ‹€. λ³΅μ œνƒœκ·Έ λ‚΄μ—μ„œ, 당산은 model tag둜 λͺ¨λΈμ„ μ–΄λ–»κ²Œ μ„ νƒν•˜λŠ”μ§€ μ•Œμˆ˜μžˆμŠ΅λ‹ˆλ‹€. 각 λ³΅μ œν’ˆμ˜ μš”μ†ŒλŠ” μœ μΌν•œ μ΄λ¦„μœΌλ‘œ μ‹œλ¬Όλ ˆμ΄μ…˜μœΌλ‘œ μ‚½μž…μ΄ λ©λ‹ˆλ‹€ 이름은 _clone_i λΌλŠ” μ΄λ¦„μœΌλ‘œ μΆ”κ°€κ°€ 됨으둜써 생성이 λ©λ‹ˆλ‹€. iλŠ” λ³΅μ œμš”μ†Œμ˜ 순번 μž…λ‹ˆλ‹€.당신은 볡제된 λͺ¨λΈμ˜ 리슀트λ₯Ό λ³Όμˆ˜μžˆμŠ΅λ‹ˆλ‹€

κ°€μž₯ 일반적인 볡제 νƒ€μž…μ€ μ—λ‹ˆλ©”μ΄μ…˜μ΄ μ•Šλ˜λŠ” 였브젝트둜 κ΅¬μ„±λ©λ‹ˆλ‹€. 예λ₯Όλ“€λ©΄ λ‚˜λ¬΄,λ°”μœ„,λΉŒλ”©λ“±.

We recommend you use the <population> tag for static models, and exclude mobile entities, such as robots, which often require more precise placement and are fewer in number.

<pose>0 0 0 0 0 0</pose>
<box>
   <size>2 2 0.01</size>
</box>

μœ„μ˜ μ½”λ“œμ˜ λΈ”λŸ­μ€ 지역을 νŠΉμ •ν™”ν•©λ‹ˆλ‹€, κ·Έ 직얡은 μ˜€λΈŒμ νŠΈκ°€ μœ„μΉ˜ν•  μ§€μ—­μž…λ‹ˆλ‹€. 이번 κ²½μš°μ—μ„œλŠ”, λͺ¨λ“  μ˜€λΈŒμ œκ·ΈλŠ” 3d기초 λ°•μŠ€(2 x 2 x 0.01 m, centered at (0, 0, 0) with orientation (0, 0, 0))에 λ³΅μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€ As an alternative to , a region is also allowed by specifying its radius and length. (Check out the SDF specification for a full description of the parameters.) The element sets the reference frame of the population's region.

 <model_count>10</model_count>

μœ„μ—μ„œ 당신은 λͺ¨λΈμ˜ 수λ₯Ό λ³Όμˆ˜μžˆμŠ΅λ‹ˆλ‹€ μ–΄λ–€ μ–‘μˆ˜μ΄λ“  ν—ˆμš©μ΄ λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ„ˆλ¬΄λ†’μ€ μˆ˜λŠ” μ„±λŠ₯을 μ €ν•˜μ‹œν‚΅λ‹ˆλ‹€.

      <distribution>
        <type>random</type>
      </distribution>

은 μ˜€λΈŒμ νŠΈκ°€ 지역에 μ–΄λ–»κ²Œ λ°°μΉ˜κ°€ λ˜λŠ”μ§€ μ„€λͺ…ν•©λ‹ˆλ‹€.

Distribution types

  1. random : λ¬΄μž‘μœ„ μœ„μΉ˜λ‘œ 볡제됨
  2. uniform : λͺ¨λΈμ€ 2d νŒ¨ν„΄μœΌλ‘œ μœ„μΉ˜ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” k-mean을 μ΄μš©ν•©λ‹ˆλ‹€. 지역내에 μœ„μΉ˜λ₯Ό μ΅œμ ν™” ν•©λ‹ˆλ‹€.
  3. grid : 2d grid pattern에 μœ„μΉ˜ν•©λ‹ˆλ‹€. 이 λ°°ν¬λŠ” λ˜ν•œ 당신이 rows nomber, col number, μ—˜λ¦¬λ¨ΌνŠΈμ‚¬μ΄ 거리λ₯Ό νŠΉμ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이 <model_count> λŠ” 이 λ°°ν¬μ—μ„œ λ¬΄μ‹œλ©λ‹ˆλ‹€. 였브젝트의 λ²ˆν˜ΈλŠ” μ‹œλ¬Όλ ˆμ΄μ…˜μ— μ‚½μž…μ΄ λ©λ‹ˆλ‹€. 이 μ‹œλ¬Όλ ˆμ΄μ…˜μ€ ν–‰,μ—΄μ˜ λ„˜λ²„μ™€ κ°™κ²Œλ©λ‹ˆλ‹€.
  4. Linear -x : λͺ¨λΈμ€ x좕을따라 row둜 λ°°μΉ˜λ©λ‹ˆλ‹€.
  5. Linear -y : λͺ¨λΈμ€ y좕을따라 row둜 λ°°μΉ˜λ©λ‹ˆλ‹€.
  6. Linear -z : λͺ¨λΈμ€ z좕을따라 row둜 λ°°μΉ˜λ©λ‹ˆλ‹€.

쒀더 λ§Žμ€ μ§„λ³΄λœ 예제λ₯Ό 당신은 population.world μ—μ„œ λ³Όμˆ˜μžˆμŠ΅λ‹ˆλ‹€. 그리고 λ¬Όλ‘  당신은 이것을 ν…ŒμŠ€νŠΈν•΄λ³Όμˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

$ gazebo worlds/population.world

⚠️ **GitHub.com Fallback** ⚠️