본문 바로가기

Others

MJCF 파일 분석(5) - 나만의 Manipulator task를 mujoco에서 만들자

작성자 : 김한결 / 석박통합과정 (gksruf621@postech.ac.kr)

 

원래는 XML 파일과 Env가 전부 포함된 파일을 git에 올리고 공개하려고 했는데 비슷한 내용으로 일을 하게되어 추후 공개 허락을 받고 공개하도록 하겠습니다. 그래도 여기까지 읽어주신 분들을 위해 대략적으로 어떤 방식으로 만들었는지를 공유하려고 합니다.

 

MJCF 파일 분석(4)에서 언급했던 <class 'environment.mujoco.Indy7_OpenDoor_v1.Indy7_OpenDoorEnv'> 의 Indy7_OpenDoorEnv class를 담은 python 파일에 필요한 내용들을 살펴보겠습니다.

 

1. mujoco_env.MujocoEnv

2. _get_obs

3. step

4. reset_model

5. viewer_setup

6. reward shaping

 

이미 gym에 존재한 파일들을 살펴보시면 위 내용은 쉽게 파악하실 수 있습니다.

 

1. mujoco_env.MujocoEnv

보통 init에 포함되며 xml파일을 불러오는 역할을 합니다.

 

2. _get_obs

MJCF 파일 분석(3)에서 말씀드린 refer를 가지고 필요한 정보들을 가져와 어떤 obs를 state로 넘겨줄 것인지 결정하면 됩니다.

 

3. step

gym의 step과 동일합니다. 여기서는 simulation을 실행하게 되어있으며 계산된 reward를 포함하여 done 또는 부가적인 infomation을 줄 수 있도록 설계해야합니다.

 

4. reset_model

모델의 초기값을 넣어주지만 곳입니다. 보통 generization을 증가시키기위해 object 혹은 robot의 qpos를 조금씩 바꿔주기도 하는데, MJCF 파일 분석(3)에서 body pos에 noise를 넣어주는 식으로 구현할 수 있습니다. metaworld에서 이러한 방식을 사용하고 있어 이를 차용한 것입니다.

 

5. viewer_setup

render했을때 어떤 뷰로 보는지를 설정하는 곳입니다. 추후에 hand camera를 센서로 달고 학습하는 모델을 만들 계획인데 그때 더 세세하게 다루겠습니다.

 

6. reward shaping

보통은 metaworld, robosuite 둘을 참고하여 설계하시면 됩니다. 아니면 개인의 직관에 맡겨도 되지만 metaworld가 왜 그런 reward를 사용했는지 robosuite가 어떤 방식을 사용하는지를 충분히 살펴보고 작성하는 것을 추천드립니다. (제가 고생을 많이하고 있어서...)

 

이번 글은 여기까지