기괴기계 (인공지능, ROS, 확률 통계 etc..)

2-link Manipulator in mujoco 본문

로보틱스

2-link Manipulator in mujoco

🥭망고 2024. 1. 24. 21:15

 

오늘은 mujoco상에서 2-link maniplulator를 만들어 볼 것이다. 아래의 링크를 참고하였다.

https://www.youtube.com/watch?v=Fiq_hpaoeH0&list=PLc7bpbeTIk75dgBVd07z6_uKN1KQkwFRK&index=8

Cylinder and Rendering

<mujoco>
  <option gravity="0 0 0"/>
  <worldbody>  
    <light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/>
    <geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/>
    <body pos="0 0 1">
      <joint type="free"/>
      <geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/>
    </body>
    <body pos = "0 0 2">
        <joint type="free"/>
        <geom type="box" size=".1 .2 .3" rgba="0 0 0.9 1"/>
    </body>
  </worldbody>
</mujoco>

Untitled.pngUntitled.png

Simulator 상에서 Rendering/Frame/ body로 설정하였을 때 다음과 같은 축이 등장

Cylinder changed euler(angle)

<mujoco>
  <option gravity="0 0 0"/>
  <worldbody>  
    <light diffuse=".5 .5 .5" pos="0 0 10" dir="0 0 -1"/>
    <geom type="plane" size="2 2 0.1" rgba="1 1 1 1"/>
    <body pos="0 0 1" euler="0 90 0">
      <joint type="free"/>
      <geom type="cylinder" size="0.05 0.5" rgba="1 0 0 1"/>
    </body>
  </worldbody>
</mujoco>

Untitled.png

Simulator 상에서 Rendering/Frame/ body로 설정하였을 때 다음과 같은 축이 등장

그 후 중간과정 생략

2-link manipulator

<mujoco>
    <option gravity="0 0 0"/>
    <worldbody>
    <light diffuse=".5 .5 .5" pos="0 0 10" dir="0 0 -1"/>
    <geom type="plane" size="2 2 0.1" rgba="1 1 1 1"/>
    <body pos="0.5 0 0.1" euler="0 90 0">
        <joint type="hinge" axis="-1 0 0" pos="0 0 -0.5"/>
        <geom type="cylinder" size="0.05 0.5" rgba="1 0 0 1"/>
        <body pos="0 0 1" euler="0 0 0">
            <joint type="hinge" axis="-1 0 0" pos="0 0 -0.5"/>
            <geom type="cylinder" size="0.05 0.5" rgba="0 1 0 1"/>
            <site name="tip" size="0.1" pos="0 0 0.5"/>
            </body>
        </body>
    </worldbody>
    <sensor>
        <framepos objtype="site" objname="tip"/>    
    </sensor>
</mujoco>

Untitled.pngUntitled.png

Simulator 상에서 Model Elemtents Joint로 설정하였을 때 다음과 같은 파란색 joint가 등장

 

XML 파일에 대한 설명

  1. <option gravity="0 0 0"/>: 이 태그는 중력 설정을 정의합니다. 여기서 "0 0 0"은 중력이 없음을 의미합니다.
  2. <worldbody>: 이 태그는 시뮬레이션 세계의 모든 물리적 객체를 포함하는 최상위 컨테이너입니다.
  3. <light diffuse=".5 .5 .5" pos="0 0 10" dir="0 0 -1"/>: 이 태그는 빛의 소스를 정의합니다. 빛의 색상, 위치, 방향이 지정됩니다.
  4. <geom type="plane" size="2 2 0.1" rgba="1 1 1 1"/>: 이 태그는 평면을 생성합니다. 이 평면은 시뮬레이션 공간의 '바닥' 역할을 합니다.

첫 번째 링크

  1. <body pos="0.5 0 0.1" euler="0 90 0">: 첫 번째 링크의 몸체를 정의합니다. 위치와 방향(오일러 각)이 지정됩니다.
  2. <joint type="hinge" axis="-1 0 0" pos="0 0 -0.5"/>: 첫 번째 관절을 정의합니다. 'hinge' 유형의 관절로, 특정 축 주위로 회전합니다.
  3. <geom type="cylinder" size="0.05 0.5" rgba="1 0 0 1"/>: 첫 번째 링크의 형태를 원통으로 정의합니다.

두 번째 링크

  1. <body pos="0 0 1" euler="0 0 0">: 두 번째 링크의 몸체를 정의합니다.
  2. <joint type="hinge" axis="-1 0 0" pos="0 0 -0.5"/>: 두 번째 관절을 정의합니다.
  3. <geom type="cylinder" size="0.05 0.5" rgba="0 1 0 1"/>: 두 번째 링크의 형태를 원통으로 정의합니다.
  4. <site name="tip" size="0.1" pos="0 0 0.5"/>: 'tip'이라는 이름의 사이트(특정 위치)를 정의합니다. 이는 두 번째 링크의 끝 부분을 나타냅니다.

센서 설정

  1. <sensor>: 센서 설정을 포함하는 태그입니다.
  2. <framepos objtype="site" objname="tip"/>: 'tip' 사이트의 위치를 감지하는 센서를 정의합니다.

위의 사진을 보면 동그란 구 형태가 link 제일 끝에 달려 있는 것을 볼 수 있다.

MuJoCo에서 <site> 태그는 시뮬레이션 환경 내의 특정 위치를 표시하는 데 사용됩니다.

이 XML 파일에서 <site name="tip" size="0.1" pos="0 0 0.5"/>는 매니퓰레이터의 'tip', 즉 끝 부분을 나타냅니다.

  1. name="tip": 이는 사이트의 고유한 이름을 지정합니다. 이 경우 'tip'이라는 이름이 사용되었으며, 이 이름을 통해 프로그램 내에서 해당 위치를 참조할 수 있습니다.
  2. size="0.1": 사이트의 크기를 정의합니다. MuJoCo에서 사이트는 보통 시각적인 표시를 위한 것이며, 물리적 상호작용을 가지지 않습니다. 크기는 사이트를 시각화할 때 사용되는 구체의 반지름을 나타냅니다.
  3. pos="0 0 0.5": 이는 사이트의 위치를 지정합니다. 위치 값은 상위 <body> 태그에 정의된 로컬 좌표계를 기준으로 합니다. Site는 두 번째 링크의 몸체 중심으로부터 x축, y축, z축 방향으로 각각 0, 0, 0.5만큼 떨어진 위치에 있습니다.

<sensor> 태그 내의 <framepos objtype="site" objname="tip"/>는 'tip' 사이트의 위치 데이터를 센서를 통해 수집하도록 설정합니다. 이는 로봇 매니퓰레이터의 끝 부분이 어디에 있는지 실시간으로 추적하는 데 유용합니다.

'로보틱스' 카테고리의 다른 글

XML  (1) 2024.01.24
MUJOCO 설치  (0) 2024.01.24