Super Kawaii Cute Cat Kaoani URDF 튜토리얼(2) (Building a Movable Robot Model with URDF)

연구/컴퓨터 그래픽스

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

치킨고양이짱아 2023. 1. 19. 15:40
728x90
728x90
728x90

이전 게시물의 튜토리얼 통해서 Robot의 joint, link의 위치를 정할 수 있었고 material도 설정해줄 수 있었다.

2023.01.19 - [컴퓨터 그래픽스] - URDF 튜토리얼(1) (Building Visual Robot Model)

 

URDF 튜토리얼(1) (Building Visual Robot Model)

skel file 이해하는것도 힘들었는데 isaac gym에서 skel file을 지원하지 않아서 urdf 파일을 새로 만들어야하는 상황이 생겨버렸다..ㅠㅠㅠㅠㅠㅠㅠ 어쨌든 이해해보자구!! 1. URDF란? unified robot description

chickencat-jjanga.tistory.com

하지만 이 튜토리얼에서 정의한 로봇은 Movable하지 않다! 이번 튜토리얼에서는 joint의 type을 변경하여 robot이 Movable할 수 있도록 바꿔볼 것이다.

 

1. The Head

  <joint name="head_swivel" type="continuous">
    <parent link="base_link"/>
    <child link="head"/>
    <axis xyz="0 0 1"/>
    <origin xyz="0 0 0.3"/>
  </joint>

위의 joint는 body와 head link를 잇는 joint이다. head는 수직축에 대하여 360도 회전이 가능해야한다.

따라서 type은 "continuous"로 설정해주었다. continuous type joint는 negative infinity부터 postive infinity까지 모든 angle 값을 취할 수 있는 joint이다. 

그리고 head는 수직축에 대해 회전을 하게 되므로 urdf에서 수직방향을 의미하는 z축을 회전축으로 설정해주었다. (<axis xyz ="0 0 1">)

2. The Gripper

  <joint name="left_gripper_joint" type="revolute">
    <axis xyz="0 0 1"/>
    <limit effort="1000.0" lower="0.0" upper="0.548" velocity="0.5"/>
    <origin rpy="0 0 0" xyz="0.2 0.01 0"/>
    <parent link="gripper_pole"/>
    <child link="left_gripper"/>
  </joint>

right, left gripper joint는 모두 revolute joints 로 modeled 되었다.

revolute joint는 continous joint와 같은 방식으로 rotate하지만, strict limit가 존재하는 joint이다.

따라서 joint의 type을 revolute joint로 설정해줄때는 upper limitlower limit을 radian 단위로 설정해주어야한다.

또한 maximum velocityeffort(응력, 항력)도 반드시 설정해주어야 한다.

3. The Gripper Arm

  <joint name="gripper_extension" type="prismatic">
    <parent link="base_link"/>
    <child link="gripper_pole"/>
    <limit effort="1000.0" lower="-0.38" upper="0" velocity="0.5"/>
    <origin rpy="0 0 0" xyz="0.19 0 0.2"/>
  </joint>

Gripper Arm은 이때가지 봤던 joint와 다른 종류의 joint이다. axis를 중심으로 회전하는 것이 아니라 axis를 따라 움직이는 joint이다. 이런 joint는 "prismatic" type의 joint로 정의하면 된다.

prismatic type joint의 limit은 revolute joint와 동일하게 정의하면 되는데, 여기서는 radian 단위가 아니라 meter 단위이다.


이렇게 joint에는 fixed type 외에도 다양한 type이 있으며, 이를 사용하면 움직이는 robot을 만들 수 있다!

728x90
728x90