# MAVLink (Micro Air Vehicle Link)

MAVLink(Micro Air Vehicle Link)은 무인 항공기 및 로봇의 원격 통신을 위해 개발된 경량 통신 프로토콜이다. 이 프로토콜은 2009년에 Lorenz Meier에 의해 개발되었으며, 현재는 로봇 및 무인 시스템의 다양한 응용에서 사용되고 있다. MAVLink는 주로 드론과 같은 무인 시스템의 자율 제어, 상태 모니터링, 명령 전송 및 원격 데이터 수집에 사용된다.

#### MAVLink 메시지 구조

MAVLink는 패킷 기반 통신 프로토콜로, 모든 데이터는 일정한 크기의 패킷으로 전송된다. 각 패킷은 헤더, 페이로드, 체크섬으로 구성된다. 헤더는 패킷의 시작을 알리며, 페이로드는 실제 데이터를 담고 있고, 체크섬은 데이터의 무결성을 확인하는 역할을 한다. MAVLink 1.0에서는 8바이트의 헤더와 최대 255바이트의 페이로드가 사용되며, MAVLink 2.0에서는 헤더 크기가 10바이트로 증가하고 페이로드 크기도 최대 255바이트까지 확장 가능한다.

#### MAVLink의 신뢰성

MAVLink는 통신의 신뢰성을 보장하기 위해 다양한 메커니즘을 포함하고 있다. 가장 기본적인 신뢰성 메커니즘은 각 패킷에 포함된 체크섬이다. 체크섬은 전송 중 데이터의 무결성을 확인하는 데 사용되며, 오류가 발견될 경우 해당 패킷은 무시되거나 재전송 요청이 발생할 수 있다. 또한, MAVLink는 패킷 시퀀스 번호를 사용하여 패킷이 순서대로 수신되었는지 확인하며, 누락된 패킷이 있을 경우 재전송을 요청할 수 있다.

#### MAVLink 프로토콜의 확장성

MAVLink는 모듈화된 디자인을 채택하여 쉽게 확장할 수 있다. MAVLink 2.0에서는 각 패킷에 24비트의 메시지 ID를 사용하여 더 많은 종류의 메시지를 정의할 수 있으며, 새로운 메시지 타입을 추가하는 것도 용이한다. 이 확장성 덕분에 MAVLink는 다양한 로봇 플랫폼과 응용 분야에서 채택되고 있다. 예를 들어, 특정 하드웨어 또는 소프트웨어 요구사항에 맞추어 MAVLink 메시지를 커스터마이즈할 수 있다.

#### 데이터 전송 효율성

MAVLink는 경량 프로토콜로, 낮은 대역폭 환경에서도 효율적으로 동작할 수 있도록 설계되었다. MAVLink 1.0과 2.0 모두 저전력, 저대역폭 환경에서의 통신을 최적화하기 위해 개발되었으며, 이로 인해 실시간 통신이 요구되는 상황에서도 안정적인 데이터 전송이 가능한다. 또한, 메시지 압축 및 효율적인 패킷 구조 덕분에 제한된 대역폭에서 높은 데이터 전송률을 유지할 수 있다.

#### MAVLink와 보안

MAVLink는 기본적으로 보안을 고려하지 않은 설계로 시작되었으나, MAVLink 2.0에서는 보안 기능이 추가되었다. MAVLink 2.0에서는 메시지 서명 및 암호화를 통해 통신의 기밀성을 보장할 수 있다. 메시지 서명은 각 패킷에 서명을 추가하여 데이터의 무결성을 확인하고, 데이터 조작을 방지할 수 있다. 또한, 암호화를 통해 기밀 데이터를 보호하며, 악의적인 제3자가 통신을 가로채거나 조작하는 것을 방지할 수 있다.

***

관련 자료:

* Meier, L., Tanskanen, P., Heng, L., Lee, G. H., & Pollefeys, M. (2011). PIXHAWK: A micro aerial vehicle design for autonomous flight using onboard computer vision. Autonomous Robots, 33(1-2), 21-39.
* Meier, L. (2020). MAVLink: Micro Air Vehicle Protocol. Retrieved from <https://mavlink.io>
* Krajník, T., Vonásek, V., Fišer, D., & Faigl, J. (2011). AR-drone as a Platform for Robotic Research and Education. In International Conference on Research and Education in Robotics.
