Robotics ํ๋ก๊ทธ๋๋ฐ์ Robot Operating System(ROS)์์ ๋ก๋ด ๋ชจ๋ธ์ ํํํ๊ธฐ ์ํด์๋ URDF๋ฅผ ์ฌ์ฉํ๋ค.
URDF (Unified Robot Description Format)
- ๋ก๋ด ๋ชจ๋ธ์ ํํํ๊ธฐ ์ํ XML ํ์ผ
- ๋ก๋ด, ์ผ์, ์์ ํ๊ฒฝ์ ์ ์ํ ์ ์์
- ๋งํฌ๋ค์ด ํธ๋ฆฌ์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์
- ๋งํฌ ๊ฐ ์กฐ์ธํธ๋ฅผ ํตํด ์ฐ๊ฒฐ๋จ
* ๋ก๋ณดํฑ์ค์์ ๋ก๋ด์ ํ์ ๋งํฌ, ๋ก๋ด์ ๊ด์ ์ ์กฐ์ธํธ๋ผ๊ณ ํ๋ค.
URDF๋ ๋ค์๊ณผ ๊ฐ์ ๊ณณ์์ ์ฌ์ฉํ ์ ์๋ค.
- Rviz: ROS์์ ๋ก๋ด์ ์ํ๋ฅผ ์๊ฐํํ๋ ํด
- MoveIt!: ROS ๊ธฐ๋ฐ์ motion planning framework
- Simulator (V-Rep, Gazebo, mujoco, etc)
- Rigid multi-body dynamics Library (RBDL, Pinocchio, etc)
์ 4๊ฐ์ง ์ค ๋ง์ด ์ฌ์ฉ๋๋ ๊ณณ์ ์ญ์ Rviz์ Simulator์ ํ ๋ถ๋ฅ์ธ Gazebo์ผ ๊ฒ์ด๋ค. '.urdf'์ ํ์ฅ์๋ฅผ ๊ฐ์ง๋ URDF ํ์ผ์ ๋ง๋ค๋ฉด ๋ค์ํ ๋ก๋ณดํฑ์ค ํ๊ฒฝ์ ์์ฑํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด URDF ํ์ผ์ ์ด๋ป๊ฒ ์์ฑํ ๊น? ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
<!-- 1. ๋ชจ๋ธ ์ด๋ฆ ์ ์ธ (์์ ๋กญ๊ฒ) -->
<robot name="Example_manipulator_1R">
<!-- 2. ๋งํฌ ์ ์ธ (Joint1 ๊ธฐ์ค์์ parent link) -->
<link name="Link 1">
<!-- 3. ์ ์ธ๋ ๋งํฌ ์ ๋ณด ์
๋ ฅ (inertia ์ ๋ณด) -->
<inertial>
<origin xyz="0 0.5 0.5" rpy="0 0 0"/>
<mass "3.9"/>
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />
</inertial>
<!-- 4. ์๊ฐํ ์ ๋ณด ์
๋ ฅ (๋งํฌ์ visual ๋ชจ๋ธ) -->
<visual>
<geometry>
<box size="0.6 0.6 0.3"/>
</geometry>
<material name=" ">
<color rgba="0.5 0.6 0.6 1" />
</material>
</visual>
<!-- 5. ์ถฉ๋ ๋ชจ๋ธ ์
๋ ฅ (๋งํฌ์ collision ๋ชจ๋ธ) -->
<collision>
<origin xyz="0 0.5 0.5" rpy="0 0 0"/>
<geometry>
<box size="0.6 0.6 0.3"/>
</geometry>
</collision>
</link>
<!-- 6. ์กฐ์ธํธ ์ ์ธ -->
<joint name="Joint1" type="revolute">
<origin xyz="0 0.1 0.1" rpy="0 0 0" />
<!-- 7. ํด๋น ์กฐ์ธํธ์ parent & child ๋งํฌ ์ง์ -->
<parent link="Link 1" />
<child link="Link 2" />
<axis xyz="0 0 1" />
</joint>
<!-- 8.์ถ๊ฐ ๋งํฌ ์ ์ธ (Joint1 ๊ธฐ์ค์์ child link)-->
<link name="Link 2"></link>
</robot>
๋งํฌ(link)๋ค์ ํธ๋ฆฌ์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋งํฌ๋ค๋ผ๋ฆฌ๋ ์กฐ์ธํธ(joint)๋ฅผ ํตํด ์ฐ๊ฒฐ๋๋ค. URDF์์๋ ํญ์ ์ด์ ์กฐ์ธํธ์ ์ขํ์ถ์ ๊ธฐ์ค์ผ๋ก ๋ค์ ๋งํฌ ๋๋ ์กฐ์ธํธ์ origin ์ขํ๊ฐ ์ ํด์ง๋ค. joint์ ์ข ๋ฅ๋ก๋ continuous, revolute, prismatic, planar, floating, fixed๊ฐ ์๋ค.
๊ทธ๋ฐ๋ฐ, ์ผ๋ถ ๋ชจ๋ธ ํ์ผ์ ํ์ฅ์๋ '.urdf.xacro'๋ก ์ง์ ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ฌด์์ผ๊น?
URDF๋ ๋ณต์กํ ๋ก๋ด๋ชจ๋ธ์ ์์ ํ๊ธฐ์ ํจ์จ์ ์ด์ง ์๋ค.
๋จ์ํ XML ๊ตฌ์กฐ๋ก ๋์ด์๋ URDF๋ ๋ณต์กํ ๋ชจ๋ธ์ ๊ตฌํํ ๋ ์ผ์ผ์ด ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์กด์ฌํ๋ค. ๋๋ฌธ์ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ์ฆ๋์ํจ XACRO ํ์์ด ์กด์ฌํ๋ฉฐ, XACRO๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ๋ชจ๋ธ์ ๋น๊ต์ ์ฝ๊ฒ ์์ฑํ ์ ์๋ค.
XACRO
- URDF์ ๋จ์์ฑ, ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ, ๋ชจ๋ํ, ํ๋ก๊ทธ๋จ ๊ฐ๋ฅ์ฑ์ ์ถ๊ฐ์ํจ ํ์ผ ํ์
- ๋ณ์, ์์, ์ํ ํํ, ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ ์ ์์
- ๋ณดํต '.launch' ํ์ผ์์ XACRO ํ์ผ์ ๋ถ๋ฌ URDF ํ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ ์ฌ์ฉ
- XACRO Wiki
'๐ป Language > ROS : ๋ก๋ด์์คํ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Ubuntu+ROS2] LG CLOiSim Simulator ์ค์น ๋ฐ ๊ตฌ๋ (0) | 2022.07.26 |
---|---|
[ROS2] Ubuntu 20.04 Focal - ROS2 Foxy ์ค์น ๋ฐ ๊ตฌ๋ (0) | 2022.07.25 |
[ROS] Gazebo ์๋ฎฌ๋ ์ด์ ํ๊ฒฝ์ ๋ํด ์์๋ณด์. (0) | 2022.07.08 |
[ROS] Python์ผ๋ก ๊ฐ๋จํ Publisher & Subscriber ๋ง๋ค๊ธฐ (0) | 2022.07.04 |
[ROS] ROS๋ ๋ฌด์์ธ๊ฐ? (Robotics) (0) | 2022.07.04 |