# Intro
오늘은 드디어 Simulation 상에서 나의 Custom Model 자세 제어를 할 수 있게 됐다.
일전의 FrameWork를 정리한 경험과 다양한 분들의 의견을 수렴하고 논문들을 들춰본 결과
이런 좋은 결과가 일찍 나올 수 있던것 같다.
# Reward & Reset
일단 처음에는 있는 코드를 기반으로 FrameWork를 수정했다.
아래는 기존에 있던 CartPole 코드의 Reward 부분이다.
182번째 줄의 Reward는 자문해본 결과
reward 선정 방식과 reset에 대해 설명을 해주었다. 간단하게 풀어서 말하면
1. reward 선정
reward의 선정 방식은 NVIDIA에서 임의로 짰다고 한다. 자세한 설명은 해주지 않고
보상 1에서 제어하고자 하는 요소들을 (-) 요소로 만들어서 조건을 만족하지 못하면
최대한 적은 보상을 주는 식으로 설계한 것이 보인다.
2. reset
reset은 constraints를 정하고 정해진 범위를 초과하면 model이 초기화되고
reward를 강제로 -1, -2 로 변환한다.
정리하면, 내가 원하는 control에 맞게 보상 차감 요소를 설계해야 한다는 것이다.
# Idea
이제 내 모델이 왜 제대로 안 서있지? 가 해결 문제로 남아있게 된다.
설계 부터 파일 변환까지 어떤 부분에서 문제가 있는지 파악하는 것이 가장 중요하다고 생각했는데,
이 부분은 4족 보행 (Quadruped Robot)에서 경험해 보았다.
그리고 이번에는 Simulation상에서 Reward를 설계하는 방법
즉 Software적인 측면에서 문제를 해결해야 하는 경우가 나와서 굉장히 신이 났다.
1. CartPole Reward의 한계점.
일단 처음에는 위 그림 1. 의 방법 그대로 인용하여 Model Training을 시켰는데,
이건 뭐 예시를 들 것도 없이 시작과 동시에 아무런 움직임도 보이지 않는다.
이유는 단순했다.
우리가 원하는 목표는 Link1과 Link2가 수직으로 서는 것이다, 즉 θ1 = ±π, θ2 = 0 이 만족 해야 한다는 뜻이다.
그림 1을 보면 CartPole에서는 단순하게 Pole_Ang * Pole_Ang로 구현했는데
이건 초기 위치(Init Position)가 위로 세운 상태로 학습 시켰기 때문에 모델이 시작과 동시에
reward가 괜찮은 지점을 찾아서 별다른 문제없이 0에 가까운 값을 찾을 수 있던 것이다.
다른 말로는 모델이 탐험할 필요가 상대적으로 적다고 생각했다.
내가 만든 Acrobot 역시 초기 아래로 쳐진 위치, θ = 0으로 시작한다.
하지만 내 모델은 반대 방향으로 수직이 돼야 하므로 위의 방식을 사용했다가는 제대로 된 학습을 하지 않고
꼼수를 부려서, reward만 챙겨가는 식으로 설계가 이뤄졌던 것이다.
우리가 원하는 방향은 충분한 탐험 끝에 Desired Position을 찾아가는 것이므로
그림 1. 의 보상 설계 방식은 탐험하지 못하고 갇히는 task로 진행되는 것이었다.
Solution 1 - Radian (실패)
처음엔 그냥 radian값들을 바탕으로 보상을 설계해보려 했다.
단순하게 θ1 = ±π, θ2 = 0 이 되게 범위로 설정해 보았는데, 이렇게 하면 θ2가 조금만 움직여도
reward가 -1 이 되는 문제가 생겨서, swing을 하지 못하는 문제점이 발생했다.
그리고 radian으로 보상을 설계하면, 초기에 과도한 페널티가 적용돼서 모델이 갇히는 경우가 허다했다.
모델이 2번 3번 회전하게 되면 radian은 3, 4, 5 점점 커져만 갔고 이렇게 되면 reward는 터무니없는 숫자로 깎여 나간다.
그래서 페널티로 주는 부분을 최대한 0 ~ 1 사이로 변환시키는 과정이 필요했고 이를 위해 삼각함수를 사용하기로 했다.
글이 길어지니까 바로 이어지는 다음 글에서 설명한다.
'Sim2Real > Acrobot' 카테고리의 다른 글
Simulation to Real. #7 [Acrobot-IsaacGym : Inverted Pendulum Balance] (5) | 2022.03.23 |
---|---|
Simulation to Real. #6 [Acrobot-IsaacGym : Inverted Pendulum Balance] (0) | 2022.03.23 |
Simulation to Real. #4 [Acrobot-IsaacGym : rl-games] (0) | 2022.03.12 |
Simulation to Real. #3 [Acrobot-하드웨어 만들기 ①] (0) | 2022.03.08 |
Simulation to Real. #2 [Dynamic-Randomization] (0) | 2022.03.05 |