URDF vs SDF
- URDF와 SDF은 robot description format 으로, 로봇을 묘사할 때 사용된다
- URDF는 주로 RVIZ에서 사용되며, SDF는 Gazebo에서 주로 사용된다.
- URDF -> SDF로 쉽게 변환 가능하다. (gazebo 명령어)
gz sdf -p model.urdf > model.sdf
구성 요소
- 기저 (base): 로봇이 고정된 부분
링크 (link): 로봇 팔 등
말단장치 (end effector): 로봇 손 - 조인트 (joint): 기저, 링크, 말단장치를 연결짓는 부분. 즉, 링크간의 관계를 기술한다.
- 주된 구성 부분은 링크와 조인트임.
- 링크는 외형/무게/관성모멘트 등으로 구성되며, 특히 외형은 stl이나 dae 포맷을 사용한다.
- 조인트는 운동과 관련된 운동종류/운동축/힘/속도 등으로 구성된다. 운동은 주로 병진 (prismatic)이나 회전 (revolute)으로 구성된다
- base_link 랑 arm_link 이 base_to_arm으로 연결된 로봇 예제
<robot name="simple_robot">
<!-- 링크 정의 -->
<link name="base_link">
<visual>
<geometry>
<box size="0.5 0.5 0.1"/>
</geometry>
<material name="grey">
<color rgba="0.5 0.5 0.5 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.5 0.5 0.1"/>
</geometry>
<origin xyz="0 0 0" rpy="0 0 0"/>
</collision>
<inertial>
<mass value="1.0"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
<inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
</inertial>
</link>
<link name="arm_link">
<visual>
<geometry>
<cylinder radius="0.05" length="0.5"/>
</geometry>
<material name="blue">
<color rgba="0 0 1 1"/>
</material>
</visual>
<collision>
<geometry>
<cylinder radius="0.05" length="0.5"/>
</geometry>
<origin xyz="0 0 0.25" rpy="0 0 0"/>
</collision>
<inertial>
<mass value="0.5"/>
<origin xyz="0 0 0.25" rpy="0 0 0"/>
<inertia ixx="0.005" ixy="0" ixz="0" iyy="0.005" iyz="0" izz="0.005"/>
</inertial>
</link>
<!-- 조인트 정의 -->
<joint name="base_to_arm" type="revolute">
<parent link="base_link"/>
<child link="arm_link"/>
<origin xyz="0 0 0.05" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit lower="-1.57" upper="1.57" effort="10" velocity="1"/>
</joint>
<!-- 재료 정의 -->
<material name="grey">
<color rgba="0.5 0.5 0.5 1"/>
</material>
<material name="blue">
<color rgba="0 0 1 1"/>
</material>
</robot>
시각화 하기
- URDF는 launch로 rviz에서 확인한다.
sudo apt-get install ros-humble-urdf-tutorial
ros2 launch urdf-tutorial display.launch.py model:=<.urdf 주소>
- URDF는 tf tree로도 확인 가능하다.
# option1. rqt상에서 확인
sudo apt-get install ros-humble-tf2-tools
sudo apt-get install ros-humble-rqt-tf-tree
# option2. pdf로 저장해서 확인
ros2 run tf2_tools view_frames
- SDF는 Gazebo에서 확인한다
# 환경변수 확인
echo $GAZEBO_MODEL_PATH
# sdf가 존재하는 경로를 환경변수로 등록
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:<원하는 경로>
# 확인
gazebo --verbose
# World확인
gazebo <>.world --verbose
'Skills' 카테고리의 다른 글
GUI 제작 Tool: PySide & PyQt (1) | 2024.12.14 |
---|---|
Docker + VScode 사용법 (5분 내로 핵심만) (0) | 2024.12.05 |
Github 사용법 (5분 내로 핵심만) (0) | 2024.12.04 |