일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Mujoco
- CNN
- Stanford
- 머신러닝
- 데보션
- 피드백제어
- 인공지능
- 블로그시작
- 개발
- 제어
- 강화학습
- notion
- ROS
- mnist
- Computer Vision
- 이분 탐색
- 파이썬
- CS229
- 백준
- murray 제어공학
- 누구나 자료구조 알고리즘
- MDP
- 로보틱스
- 제어공학
- q 함수
- ubuntu
- pytorch
Archives
- Today
- Total
기괴기계 (인공지능, ROS, 확률 통계 etc..)
2-link Manipulator in mujoco 본문
오늘은 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>
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>
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>
Simulator 상에서 Model Elemtents Joint로 설정하였을 때 다음과 같은 파란색 joint가 등장
XML 파일에 대한 설명
- <option gravity="0 0 0"/>: 이 태그는 중력 설정을 정의합니다. 여기서 "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"/>: 첫 번째 관절을 정의합니다. 'hinge' 유형의 관절로, 특정 축 주위로 회전합니다.
- <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"/>: 'tip'이라는 이름의 사이트(특정 위치)를 정의합니다. 이는 두 번째 링크의 끝 부분을 나타냅니다.
센서 설정
- <sensor>: 센서 설정을 포함하는 태그입니다.
- <framepos objtype="site" objname="tip"/>: 'tip' 사이트의 위치를 감지하는 센서를 정의합니다.
위의 사진을 보면 동그란 구 형태가 link 제일 끝에 달려 있는 것을 볼 수 있다.
MuJoCo에서 <site> 태그는 시뮬레이션 환경 내의 특정 위치를 표시하는 데 사용됩니다.
이 XML 파일에서 <site name="tip" size="0.1" pos="0 0 0.5"/>는 매니퓰레이터의 'tip', 즉 끝 부분을 나타냅니다.
- name="tip": 이는 사이트의 고유한 이름을 지정합니다. 이 경우 'tip'이라는 이름이 사용되었으며, 이 이름을 통해 프로그램 내에서 해당 위치를 참조할 수 있습니다.
- size="0.1": 사이트의 크기를 정의합니다. MuJoCo에서 사이트는 보통 시각적인 표시를 위한 것이며, 물리적 상호작용을 가지지 않습니다. 크기는 사이트를 시각화할 때 사용되는 구체의 반지름을 나타냅니다.
- pos="0 0 0.5": 이는 사이트의 위치를 지정합니다. 위치 값은 상위 <body> 태그에 정의된 로컬 좌표계를 기준으로 합니다. Site는 두 번째 링크의 몸체 중심으로부터 x축, y축, z축 방향으로 각각 0, 0, 0.5만큼 떨어진 위치에 있습니다.
<sensor> 태그 내의 <framepos objtype="site" objname="tip"/>는 'tip' 사이트의 위치 데이터를 센서를 통해 수집하도록 설정합니다. 이는 로봇 매니퓰레이터의 끝 부분이 어디에 있는지 실시간으로 추적하는 데 유용합니다.