맨위로가기

MAVLink

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

MAVLink는 무인 항공기(드론)와 무인 차량 간, 그리고 차량 내 하위 시스템 간의 통신에 사용되는 경량의 메시징 프로토콜이다. 지상 통제소와 무인 차량 간의 통신에 주로 사용되며, 차량의 방향, GPS 위치 및 속도 정보를 전송할 수 있다. MAVLink는 패킷 구조를 가지며, 버전 1.0과 2.0에서 패킷 구조가 다르다. 각 패킷은 헤더, 페이로드, 체크섬 등으로 구성되며, 페이로드에는 메시지가 포함된다. MAVLink는 XML 문서에 정의된 메시지를 사용하며, GPS_RAW_INT 메시지와 같은 예시를 통해 데이터 구조를 확인할 수 있다. 여러 프로젝트에서 호환성을 위해 사용되며, 관련 학습 자료도 제공된다.

더 읽어볼만한 페이지

  • 직렬 버스 - 인피니밴드
    인피니밴드는 고성능 컴퓨팅 환경에서 서버, 스토리지, 네트워크 장치 간 고속 데이터 전송을 위한 직렬 통신 기술로, 슈퍼컴퓨터나 데이터 센터에서 주로 사용되지만 이더넷 기반 기술과의 경쟁 및 새로운 컴퓨팅 환경에 대한 적응이라는 과제를 안고 있다.
  • 직렬 버스 - 하이퍼트랜스포트
    하이퍼트랜스포트는 고성능 컴퓨터 시스템에서 CPU, 메모리, 칩셋 간의 연결을 고속으로 처리하기 위해 개발된 상호 연결 기술로, AMD CPU와 엔비디아 칩셋 등에 적용되어 시스템 효율성을 향상시키고 다양한 응용 분야에 활용되며 후속 기술의 기반이 되었다.
  • 네트워크 프로토콜 - UUCP
    UUCP는 유닉스 시스템 간 파일 복사, 원격 명령 실행, 이메일 및 유즈넷 뉴스 전송을 위한 프로토콜 및 프로그램 모음으로, 초기 인터넷 확장에 중요한 역할을 했으나 TCP/IP 기반 서비스 보편화로 사용이 감소했다.
  • 네트워크 프로토콜 - 프레임 릴레이
    프레임 릴레이는 LAN 간 또는 WAN 종단점 간 데이터 전송을 위한 고속 패킷 교환 방식 통신 프로토콜로, X.25 프로토콜을 간소화하여 속도를 높이고, 영구 가상 회선을 통해 안정적인 연결을 제공하며, 서비스 품질 설정을 통해 프레임 우선순위를 지정할 수 있었으나, 현재는 다른 기술에 밀려 사용이 감소하고 있다.
  • 신기술 - 탄소 나노튜브
    탄소 나노튜브는 탄소 원자로 이루어진 나노미터 크기의 튜브로, 뛰어난 특성으로 인해 다양한 분야에 응용되며, 단일벽과 다중벽으로 구분되고, 아크 방전 등의 방법으로 합성된다.
  • 신기술 - 라이다
    라이다는 레이저를 사용하여 물체의 거리와 3차원 형상 정보를 측정하는 기술로, 코라이더 시스템에서 유래되어 자율주행차, 지형 측량, 대기 관측 등 다양한 분야에서 활용되며, 레이저 빔을 발사하고 반사된 빛의 비행시간을 측정하여 거리를 계산하는 원리를 사용한다.
MAVLink
MAVLink 개요
유형무인 차량 통신 프로토콜
개발MAVLink 개발팀
최초 커밋최초 커밋
웹사이트MAVLink 마이크로 에어 비히클 커뮤니케이션 프로토콜 - QGroundControl GCS

2. 적용 분야

주로 지상 통제소(GCS)와 무인 차량 간의 통신, 그리고 차량 하위 시스템 간의 상호 통신에 사용된다. 차량의 방향, GPS 위치 및 속도를 전송하는 데 사용될 수 있다.

3. 패킷 구조

마브링크 프로토콜 패킷은 버전 1.0과 2.0 이후 버전에서 구조가 다르다.

