이 블로그 시리즈에서는 Gazebo + ROS 2 + PX4(MAVROS)를 활용해 드론을 제어하고, 최적 제어 알고리즘 Model Predictive Path Integral (MPPI) 를 직접 구현하는 과정을 기록합니다. 이후에는 더 진화된 강화학습(RL) 기반 제어로까지 확장하며, 최신 오픈소스 생태계가 실제 연구·개발 파이프라인에서 어떻게 유기적으로 엮이는지 보여드릴 예정입니다.
드론을 직접 들고 야외로 나가기 전에, 시뮬레이터 상에서 테스트해볼 수 있다면, 개발 속도를 수직 상승시킬 수 있습니다. 이 글에서는 PX4 SITL, Ignition Gazebo, MAVROS2를 하나의 파이프라인으로 엮어 드론을 관찰·제어하도록 만드는 과정을 단계별로 정리합니다.
1. PX4 SITL + Ignition Gazebo 시작하기
cd ~/PX4-Autopilot
make px4_sitl gz_x500
- gz_x500 환경이 부팅되면 Ignition Gazebo 창에 x500 쿼드콥터가 (0,0,0) 좌표에 아래 그림과 같이 스폰됩니다.
2. MAVROS2 연결
ros2 launch mavros px4.launch.py fcu_url:=udp://:14540@127.0.0.1:14580
- PX4 SITL ↔ MAVROS2 사이에서 UDP 14540 포트를 사용해 MAVLink를 주고받습니다.
- px4.launch.py는 MAVROS2 패키지에서 제공하는 기본 런치 파일이며, 필요 시 매개변수를 조정해 사용할 수 있습니다.
mavros 실행 후에 아래 명령어로 연결 상태 확인해 보겠습니다.
ros2 topic list | grep mavros
아래와 같은 필수 토픽들이 출력되어야 합니다.
/mavros/state
/mavros/local_position/pose
/mavros/setpoint_position/local
토픽이 정상적으로 출력되는지 아래 명령어로 확인해보겠습니다. 현재 mavros의 상태를 보여주는 명령어 입니다.
ros2 topic echo /mavros/state
다음과 같이 connected: True 가 확인되면 PX4 ↔ MAVROS2 브리지가 성공적으로 연결된 것입니다.
header:
stamp:
sec: 1746168519
nanosec: 154139416
frame_id: ''
connected: true
armed: false
guided: true
manual_input: false
mode: AUTO.LOITER
system_status: 3
다음 글에서는 위에서 구축한 스택을 기반으로 모터를 구동하고 (Arming) Offboard 모드에 진입해 이륙 (Takeoff) 후드론을 자율로 전진시키고, 안전하게 착륙 (Landing) 후 모터를 정지시키는 (disarm) 실습을 다룹니다.
Arming - Offboard - Takeoff - Autonomous Flight - Landing - Disarm
'Robotics > Control Theory' 카테고리의 다른 글
ROS2 × PX4로 시작하는 자율비행 드론 제어 (4) ROS2 패키지 생성 (2) | 2025.05.05 |
---|---|
ROS2 × PX4로 시작하는 자율비행 드론 제어 (3) Offboard Mode 기초 (2) | 2025.05.04 |
ROS2 × PX4로 시작하는 자율비행 드론 제어 (1) 프로젝트 소개와 환경 세팅 (Ubuntu 24.04 + ROS2 Jazzy) (1) | 2025.05.01 |
ACADO Toolkit 이란? 2. Code Generation 폴더 변경 방법 (0) | 2022.03.04 |
ACADO Toolkit 이란? 1. Code Generation 방법 (0) | 2022.03.03 |
댓글