#1 Isaac Gym에서 Simulation 만들기
본 내용은 NVIDIA에서 제공되는 Programming-Simulation Setup를 참조하여 만들었습니다.
1. Simulation Setup & gymapi (개요)
Isaac에서는 비교적 간단한 방법으로 Simulation을 구현할 수 있다.
전체적인 내용을 다루면 글이 길어지기 때문에 Part별로 나눠서 설명하고자 한다.
(그림 1.) Isaac의 특징에 대해 설명을 하고 이어서 gymapi의 기능과 어떻게 모델을 넣고, 어떻게 값을 조정하는지 알아본다.
일단 첫 구성은 그림 2. 에서 나타낸 바와 같이 아이작 짐 Sim의 연산을 위해 하드웨어들을 지정하는 과정이 필요하다.
2. Simulation Parameters 설정하기
이후 Simulation에서 사용될 물리현상들을 정의할 필요가 있다.
정의되는 변수들은 그림 3. 과 같이 다양한 종류들이 있다.
코드를 직접 짜 보면서 Isaac이 기본적으로 추구하는 구조가 정해져 있는데
"""
Main_변수 = gymapi. 사용할_기능()
Main_변수.적용시킬_변수 = 특정한 기능 or Value 지정
Main = gym.create_Main_변수(변수, 들)
"""
이런 식으로 class에서 self로 정의된 항목의 Data를 edit 하는 형식으로
Simulation을 만들어간다.
처음 3D tool을 접해보는데 굉장히 직관적이었다. 위의 구조를 눈에 익혀두면서 코드를 짜 보는 걸 추천한다.
3,4. Plane 생성 & Model 불러오기
설명한 된 바와 같이 무중력 환경이 아니므로 접지가 되는 면이 필요하다. 이는 예전에 Gazebo를 처음 만들 때도 필요했던 설정인데, 이 부분을 #3-1에서 자세하게 설명하고 있다.
또한 #2에서 언급한 것처럼 Main_변수를 만들고
해당 변수의 Data값들을 수정해주면서
마지막에 add_ground를 통해 Custom 된 변수를 생성하는 것이 보인다.
#4 에서는 우리가 만든 Custom Model을 불러오는 역할을 한다.
만일 우리가 불러오는 모델의 추가적인 기능을 넣고 싶다면 AssetOptions()를 통해 다양한 옵션들을 첨부할 수 있다.
공식 Document에 따르면 이 기능이 대략 20가지 정도 돼 보인다.
전부 기재하고 싶었지만 과하게 길어져서 이는 생략한다.
Line 94의 fix_base_link 값을 조정해서 모델을 기저에 고정 하거나 자유롭게 움직이거나 할 수 있다.
5. Actor와 Env 만들기
Isaac은 env속 actor가 존재한다는 느낌으로 흘러간다. (다른 툴도 그러는지 잘 모르겠다.)
여기서 눈여겨볼게 collision기능 쪽인데
Reinforcement Learning 할 때 이 부분을 참고해서, train 때 다른 파일들과 충돌하지 않게
독자적인 env에서 task를 수행할 수 있겠구나 하는 생각을 가졌다.
물론 예제를 더 뜯어봐야 알겠지만, 일단 내 개인 Custom 모델을 넣고자 할 때 어떻게 흘러갈지 감이 잡히더라.
일단 여기까지 하면 backend에서의 거의 모든 작업이 완료됐다.
물론 실행하면 아직은 아무런 창이 나오지 않을 것이다. Viewer를 따로 설정해줘야 하기 때문.
이 부분은 다음에 업로드하려고 한다.
'Isaac Gym' 카테고리의 다른 글
시뮬레이션 하고 싶다. #4-1 [Isaac Gym Environments for Legged Robots-Anymal] (1) | 2022.01.16 |
---|---|
시뮬레이션 하고 싶다. #3-2 [Make Custom Gym (Part 2)] (2) | 2022.01.07 |
시뮬레이션 하고 싶다. #2-2 [Environments, Training, and Tips] (0) | 2021.12.26 |
시뮬레이션 하고 싶다. #2-1 [Environments, Training, and Tips] (0) | 2021.12.26 |
시뮬레이션 하고 싶다. #1 [Install] (5) | 2021.12.26 |