이 튜토리얼에서는 모델에 추가 기능을 제공하기 위해 플러그인을 추가하는 방법을 배운다.
시스템 플러그인은 일반적인 물리 엔진이 정확히 당신의 요구를 충족하지 못할 때 시뮬레이션의 동작을 수정하는 코드 조각으로 생각할 수 있습니다.
예를 들어, 우리의 거북이는 정적 모델로 구성되어 있기 때문에 움직이지 않습니다. 이 태그를 제거한다면 어떻게 되는지 한번 진행.
이전에 이용하던 model.sdf 파일에서
<static>true</static>
부분을 제거하고 시뮬레이션을 실행하자.
gz sim model.sdf
실행한뒤 시뮬레이션을 실행하면 거북이가 계속 공허한 공간으로 떨어지는 것을 볼 수 있다.
Gazebo는 거북이가 어떤 지원도 없는 공중에 있다고 생각하고 중력에 의해 거북이는 계속 자유 낙하 합니다.
만약 거북이를 물 속에 있는 것 처럼 떠다니는 것을 시뮬레이션하려면, world에 사용자가 정의하는 buoyancy 플러그인을 추가해야한다. Gazebo에는 이미 해당 플러그인이 존재하기 때문에 그냥 로드하면 된다.
이제 Gazebo에서 제공되는 buoyant_turtle.sdf
파일을 world 에 넣어서 거북이가 가라앉지 않는 것을 볼 수 있다.
cd gazebo_maritime
mkdir worlds
wget <https://raw.githubusercontent.com/gazebosim/gz-sim/gz-sim8/tutorials/files/adding_system_plugins/buoyant_turtle.sdf> -O /home/ioes-docker/host/Downloads/ROS-Gazebo-Dockerfile/gz_tutorial/gazebo_maritime/worlds/buoyant_turtle.sdf
export GZ_SIM_RESOURCE_PATH=:/home/ioes-docker/host/Downloads/ROS-Gazebo-Dockerfile/gz_tutorial/gazebo_maritime/models
cd worlds
gz sim -r buoyant_turtle.sdf
이제 거북이는 위아래 운동을 진행