Skip to content
Taehun Lim edited this page Feb 5, 2018 · 4 revisions

1. Overview

이번 튜토리얼은 SDF 모델의 객체에 대한 세부사항들을 서술한다.

SDF 모델들은 단순한 형태에서 복잡한 로봇까지 나타낼 수 있다. 이것은 <model> SDF tag와 연관 되어 있고 이것은 링크, 조인트 충돌 객체, 시각적인 요소, 플러그인들의 모음이다. 모델 파일을 생성하는 것은 원한는 모델의 복잡성에 의존하기 때문에 어려울 수 있다. 이번 페이지는 당신의 모델을 어떻게 만들 수 있는지에 관해 몇가지 팁을 제공할 것이다.

2. Components of a SDF Models

Links

link는 모델의 하나의 body의 물리적인 정보를 담고 있다. 이것은 wheel될 수 있거나 joint 연결에서 하나의 link일 수 있다. 각 link는 많은 충돌과 시각적 요소를 포함한다. 성능과 안전성을 향상시키기 위해 당신의 모델에서 Link의 수를 감소시키도록 노력해야 한다. 예를 들어 탁자 모델은 5개의 link(다리:4개, 상판:1개)가 조인트를 통해 연결 되어 있다. 그러나 이것은 몹시 복잡하다. 특히 각 조인트들은 결코 움직이지 않기 때문에 대신 탁자는 1개 link와 5개 충돌 요소로 만들어야 한다.

Collision

collision 요소는 충돌 체크를 하기 위해 사용되는 기하학 구조를 포함한다. 이것은 단순한 형태(선호 된다.)가 될 수 도 있고 삼각형 메시가(더 많은 자원이 소모된다.) 될 수 있다. 하나의 Link는 많은 충돌 요소를 포함한다.

Visual

visual 요소는 link의 파트들을 시각적으로 타내티기 위해 사용된다. 하나의 link는 0객 혹은 그 이상의 visual 요소를 가진다.

Inertial

inertial 요소는 Link의 질량과 회전 관성 행렬과 같은 동역학 정보를 묘사한다.

Sensor

센서는 플러그인들에서 사용되는 world로 부터 데이터를 획득한다. 하나의 link는 0개 혹은 그 이상의 sensor를 가진다.

Light

light 요소는 link에 붙어 있는 light 소스를 묘사한다. 하나의 link는 0개 혹은 그 이상의 light을 가진다.

Joints

하나의 joint는 두개의 link를 연결한다. 부모 자식관계가 축의 회전과 조인트의 리밋등과 같은 다른 파라미터들에 따라 형성된다.

Plugins

하나의 plugin은 하나의 모델을 제어하기 위해 제3자에 의해 생성된 공유되는 라이브러리이다.

3. Building a Model

Step 1: Collect your meshes

이번 스텝에서 당신의 모델을 구축하는데 필요한 3D mesh 파일을 찾는 방법에 대해 이야기하겠다. 가제보는 박스, 구, 실린더와 같은 간단한 형태의 셋트를 제공한다. 만약 당신의 모델이 훨씬 복잡하 형태를 필요로 한다고 한다면 계속 해서 읽어라.

Meshes들은 다양한 곳에서 얻을 수 있다. Google's 3D warehouse는 좋은 3D 모델의 저장소 이다. 이 대신으로 당신은 이미 필요한 파일들을 가지고 있다. 마지막으로 당신은 Blender 혹은 Sketchup과 같은 3D 모델 만드는 것을 활용하여 당신 자신만의 mesh들을 만들 수 있다. 가제보는 STL, Collada, OBJ로 포맷이 된 mesh파일들을 필요로 한다.

  • Tip : mesh를 원점의 센터에 위치 시키도록 이동 시키기 위해서 당신의 3D 모델링 소프트웨어를 사용해라. 이것은 가제보에서 모델을 위치시키는 것보다 훨씬 더 쉽게 될 것 이다.

  • Tip : Collada, OBJ 파일 포맷은 당신이 material을 mesh에 붙이는 것을 허용한다. 이런 메카니즘을 활용하는 것은 당신의 mesh의 시각적인 모습을 향상 시킨다.

  • Tip : mesh를 단순화 시켜라. 이것은 당신이 충돌 요소로서 mesh를 사용할 예정이라면 맞는 말이다. 충돌 요소로 저 수준의 다각형 mesh를 사용하는 것이 시각적 요소로 고 수전의 다각형 mesh를 사용하는 것이 일반적인 관행이다. 훨씬 더 나은 습관은 충돌 요소로 이미 제공하는 형태(박스, 구, 실린더) 중 하나를 사용하는 것이다.

  • Tip : Onshape는 웹기반 캐드 소프트웨어로 데이터를 export할 때 Collada와 STL 포맷을 지원해 줍니다. 이를 이용하면 간단한 모델은 손쉽게 제작할 수 있습니다.

