Multi-Task Reinforcement Learning for Quadrotors 논문 리뷰

신희준·2025년 12월 16일

[Multi-Task Reinforcement Learning for Quadrotors] ([2412.12442] Multi-Task Reinforcement Learning for Quadrotors) (Jiaxu Xing, Ismail Geles, Yunlong Song, Elie Aljalbout, Davide Scaramuzza / RAL, 2024)

Summary

  • 여러 가지 task를 동시에 수행할 수 있는 쿼드롭터 RL 프레임워크 제안
    → High speed stabilization, velocity tracking, autonomous racing
  • Shard task encoder + task-specific encoder와 multi-critic 구조를 활용하여 서로 다른 task사이에 정보를 최대로 활용

My Insights / Takeaways

  • state를 입력으로 받고, 출력은 CTBR → 단순 이미지 입력은 아님

    • state는 위치, 속도 등과 같은 공유 입력과 게이트 위치 등 task 별 입력이 함께 들어감.
    • 작업별 리워드 다르게 설정하여 함께 학습.
  • Hovering / velocity tracking task 학습하는 법 궁금했었음

    • desired velocity나 desired hovering altitude는 입력 observation에 포함시키고, reward 계산하여 학습
    • 그리고 desired 값들은 random하게 생성하여 넣어줌.
    • hovering / velocity tracking 문제 풀때는 curriculum learning을 활용할 수 있음
  • Shared information이 task-specific encoder에서 fusion되지 않을 경우 racing에서 성능이 확 떨어지는 현상도 obvious 하면서도 신기하다.

    • 그냥 shared embedding이랑 task-specific embedding concat해서 넣으면 학습될거같은데 잘 안됨.

      → task specific information은 dynamics를 고려한 상태에서 비로소 제대로된 의미를 갖는다


Problem

  • 실제 쿼드로터(드론)는 다양한 제어 기술을 하나의 임무 안에서 수행해야 함 (예: 구조 임무 중 목표 추적 / hovering / path following).
  • 그러나 기존 RL 기반 드론 제어는 대부분 단일 작업(single-task) 중심.
    → 새로운 작업 등장 시 정책을 새로 학습해야 함.
    → 결과적으로 현실 응용에 필요한 범용 제어(generalist control)이 불가능.
  • 이렇게 다양한 제어 상황에 대처할 수 있는 generalist control policy를 학습하는 것은 매우 어려움 → 각 task마다 서로 다른 objective와 서로 다른 state space를 가지기 때문에

Contribution

공유된 dynamics 정보를 기반으로, 서로 다른 task 간 정보를 통합하여 하나의 정책으로 여러 제어 기술을 수행하는 Multi-Task RL Framework (MTRL)를 제안

  • 이 MTRL의 가장 큰 장점은 서로 다른 task에 대한 knowledge를 공유하는 것
    → learning efficiency가 높아짐
    → 핵심은 각 task마다 reward objective가 다르더라도, 기본적인 physical dynamcis가 공유된다는 사실을 이용한 것

핵심 아이디어

  • Shared Encoder: 모든 작업에서 공통적으로 사용하는 동역학 정보(위치, 자세, 속도 등)를 추출.
  • Task-specific Encoder: 각 작업에 특화된 관찰값(게이트 위치, 목표 속도 등)을 처리.
  • Multi-Critic Architecture:
    • Actor(정책)는 공유
    • Critic(가치 함수)은 task 별로 분리
  • 이렇게 공유 정보 + task별 정보를 결합하여 효율적 학습 및 knowledge transfer 가능

Methodology

Quadrotor Dynamics

Quadrotor Dynamcis

  • 위 글에서 정의한 quadrotor dynamics와 본질적으로는 같고 아래 두 가지 다름
    • motor dynamics 생략
    • collective thrust로 (prop + drag) force 대체

Policy learning

Problem Formulation

  • MTRL에서는 NN개의 task가 있으며, 각 task는 MDP로 정의 Mi=(Si,Ai,Pi.Ri,γi)\mathcal M_i=(\mathcal S_i, \mathcal A_i, \mathcal P _i. \mathcal R_i, \gamma_i)
  • 모든 task에 대해 expected return J(π)J(\pi)를 최대화 하는 policy를 찾는 것이 목적
