콘텐츠로 건너뛰기
쿼드(QUAD) 드론연구소

쿼드(QUAD) 드론연구소

  • 👨‍✈️ 초보 파일럿
  • 🎖️ 개발자
  • 🥇 전문가
  • 💎 다이아몬드
  • 🛠️ Tech-Tip
  • 📝 블로그
  • ⚠️ 저작권
login
쿼드(QUAD) 드론연구소
쿼드(QUAD) 드론연구소

🕰️PX4와 ArduPilot의 개발 배경

4
  • ArduPilot 주요 개발자
  • ArduPilot
  • PX4 주요 개발자
  • PX4

📚드론 개발 라이브러리

10
  • 1.드론 개발자 로드맵(Load-Map)
  • 2.드론 개발 소프트웨어 개요
  • 3.MAVLINK
  • 4.PyMAVLink
  • 5.MavProxy
  • 6.MAVSDK
  • 7.MAVROS
  • 8.PX4 uORB with ROS 2
  • 9.자율주행드론 개발 프로세스
  • 10.학습 로드맵(Road-map)

🧩자율주행드론 시스템 아키텍처

4
  • Smart UAV is Robot!
  • PX4 System 아키텍쳐
  • PX4 Software 아키텍쳐
  • 쿼드(QUAD) 자율주행드론 UAV 시스템 아키텍처

🐧Linux (Ubuntu) 기초

14
  • Ubuntu 22.04 설치 (PC에 직접 설치)
  • Windows 10/11 WSL2 설치
  • Linux 개요
  • 리눅스 쉘 기본 명령어
  • 자주쓰는 명령어 정리 (Ubuntu 사용)
  • 자주 사용하는 터미널 명령어
  • Linux Package 에 대한 이해
  • su와 sudo 명령어 활용법
  • 리눅스 파일 시스템 이해하기
  • 리눅스 권한에 대한 이해
  • 빌드 시스템에 대한 이해
  • Make(Makefile) 사용 가이드
  • CMake 의 이해
  • CMake 사용 가이드

픽스호크(Pixhawk) 기초

29
  • 쿼드(QUAD) 자율주행 드론(UAV) 개발 키트
  • 픽스호크 드론의 기초 개요
  • 드론에 사용되는 물리학
  • 멀티콥터의 동작 원리
  • ArduPilot vs. PX4 선택
  • PX4 시스템 아키텍처
  • 지상국(Ground Control System) 선택
  • Pixhawk 6C 비행 컨트롤러
  • Pixhawk 6X 비행 컨트롤러
  • 드론에서 사용되는 센서간 통신제어 방식
  • Pixhawk 배선
  • Pixhawk 전원 공급
  • GPS/나침반
  • 거리 측정기 (LiDAR)
  • 고도(Altitude) 이해
  • 컴패니언 컴퓨터
  • 오프보드(Offboard) 제어
  • 컴패니언 컴퓨터 GPIO를 이용한 FC 제어
  • ESC(전자속도제어기)
    • ESC (전자속도제어기)
    • BLHeli32 및 BLHeli_S ESC
    • DShot ESC
    • DroneCAN ESC
    • PWM, OneShot 및 OneShot125 ESC
  • 무선제어시스템(Radio)
    • 무선 제어 시스템 (Radio)
    • 조종기/수신기
    • 수신기 RSSI 강도 표시
  • Telemetry 라디오
    • Telemetry 라디오
    • SiK Radio 설정
    • 다중 Point-to-Point 설정

Q250 사용 가이드

17
  • Q250 빠른 시작 가이드
  • QGroundControl 설치
  • Q250 펌웨어 재설치 (선택)
  • Q250 파라메터 설정
  • FS-i6x 조종기와 수신기 설정
  • 비행 모드
  • 전원 설정
  • Actuators (모터) 설정
  • Flight Behavior 설정
  • 텔레메트리 연결
  • GPS 연결
  • 컴패니언컴퓨터 전원 공급장치(UBEC) 사용 가이드
  • LED 컨트롤러 사용 가이드
  • 컴패니언 컴퓨터와 FC의 UART 케이블 연결
  • Optical-Flow & LiDAR 설정
  • 지자계 간섭 문제 해결
  • fake_gps (가상 GPS)

