콘텐츠로 건너뛰기
쿼드(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
  • 🛠️Tech-Tip
  • MAVLink Router

MAVLink Router

4 min read

MAVLink Router는 여러 엔드포인트(연결) 간에 MAVLink 메시지를 분배하는 애플리케이션입니다 . 대상 주소에 따라 패킷을 단일 포트 또는 여러 엔드포인트에 분배합니다. 연결은 UART, UDP 또는 TCP를 통해 이루어질 수 있습니다

1. 컴파일 및 설치

컴파일하려면 다음 패키지가 필요합니다.

  • GCC 또는 Clang 컴파일러
  • meson >= 0.57 및 ninja-build
  • C 및 C++ 표준 라이브러리

종속성 가져오기

MAVLink Router는 현재 mavlink C 라이브러리에 의존하고 있습니다. 해당 하위 모듈을 가져와야 합니다.

$ git clone https://github.com/mavlink-router/mavlink-router.git
$ cd mavlink-router
$ git submodule update --init --recursive

빌드 종속성으로 몇 가지 추가 패키지가 필요합니다. 일부 배포판의 패키지:

Debian/Ubuntu:

$ sudo apt install git meson ninja-build pkg-config gcc g++ systemd

meson 패키지는 버전 0.55 이상이어야 합니다. 패키지 관리자에 이 버전이 없는 경우 pip를 통해 최신 버전을 다운로드할 수 있습니다.

$ sudo pip3 install meson

2. 빌드(Build)

빌드 시스템은 일반적인 구성/빌드/설치 순서를 따릅니다. 구성은 한 번만 수행하면 됩니다.

구성:

x86-64 시스템의 일반적인 구성은 다음과 같습니다.

$ meson setup build .

$ ninja -C build

$ sudo ninja -C build install

3. 실행

mavlink-router를 실행하는 방법은 Conf 파일을 이용하는 방법과 명령중 매개변수를 이용하는 방법 두가지가 있습니다.

Conf 파일

기본적으로 mavlink-routerd는 /etc/mavlink-router/main.conf 파일을 찾습니다.

파일 위치는 MAVLINK_ROUTERD_CONF_FILE환경 변수를 통해 재정의하거나 mavlink-routerd를 실행할 때 -c 옵션을 통해 재정의할 수 있습니다. 구성 파일 구문과 모든 매개변수에 대한 설명은 examples/config.sample파일 에서 찾을 수 있습니다 .

기본 conf 파일 외에도 추가 구성 파일을 넣을 디렉토리를 사용할 수도 있습니다. 이 디렉토리의 파일은 알파벳순으로 읽히고 이전 파일에서 찾은 구성을 추가하거나 재정의할 수 있습니다.

기본적으로 /etc/mavlink-router/config.d디렉토리이지만 MAVLINK_ROUTERD_CONF_DIR 환경 변수를 통해 재정의하거나 mavlink-routerd를 실행할 때 -d 옵션을통해 재정의할 수 있습니다.

.conf 파일 예시

로컬 PC의 UDP 14541 포트와 다른 PC(192.168.111.222)의 14542 UDP 포트로 라우팅 예시.

#test.conf
[UartEndpoint UAVTelemetry] # FC와 연결된 connect string
Device = /dev/ttyUSB0
Baud = 921600

[UdpEndpoint localDesktop] # Routing 할 Endpoint #1
Mode = Normal
Address = 127.0.0.1
Port = 14541 # 예시

[UdpEndpoint localDesktop2] # Routing 할 Endpoint #2
Mode = Normal
Address = 192.168.111.222 # 예시
Port = 14542 # 예시

실행

cd ~/mavlink-router
mavlink-routerd -c test.conf

CLI 매개변수

명령줄 옵션의 전체 목록은 mavlink-routerd --help 출력을 참조하세요. 가장 중요한 사실은 다음과 같습니다.

  • TCP 서버는 기본적으로 활성화되어 있습니다
  • TCP 및 UDP 엔드포인트는 여러 번 추가될 수 있습니다.
  • – e 옵션 으로 추가된 UDP 엔드포인트는 normal모드(지정된 주소 및 포트로 데이터 전송)에서 시작됩니다 .
  • 마지막 매개변수(옵션 키 없음)는 하나의 UART 장치 또는 UDP 연결일 수 있습니다. 이 UDP 엔드포인트는 server모드에서 시작됩니다(수신 연결을 기다리는 중)!

ttyS1UART에서 다른 2개의 UDP 엔드포인트로 mavlink 패킷을 라우팅하려면 다음 명령을 사용하세요.

$ mavlink-routerd -e 192.168.7.1:14550 -e 127.0.0.1:14550 /dev/ttyS1:1500000

콜론 뒤에 있는 1500000는 /dev/ttyS1:1500000UART baudrate를 설정합니다.

mavlink-routerd --help로 더 많은 옵션을 확인하세요.

UART 대신 들어오는 UDP 연결에서 mavlinks 패킷을 라우팅하는 것도 가능합니다.

$ mavlink-routerd -e 192.168.7.1:14550 -e 127.0.0.1:14550  0.0.0.0:24550

또한 mavlink-router는 기본적으로 TCP 연결을 위해 포트 5760에서 수신 대기합니다. 해당 포트에 연결된 모든 클라이언트는 MAVLink 데이터를 보내고 받을 수 있습니다.

IPv6 주소는 다음과 같이 대괄호로 묶어야 합니다: [::1]. 포트 번호는 IPv4와 같은 방식으로 지정할 수 있습니다: [::1]:14550. 유니캐스트와 멀티캐스트 주소는 모두 적절하게 처리해야 하며 링크 로컬 주소의 인터페이스는 자동으로 감지됩니다.

MAVLink 라우터가 엔드포인트 간에 메시지를 전달하는 방식을 이해하려면 MAVLink 메시지에 발신자 주소가 있어야 하지만 일부 메시지에만 대상 주소가 있다는 것을 아는 것이 중요합니다(예: 매개변수 요청). 발신자 및 대상 주소는 각각 Mavlink System ID 및 Component ID로 구성되므로 하나의 UAV는 비행 컨트롤러와 개별 Component ID가 있는 동반 컴퓨터에서 실행되는 다른 서비스를 가질 수 있지만 동일한 System ID를 공유합니다. 대상 주소에서 Component ID 0은 시스템의 모든 구성 요소에 브로드캐스트하는 데 사용되고 sysID 0은 모든 시스템에 브로드캐스트합니다.

로깅(Logging)

비행 스택 로깅

Mavlink 라우터는 비행 스택 로그도 수집할 수 있습니다. PX4와 Ardupilot 비행 스택 로그를 모두 수집할 수 있습니다. 로깅을 시작하려면 config 파일의 섹션 Log에 있는 키 에 디렉토리를 설정합니다(또는 인수 옵션 사용 ). MAVLink 방언은 기본적으로 자동 감지되거나 키를 사용하여 명시적으로 설정할 수 있습니다. 예를 들어 Ardupilot 로그를 디렉토리에 수집하려면 conf 파일에 다음을 추가할 수 있습니다.General-lMavlinkDialect/var/log/flight-stack

[General]
Log=/var/log/flight-stack
MavlinkDialect=ardupilotmega

로그는 지정된 디렉토리의 .bin(Ardupilot의 경우) 또는 .ulgXXXXX-date-timeXXXXX(PX4의 경우) 파일에 수집됩니다.

원격 측정 로깅

flight stack 로깅과 비슷하게 General섹션의 LogTelemetry키를 사용하여 원시 원격 측정 데이터를 .tlog파일 로 쓸 수도 있습니다 (또는 -T인수 사용). flight stack 로깅을 사용하는 경로가 설정된 경우에만 작동합니다! flightstack 로깅의 모든 옵션이 여기에도 적용됩니다.

보다 자세한 내용은 MAVLink-Router github 페이지를 참고 하시기 바랍니다.

https://github.com/mavlink-router/mavlink-router

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

당신의 감정은 어떤가요?

  • Happy
  • 보통
  • 슬픈

이 문서 공유 :

  • Facebook
  • X
  • LinkedIn
  • Pinterest

제공 BetterDocs

답글 남기기 응답 취소

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

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

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