이 튜토리얼에서는 모델에 추가 기능을 제공하기 위해 플러그인을 추가하는 방법을 배운다.

Create System Plugins

Adding a system plugin

시스템 플러그인은 일반적인 물리 엔진이 정확히 당신의 요구를 충족하지 못할 때 시뮬레이션의 동작을 수정하는 코드 조각으로 생각할 수 있습니다.

예를 들어, 우리의 거북이는 정적 모델로 구성되어 있기 때문에 움직이지 않습니다. 이 태그를 제거한다면 어떻게 되는지 한번 진행.

이전에 이용하던 model.sdf 파일에서

<static>true</static>

스크린샷 2024-05-02 오후 1.18.01.png

스크린샷 2024-05-02 오후 1.18.20.png

부분을 제거하고 시뮬레이션을 실행하자.

gz sim model.sdf

실행한뒤 시뮬레이션을 실행하면 거북이가 계속 공허한 공간으로 떨어지는 것을 볼 수 있다.

스크린샷 2024-05-02 오후 1.20.46.png

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

스크린샷 2024-05-08 오후 1.09.43.png

이제 거북이는 위아래 운동을 진행