J(π)=1Ni=1NEπ[t=0γitri(st,at)]J(\pi)=\frac{1}{N}\sum^N_{i=1}\mathbb E_\pi [\sum^\infty_{t=0}\gamma_i^t r_i (s_t,a_t)]

⭐ 여기서 이 논문은 multi-task configuration을 reward setting R\mathcal R으로만 구분

  • Transition function (model dynamics) P\mathcal P는 모든 task에 대해 같음.

Autonomous Racing

  • 미리 정해진 순서의 gate를 최대한 빠르게 통과하는 task

  • observation o=[p,R,v,w,aprev,δp1,δp2]o=[p, R, v, w ,a_{prev}, \delta p_1, \delta p_2]

    • apreva_{prev} : 이전 action
    • δp1\delta p_1 : 현재 quad 위치와 다음 gate의 4개 코너 위치의 차이
    • δp2\delta p_2 : 다음 gate의 4개 코너 위치와 그 다음 gate의 4개 코너 위치 차이
  • reward

    rtracing=rtprog+rtprec+rtact+rtbr+rtpass+rtcrashr_t^{racing}=r_t^{prog}+r_t^{prec}+r_t^{act}+r_t^{br}+r_t^{pass}+r_t^{crash}
    • 이전 포스팅들에서 다룬 drone racing reward와 동일

