콘텐츠로 건너뛰기
쿼드(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 프로그래밍
  • 드론에 연결하기(Connect)

드론에 연결하기(Connect)

4 min read

개요

mavutil 모듈은 serial, tcp 또는 udp 채널을 통해 MAVLink 시스템에 대한mavlink_connection() 통신 링크를 설정하는 방법을 제공합니다 . 원격 측정 로그로 작업할 때 유용한 파일 개체에 연결할 수도 있습니다.

이 메서드는 단일 시스템을 나타내는 개체를 반환하지만 링크의 여러 시스템에서 메시지를 수집합니다. 이는 2-시스템 네트워크에 적합하지만 다중 차량 IP 네트워크를 통해 연결해야 하는 경우 source-system-filtering 을 참조하십시오 .

이 mavlink_connection()메서드는 채널을 정의하는 연결 문자열 과 전송 속도 및 링크의 기타 속성을 설정하기 위한 몇 가지 선택적 인수를 사용합니다(연결 문자열의 형식은 일부 선택적 인수를 자동으로 설정하고 재정의할 수 있음).

연결 문자열

연결 문자열 mavutil.mavlink_connection()의 형식은 다음과 같습니다.Copy

[protocol:]address[:port]

protocol:

  • 프로토콜 (선택 사항): IP 프로토콜입니다. 지정하지 않으면 pymavlink는 주소가 직렬 포트(예: USB)인지 파일인지 확인하려고 시도하고, 그렇지 않은 경우 기본적으로 UDP 주소를 사용합니다.
    • tcp: 지정된 address및 port에서 TCP 연결을 시작합니다.
    • tcpin: 지정된 address및 port에서 TCP 연결을 수신합니다.
    • udpin: 지정된 address및 port에서 UDP 연결을 수신합니다.
    • udpout: 지정된 address및 port에서 TCP 연결을 시작합니다.
    • udp: 기본적으로 udpin와 동일합니다. mavlink_connection와 같도록 input=Falseudpout매개변수를 설정합니다 .
    • udpcast: 브로드캐스트 UDP 주소 및 udp포트. 이는 mavlink_connection()매개 변수 input=False및 broadcast=True와 동일합니다.
  • address : IP 주소, 직렬 포트 이름 또는 파일 이름
  • port : IP 포트(주소가 IP 주소인 경우에만)

다양한 유형의 연결에 사용할 수 있는 일부 문자열이 아래에 나열되어 있습니다.

연결 타입

연결 문자열

USB를 통해 차량에 연결된 Linux 컴퓨터

/dev/ttyUSB0

직렬 포트를 통해 차량에 연결된 Linux 컴퓨터(RaspberryPi 예)

/dev/ttyAMA0(보드=57600도 설정)

UDP를 통해 SITL 연결을 수신하는 MAVLink API

udpin:localhost:14540(또는 udp:localhost:14540, 127.0.0.1:14540 등, PX4만 지원)

UDP를 통해 SITL에 연결을 시작하는 MAVLink API

udpout:localhost:14540(또는 udpout:127.0.0.1:14540)

UDP를 통해 차량에 연결된 GCS

127.0.0.1:14550 또는 udp:localhost:14550

TCP를 통해 차량에 연결된 SITL

tcp:127.0.0.1:5760(ArduPilot 전용, PX4는 TCP를 지원하지 않음)

USB를 통해 차량에 연결된 OSX 컴퓨터

개발/cu.usbmodem1

USB를 통해 차량에 연결된 Windows 컴퓨터(이 경우 COM14)

com14

COM14에서 3DR Telemetry Radio를 사용하여 차량에 연결된 Windows 컴퓨터

com14(보드=57600도 설정)

MAVLink는 다른 목적으로 사용되는 UDP 포트를 정의하지 않지만 MAVLink API는 UDP 포트 14540에서 SITL 연결을 수신해야 하고 GCS는 UDP 14550에서 연결을 수신해야 한다는 사실상의 표준이 있습니다.

실습

실습 환경 만들기

본 학습에서 코드 편집기는 vscode를 사용합니다. 설치는 링크를 참고하세요.

학습 디렉토리를 만들고 vscode 편집기를 엽니다. (학습용 VM에는 이미 설치되어 있습니다)Copy

mkdir ~/pymavlink
cd ~/pymavlink
code .

연결 설정 예제 작성

listen.py 파일을 만들고 아래와 같이 코드를 작성 합니다.Copy

from pymavlink import mavutil

# Start a connection listening on a UDP port
# UDP 14550 for primary GSC
#the_connection = mavutil.mavlink_connection('udpin:localhost:14550')
#for ArduPilot
#the_connection = mavutil.mavlink_connection('tcp:localhost:5763')
#for PX4-SITL
the_connection = mavutil.mavlink_connection('udp:localhost:14540')

# Wait for the first heartbeat 
#   This sets the system and component ID of remote system for the link
the_connection.wait_heartbeat()
print("Heartbeat from system (system %u component %u)" % (the_connection.target_system, the_connection.target_component))

ArduPilot SITL 실행

Copy

cd ~/ardupilot/ArduCopter
sim_vehicle.py -v ArduCopter

SITL이 정상적으로 실행되면 QGroundControl 실행

예제 프로그램 실행

Copy

$ python3 listen.py 
Heartbeat from system (system 1 component 0)

첫번째로 작성한 listen.py 프로그램이 드론과 연결한 후 Hearbeat 메시지를 수신한 결과를 볼 수 있습니다.

이제 코드 끝에 다음 라인을 추가해 보겠습니다.

mavutil.mavlink_connection 메소드로 생성된 the_connection 인스턴스에 recv_match 메소드를 이용하여 mavlink로 수신되는 모든 메시지를 출력하는 코드 입니다.Copy

while 1:
    msg = the_connection.recv_match(blocking=True)
    print(msg)

아래와 같이 수신되는 모든 mavlink 메시지를 볼 수 있습니다.Copy

$ python3 listen.py 
Heartbeat from system (system 1 component 0)
ATTITUDE {time_boot_ms : 7432233, roll : 0.0012512498069554567, pitch : 0.0010204593418166041, yaw : -0.10418491810560226, rollspeed : 0.00018897373229265213, pitchspeed : 0.0002900350373238325, yawspeed : 0.000815636245533824}
GLOBAL_POSITION_INT {time_boot_ms : 7432233, lat : -353632622, lon : 1491652375, alt : 584060, relative_alt : -26, vx : -1, vy : 1, vz : 0, hdg : 35404}
SYS_STATUS {onboard_control_sensors_present : 1467087919, onboard_control_sensors_enabled : 1382128687, onboard_control_sensors_health : 1467063343, load : 0, voltage_battery : 12587, current_battery : 0, battery_remaining : 100, drop_rate_comm : 0, errors_comm : 0, errors_count1 : 0, errors_count2 : 0, errors_count3 : 0, errors_count4 : 0}
POWER_STATUS {Vcc : 5000, Vservo : 0, flags : 0}
MEMINFO {brkval : 0, freemem : 65535, freemem32 : 131072}
NAV_CONTROLLER_OUTPUT {nav_roll : -0.00024070088693406433, nav_pitch : 0.00018201448256149888, nav_bearing : -5, target_bearing : 0, wp_dist : 0, alt_error : 0.026932982727885246, aspd_error : 0.0, xtrack_error : 0.0}
MISSION_CURRENT {seq : 0}

이제 출력되는 메시지 중 “ATTITUDE” 타입의 메시지만 추려서 출력해 보겠습니다.

아까 추가했던 코드를 아래와 같이 변경 합니다.Copy

while 1:
    msg = the_connection.recv_match(type='ATTITUDE', blocking=True)
    print(msg)

실행 합니다.Copy

$ python3 listen.py 
Heartbeat from system (system 1 component 0)
ATTITUDE {time_boot_ms : 7906233, roll : 0.0012596407905220985, pitch : 0.0010401400504633784, yaw : -0.10935219377279282, rollspeed : 0.0002872312907129526, pitchspeed : 0.000264745089225471, yawspeed : 0.0008267931989394128}
ATTITUDE {time_boot_ms : 7906483, roll : 0.0012574875727295876, pitch : 0.0010377863654866815, yaw : -0.10930610448122025, rollspeed : 0.0003205988323315978, pitchspeed : 0.00030788395088166, yawspeed : 0.0008285849471576512}

이제 ATTITUDE 타입의 mavlink 메시지만 출력 되는걸 볼 수 있습니다.

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

당신의 감정은 어떤가요?

  • Happy
  • 보통
  • 슬픈

이 문서 공유 :

  • Facebook
  • X
  • LinkedIn
  • Pinterest

제공 BetterDocs

3 Comments

  1. Jo 댓글:
    2025년 12월 10일, 3:00 오전

    Hi,

    I just visited quad-drone-lab.co.kr and wondered if you’d ever thought about having an engaging video to explain what you do?

    Our videos cost just $195 for a 30 second video ($239 for 60 seconds) and include a full script, voice-over and video.

    I can show you some previous videos we’ve done if you want me to send some over. Let me know if you’re interested in seeing samples of our previous work.

    Regards,
    Jo

    응답
    1. quad01 댓글:
      2025년 12월 10일, 11:02 오전

      제안에 감사 드립니다.
      하지만 저희는 이미 유튜브 컨텐츠를 보유하고 있으며 제작하고 있습니다.
      https://www.youtube.com/@quad-robotics

      사업관련 제안은 maponarooo@naver.com 으로 주시기 바랍니다.

      Thank you.

      응답
  2. Gemma 댓글:
    2025년 12월 11일, 6:20 오전

    Hi,

    We run a hands-on agency that helps clients’ Instagram accounts build authority and reach new audiences. Rather than just “adding numbers,” we focus on tangible benefits:

    1. Cheaper than Ads: We deliver targeted eyes on your profile for a fraction of the cost of running Instagram Ads.
    2. Real Community: We target users genuinely interested in your niche, leading to higher engagement and potential sales.
    3. 100% Account Safety: We don’t use bots. Our team performs every action manually on actual smartphones, keeping your account secure.
    4. Consistent Results: Expect 300+ new, high-quality followers every month who actually stick around.

    We are currently offering spots starting at just $60/month with no long-term contracts.

    I’d be happy to forward you some further information if that would be of interest?

    Kind Regards, Gemma

    P.S. If you don’t have a profile yet, we can handle the full setup and optimization for you.

    https://unsubscribe.social/unsubscribe.php?d=quad-drone-lab.co.kr

    응답

답글 남기기 응답 취소

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

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

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