본문 바로가기

Quadruped Robot/Quadruped Robot Theory

Quadruped 공부 하고 싶다. #3 [Learning to Walk in Minutes Using Massively Parallel DRL]

728x90

#Intro

본격적으로 Quadruped를 분석하기 앞서 논문[1]을 읽고 어떤 task들을 큰 틀로 잡을지 생각해보기로 했다.

현재 문제는 내 알고리즘을 어떻게 넣을지? 이 부분이 해결이 안 됐는데. 아래 내용들을 토대로 접근해 보려 한다.

 

#DRL Algorithm - PPO (Task 1)

그림 1. PPO Algorithm

먼저 어떤 정책을 기반으로 알고리즘이 구현됐는지 알아보는 것이 우선이라고 생각한다.

강화 학습에서 state, action이 sim과 어떤 방식으로 상호작용 하는지 알아내는 것이 첫 목표이다.

그래서 Proximal Policy Optimization에서 필요한 지식이 무엇이고 어떻게 Agent와 소통하는지 알아보는 것이 우선이라 생각한다.

그림 2. 특정 상황 설정

그리고 일부 상황에 맞게 다른 Reward를 추가했다는 내용은 추후 내가 어떤 것들을 고려해야 하는지 감을 잡게 해 준다.

 

#Important Values (Task 2)

그림 3. Observations, Actions, and Rewards

PPO를 사용하면서 Observation이 어떤 정보들을 모으는지에 대해 참조하는 구문이다. 

모터의 개수에 집중하여 해당 Parameter들의 Penalty 값을 조정하는 것으로 알고 있는데

나중에 다른 모델을 만들 때도 위에서 어떤 것을 measured 하는지 중점적으로 확인할 필요가 있었다.

그림 4. Push & Neural Network

DRL에서는 Agent가 exploration 하는 방법 또한 중요한 포인트이다. 이 부분에 대해서 Push를 통해 새로운 action을 언제 하는지에 대한 언급이 나와있다.

또한 Policy update를 하면서 가중치를 LSTM으로 관리했다고 나와있다.

 

이후에는 Isaac Gym의 성능에 관한 그래프들을 나열하면서 몇 개의 envs와 몇 번의 policy를 update 해야 20분 내의 시간을 갖는지 이런저런 자료들이 소개된다.

 

#Considerable Things (Task 3)

그림 5. Sim2Real

논문에서는 A1 robot은 기존에 train 하던 Anymal Robot에 비해 더 적은 차원을 가지고 있다고 한다.

즉, PPO에서 Parameter의 값 중 PD gains, Torque penalties, Default joint configurations를 수정했다고 한다.

그리고 Real에서 terrain의 계단 높이를 Lidar를 사용하여 측정을 했다고 한다. 

 

#Conclusion

위의 3가지 Task를 중점적으로 Isaac Gym에서의 Quadruped 모델을 분석하려 한다.

일단 PPO가 무엇인지 먼저 공부 중인데 이 부분을 Pytorch를 통해 연습해보는 중이다.

https://medium.com/analytics-vidhya/coding-ppo-from-scratch-with-pytorch-part-1-4-613dfc1b14c8

 

Coding PPO from Scratch with PyTorch (Part 1/4)

Learn to code a simple PPO from scratch using PyTorch Part 1.

medium.com

간단한 Algorithm 이해 정도만 하고 Parameter들을 어떻게 고려하는지 중점적으로 볼 예정이다. 

 

그리고 leggedgym에서 play.py를 기점으로 code flow를 살펴보려 한다. 

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

 

Reference

[1] Nikita Rudin, David Hoeller, Philipp Reist, Marco Hutter, "Learning to Walk in Munutes Using Massively Parallel Deep Reinforcement Learning," ETH Zurich and NVIDIA, 30 Oct 2021.

https://arxiv.org/abs/2109.11978

 

Learning to Walk in Minutes Using Massively Parallel Deep Reinforcement Learning

In this work, we present and study a training set-up that achieves fast policy generation for real-world robotic tasks by using massive parallelism on a single workstation GPU. We analyze and discuss the impact of different training algorithm components in

arxiv.org