MAVLink 是一种非常轻量级的消息传递协议,用于与无人机(以及机载无人机组件之间)进行通信。
MAVLink 遵循现代混合发布-订阅和点对点设计模式:数据流作为主题发送/发布,而配置子协议(如任务协议或参数协议)是点对点重传。
消息在 XML 文件中定义。每个 XML 文件定义特定 MAVLink 系统支持的消息集,也称为“方言”。大多数地面控制站和自动驾驶仪实现的参考消息集在common.xml中定义(大多数方言建立在此定义之上)。
代码生成器根据这些 XML 消息定义为特定编程语言创建软件库,然后无人机、地面控制站和其他 MAVLink 系统可以使用这些软件库进行通信。生成的库通常是 MIT 许可的,因此可以在任何闭源应用程序中不受限制地使用,而无需发布闭源应用程序的源代码。
主要特征
非常有效率
MAVLink 1 每个数据包只有 8 个字节的开销,包括开始符号和丢包检测。MAVLink 2 只有 14 字节的开销(但它是一个更加安全和可扩展的协议)。因为 MAVLink 不需要任何额外的成帧,它非常适合通信带宽非常有限的应用程序。
非常可靠
自 2009 年以来,MAVLink 一直被用于通过各种具有挑战性的通信通道(高延迟/噪声)在许多不同的车辆、地面站(和其他节点)之间进行通信。它提供了检测数据包丢失、损坏和数据包身份验证的方法。
在众多微控制器/操作系统(包括 ARM7、ATMega、dsPic、STM32 和 Windows、Linux、MacOS、Android 和 iOS)上运行。
网络上最多允许 255 个并发系统(车辆、地面站等)
启用板载和板载通信(例如,在 GCS 和无人机之间,以及在无人机自动驾驶仪和启用 MAVLink 的无人机相机之间)。
MAVLink“微服务”定义了 MAVLink 系统可以采用的更高级别的协议,以便更好地进行互操作。例如,QGroundControl、ArduPilot 和 PX4 自动驾驶仪都共享一个通用命令协议,用于发送需要确认的点对点消息。
微服务用于交换多种类型的数据,包括:参数、任务、轨迹、图像、其他文件。如果数据远大于单个消息的容量,服务将定义如何拆分和重新组合数据,以及如何确保重新传输任何丢失的数据。其他服务提供命令确认和/或错误报告。
大多数服务使用客户端-服务器模式,例如 GCS(客户端)发起请求,车辆(服务器)以数据响应。
主要的微服务显示在侧边栏中(大部分在下面列出):
路径规划协议(轨迹接口)
Mavros的应用
网友评论