MAVLink 1.0 버전에서는 6개의 헤더, 2개의 체크섬, 데이터 필드로 구성되며, 2.0 버전 이후에는 비호환/호환성 플래그, 메시지 ID 확장, 서명 필드 등이 추가되었다.[3] 각 필드의 기능은 다음과 같다.


  • 프레임 시작: 프레임 전송의 시작을 나타낸다. (v1.0: 0xFE, v2: 0xFD)
  • 페이로드 길이: 페이로드의 길이를 나타낸다.
  • 패킷 시퀀스: 각 구성 요소는 전송 시퀀스를 계산하여 패킷 손실 감지를 가능하게 한다.
  • 시스템 ID: 전송 시스템의 식별자로, 동일 네트워크에서 다른 시스템을 구별한다.
  • 구성 요소 ID: 전송 구성 요소의 식별자로, 동일 시스템 내 다른 구성 요소(IMU, 오토파일럿 등)를 구별한다.
  • 메시지 ID: 메시지 식별자로, 페이로드의 의미와 디코딩 방법을 정의한다. (v1.0은 1바이트, v2.0은 3바이트)
  • 페이로드: 메시지 데이터로, 메시지 ID에 따라 내용이 달라진다.
  • CRC: 패킷 시작 기호를 제외한 전체 패킷의 체크섬이다. (LSB에서 MSB로)


MAVLink 1.0 버전의 프로토콜 패킷은 6개의 헤더와 2개의 체크섬, 그리고 데이터 필드로 구성된다.

필드 명고유 순서 (Bytes)목적 및 기능
헤더1 (Start-of-frame)0시작점을 가리키는 헤더 (0xFE)
헤더2 (Payload-length)1페이로드 길이값 (n)
헤더3 (Packet sequence)2총 패킷에서 해당하는 순서값
헤더4 (System ID)3발신자 시스템의 고유 ID
헤더5 (Component ID)4해당 컴포넌트 고유 ID
헤더6 (Message ID)5페이로드 (payload) 정의 ID
데이터 (Payload)6 ~ (n+6)메시지 ID에서 참조되는 실질적인 데이터 값들 (없을 수 있다)
체크섬1 CRC(n+7)메시지 무결성 검사
체크섬2 CRC(n+8)네트워크 무결성 검사


MAVLink 2 버전 이후, 패킷 구조는 다음과 같이 확장되었다.[3]

필드 이름인덱스(바이트)목적
프레임 시작0프레임 전송의 시작을 나타냅니다(v2: 0xFD).
페이로드 길이1페이로드의 길이(n)입니다.
비호환 플래그2MAVLink 호환성을 위해 이해해야 하는 플래그입니다.
호환성 플래그3이해하지 못하면 무시할 수 있는 플래그입니다.
패킷 시퀀스4각 구성 요소는 전송 시퀀스를 계산하여 패킷 손실 감지를 가능하게 합니다.
시스템 ID5전송 시스템의 식별자이며, 동일한 네트워크에서 서로 다른 시스템을 구별할 수 있습니다.
구성 요소 ID6전송 구성 요소의 식별자이며, IMU와 오토파일럿 등 동일한 시스템의 서로 다른 구성 요소를 구별할 수 있습니다.
메시지 ID7 ~ 9메시지의 식별자입니다. ID는 페이로드가 "의미하는" 바와 이를 올바르게 디코딩하는 방법을 정의합니다.
페이로드10 ~ (n+10)메시지의 데이터이며 메시지 ID에 따라 다릅니다.
CRC(n+11) ~ (n+12)패킷 시작 기호를 제외한 전체 패킷의 체크섬입니다(LSB에서 MSB로).
서명(n+13) ~ (n+25)메시지가 신뢰할 수 있는 소스에서 왔음을 확인하는 서명입니다(선택 사항).


3. 3. CRC 필드

메시지 무결성을 보장하기 위해 순환 중복 검사(CRC)가 각 메시지의 마지막 두 바이트에 대해 계산된다. CRC 필드는 송신자와 수신자가 전송 중인 메시지에 대해 모두 동의하는지 확인하는 기능도 수행한다. 프레임 시작 표시자를 제외한 패킷의 바이트에 대한 ITU X.25/SAE AS-4 해시를 사용하여 계산된다.[4]

CRC를 계산할 때 시드 값이 데이터의 끝에 추가된다. 시드는 프로토콜의 모든 새로운 메시지 집합으로 생성되며, 각 메시지 사양의 패킷과 유사한 방식으로 해시된다. MAVLink 프로토콜을 사용하는 시스템은 이를 위해 미리 계산된 배열을 사용할 수 있다.[4]

MAVLink의 CRC 알고리즘은 파이썬[5]자바[6][7][8]와 같은 많은 언어로 구현되었다.

