URDF (Unified Robot Description Format)
- URDF는 ROS의 로봇의 기하학과 구성을 명세화 시킨 file format이다.
- 즉, 로봇의 모델을 표현하기 위한 XML 기반의 파일 형식이다.
- URDF의 기본 구성 요소
- 1. Link 링크
- 로봇의 구성 요소 중 하나이며, 실제 물리적인 부분을 나타낸다.
- 각 link는 질량,크기,표면,재질 등의 속성을 가질 수 있다.
- ex) 바퀴 , 팔 , 몸체 등
- 2. Joint 관절
- 관절은 두개의 link를 연결하는 역할을 한다.
- 관절은 회전하는 관절(revolute), 직선으로 이동하는 관절(prismatic)처럼 다양하게 존재
- 각 관절은 위치,각도, 제한 등을 정의하는 것이 가능하다.
- 3. visual 시각적 속성
- 로봇의 외형을 나타내는 시각적 요소를 정의한다.
- ex) 모델링에 사용되는 색상,텍스처,메시 등 정의...
- 4. collision 충돌 속성
- 로봇의 충돌 처리에 필요한 요소를 정의한다.
- 충돌 감지를 위해서 사용하는 형태나 재질을 정의하며, 실제 물리 엔진에서 사용한다.
- 5. inertial 관성 속성
- 각 링크의 물리적인 특성들을 정의한다.
- ex) 질량,무게 중심, 관성 모멘트 등을 정의.
URDF의 구조와 주요 요소
- <robot>
- URDF 파일의 루트 요소이다.
- 해당 태그는 로봇의 전체 모델을 감싸는 역할을 하며, 로봇의 이름을 지정할 수 있다.
<robot name="my_robot">
</robot>
- <link>
- 실제 물리적인 형태이며, 다른 link와 연결되기 위해서 joint를 가질수있다.
- <visual>은 시각적 속성,외형을 정의
- geometry는 형상(박스,구,원통 등)을 정의
- material은 재질을 정의
- <collision>은 물리적 충돌 처리 속성, 시뮬레이션 시 충동 계산에 사용된다.
- <inertial>은 관성 속성, 질량 , 관성 모멘트 , 무게 중심을 정의한다.
<link name="base_link">
<visual>
<geometry>
<box size="0.5 0.5 0.1"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<box size="0.5 0.5 0.1"/>
</geometry>
</collision>
<inertial>
<mass value="1.0"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
- <joint>
- 두 개 이상의 링크를 연결하는 관절을 정의
- 관절은 링크들을 어떻게 연결하고 움직이게 할지를 정의한다.
- type은 관절의 종류이다.
- revolute 회전 , prismatic 직선 이동 , fixed 고정
- parent , child
- 부모와 자식 링크를 정의한다.
- 관절은 부모 링크에서 자식링크로 이동하거나 회전하는 역할을 한다.
- origin은 관절의 상대적인 위치와 회전을 정의
- axis는 관절이 움직일 축을 정의
- limit는 관절의 동작 범위를 정의
<joint name="joint1" type="revolute">
<parent link="base_link"/>
<child link="arm"/>
<origin xyz="0 0 0.1" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit lower="0" upper="1.57" effort="10" velocity="1"/>
</joint>