Super Kawaii Cute Cat Kaoani URDF 튜토리얼(3) (Adding Physical and Collision Properties to a URDF Model)

연구/컴퓨터 그래픽스

URDF 튜토리얼(3) (Adding Physical and Collision Properties to a URDF Model)

치킨고양이짱아 2023. 1. 19. 16:23
728x90
728x90

2023.01.19 - [컴퓨터 그래픽스] - URDF 튜토리얼(2) (Building a Movable Robot Model with URDF)

 

URDF 튜토리얼(2) (Building a Movable Robot Model with URDF)

이전 게시물의 튜토리얼 통해서 Robot의 joint, link의 위치를 정할 수 있었고 material도 설정해줄 수 있었다. 2023.01.19 - [컴퓨터 그래픽스] - URDF 튜토리얼(1) (Building Visual Robot Model) URDF 튜토리얼(1) (Build

chickencat-jjanga.tistory.com

이전 게시물의 튜토리얼을 통해 로봇을 움직이게 만들 수 있었다.

이번에는 urdf 파일에 physical properties를 추가하고, collision properties를 어떻게 명시하는지 살펴보자.

1. collision

collision detect와 같은 일을 하기 위해서는 collision element properties를 추가로 설정해주어야한다.

<link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
      <material name="blue">
        <color rgba="0 0 .8 1"/>
      </material>
    </visual>
    <collision>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
    </collision>
  </link>
  • collision tag는 link object의 direct subelement로 visual tag와 같은 level에 있다.
  • collision element는 visual element와 같은 방식으로 shape를 정의하며, visaul element와 마찬가지로 geometry tag를 가지고 있다. geometry tag의 형식은 visual element의 geometry와 동일하다.
  • collision element도 visual element와 같은 방식으로 origin tag를 지정할 수 있다.

많은 경우에 collision geometry의 origin과 visual geometry의 origin이 동일하다.

2. Physical Properties

시뮬레이션을 올바르게 하기 위해선 몇가지 physical properties를 올바르게 설정해주어야한다.

2.1 Inertia

  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
      <material name="blue">
        <color rgba="0 0 .8 1"/>
      </material>
    </visual>
    <collision>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
    </collision>
    <inertial>
      <mass value="10"/>
      <inertia ixx="0.4" ixy="0.0" ixz="0.0" iyy="0.4" iyz="0.0" izz="0.2"/>
    </inertial>
  </link>

모든 시뮬레이션 되는 link는 inertial tag가 필요하다.

  • inertial element도 link object의 subelement이다.
  • mass는 kg 단위로 기술된다. 
  • 3X3 rotational inertia matrix 역시 inertial element로 기술된다. inertia matrix는 6개의 element로 기술되는데, 아래의 9개의 element 중 빨갛게 표시된 element들이다.
ixx ixy ixz
ixy iyy iyz
ixz iyz izz

 

2.2 Contact Coefficients

link가 다른 물체와 contact 했을 때 어떻게 행동하는지도 define 해줄수 있다.

collision tag의 subelement인 contact_coefficients tag를 세팅해주면 되는데, 여기에는 3개의 attribute가 있다.

  • mu : Friction coefficient
  • kp : stiffness coefficient
  • kd : damping coefficient

 

2.3 Joint Dynamics

joint가 어떻게 움직이는지도 joint의 dynmaics tag를 통해 define 해줄수 있다. 여기에는 2개의 attribute가 있다.

  • friction: prismatic joint의 경우에는 단위가 Newtons이고, revolving joint의 경우에는 단위가 Newton meters이다.
  • damping: prismatic joint의 경우에는 단위가 Newton seconds per meter이고, revolving joint의 경우에는 단위가 Newton meter seconds per radian이다.

명시하지 않을 경우 이 coefficients 들은 디폴트로 zero 값을 가진다.


이렇게 urdf를 사용하여 로봇을 정의할때, collision 및 physical properties를 어떻게 define하는지 알아보았다.

728x90
728x90