4. 메시지 (Messages)

MAVLink 메시지는 패킷의 페이로드에 해당한다. 모든 메시지는 패킷의 ID 필드(헤더6 Message ID)로 식별되며, 페이로드에는 메시지의 데이터가 포함된다. MAVLink 소스의 XML 문서[9]에는 이 페이로드에 저장된 데이터의 정의가 있다.

XML 문서[9]는 프로토콜에 대한 필드의 논리적 순서를 설명한다. 실제 와이어 형식(및 일반적인 메모리 내 표현)은 데이터 구조 정렬 문제를 줄이기 위해 필드의 순서를 변경[10]한다.

아래는 XML 문서에서 추출한 ID 24, GPS_RAW_INT 메시지 예시이다.

```xml



전역 위치 시스템(GPS)에서 반환된 전역 위치입니다. 이것은 시스템의 전역 위치 추정이 아니라 RAW 센서 값입니다. 전역 위치 추정은 메시지 GLOBAL_POSITION을 참조하십시오. 좌표 프레임은 오른손 좌표계이며 Z축이 위쪽(GPS 프레임)입니다.


4. 1. GPS_RAW_INT 메시지 예시

XML 문서[9]는 프로토콜에 대한 필드의 논리적 순서를 설명한다. 실제 와이어 형식은 데이터 구조 정렬 문제를 줄이기 위해 필드 순서를 변경[10]할 수 있다.

다음은 XML 문서에서 추출한 ID가 24인 GPS_RAW_INT 메시지에 대한 내용이다.

이름타입설명
time_usecuint64_t타임스탬프 (UNIX 에포크 이후 마이크로초 또는 시스템 부팅 이후 마이크로초)
fix_typeuint8_t0-1: 수정 없음, 2: 2D 수정, 3: 3D 수정. 일부 애플리케이션은 이 필드의 값이 2 이상이 아니면 사용하지 않으므로 항상 수정을 올바르게 채워야 한다.
latint32_t위도(WGS84), 도 단위 * 1E7
lonint32_t경도(WGS84), 도 단위 * 1E7
altint32_t고도(WGS84), 미터 단위 * 1000 (위쪽은 양수)
ephuint16_tGPS HDOP 수평 위치 희석도(cm, m*100). 알 수 없는 경우: UINT16_MAX
epvuint16_tGPS VDOP 수직 위치 희석도(cm, m*100). 알 수 없는 경우: UINT16_MAX
veluint16_tGPS 지상 속도(m/s * 100). 알 수 없는 경우: UINT16_MAX
coguint16_t지상 코스(방위가 아닌 이동 방향) 도 단위 * 100, 0.0..359.99도. 알 수 없는 경우: UINT16_MAX
satellites_visibleuint8_t보이는 위성의 수. 알 수 없는 경우 255


참조

[1] 웹사이트 Initial commit · mavlink/mavlink@a087528 https://github.com/m[...]
[2] 웹사이트 MAVLink Micro Air Vehicle Communication Protocol - QGroundControl GCS http://qgroundcontro[...] 2013-07-31
[3] 웹사이트 Serialization · MAVLink Developer Guide https://mavlink.io/e[...] 2019-08-22
[4] 웹사이트 Field Reordering and CRC Extra Calculation - QGroundControl GCS http://qgroundcontro[...]
[5] 웹사이트 GitHub - ArduPilot/pymavlink: python MAVLink interface and utilities. https://github.com/A[...] 2019-08-18
[6] 웹사이트 GitHub - arthurbenemann/droidplanner: Ground Control Station for Android Devices. https://github.com/a[...] 2019-07-02
[7] 웹사이트 A Java code generator and a Java library for MAVLink: ghelle/MAVLinkJava https://github.com/g[...] 2019-08-04
[8] 웹사이트 GitHub - dronefleet/mavlink: A Java API for MAVLink communication. https://github.com/d[...] 2019-08-02
[9] 웹사이트 GitHub - mavlink/mavlink: Marshalling / communication library for drones. https://github.com/m[...] 2019-08-20
[10] 웹사이트 Field Reordering and CRC Extra Calculation - QGroundControl GCS http://qgroundcontro[...]
[11] 웹사이트 MAVLink Tutorial for Absolute Dummies (Part –I) https://diydrones.co[...] 2013-11-15
[12] URL https://github.com/m[...]
[13] 웹사이트 공식 - MAVLink Developer Guide http://qgroundcontro[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com