Q500 사용 가이드

10
  • Q500 사용 가이드 개요
  • QGroundControl 설치
  • Q500 펌웨어 설정
  • Q500 파라메터 설정
  • Radiomaster 조종기 설정
  • 수신기의 전파 수신 강도(RSSI) 설정
  • Pixhawk 6X Ethernet 설정
  • 컴패니언 컴퓨터와 FC 연결 설정
  • 시뮬레이터 사용 가이드
  • fake_gps (가상 GPS)

Q650 사용 가이드

9
  • Q650 사용 가이드 개요
  • QGroundControl 설치
  • Q650 펌웨어 설정
  • Q650 파라메터 설정
  • 조종기 설정
  • 수신기의 전파 수신 강도(RSSI) 설정
  • Pixhawk 6X Ethernet 설정
  • 컴패니언 컴퓨터와 FC 연결 설정
  • H-Flow 설정 가이드

첫 비행 및 튜닝

12
  • 첫 비행 및 튜닝 개요
  • 첫 비행 지침
  • 수동비행 지침
  • 임무 비행
  • 지오펜스
  • 안전지점(Rally Points)
  • 비행 모드
  • 지형 추적/유지
  • PID 튜닝
  • 비행 기록 분석
    • 비행 기록 분석
    • Flight Review를 이용한 로그 분석
    • 비행기록 분석 실습

PX4-Toolchain 개발환경 구성

4
  • Windows 10/11 WSL2 설치
  • ROS(1) + PX4 Toolchain 구성
  • Gazebo Classic 시뮬레이터 사용하기
  • ROS2 + PX4 Toolchain 구성

MAVLink-Python 프로그래밍

17
  • MAVLINK 개요
  • Python MAVLink 라이브러리 사용
  • 드론에 연결하기(Connect)
  • MAVLINK 메시지 주고받기
  • 비행 모드 (PX4 멀티콥터)
  • MAV_CMD
  • PX4 ‘OFFBOARD” 와 Ardupilot ‘GUIDED’ 모드 차이
  • PX4 Offboard 모드에서만 유효한 주요 MAV_CMD
  • 드론에 시동걸기(MAV_CMD_COMPONENT_ARM_DISARM)
  • 이륙하기(MAV_CMD_NAV_TAKEOFF)
  • 이동하기(SET_POSITION_TARGET_GLOBAL_INT)
  • 이동하기(SET_POSITION_TARGET_LOCAL_NED)
  • 기수 방향과 속도 변경
  • [별첨]참고 자료
  • MAVLINK 신뢰성 보장
    • MAVLINK 신뢰성 보장
    • MAVLINK 2 메시지 서명
    • [참고]HMAC-SHA256이란?

🛠️Tech-Tip

2
  • MAVLink Router
  • 쿼드(QUAD) 자율주행 드론용 컴패니언컴퓨터 소프트웨어 – Jetson Orin-Nano 용 (Ver.3.1-Ubuntu 22.04)
카테고리 보기
  • Home
  • Docs
  • MAVLink-Python 프로그래밍
  • PX4 ‘OFFBOARD” 와 Ardupilot ‘GUIDED’ 모드 차이

PX4 ‘OFFBOARD” 와 Ardupilot ‘GUIDED’ 모드 차이

4 min read

✈️ 1. 공통점 요약

항목

설명

목적

외부에서 실시간으로 위치/속도/자세/명령을 줘서 드론을 제어

인터페이스

MAVLink로 GCS 또는 Companion Computer와 통신

활용

VIO, SLAM, AI 경로 계획, 비주얼 서보잉 등


