이 블로그 시리즈에서는 Gazebo + ROS 2 + PX4(MAVROS)를 활용해 드론을 제어하고, 최적 제어 알고리즘 Model Predictive Path Integral (MPPI) 를 직접 구현하는 과정을 기록합니다. 이후에는 더 진화된 강화학습(RL) 기반 제어로까지 확장하며, 최신 오픈소스 생태계가 실제 연구·개발 파이프라인에서 어떻게 유기적으로 엮이는지 보여드릴 예정입니다.
기술 스택 한눈에 보기
시뮬레이션 환경 | Ignition Gazebo (Harmonic) | 가상 드론·센서 모델, 물리 엔진 |
비행 펌웨어 | PX4 v1.16 (SITL) | 실시간 제어·상태 추정 |
미들웨어 | MAVROS 2 | MAVLink → ROS 2 브리지 |
제어 노드 | ROS 2 Jazzy | MPPI 및 RL 알고리즘 실행 |
[Gazebo (Ignition)] ←→ [PX4 SITL] ←→ [MAVROS2] ←→ [ROS2 Node (MPPI Controller)]
1. ROS2 Jazzy 설치
ROS2 Jazzy는 2024년에 나온 최신 (현재까지는) ROS2 배포판이다. 공식 설치 가이드를 따라 아래 명령어로 설치할 수 있습니다.
# Ubuntu Universe 저장소 활성화
sudo apt install software-properties-common
sudo add-apt-repository universe
# apt를 사용하여 ROS2 GPG 키를 추가
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# 해당 저장소를 소스 목록에 추가
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 개발 도구 설치
sudo apt update && sudo apt install ros-dev-tools
# ros2 설치
sudo apt update && suo apt upgrade
sudo apt install ros-jazzy-desktop
# bashrc에 추가
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
source ~/.bashrc
2. PX4 설치 및 초기화
PX4는 드론의 제어기 역할을 하는 비행 제어 펌웨어입니다. 실제 하드웨어 없이도 테스트할 수 있도록 SITL(Software-In-The-Loop) 모드를 지원하며, 우리는 이를 기반으로 Gazebo에서 가상 드론을 띄워 실험합니다.
cd
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
cd PX4-Autopilot/
make px4_sitl
여기서 make px4_sitl 명령어는 PX4를 소프트웨어 시뮬레이션용으로 빌드하는 작업입니다. 즉, Gazebo나 jMAVSim 같은 시뮬레이터와 연동할 수 있는 실행 파일을 생성합니다. 이 파일은 실제 드론이 아닌, 우리 컴퓨터 안의 가상 드론이 MAVLink로 명령을 받아 움직일 수 있도록 만들어줍니다.
3. MAVROS 설치 및 설정
sudo apt install ros-jazzy-mavros ros-jazzy-mavros-extras
4. ROS2 워크스페이스 (colcon 기반) 구성
# 워크스페이스 생성 (flight_ws는 원하는 이름으로 변경)
mkdir -p ~/flight_ws/src
cd ~/flight_ws
colcon build
# 환경변수 설정
source install/setup.bash
echo "source ~/flight_ws/install/setup.bash" >> ~/.bashrc
이를 통해 PX4기반 드론 시뮬레이션을 위한 기본 환경 세팅에 대해 알아 보았습니다. 여기 까지 설정하면 이제 PX4를 통해 실제 하드웨어 없이도 비행 알고리즘을 시험해볼 수 있는 아주 좋은 플랫폼이 마련 된 겁니다. 이 위에 ROS2, MAVROS, 그리고 MPPI 컨트롤러를 얹어가보려고 합니다. 앞으로 PX4 Offboard 모드에 대해서 알아보고, 또 MPPI 컨트롤러를 ROS2 노드로 구현하며, 수학이 어떻게 추력을 바꿔 드론을 날게 하는지 알아보겠습니다.
'Robotics > Control Theory' 카테고리의 다른 글
ROS2 × PX4로 시작하는 자율비행 드론 제어 (3) Offboard Mode 기초 (2) | 2025.05.04 |
---|---|
ROS2 × PX4로 시작하는 자율비행 드론 제어 (2) PX4 + Ignition Gazebo + MAVROS2 연동 전체 형태 구성 (0) | 2025.05.02 |
ACADO Toolkit 이란? 2. Code Generation 폴더 변경 방법 (0) | 2022.03.04 |
ACADO Toolkit 이란? 1. Code Generation 방법 (0) | 2022.03.03 |
MPC 란? (Model Predictive Control) 7. Multi-rotor system Model (0) | 2022.01.12 |
댓글