본문 바로가기

Isaac Gym

시뮬레이션 하고 싶다. #4-1 [Isaac Gym Environments for Legged Robots-Anymal]

728x90

#1 Intro

결과

https://github.com/leggedrobotics/legged_gym

 

GitHub - leggedrobotics/legged_gym: Isaac Gym Environments for Legged Robots

Isaac Gym Environments for Legged Robots. Contribute to leggedrobotics/legged_gym development by creating an account on GitHub.

github.com

 

Nvidia에서 제공하는 다양한 Tutorial을 리뷰하기 앞서, 공동의 목표가 잡힌 Quadruped Robot에 초점을 맞추다가 취리히 공대에서 오픈된 코드를 하나 발견할 수 있었다. 

 

아직은 참조된 논문은 읽어보지 못 했지만, 이는 이론적인 부분에서 다루고 Simulation에만 집중해서 얘기해보려 한다.

 

짧게나마 인상적이였던 구문은,

대부분의 논문들은 120시간, 88시간 12시간 등등의 학습시간을 보였지만, Isaac gym은 parallel training에 집중하여 개발 된만큼

오로지 Single GPU만을 사용해 그 시간을 최소 20분이하로 단축시키는데 성공하였다고 한다.

#2 Installation

일단 해당 코드를 돌려보기 전에 사전에 준비를 몇 가지 해야 한다.

github주소에 자세한 설명이 돼 있지만 간략하게 정리하면.

1. torch 버전 맞추기

2. Isaac Gym 설치하기

3. rsl_rl 설치하기

4. leggedrobotics 설치하기

 

대략적으로 4가지 단계로 분류된다. 

 

일단 내 같은 경우에는 일전에 아이작을 설치해놨고, 단순하게 git clone 하면 되겠지 했는데

1. torch attributes error가 발생하였다.

pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

해당 README.md 에서 언급됐듯이 1.10의 torch를 설치하면 해결되는 모습을 보였다. 

 

3. 그리고 난 뒤에 rsl_rl을 설치하였는데

git clone https://github.com/leggedrobotics/rsl_rl

자세한 이유는 모르겠지만 rsl_rl을 pip install -e . 를 하고 난 뒤 약간의 에러 문구가 보였다.

아마 버전에 대한 error 메시지였던 거 같은데, 프로그램을 실행하는 데는 아무 문제가 없었다.

(항상 말하지만 setup.py가 있는 곳에서 pip install -e . 를 해야 한다.)

 

4. 이제 드디어 위에 포스팅한 git hub의 directory에서 

pip install -e .

를 해주면 설치가 완료된다.

※ 저는 rsl_rl안에 legged_gym을 clone하지 않았습니다. 디렉토리 자체만 잘 설정하면 상관 없긴 합니다.

 

#3-1 Usage - train.py

그림 1. 사용방법

그림 1. 에서 나온 대로 사용방법에 대해 알아보면 기재된 경로가 실제와는 조금 다르다는 것을 볼 수 있다.

나 같은 경우에는 

그림 2. train.py & play.py 경로

legged_gym/scripts에 해당 파일이 있었다.

경로 자체가 달라서 python 경로/어쩌고/train.py를 하지 않고

위 그림 2.처럼 scripts경로에 직접 들어가서

그림 3. train

python train.py --task=anymal_c_rough

를 입력해주면! 조금 시간이 걸린다.

Isaac gym에서 Terrain이 포함된 파일을 불러오면 시간이 좀 걸렸다.

아무래도 모델과 환경 전부 불러오다 보니 조금 시간이 걸리나 보다.

 

Isaac은 항상 'v'를 눌러서 시뮬레이션을 멈추고 강화학습에만 집중 할 수 있는 기능을 제공한다.

어느정도 봤으면 v를 누르고 학습에 집중시켜 빨리 끝내자.

그림 4. Train 하는 모습
그림 5. Iteration 결과

#3-2 Usage-play.py

약 1500번의 학습이 끝나면 play.py파일로 내가 훈련시킨 모델을 테스트해볼 수 있다.

train 시켜놓고 그동안에 ros공부를 하고 있었는데, 생각보다 시간이 좀 걸렸다. 한 10~20분? 쯤 (3080 ti 사용 중입니다.)

근데 논문을 열어보니, 다른곳은 12시간 training할 때 이건 single gpu로 20분만에 한다는 것이 굉장한 강점이라고 소개 돼 있다.

아는만큼 보인다는데, 난 복받은 train을 했던 것이였다.

그림 6. test 코드

python play.py --task=anymal_c_rough

이렇게 테스트를 실행하면,

그림 7. 테스트 결과

좌측에 matplot이랑 같이 아이들이 뛰어다니는 모습을 볼 수 있다.

 

#4 수정

plot이 서로 겹쳐서 나오는 경향이 있는데, 이는 legged_gym/utils/logger.py 파일을 열어서

Line 126에 plt.tight_layout()을 추가해주면 해결된다. 

그림 8. 일부 수정

 

#5 앞으로의 진행

이제부터는 이 시뮬레이션을 기점으로 내 모델을 강화 학습에 넣어보려 한다. 

혼자 하려고 보니까 너무 많은 내용이 있어서, 몇몇 사람들과 공부하면서 같이 해결해 보려 한다.

혼자만 공부하다가 관심 있는 사람들이 모여서 한다고 생각하니, 굉장히 기분이 좋다.