Step 2: Make your model SDF file

아주 단순한 모델 파일을 만드는 것으로 시작하거나 기존 모델 파일을 복사해라. 여기서 핵심은 당신이 알고 있는 작업이나 매우 쉽게 디버깅 할 수 있는 것으로 시작하는 것이다. 여기 매우 간단하고 최소한의 박스 모델이 있다. 이 박스 모델은 단위 사이즈의 충돌 기구학적 형태를 가지고 있으며 단위 관성 행렬을 가진다.

box.sdf 모델 파일을 생성해라.

$ gedit box.sdf

box.sdf 파일에 다음의 내용을 복사해라.

    <?xml version='1.0'?>
    <sdf version="1.4">
    <model name="my_model">
      <pose>0 0 0.5 0 0 0</pose>
      <static>true</static>
        <link name="link">
          <inertial>
            <mass>1.0</mass>
            <inertia> <!-- inertias are tricky to compute -->
              <!-- http://gazebosim.org/tutorials?tut=inertia&cat=build_robot -->
              <ixx>0.083</ixx>       <!-- for a box: ixx = 0.083 * mass * (y*y + z*z) -->
              <ixy>0.0</ixy>         <!-- for a box: ixy = 0 -->
              <ixz>0.0</ixz>         <!-- for a box: ixz = 0 -->
              <iyy>0.083</iyy>       <!-- for a box: iyy = 0.083 * mass * (x*x + z*z) -->
              <iyz>0.0</iyz>         <!-- for a box: iyz = 0 -->
              <izz>0.083</izz>       <!-- for a box: izz = 0.083 * mass * (x*x + y*y) -->
            </inertia>
          </inertial>
          <collision name="collision">
            <geometry>
              <box>
                <size>1 1 1</size>
              </box>
            </geometry>
          </collision>
          <visual name="visual">
            <geometry>
              <box>
                <size>1 1 1</size>
              </box>
            </geometry>
          </visual>
        </link>
      </model>
    </sdf>

박스 기구의 원점은 박스 기구학의 중심에 위치해 있다. 박스의 바닥이 지면의 높이와 같도록 하기위해서 <pose>0 0 0.5 0 0 0</pose>이 추가 되어야 한다.

  • Tip : 위의 예제는 simple box model을 static으로 설정하였다. 이것은 모델을 움직이지 못하도록 한다. 이 특징은 모델을 생성하는 중에 유용하다. 일단 당신의 모델 생성이 완료되고 난후 당신의 모델이 움직일 수 있도록 하기 원한다면 태그를 false를 바꾸어라.

Step 3: Add to the model SDF file

.sdf 파일로 일을 하면서 천천히 훨씬 복잡한 모델로 추가를 시작해라. 각 새로운 추가와 함께 당신의 모델이 정확하도록 graphical client를 사용해서 모델을 로드해라. 여기에 특징들을 추가하기 위해 좋은 순서를 제시한다.

  1. link 추가
  2. collision 요소 설정
  3. visual 요소 설정
  4. inertial properties 설정 (필수)
  5. 1로 돌아가라 모든 link들이 추가 될 때까지
  6. 필요하다면 모든 joint를 추가해라.
  7. 필요하다면 모든 plugin을 추가해라.

Table of Contents




Clone this wiki locally