Robotics/Control Theory

ROS2 × PX4로 시작하는 자율비행 드론 제어 (5) MPPI Controller 란?

항공학도 2025. 5. 7. 13:45

이 블로그 시리즈에서는 Gazebo + ROS 2 + PX4(MAVROS)를 활용해 드론을 제어하고, 최적 제어 알고리즘 Model Predictive Path Integral (MPPI) 를 직접 구현하는 과정을 기록합니다. 이후에는 더 진화된 강화학습(RL) 기반 제어로까지 확장하며, 최신 오픈소스 생태계가 실제 연구·개발 파이프라인에서 어떻게 유기적으로 엮이는지 보여드릴 예정입니다.

Generated by ChatGPT, super cool!

지난 글(4편) 에서는 코드를 ROS2 패키지로 묶어, ros2 launch 한 줄로 실행하는 방법에 대해 알아 보았습니다. 이번 시간에는 MPPI 제어기의 개념에 대해 한번 알아보겠습니다.

1. MPPI (Model Predictive Path Integral) 제어기란?

MPPI를 처음 들으면 복잡한 수식이 먼저 눈에 들어오지만, 사실 개념은 매우 간단합니다. 먼저 현재 드론의 상태와  목표 지점 $x_{goal}$ 이 설정 되어있다고 해보겠습니다. 이 상태에서 드론에 적용할 제어 입력 시퀀스를 아래 그림처럼 무작위 다발로 뽑습니다.

위쪽 파란점으로 이동하는 MPPI 시뮬레이션 https://arxiv.org/pdf/2407.09812

예를 들면 0.05초 뒤엔 왼쪽으로 30도 기울이고, 0.1초 뒤엔 추력 40%추가와 같은 무작위 입력 시퀀스를 10‑20스텝 길이로 N = 500 개쯤 만듭니다. 그후 간단한 드론 동역학 모델을 돌려 0.5 초 후 위치 (제어주기가 0.02s, 50Hz라면, 25step후 위치) 를 앞에서 생성한 N개의 시퀀스에 대해 예측합니다. 실제 드론의 동역학 모델이 아닌, 질량·중력·간단한 가속만으로 ‘대충’ 예측합니다. 이 예측치를 가지고 목표와 얼마나 가깝나? + 속도·가속이 과격해 배터리 낭비는 없나? + 장애물과 얼마나 거리 두었나? 등의 제약조건을 하나의 숫자 $J$ 로 환산합니다. 그 후 점수가 가장 낮은 시퀀스에서 첫 스텝 $u_0^*$ 만 뽑아 실제 드론에 적용합니다. 정확히는 가장 낮은 시퀀스를 뽑는 것이 아니고 $\lambda$ 값에 따른 확장가중평균 방식을 사용합니다. 이 방법에 대해선 추후에 다루도록 하겠습니다. 이렇게 해서 뽑아진 첫스텝 명령 적용 후 업데이트된 드론의 실제 위치·속도를 받아 다시 500개 레시피를 샘플링하여 이 과정을 반복합니다. 이렇게 하면 시퀀스의 일부가 틀려도 매 순간 고쳐 나가므로 바람·센서 오차·모델 불일치에 강인하게 됩니다.

즉 요약을 하면MPPI는 매 제어 주기(예 50 Hz) 마다 다음 순서를 반복해 실시간 최적 입력을 고릅니다.

  1. 현재 상태 확보 ($x_0$)
  2. 무작위 제어 시퀀스 ($N$) 개 샘플
  3. 경량 모델($H$) 스텝(≈ 0.5 s) 궤적 예측
  4. 각 샘플에 코스트 ($J_i$) (목표 오차 + 에너지 + 안전) 계산
  5. 소프트‑min 으로 가중 평균 → 첫 스텝 ($u_0^*$) 선택
  6. Setpoint 전송0.02 s 후 새 센서 값으로 ①부터 반복

Model Predictive Path Integral (MPPI):
여기서 "Path Integral" 은 통계-물리학의 path 적분 개념을 그대로 빌려온 것입니다.

물리 / 통계학  MPPI에서의 대응
입자가 갈 수 있는 모든 경로 $P$ 를 적분해(합산해) 양자 상태를 계산한다. 드론이 취할 수 있는 모든 제어 궤적 $U_i$ 를 샘플링해 전체 행동 분포를 근사한다.
각 경로는 액션(Action) $S$ 에 따라 가중치 $e^{-s/h}$ 를 받는다. 각 궤적은 누적 비용 $J_i$ 에 따라 가중치 $e^{-\lambda J_i}$ 를 받는다.
확률적 합산 결과가 물리적 관측치를 준다. 가중 평균 결과가 최적 첫 입력 $u_0^*$ 를 준다.

한마디로 ‘Path Integral’ 은 “가능한 모든 경로를 비용에 따라 가중 합산한다” 는 철학을 나타내는 용어입니다.

“현재 상태로부터 수백 개의 짧은 궤적을 즉석 시뮬레이션하고, 가중합산 비용이 가장 낮은 궤적의 첫 한 스텝만 실행한 뒤 다시 계산하는 방법” 덕분에 드론은 미래를 살짝 예견하면서도 매 프레임 현실 센서 정보에 적응합니다.

다음 편(6편)에서는 이 개념을 코드로 옮겨 offboard_control 패키지에 MPPI 노드를 추가하고, Gazebo 상공을 곡선으로 따라가는 데모를 만들어 보겠습니다.