Stabilization from High Speed

  • Randomized pose & high initial velocity로부터 빠르게 static status로 정지해야하는 task

  • observation o=[p,R,v,w,aprev,p¨WB,zdo=[p, R, v, w ,a_{prev}, \ddot{p}_{WB}, z_d

    • p¨WB\ddot{p}_{WB} : world frame에서 quadrotor의 acc
    • zdz_d : stabilize해야할 위치의 높이
  • reward

    rtstabilize=rtheight+rtattitude+rtvelocity+rtbr+rtact+rtsuccessr_t^{stabilize}=r_t^{height}+r_t^{attitude}+r_t^{velocity}+r_t^{br}+r_t^{act}+r_t^{success}
    • rtheight=β1ztzdr_t^{height}=\beta_1||z_t-z_d|| : constant height를 유지하도록
    • rtattitude=β2Rtr_t^{attitude}=\beta_2||R_t|| : constant orientation을 유지하도록
    • rtvelocity=β3vtr_t^{velocity}=\beta_3||v_t|| : non-zero velocity를 패널티
    • rtbr=β4wB,tr_t^{br}=\beta_4||w_{B,t}|| : non-zero angular velocity를 패널티
    • rtact=β5utut1r_t^{act}=\beta_5||u_t-u_{t-1}|| : non-smooth action 패널티
    • rtsuccess=β6r_t^{success}=\beta_6 : robot이 hovering 잘하면 계속해서 discrete reward
  • 학습하는 동안은 점진적으로 task 난이도를 높임 → curriculum learning

    • initial speed를 100000 데이터 샘플마다 10% 씩 높여줌

Velocity Tracking

  • 랜덤하게 생성되는 velocity profile을 track해야하는 task

  • observation o=[p,R,v,w,aprev,vd,p¨WB]o=[p, R, v, w ,a_{prev},v_d ,\ddot{p}_{WB}]

    • vdv_d : desired linear velocity
  • reward

    rttracking=rtvelocity+rtbr+rtactr_t^{tracking}=r_t^{velocity}+r_t^{br}+r_t^{act}
    • rtvelocity=λ1vtvd(t)r_t^{velocity}=\lambda_1||v_t-v_d(t)|| : desired velocity를 잘 따라가도록
    • rtbr=β4wB,tr_t^{br}=\beta_4||w_{B,t}|| : non-zero angular velocity를 패널티
    • rtact=β5utut1r_t^{act}=\beta_5||u_t-u_{t-1}|| : non-smooth action 패널티
  • 여기서도 학습하는 동안은 점진적으로 task 난이도를 높임 → curriculum learning

    • desired velocity를 100000개 데이터 샘플마다 1m/s씩 높여줌

Multi-task Learning Framework

  • 해당 연구에서 핵심이 되는 가정
    ➡️ Task에 따라서 드론의 physical property는 변하지 않는다
    = 모든 task는 같은 transition probability를 갖는다.
    ☑️ 그 이유는 quadrotor control task가 contact-rich하지 않기 때문이라고 함. (다른 물체와 접촉하게 되면 dynamics가 순간적으로 비선형 + 불연속일수도)
  • 이 가정을 바탕으로 정보를 공유하는 구조의 architecture를 제안
    ➡️ transition dynamics을 학습하는데 있어서, 여러 task의 데이터 샘플을 공유할 수 있게 된다.
    ✅ 그래서 shared moduletask-specific module를 따로 구성해서, shared module은 모든 task에서 공통적으로 적용되는 dynamics와 관련된 정보를, task-specific module은 task에 관련된 정보를 배우도록 하자.

→ 이제 이걸 어떻게 구현하려고 했는지 살펴보자.

  • Actor는 모든 task에 대해 작동할 수 있는 single policy network로 설계한다.
    • 하지만 task마다 observation의 의미도 다르고, 차원도 다름.
      ⇒ 그대로 actor에 넣으면 학습이 불가
    • 그래서 모든 task에서 공통으로 등장하는, dynamics 특성에 관련된 position, orientation, linear & angular velocity, prev action들을 shared encoder에 넣어 shared feature로 추출.
    • task-specific한 서로 다른 observation들은 dynamic embedding과 함께task-specific encoder에 들어가서 task-specific feature로 추출.
      ✔️ task encoder는 모두 같은 dim의 latent로 변환해준다.
      ✔️ 그리고 task끼리의 구분은 observation length를 활용한 one-hot encoding을 활용

➡️ 최종적으로 Actor에 들어가는 입력은 shared embedding과 task-specific embedding를 concat한 것
➡️ 출력은 CTBR

  • Critic network는 task마다 따로 정의 → 각 task에 대한 value function evaluate
    • Critic은 직접적으로 full observation을 input으로 받는다고 한다.
      ** 근데 figure에는 critic도 latent를 받는거처럼 나와서 좀 헷갈리는 부분..

Experiments

  • PPO 알고리즘 활용

  • Flightmare simulator 활용

  • Shared encoder는 32dim latent 출력

  • Task-specific encoder는 task마다 다른 input dim → 32 dim latent 출력

  • MTRL을 학습할 때에는 매번 task 를 바꿔가면서 학습한다고 보면 된다.

    • shared network와 actor는 그대로 두고
    • critic network와 task-specific encoder만 바꿔가면서 학습

Baselines

방법Actor 공유Encoder 공유Critic 공유핵심 목적
Single-task RLxxxMTRL 효과 비교용
MTRL-ActoroxxActor만 공유하면 되는가?
MTRL-Separateoo (구조만)xshared–task fusion의 효과 검증
Ours (Full MTRL)oox제안 구조
  • MTRL-Separate에서는 shared observation이 task encoder에 입력으로 들어가지 않음
    → shared encoder와 task encoder가 상호작용하지 않음
  • MTRL-Actor는 Actor만 모든 task에서 공유하고 모든 encoder와 critic network는 서로 다르게 학습.

Sample efficiency of MTRL

  • single-task RL에 비해서 MTRL이 얼마나 sample-efficient한가?

  • 제안된 방법론이 모든 single-task RL보다 성능이 좋음. (같은 step 기준)

  • MTRL-Separate의 경우 racing task에서 아예 날지 못함

    → shared information을 task-specific information과 fuse하지 않으면 복잡한 task를 학습하기 어려움.

    → task-specific encoder는 dynamics를 모르는 상태에서 task infomation의 의미를 압축.

    → policy는 더 쉬운 task (e.g. stabilization)만 학습하려고 할 것

Performance of MTRL

  • single-task RL에 비해서 MTRL의 성능은 어떠한가?

Real world transfer

  • VICON MOCAP 시스템으로 state estimation 정보 활용했음.
  • CTBR 출력 내고, BetaFlight FC 활용
profile
공부하고 싶은 사람

0개의 댓글