RTI (Random Torque injection)
RTI (Random Torque injection)
2족보행 로봇의 거동은 4족보행 로봇에 비해 매우 어렵다.
- 이유는 여러가지가 있지만 2족 보행 특유의 불안정성, 고차원 특성으로 인한 비대칭적이고 불안정한 걸음걸이
- 무게중심의 차이
- 링크의 무게 차이 (2족보행 로봇의 다리 링크 무게는 3-5kg 내외인데, 휴머노이드 로봇은 20-30kg 에 육박한다.)
- 그리고 몸통 (pelvis) 를 2개 다리로 지탱해야하는 것도 매우 어렵고, 무게 자체가 무겁다보니 가속도가 휙휙 변하는 특성이 있어서, 같은 주파수로 제어한다고 했을때 휴머노이드 로봇이 훨씬 어렵다.
또, 학습 분야에서 가장 중요한건 학습을 위한 데이터인데 휴머노이드 로봇이 망가질 리스크를 안고 실 데이터를 수집하기란 어려운 일이기 때문에 모든 휴머노이드 강화학습은 시뮬레이션 상에서 학습이 이루어진다.
데이터도 시뮬레이션에서 수집하고, 학습도 시뮬레이션에서 하는 경우가 많다.
그런데 시뮬레이션도 만능이 아니다. Mujoco, IsaacSim(IsaacLab) 이 시뮬레이션 양대산맥인데, IsaacSim 은 컨택 (바닥과 발바닥의 접촉) 을 처리하는게 정말 엉망이라고한다. Material 끼리 붙었을때 그냥 attach 시켜버리게끔 로직이 구성되어 있다고 얼핏 들었다.
Mujoco 에서는 이런 물리 모델링은 괜찮은데, 오히려 발바닥이 바닥과 붙어있게끔 설정하고싶은데, 발바닥의 모델링이 조금 이상하면 바닥과의 미끄러짐으로 제대로 서있지 못하고 shift 되는 일이 있다고 한다.
또, 액츄에이터의 동작도 제대로 모델링되지 않으면 학습한 폴리시가 안정적이지 못하게 된다.
외에도 로봇의 복잡한 동작을 시뮬레이션 상에서는 간단한 선형방정식으로 근사시켜 구성하는 경우가 대부분이다. (자세한건 모르지만, 현실세계와는 괴리가 많이 있다고 한다.)
PACE 논문에서 다루었었는데, 로봇의 관절을 움직일때 물리적으로 필요한 toque 를 계산하는데 수많은 상수들이 사용되고, 여기서 사용되는 상수도 막상 보면 열에 의해 값이 변하기 때문에 constant 라고 얘기하기도 민망하다.
다시 본론으로 돌아와서 RL 에서는 위 이유 때문에 Domain Randomization (DR) 을 진행한다. 로봇의 동역학 값이나, input 에 noise 를 섞어주기도하고, 무게중심을 바꾸기도하고, 학습 지형 (Terrain) 을 바꾸기도 하고.. 이건 학습하는 사람이 어떻게 설계하느냐에 따라서 무궁무진하게 설정이 가능하다.
그리고 DR 에서 가장 중요한건 이상적으로는 실제 로봇이 가지고있는 그런 파라미터값이 DR 에서 적용한 분포 안에 포함되어 있어야한다.
여기서 다시 도돌이표다.. 로봇의 동역학 값을 몰라서 DR 을 쓰는건데, 이 DR 분포 안에 실제 nomanal parameter 가 포함되어 있어야하기 때문에 로봇 System Identification 을 하는 경우도 있고, Error Correction 역할을 하는 신경망을 따로 학습해서 Sim to Real 오차를 줄이는 기법을 쓰기도 한다.
모방학습과 Reward Term 설계도 방법 중의 하나인데, 모방학습은 학습을 위한 Reference Data 가 필요하고, Reward Term 설계는 도메인 expert 가 필요하다는 점 + 원하는 Gait 를 위해서 수많은 시도를 해가면서 Reward 를 설계해야한다는 점? 이 있다. (그래서 다들 Reward 를 깎는다고 표현하는 것 같다.)
휴머노이드 훈련을 위해 적용해보고 논문 실험환경에서 사용한 Term 들에 대해서 정리해보았다. 우선 간단하게만 정리하고 추후 수정할 예정이다.
observation
- base lin / ang val = 6개
- base orientation (euler angles) = 3개
- 하체 joint position = 12개
- 하체 joint vel = 12개
- 명령 (x vel, y vel, w ang) = 3개
- 이전 action a_t-1 = 12개
command 에 들어가는 x_vel, y_vel , Φz 는 매 에피소드마다 sampling 하고, ( 는 w ang 를 계산하기 위해 사용된다.)
w_z 는 매 step 마다 Φ(각도, -3.14 ~ 3.14 사이 값) 값을 이용해서 (-1 , 1) 사이 값으로 클리핑 되어서 커맨드로 사용된다.
action
action 은 policy 에 의해서 계산되는데, 여기서는 joint torque 기반한 폴리시를 학습한다.
upper body 는 default position 을 유지하게끔 PD 제어기를 이용해 Position 제어를 이용하고, lower body 부분만 joint torque 기반 policy 를 학습해서 구동한다.
논문에서는 TOCABI 라는 휴머노이드 로봇을 이용했고, action space 는 12개 차원이다.
각 차원에 상응하는 lower body joint 에 사용할 토크 값을 의미하고, [-1, 1] 사이 값이 출력되어 joint torque limit 이 곱해져서 사용된다.
reward
reward 는 2개 텀으로 구성된다.
- task 를 잘 따라할때 주는 리워드 = 커맨드 velocity 트래킹 리워드 + 에너지 최소화 텀
- mimic reference data 를 잘 따라하는지에 대한 리워드
두 개 리워드를 를 하이퍼파라미터로 가중합해서 최종 리워드로 사용한다.
motion imitation
해당 논문에서는 두가지 방식을 이용해서 imitation 을 적용한다.
MPCPC (motion predictive capture point control) framework 는 제어기 역할을 하는데, 이 제어기를 시뮬레이터에 올리고, (전진, 좌회전, 우회전) 궤적을 생성하고 기록한다.
- MPCPC 를 이용해서 imitation 을 진행할 reference data 를 수집한다.
AMP (adversarial motion prior) framework 를 사용해서 locomotion 학습을 한다. AMP 는 이미지 생성의 GAN 처럼 Generator = 궤적 생성, Discriminator = Generator 가 생성한 궤적이 있을때, 그때 사용한 동역학 값들을 input 으로 받아서 정답과 비교
AMP 는 Generator 가 얼마나 정답 (걸음걸이, 자세등) 과 얼마나 비슷한지를 기준으로 reward 를 제공하고 이게 3.reward 텀에 들어간다.
Domain randomization vs Torque Perturbation
기존 DR 방식을 수식으로 표현하면, 결국 Torque 단위의 perturbation 을 해주는 것과 동일한 역할을 함
- (ideal 한 값 + DR 로 인해 발생한 오차) 로 decomposition 이 가능하고, DR 로 인해 발생한 오차들을 하나로 합하면, torque 단위 perturbation 을 만들어내는 신경망의 output 으로 표현이 가능
DR 방식은 시뮬레이터가 제공하는 파라미터에 의존하다보니 Perturbation 의 표현력 자체가 풍부하지 못하다.
일단 시뮬레이션에서는 학습 도중 바닥의 softness 를 조절하는게 불가능하고, 조절 가능한 parameter 자체가 제한되어 있다.
Torque Perturbation 을 적용하면, DR 보다 훨씬 넓은 범위의 표현력을 제공할 수 있다는게 논문의 주요 요지이다.
State Dependent 하게끔 노이즈를 생성하는 MLP 기반 네트워크를 사용하는데, 특이한 점은 사용하는 네트워크의 가중치를 매번 초기화해준다는 점이다.
보통은 데이터를 모아서 MLP 네트워크를 학습시켜 Sim to Real gap 을 학습시키는게 일반적인데, 여기서는 가중치를 매번 초기화시키면서 Random 한 Perturbation 을 생성하면서도.. input 으로 state 를 넣어주게끔 구성했다고 한다.
- 궁금한 점은 가중치를 매번 초기화하는데, 이게 정말 state dependent 한 외란이라고 볼 수 있는가? 이것은 나중에 공부해보아야겠다.
TOCABI
실험에서 사용한 로봇은 100kg 정도에 육박하는 휴머노이드 로봇 TOCABI 를 사용했다. TOCABI 는 모터의 기어비가 100:1 의 하모닉 드라이브를 사용한다.
- 모터가 100바퀴 돌때 관절이 1바퀴 돈다.
이렇게 높은 기어비를 사용할때의 문제점은, 수많은 기계장치가 동시에 동작하면서 토크를 만들어내다보니 기어의 마찰이라던가 점성등의 복합적인 비선형 특성에 의해서 인풋으로 넣어준 토크가 모터에 정확히 전달되기란 쉽지 않다.
이를 Torque Transparency 가 낮다고 표현한다.
결론적으로, 위 이유로 sim to real transfer 가 쉽지 않은 것
Training 할때는 3개 네트워크를 사용한다.
PPO 알고리즘 기반으로 학습을 진행하기 때문에 1) Actor , 2) Critic Network (ELU 기반 network) 를 사용하고, 추가로 3) Discriminator Network (ReLU 기반 AMP 프레임워크) 를 사용한다.
Discriminator 네트워크는 Reference motion data 를 최대한 잘 모방하면서 Actor network 가 학습되게끔 안내하는 역할을 한다.
- (복습) PPO 알고리즘은 On-policy, Online RL 이다.
- On/Off policy
- On-Policy : 학습하는 정책과 탐험하는 정책이 같은 경우 = Target Policy == Behavior Policy
- Off-Policy : 과거의 경험 (Buffer) 을 이용하는 경우
- On/Off line
- Online : 실시간으로 환경과 소통하며 얻은 보상들을 이용해 정책을 업데이트
- Offline : 이미 수집된 정적 데이터를 이용해 정책을 업데이트
- On/Off policy
최종적으로 Actor - Critic network 를 업데이트하기 위해 아래 loss function 을 사용한다.
- : 출력(Action=Torque)의 Gradient 에 대한 패널티를 두어서 Jerky 한 동작이 나오지 않도록 반영
논문에서는 Random Torque Injection 과 외력을 가해주는 Random Force Injection 의 실험 결과를 비교하는 부분이 나오는데 이 부분이 인상 깊었다.
--업데이트 예정--