⚙️ PX4 – Offboard Mode

특징

  • **“외부에서 제어 루프 전체를 맡는다”**는 철학
  • Companion PC에서 모든 제어 명령(위치, 속도, 가속도 등)을 직접 주기적으로 송신
  • 20Hz 이상 주기적으로 명령을 보내야 함 (타이밍 엄격)
  • 명령이 중단되면 failsafe (hover → RTL 등) 발동

주요 포인트

항목

설명

요구사항

매 50ms 이내로 SET_POSITION_TARGET_LOCAL_NED 등을 지속 송신

제어 단위

위치 / 속도 / 가속도 / 자세(quaternion)까지 직접 제어 가능

권한

자세한 제어 가능하나 책임도 큼 (Failsafe 설정 중요)

안전장치

명령 끊기면 자동 failsafe (hover, land, RTL 등) 작동


⚙️ ArduPilot – Guided Mode

특징

  • 명령 기반 방식: “이 위치로 가라”, “이 속도로 움직여라” 같은 단일 명령 송신
  • Companion PC나 GCS는 명령만 주고 제어 루프는 FCU 내부에서 처리
  • 명령이 멈춰도 FCU가 마지막 명령을 계속 유지 → 유지성이 강함

주요 포인트

항목

설명

요구사항

GUIDED 모드 진입 후, SET_POSITION_TARGET_GLOBAL_INT, NAV_COMMAND, DO_* 등을 송신

제어 단위

고수준: Waypoint, ROI, Takeoff, Land, Velocity 등

권한

PX4보다 더 추상화된 제어 (제어는 FCU가 수행)

안전장치

명령 중단 시 → FCU가 마지막 상태를 계속 유지 (failsafe 반응은 별도 설정)


🎯 비유로 이해하기

비유

설명

PX4 Offboard

드론을 RC처럼 직접 실시간 조종 (타이밍과 정확도 책임은 외부가 짐)

ArduPilot Guided

드론에게 “어디로 가라”고 명령만 주고 나머지는 드론이 알아서 처리


✅ 선택 기준

상황

추천 모드

AI 비전 기반 자세 제어, VIO 기반 SLAM 등 고주파수 제어 필요

PX4 Offboard

Mission-like 사용, 명령 중심 제어, 고수준 제어가 중심

ArduPilot Guided

실시간 안전성(failsafe) 엄격히 요구

PX4 Offboard (엄격한 설계 요구)

유연하고 편하게 명령만 주고 싶은 경우

ArduPilot Guided


✍️ 요약 비교표

항목

PX4 Offboard

ArduPilot Guided

명령 방식

지속적 실시간 명령 스트림

고수준 단발성 명령

제어 주체

Companion Computer

FCU (비행 컨트롤러)

제어 범위

위치, 속도, 자세, 가속도 등

위치, 속도, Mission 명령 등

안전성

명령 중단 시 failsafe

명령 중단 시 유지됨

복잡성

더 복잡하고 유연함

더 단순하고 추상화됨


필요하시면 PX4와 ArduPilot에서 실제 Offboard/Guided 명령을 보내는 Python 예제도 제공해 드릴 수 있습니다. 또는 VIO 기반 자율비행을 어떤 모드에서 구현하는 게 적절한지도 함께 정리해드릴 수 있어요.

Ardupilot은 offboard 같은 제어 방식으로 프로그래밍은 할수 없나?

ArduPilot은 PX4의 Offboard 모드와 같은 방식으로 “완전한 실시간 외부 제어”는 기본적으로 지원하지 않지만, 일정 수준까지는 “유사한 방식”으로 제어 가능하며, 특정 확장을 통해 Offboard에 가까운 기능도 구현할 수 있습니다.


✅ 기본 철학 차이

항목

PX4 Offboard

ArduPilot Guided

제어 루프 위치

외부 Companion Computer

내부 Flight Controller

목표

