Gazebo에서 사용할 3D모델을 직접 구성하여 여러가지 속성의 동작에 대해서 알아보자.
박스형태의 간단한 모델을 제작해보자.
🚖model.sdf
<?xml version='1.0'?>
<sdf version="1.4">
<model name="box_model">
<pose>0 0 0.5 0 0 0</pose>
<static>false</static>
<link name="link">
<inertial>
<mass>1.0</mass>
<inertia>
<ixx>0.083</ixx>
<ixy>0.0</ixy>
<ixz>0.0</ixz>
<iyy>0.083</iyy>
<iyz>0.0</iyz>
<izz>0.083</izz>
</inertia>
</inertial>
<collision name="collision">
<geometry>
<box>
<size>1 1 1</size>
</box>
</geometry>
</collision>
<visual name="visual1">
<geometry>
<box>
<size>1 1 1</size>
</box>
</geometry>
</visual>
<visual name="visual2">
<pose>0 0 1 0 0 0</pose>
<geometry>
<cylinder radius="0.25" length="1.5"/>
</geometry>
</visual>
</link>
</model>
</sdf>
sdf파일에는 urdf와 비슷하게 물체의 속성 (무게, 크기, 재질 등)을 결정하는 코드를 작성 할 수 있다.
위 코드 같은 경우 아래의 사진과 같은 모델을 gazebo에서 확인 할 수 있다.
sdf 파일은 collision
속성과 visual
속성이 존재한다.
collision
은 말그대로 충돌 범위를 설정 할 수 있고,
visual
은 시각적인 정보만 담고 있다. 그렇기 때문에 어떤 객체에 visual
만 설정하고 collision
속성을 같게하여
보이는 것과 충돌하게 할 수도 있고 visual
만 설정하여 보이지만 충돌하지 않는 객체를 생성 할 수 있다.
이러한 점을 위에서 만든 모델로 확인해보자.
코드의 collision
이라는 이름을 가지는 충돌범위와 visual
를 동일하게 정의하였고,
visual2
의 경우 visual
만 정의하였다.
그렇기 때문에 해당 model 위에 자동차 모형을 떨어뜨리면 실린더 모양의 구조물을 통과하는 모습을 확인 할 수 있다.
⚙️model.config
<?xml version="1.0"?>
<model>
<name>Box Model</name>
<version>1.0</version>
<sdf version="1.6">model.sdf</sdf>
<author>
<name>Nodazi</name>
<email>dk3146@naver.com</email>
</author>
<description>
A simple box model
</description>
</model>
Config 파일은 해당 모델의 name
, version
,author
등 의 요소를 기입할 수 있다.