ROS 2 + PX4로 첫 자율비행 드론 띄우기 — 입문자 로드맵
"드론 자율비행, 한번 해보고 싶은데 어디서 시작하지?"
유튜브에서 군집 드론 영상은 멋진데, 막상 내 손으로 뭘 띄워보려 하면 ROS니 PX4니 DDS니 용어부터 벽입니다. 강의를 들어도 "봤다"로 끝나고 정작 띄운 건 없죠. 이 글은 그 첫 벽을 넘는 현실적인 순서를 정리한 것입니다. 하드웨어 없이, 시뮬레이터만으로 시작합니다.
큰 그림부터: 현대 자율비행 스택
요즘 자율비행은 대체로 이렇게 쌓입니다.
- PX4 — 비행 제어 펌웨어(이착륙·자세·모터 제어를 담당)
- ROS 2 — 로봇 소프트웨어의 미들웨어(노드끼리 메시지를 주고받음)
- Gazebo + PX4 SITL — 실제 드론 없이 PC에서 비행을 시뮬레이션
- QGroundControl — 드론을 보고 명령하는 지상관제 프로그램
핵심은 PX4(비행)와 ROS 2(자율 로직)를 잇는 것이고, 둘은 uXRCE-DDS라는 다리로 연결됩니다. 이 그림만 머릿속에 있어도 절반은 온 겁니다.
첫걸음 로드맵 (하드웨어 0원)
- 환경 설정 — Ubuntu에 ROS 2 + PX4 + Gazebo 설치. 가장 귀찮지만 한 번만.
- 시뮬레이터 띄우기 — PX4 SITL + Gazebo로 가상 드론을 띄우고 QGroundControl로 연결.
- Backyard Flyer — 드론 프로그래밍의 "Hello, World". 이륙 → 정사각형 경로 비행 → 착륙을 코드로. 상태기계(state machine)만 이해하면 됩니다.
- 그 다음 — 상태추정(EKF), 제어(PID), 경로계획, 그리고 여러 대를 함께 움직이는 군집까지.
입문자가 꼭 막히는 3곳
- 좌표계 혼동 — PX4는 내부적으로 NED, ROS는 ENU를 씁니다. 부호 한 번 헷갈리면 드론이 반대로 갑니다. 처음에 좌표계만 확실히.
- QoS 미스매치 — ROS 2 토픽이 "분명 퍼블리시했는데 안 들어와요"의 90%는 QoS 설정 불일치입니다.
- Offboard 모드 안전장치 — setpoint를 일정 주기로 계속 보내지 않으면 PX4가 Offboard를 거부합니다.
이 셋만 알고 가도 며칠을 아낍니다.
다음 단계
위 순서대로 가면 "보는 자율비행"에서 "직접 띄우는 자율비행"으로 넘어옵니다. 저는 이걸 입문 → 군집 드론 → 직접 만든 관제소(GCS)까지 한 줄로 잇는 커리큘럼으로 설계하고 있어요. 각 코스는 시뮬에서 직접 돌리는 프로젝트로 끝나도록요.
읽어주셔서 감사합니다. 자율비행 입문에서 막히는 지점이 있으면 댓글로 남겨주세요 — 다음 글 주제로 삼겠습니다. ✈️