MAVLink
"오늘의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 위치 및 속도를 전송하는 데 사용될 수 있다.
마브링크 프로토콜 패킷은 버전 1.0과 2.0 이후 버전에서 구조가 다르다.
3. 패킷 구조
MAVLink 1.0 버전에서는 6개의 헤더, 2개의 체크섬, 데이터 필드로 구성되며, 2.0 버전 이후에는 비호환/호환성 플래그, 메시지 ID 확장, 서명 필드 등이 추가되었다.[3] 각 필드의 기능은 다음과 같다.3. 1. MAVLink v1.0
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) | 네트워크 무결성 검사 |
3. 2. MAVLink v2.0
MAVLink 2 버전 이후, 패킷 구조는 다음과 같이 확장되었다.[3]필드 이름 | 인덱스(바이트) | 목적 |
---|---|---|
프레임 시작 | 0 | 프레임 전송의 시작을 나타냅니다(v2: 0xFD). |
페이로드 길이 | 1 | 페이로드의 길이(n)입니다. |
비호환 플래그 | 2 | MAVLink 호환성을 위해 이해해야 하는 플래그입니다. |
호환성 플래그 | 3 | 이해하지 못하면 무시할 수 있는 플래그입니다. |
패킷 시퀀스 | 4 | 각 구성 요소는 전송 시퀀스를 계산하여 패킷 손실 감지를 가능하게 합니다. |
시스템 ID | 5 | 전송 시스템의 식별자이며, 동일한 네트워크에서 서로 다른 시스템을 구별할 수 있습니다. |
구성 요소 ID | 6 | 전송 구성 요소의 식별자이며, IMU와 오토파일럿 등 동일한 시스템의 서로 다른 구성 요소를 구별할 수 있습니다. |
메시지 ID | 7 ~ 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
4. 1. GPS_RAW_INT 메시지 예시
XML 문서[9]는 프로토콜에 대한 필드의 논리적 순서를 설명한다. 실제 와이어 형식은 데이터 구조 정렬 문제를 줄이기 위해 필드 순서를 변경[10]할 수 있다.다음은 XML 문서에서 추출한 ID가 24인 GPS_RAW_INT 메시지에 대한 내용이다.
이름 | 타입 | 설명 |
---|---|---|
time_usec | uint64_t | 타임스탬프 (UNIX 에포크 이후 마이크로초 또는 시스템 부팅 이후 마이크로초) |
fix_type | uint8_t | 0-1: 수정 없음, 2: 2D 수정, 3: 3D 수정. 일부 애플리케이션은 이 필드의 값이 2 이상이 아니면 사용하지 않으므로 항상 수정을 올바르게 채워야 한다. |
lat | int32_t | 위도(WGS84), 도 단위 * 1E7 |
lon | int32_t | 경도(WGS84), 도 단위 * 1E7 |
alt | int32_t | 고도(WGS84), 미터 단위 * 1000 (위쪽은 양수) |
eph | uint16_t | GPS HDOP 수평 위치 희석도(cm, m*100). 알 수 없는 경우: UINT16_MAX |
epv | uint16_t | GPS VDOP 수직 위치 희석도(cm, m*100). 알 수 없는 경우: UINT16_MAX |
vel | uint16_t | GPS 지상 속도(m/s * 100). 알 수 없는 경우: UINT16_MAX |
cog | uint16_t | 지상 코스(방위가 아닌 이동 방향) 도 단위 * 100, 0.0..359.99도. 알 수 없는 경우: UINT16_MAX |
satellites_visible | uint8_t | 보이는 위성의 수. 알 수 없는 경우 255 |
5. MAVLink 생태계
MAVLink는 여러 프로젝트에서 통신 프로토콜로 사용되어 프로젝트 간 호환성을 제공한다.[11] MAVLink의 기본 사항을 학습할 수 있는 다양한 튜토리얼 자료가 마련되어 있다.[11]
참조
[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