이 튜토리얼은 buoyancy plugin
의 작동 이론을 설명. 해양 시뮬레이션에서 필수적인 요소
이 플러그인은 vehicle에 일정한 부력을 제공하기 위해서 world에 부착됩니다. 부력은 로봇에 작용하는 중력과는 반대로 작용합니다.
플러그인의 파라미터는 world파일에서 SDF를 통해 구성된다. 모든 허용된 파라미터의 설명은 아래 링크를 통해 확인 가능
https://github.com/gazebosim/gz-sim/blob/gz-sim8/src/systems/buoyancy/Buoyancy.hh
Buoyancy 플러그인은 각 SDF 모델의 <collision> 요소를 이용하여 변한 유체의 부피를 계산
maritime domain의 일반적인 패턴은 차량을 둘러싼 매우 얇은 collision 요소(부피가 낮음)와 차량 자체 내부의 별도의 collision 요소를 생성하는 것. 낮은 부피의 collision 요소 모음은 필요할 때 접촉을 생성하는데 사용된다.
추가 collision 요소는 집계된 원하는 공기 부피를 생성하는 데에서만 사용 된다.
부력 collision 요소와 함께 사용되는 collision 요소 외부 세트는 각 <collision> 요소들의 중심에 힘을 유도한다.
적은 부피의 외부 충돌을 생성하는 권장 사항을 따르면, 주요 힘은 부력 collision 요소의 중심에 적용할 것이다.
해당 충돌 위치를 → 예상하는 부력 중심과 일치하도록, <pose>태그로 해당 충돌 위치를 조정 가능하다.
부력 힘은 아래 식에 따라 차량 내의 공기 부피에 비례한다.
보통 순수 물의 밀도는
$$ 1000 kg/m^3 $$
보통 해수의 밀도는