빠르고 정밀한 외부 제어

고수준 명령 기반 자율비행


1. ArduPilot에서 Offboard 유사 제어 가능성

✅ 가능:

  • GUIDED 모드 + SET_POSITION_TARGET_* 메시지를 반복적으로 전송하면, → 실시간 속도/위치 제어가 가능합니다.
  • 특히 **velocity control (SET_POSITION_TARGET_LOCAL_NED의 vx, vy, vz)**를 반복 송신하면 → 유사한 Offboard 비행 구현 가능

Copy

# pymavlink 예시: ArduPilot에서 반복적인 속도 제어
master.mav.set_position_target_local_ned_send(
    time_boot_ms,
    target_system,
    target_component,
    mavutil.mavlink.MAV_FRAME_LOCAL_NED,
    type_mask,  # 예: 위치 무시하고 속도만 사용
    x, y, z,
    vx, vy, vz,  # ← 속도 제어
    0, 0, 0,  # 가속도
    0, 0
)
  • 단, 반복 주기 제한은 없음 → PX4처럼 20Hz 강제는 아님
  • 명령이 끊겨도 드론은 마지막 속도를 유지함 → 이것도 장점

2. 제한점

항목

설명

❌ FCU에서 failsafe가 즉각 작동하지 않음

마지막 명령 유지되기 때문에 안전성 보완 필요

❌ 자세(quaternion) 제어 불가능

yaw는 가능하지만 roll/pitch 직접 제어는 어려움

❌ 가속도 제어 불가

PX4처럼 a_x, a_y, a_z 직접 제어 불가능

❌ 실시간 폐루프 제어 어려움

모터 제어 수준까지의 접근은 제한적


3. 그럼 완전 Offboard처럼 하려면?

✅ 가능한 시나리오:

  1. ArduPilot + GUIDED + 지속적 SET_POSITION_TARGET_LOCAL_NED
    • 유사 Offboard 방식 가능
  2. ArduPilot + Lua Script + MAVLink 연결
    • FCU 내부에서 외부 명령을 처리하도록 Lua 스크립트 작성
    • Companion PC는 단순 명령만 전달, 내부에서 실시간 루프 처리 가능
  3. ArduPilot의 DroneKit (Python SDK)
    • 고수준 명령 제어 (vehicle.velocity = ...) 가능하지만, 실시간성은 낮음
  4. Custom Firmware 또는 PR 변경
    • ArduPilot 소스코드 수정으로 Offboard-style API 삽입도 가능

✍️ 정리 요약

항목

설명

완전한 Offboard 모드

ArduPilot에는 없음

대안

GUIDED 모드 + 반복적 SET_POSITION_TARGET_*

실시간 루프

가능하지만 PX4보다 제어 주기 제한 없음

고급 제어

자세/가속도 제어는 PX4가 더 유리

현실적 해결책

Lua 스크립트 활용 또는 MAVProxy 모듈 개발


🔧 결론

목적

추천

완전한 고정밀 자세/속도 제어

PX4 Offboard

미션 + 일부 실시간 경로 제어

ArduPilot GUIDED + 반복 명령

고급 자율비행 로직 내장

ArduPilot + Lua 스크립트

SLAM 기반 자율주행

PX4 + VIO + Offboard or ArduPilot + 외부 노드 설계

업데이트된 날짜 2025년 12월 08일

당신의 감정은 어떤가요?

  • Happy
  • 보통
  • 슬픈

이 문서 공유 :

  • Facebook
  • X
  • LinkedIn
  • Pinterest

제공 BetterDocs

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

© 2025 쿼드(QUAD) 드론연구소 - Kadence WP의 워드프레스 테마

  • 👨‍✈️ 초보 파일럿
  • 🎖️ 개발자
  • 🥇 전문가
  • 💎 다이아몬드
  • 🛠️ Tech-Tip
  • 📝 블로그
  • ⚠️ 저작권
Korean
English