본문 바로가기

Quadruped Robot/Quadruped Robot Theory

(8)
Quadruped 공부 하고 싶다. #6-3 [Task1 - PPO: Cartpole with Pytorch③-3] #PPO with Cartpole in Pytorch Sim2Real을 하기 이전에, 어떻게 Env와 Agent가 소통을 하는지 직접적으로 코드를 짜서 구현해보는 Task를 진행해본다. 추후에 Isaac-Gym에서 이 부분을 커스텀하게 만들어야 하는데 굉장히 복잡할 거 같아서 좀 무섭지만, 그래도 부딪히고 볼 생각이다. 좌측에 Directory를 보면 우리가 일전에 구현한 PPO_torch.py와 이제 만들게 될 GYM_torch.py를 한 폴더에 넣어주고 from PPO_torch import Agent를 통해 파일을 불러온다. utils코드는 단순하게 성능지표를 png파일로 저장해주는 기능이므로 크게 다룰 것이 없다고 생각한다. Algorithm의 Structure를 위주로 설명해 보고자 한다. Op..
Quadruped 공부 하고 싶다. #6-2 [Task1 - PPO: Cartpole with Pytorch③-2] #PPO with Cartpole in Pytorch 일전에 이어서 올린다는 게 예약을 삭제로 했던 거 같다. 블로그를 정리하다가 지금에서야 발견해서 다시 써보려고 한다. 지난번 내용을 간략하게 정리하면, Algorithm을 완성시키기 위해서는 1. PPOMemory (Observated Data Processing) Simulation에서 Observation 된 6가지의 Data에 대해 읽고 버릴 필요가 있다. 그래서 해당 부분을 class PPOMemory를 통해 Data 저장, 추가, 삭제 만들어주었고 Deep-Learning을 위해 Batch function도 만들어준 것을 볼 수 있다. PPOMemory에서의 키워드는 두가지로 정리된다. DRL(Deep-Reinforcement-Learning..
Quadruped 공부 하고 싶다. #6-1 [Task1 - PPO: Cartpole with Pytorch③-1] #PPO with Cartpole in Pytorch DRL에서 가장 쉬운 예제 CartPole과 Isaac에 쓰이는 Pytorch & PPO의 주제가 겹쳐 해당하는 예제를 토대로 PPO를 분석해보려 한다. 일단 원본 코드[1]에서는 slow error가 나서 일부 수정을하고, Rendering 기능이 따로 없어서 내가 조금 편집한 코드를 올려본다. 그리고 코드를 참조하면서 Pytorch지식이 부족한 부분을 Z_Torch_Example로 공부해 봤다. https://github.com/miercat0424/Cartpolev1-PPO-pytorch/tree/main/My_PPO GitHub - miercat0424/Cartpolev1-PPO-pytorch: Pytorch PPO for Cartpole Ex..
Quadruped 공부 하고 싶다. #5 [Task1 - Proximal Policy Optimization ②] #Proximal Policy Optimization PPO에는 두 가지 큰 타이틀이 존재한다고 한다. 이 두 개를 두고 PPO를 설명한다. 1. The Clipped Surrogate Object 2. Multiple Epochs for Policy Updating PPO에서 Clipped가 핵심 내용이라고 보는데 이부분은 다음 Cartpole PPO③에서 더 자세하게 다루겠다. 성능 부분의 요약은 맨 밑 줄 Conclistions of Clipped Surrogate Object를 참고하면 된다. - 요약 : 간단한 코드이며 안정적인 학습을 이룬다. 그만큼 epoch이 증가하는 것이 특징. 이 부분도 Cartpole③ 코드를 병행하면서 이해하는 것이 더 효과적이므로 다음에 보충 설명하겠다. 중점적으로..
Quadruped 공부 하고 싶다. #4 [Task1 - Policy-Gradient (for PPO)①] #Policy-Gradient Proximal Policy Optimization (PPO)를 배우기 전에 사전 지식으로 Policy - Gradient에 관한 용어 정리가 필요했다. 일반적인 Deep-Learning과는 다르게 Gradient descent가 아닌 'ascent'이다. 이상적인 action의 확률을 뽑기 위해 SoftMax로 출력을 하며 해당 action의 확률을 높이는 방향으로 학습하는 것이 직관적으로 옳기 때문에 ascent라고 한다. 이 부분을 (-) 부호를 붙여 표현하기도 한다. 위 설명을 통해 강화 학습에서 어떤 것을 중점적으로 업데이트하며, Exploration 중 Agent가 좋지 못한 길로 빠졌을 때, 이에 대한 reward 값이 어떻게 조정되어 다시 좋은 길로 수정되는지..
Quadruped 공부 하고 싶다. #3 [Learning to Walk in Minutes Using Massively Parallel DRL] #Intro 본격적으로 Quadruped를 분석하기 앞서 논문[1]을 읽고 어떤 task들을 큰 틀로 잡을지 생각해보기로 했다. 현재 문제는 내 알고리즘을 어떻게 넣을지? 이 부분이 해결이 안 됐는데. 아래 내용들을 토대로 접근해 보려 한다. #DRL Algorithm - PPO (Task 1) 먼저 어떤 정책을 기반으로 알고리즘이 구현됐는지 알아보는 것이 우선이라고 생각한다. 강화 학습에서 state, action이 sim과 어떤 방식으로 상호작용 하는지 알아내는 것이 첫 목표이다. 그래서 Proximal Policy Optimization에서 필요한 지식이 무엇이고 어떻게 Agent와 소통하는지 알아보는 것이 우선이라 생각한다. 그리고 일부 상황에 맞게 다른 Reward를 추가했다는 내용은 추후 내가..
Quadruped 공부 하고 싶다. #2 [Trajectory Planning with High-Speed Trot Gait] #1 Leg Trajectory Planning for Quadruped Robots with High-Speed Trot Gait 1. 전체 구조 논문[1]이 21페이지 정도 되다 보니 읽는데 시간이 좀 걸린 거 같다. 근데 정리하려고 보니까 생각보다 내용의 반복이 많고, 그래프로 비교하는 것이 훨씬 직관적이어서 글로 쓸 내용은 별로 없었다. 2. 간략한 내용 이번 내용은 Simulation에서 Coding을 어떻게 어떤 방향으로 왜 해야 하는지에 대해 알 수 있다. Trajectory를 왜 분석하고, 이를 기반으로 어떤 것을 응용할 수 있는지 알 수 있었는데, Trajectory를 구하는 방법에는 Spline과 Bezier가 대표적인 거 같다. MIT Cheetah에서는 Bezier Curve 방식을..
Quadruped 공부 하고 싶다. #1 [Quadruped Robot] #1 Inverse Kinematic Analysis Of A Quadruped Robot 프로젝트 초점이 4족 보행으로 옮겨가면서, 새롭게 공부를 시작하는 중이다. 기구학 쪽에 그렇다 할 지식이 없었는데, 일전의 Manipulation을 들으면서 배운 Position, Rotation, Tranformation, Pose 등의 개념을 이해하고 좌표계의 설정과 Matrix 연산에 대해 공부한 경험으로 Inverse Kinematic Analysis Of A Quadruped Robot [1] 논문을 읽는데 큰 어려움이 없었다. [Reference] [1] Muhammed Arif Şen, Veli Bakırcıoğlu, Mete Kalyoncu, "Inverse Kinematic Analysis Of A..