Skip to content
Jinho-So edited this page Mar 9, 2018 · 3 revisions

Overview

이 페이지에서는 'LiftDragPlugin'을 이용하여 수중 시뮬레이션이 가능한 'BuoyancyPlugin'에 대해 알아본다.

Background

물체에 작용하는 부력의 크기는 다음과 같다.

buoyancy force on object = volume of object*density of fluid*gravity

Using the BuoyancyPlugin

  • <fluid_density>: 물체를 감싸고 있는 유체의 밀도. 단위는 kilograms/cubic meters. 기본은 999.1026 kg/m^3로 물의 밀도이다.
  • <link>:
    • name: <link> 의 속성중 하나. 존재하는 링크나 모델의 이름과 일치해야한다.
    • <center_of_volume>: link frame에서 부피의 중심. 세 좌표로 나타낸다. Automatically calculated if unspecified.
    • <volume>: 링크의 부피. Automatically calculated if unspecified.

다음은 BuoyancyPlugin SDF의 예이다.

<model name="boat">
  <link name="body">
    <!-- ... link info here ... -->
  </link>

  <plugin name="BuoyancyPlugin" filename="libBuoyancyPlugin.so">
    <!-- a viscous liquid -->
    <fluid_density>2000</fluid_density>
    <link name="body">
      <center_of_volume>1 2 3</center_of_volume>
      <volume>50</volume>
    </link>
  </plugin>
</model>

Demo

gazebo --verbose worlds/underwater.world -u

ㅁㅁ world는 세가지 잠수함을 가지고 있다. 일시정지가 풀리게 되면 검은색 잠수함은 가라앉게되고 흰색 잠수함은 떠오르게 된다. 노란색 잠수함만이 제 위치를 유지한다. 이는 검은색의 밀도는 물보다 높고 흰색의 밀도는 물보다 낮기 때문이다. 노락색 잠수함은 물과 같은 밀도를 가지고 있다. 노랑색 잠수함을 선택하고 오른쪽 패널을 열고 토크를 주면 앞으로 나가는것을 알 수 있다.

Table of Contents




Clone this wiki locally