본문 바로가기

Isaac Gym

시뮬레이션 하고 싶다. #2-2 [Environments, Training, and Tips]

728x90

#1 Isaac Gym (Part 2: Environments, Training, and Tips)

1) Reinforcement Learning 

다양한 예시들을 Repository에 모아두시고 링크를 달으시면서 시작하신다.

 

Training 에 앞서, Document 내용

해당 튜토리얼을 따라 하기 위해 isaacgym 디렉터리에서 Git을 가져왔다.

복 사 중

$ git clone https://github.com/Denys88/rl_games

 

GitHub - Denys88/rl_games: RL implementations

RL implementations. Contribute to Denys88/rl_games development by creating an account on GitHub.

github.com

 

 

근데 직접 깔아보니 공식문서를 보면 다른 링크가 해당 내용을 담고 있다. 

영상 강의를 보기 전에 미리 Document로 연습해 봤는데, 4 달이라는 시간 동안 조금 수정됐나 보다. 

내가 찾은 링크는 https://github.com/NVIDIA-Omniverse/IsaacGymEnvs 였다.

$ git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs

 

GitHub - NVIDIA-Omniverse/IsaacGymEnvs: Isaac Gym Reinforcement Learning Environments

Isaac Gym Reinforcement Learning Environments. Contribute to NVIDIA-Omniverse/IsaacGymEnvs development by creating an account on GitHub.

github.com

위 링크를 복제하고 isaacgymenvs에 들어가면 train.py라는 파일이 있는데 이 파일 하나로 수많은 모델들을 한 번에

RL 하는 것을 볼 수 있다. 

 

자세한 설치 내용은 README.md를 보면 알 수 있다. (setup.py가 있는 곳에서 pip install -e . 잊지 말자)

 

2) Ant 

문서에서 제시된 대로 코드를 실행하면 

$ python train.py task=Ant

 

예제1) 코드
예제1) 결과

자칭 개미라는 친구들이 열심히 걷는 연습을 하는 걸 볼 수 있다.

굉장히 느린 속도로 개미 친구들이 움직이는데, 이는 학습과 병행하면서 시뮬레이션을 하기 때문이라 생각한다.

학습이 주된 목적이기 때문에 학습에만 집중하고 싶다면, Issac Gym 창에서 키보드 "v"키를 누르면 화면이 정지하고

학습에만 몰두하는 모습이 터미널에 표시된다. (빨리 진행된다)

 

깃 헙에서 제공하는 README.md 파일을 보면 어떻게 예제들을 돌리는지 자세하게 설명이 나온다. 

train에서 test 까지

위 과정 중에 checkpoint="./runs/~"로 파일을 불러오는 예시를 제시하는데, 희한하게 나는 안된다.

물론 코드는 잘못이 없고 내가 오타가 중간에 있다거나 경로 문제가 있을 거라고 생각하는데

음... 이에 대한 오류 보고도 따로 못 찾아서 일단은 보류 중이다. 

 

어쨌든 마지막 줄에 있는 코드를 입력해 보면

$ python train.py task=Ant checkpoint=runs/Ant/nn/Ant.pth test=True num_envs=64

예제 1-1) 테스트 코드
예제1-1) 테스트 결과

터미널에 디렉터리가 변경됐는데, 그냥 너무 지저분하게 길어서 내가 임의로 옮겼다.

근데 단순하게 $mv 커맨드로 옮기면 환경에서 오류가 난다.

해결해보려 했는데, 공부 시간이 아까워서 원하는 환경에서 재설치했다. (1분도 안 걸리더라 진짜 최고)

 

이후 영상에서는 Documents에서 제시되는 다양한 예제들을 제시된 방법대로

다양~하게 응용할 수 있다고 설명한다.

 

3) Anymal 

위의 예제들을 참고하여 train.py task 중 Anymal을 한번 train 시켜봤다. 

 

$ python train.py task=Anymal

예제 3) Anymal train과정

예전에 KAIST의 황보제민 교수님 세미나를 보면서 RAISIM에서 Quadropedal 로봇들이

열심히 train 하는 걸 봤는데, 아주 조금이나마 따라 할 수 있는 내 모습에 

뿌듯함을 느낀다. 

물론 현실 기계에 넣는 방법 자체가 기술이지만, 한 발짝씩 따라가 보자