本节介绍MAVLink一些进阶概念,包括消息签名、路由功能、通用遥测、远控控制和文件格式。以及MAVLink库集成到C项目和Cmake项方法。
一、如何C项目和Cmake项目中添加MAVLink库1.1 Adding Library to C Project1.2 Adding Library to Cmake Project二、消息签名三、路由功能路由详细信息三、通用遥测 General Telemetry四、远程控制接口Offboard Control五、文件格式
一、如何C项目和Cmake项目中添加MAVLink库
1.1 Adding Library to C Project
#include <mavlink/your_dialect/mavlink.h>
Only include the header file for a single dialect. If you need to support messages from a
number of dialects then create a new "parent" dialect XML file that includes them (and use its generated header as shown above).
-
gcc ... -I generated/include …
1.2 Adding Library to Cmake Project
include the headers and install them locally.
use
find_package
to get the dependency in CMakeLists.txt
And pass the local install directory to cmake (adapt to your directory structure):
二、消息签名
MAVLink 消息签名(认证) 允许 MAVLink 2 系统验证消息是否来自可信来源。
由 mavgen 生成的 C 库提供了实现 MAVLink 系统消息签名所需的几乎所有内容。主题 C 消息签名 解释了系统必须实现的其余代码,以使用 C 库启用签名。
MavLink 初始化过程三、路由功能
一个 MAVLINK 网络由多种系统组成(无人机、地面站、天线追踪器等),这些系统可能由一个或多个组件(自动试验、相机、服务器等)组成。
每个系统都有一个网络独有的 系统 id,每个组件都有一个系统独有的 组件 id 可用于地址/路由:
- 系统id 具有1-255之间的值。
- 默认自动领航(Autopilot)系统 id通常是 1。 用户应在添加新的自动驾驶仪到网络时分配独特增加的 id 值。
- GCS 系统和开发者API 通常在数值范围顶部使用ID,以减少ID冲突(例如:255)。 它们的系统ID经常可用于允许多GCS系统。
- 组件 id 按类型和数字,从 MAV_COMPONENT 分配 。
消息可用于所有系统、特定系统、系统中的所有组件或系统内的特定组件。 协议界定了在报文有效载荷中能够(可选) 指定的两个8位字段,以表明发送/路由。 如果遗漏或设置为零,信息将被视为 广播(用于所有系统/组件)。
target_system
:执行命令的系统
target_component
:执行命令的组件 (需要target_system
)。
MAVLink组件处理匹配系统/组件id和广播信息的信息,并会转发收件人信息到其他活动通道上。
路由详细信息
系统/组件如果具备下列条件,应在本地处理信息:
- 这是一个广播消息(
target_system
字段忽略或零)。
target_system
与其系统 id 和target_component
匹配
target_system
与其系统ID匹配,并拥有组件的target_component
target_system
匹配其系统id,组件未知 (即此组件没有看到任何信息链接上的消息target_system
/target_component
)。
如果以下任一条件存在, 系统应将消息转发到另一个链接:
- 这是一个广播消息(
目标_系统
字段忽略或零)。
target_system
与系统ID和不符,系统知道目标系统的联系(即它先前从链接的target_system
上看到一个消息)。
target_system
与其系统 id 匹配, 并具有target_component
字段, 并且系统在链接上看到了来自target_system
/target_component
组合的消息。
系统还应检查
time_boot_ms
减少的 SYSTEM_TIME
消息, 因为这表明系统已重新启动。 在这种情况下, 它应该清除存储的路由信息 (并可能在重新启动后执行其他有用的操作-例如重新提取参数和家庭位置等)。三、通用遥测 General Telemetry
MAVLink 旨在支持发送连续的遥测流, 包括无人机的位置、速度、姿态和类似的关键状态。
四、远程控制接口Offboard Control
远程控制界面允许向飞机发送低级和高级姿态、速度或位置命令。
五、文件格式
MAVLink系统往往需要能够储存、交换或恢复MAVLink信息,包括:任务计划、地理围栏定义、集会点、参数、日志等。 通常, 信息是在一个系统上定义, 在另一个系统上使用 (例如, 自动驾驶仪的日志通过分析工具进行分析, 任务是使用 GCS 规划工具创建的, 并从配套计算机运行)。
许多 GCS 系统和开发人员 Api 都使用 defacto 标准来存储 mission 信息: plain-文本文件格式 。