해당 튜토리얼에서 우리는 SDF를 이용해서 우리만의 world를 만들것. 그리고 그곳에 어떻게 model을 넣는지 확인할것.

Defining a world

모든 SDF world는 아래와 같이 시작한다.

<?xml version="1.0" ?>
<sdf version="1.8">
    <world name="world_demo">
    ...
    ...
    </world>
</sdf>

처음의 2개의 태그는 XML , SDF 의 버전을 설정한다. 그리고 이후에 <world>,</world> 태그를 사이에 넣어서 정의

Physics

<physics name="1ms" type="ignored">
    <max_step_size>0.001</max_step_size>
    <real_time_factor>1.0</real_time_factor>
</physics>

Physics 태그는 dynamic engine의 유형(type), 속성(properties)을 지정함

name 우리는 step size가 1 milli-second인 1ms 라는 이름을 선택

type 동적(물리 엔진라이브러리)의 유형을 의미함

Ode, Bullet, Simbody 및 Dart 와 같은 옵션이 있다. (여기서는 “ignored” 로 무시)

<max_step_size>는 시뮬레이션의 모든 시스템이 world의 상태와 상호작용할 수 있는 최대 시간.

⇒ 값이 작을수록 정확!! 하지만 계산능력이 많이 필요함

<real_time_factor>는 시뮬레이션 시간 대 실제 시간의 비율

⇒ 해당 부분을 우리는 높은 배율로 시뮬레이션 하는것을 목표로 삼음

Plugins

플러그인은 앞서 설명했듯 “코드의 덩어리”이다. 예를들어

<plugin
    filename="gz-sim-physics-system"
    name="gz::sim::systems::Physics">
</plugin>

플러그인 PhysicsWorld의 역학을 시뮬레이션 하는데 매우 중요.