MAVLink는 드론(및 온보드 드론 구성 요소 간)과 통신하기 위한 매우 가벼운 메시징 프로토콜입니다 2009년 초에 Lorenz Meier가 처음 발표하였습니다.
MAVLink는 modern hybrid publish-subscribe and point-to-point design pattern을 따릅니다. 데이터 스트림은 토픽으로 전송/게시되는 반면 미션 프로토콜이나 매개변수 프로토콜과 같은 구성 하위 프로토콜은 재전송이 있는 지점 간입니다.
메시지는 XML 파일 내에서 정의됩니다. 각 XML 파일은 특정 MAVLink 시스템에서 지원하는 메시지 세트를 정의하며, 이를 "dialect"이라고도 합니다. 대부분의 지상 제어 스테이션과 자동 조종 장치에서 구현하는 참조 메시지 세트는 common.xml에 정의되어 있습니다(대부분 dialect은 이 정의를 기반으로 구축됨).
Code generators는 이러한 XML 메시지 정의에서 특정 프로그래밍 언어에 대한 소프트웨어 라이브러리를 생성하며, 이를 드론, 지상 제어 스테이션 및 기타 MAVLink 시스템에서 통신하는 데 사용할 수 있습니다. 생성된 라이브러리는 일반적으로 MIT 라이선스가 적용되므로 폐쇄 소스 애플리케이션의 소스 코드를 게시하지 않고도 모든 폐쇄 소스 애플리케이션에서 제한 없이 사용할 수 있습니다.
C참조 구현은 제한된 RAM과 플래시 메모리를 사용하는 리소스 제약 시스템에 최적화된 헤더 전용 라이브러리입니다. 현장에서 검증되었으며 다양한 제조업체의 구성 요소 간 상호 운용성 인터페이스 역할을 하는 많은 제품에 배포되었습니다.
주요 기능
효율적입니다. MAVLink 1은 시작 신호 및 패킷 손실 감지를 포함하여 패킷당 오버헤드가 8바이트에 불과합니다. MAVLink 2는 오버헤드가 14바이트에 불과하지만 훨씬 더 안전하고 확장 가능한 프로토콜입니다. MAVLink는 추가 프레이밍이 필요하지 않으므로 통신 대역폭이 매우 제한된 애플리케이션에 매우 적합합니다.
안정적입니다. MAVLink는 2009년부터 다양하고 까다로운 통신 채널(높은 지연/노이즈)을 통해 여러 차량, 지상국(및 기타 노드) 간에 통신하는 데 사용되었습니다. 패킷 손실, 손상을 감지하고 패킷을 인증하는 방법을 제공합니다.
다양한 프로그래밍 언어를 사용할 수 있으며, 수많은 마이크로컨트롤러/운영 체제(ARM7, ATMega, dsPic, STM32 및 Windows, Linux, MacOS, Android 및 iOS 포함)에서 실행됩니다.
네트워크에서 최대 255개의 동시 시스템(차량, 지상국 등)을 허용합니다. 오프보드 및 온보드 통신(예: GCS와 드론 간, 드론 자동 조종 장치와 MAVLink 지원 드론 카메라 간)을 모두 지원합니다.
https://mavlink.io/ko/about/implementations.html
https://github.com/moayyad57/dronize-exploit