请求(飞行)控制器提供数据

地面站或配套计算机可使用以下方法之一请求所需的数据(和速率):

  • 设置 SRx_ 参数,使(飞行)控制器在启动时主动发送信息组。这种方法易于为少量无人机进行设置,但不建议用于大多数应用。

  • 发送 请求数据流 信息来设置信息组的费率

  • 发送 设置信息间隔 指令(在一个 命令长 报文)来精确控制单个报文的速率。请注意,只有 ArduPilot 4.0 及更高版本支持此功能。

  • 发送 请求信息 指令(在一个 命令长 消息)来请求消息的单个实例。请注意,仅 ArduPilot 4.0 及更高版本支持此功能。

  • 创建存储在 SD 卡或 ROMFS 中的配置文件,按通道指定信息流速率

请注意,在发送参数和航点时,数据流速率会暂时比要求的慢 4 倍或更多。

有关上述方法的更多详情,请参阅下文。

备注

如果您发现自己的信息速率在设置后又恢复到某个固定值,这很可能是地面控制站在调整信息流速率以适应自己的需要。大多数地面控制站都会有一个控件来阻止地面控制站这样做,例如在 MAVProxy 中使用 设置 流率 -1.如果调整 GCS 配置不可行,则可以在 "GCS "中设置第 12 位。 SERIALn_OPTIONS 参数,该参数与传输 mavlink 流量的串行端口相对应,可强制 ArduPilot 忽略 GCS 通过 streamrate 命令设置信息速率的尝试。

使用 SRx 参数

设置 SRx_ 参数(然后重启(飞行)控制器)将导致(飞行)控制器主动向地面站发送多组信息。这不是推荐的方法,因为地面站无法确定 "x "应该是什么。

使用 REQUEST_DATA_STREAM

包括Mission Planner地面站在内的大多数地面站都使用这种方法。参见 设置数据速率 在Mission Planner地面站维基中。

发送 请求数据流 信息,其中包括以下字段

  • target_system:载具的 MAVLink 系统 ID(通常为 "1")。

  • target_components : 通常为 "0"

  • req_stream_id:0 至 12,与报文组相对应(参见 mav_data_stream).请参阅上文 "使用 SRx 参数 "部分,以确定每组中的确切报文。

  • req_message_rate:信息速率(以赫兹为单位

  • start_stop :"1 "表示开始发送,"0 "表示停止发送

使用 SET_MESSAGE_INTERVAL

这种方法可提供最精确的控制,并减少带宽需求(因为不会发送不必要的信息),但需要准确了解您需要哪些信息

发送 命令长 包含以下字段

  • target_system:载具的 MAVLink 系统 ID(通常为 "1")。

  • target_components : 通常为 "0"

  • 指令:511(用于 mav_cmd_set_message_interval)

  • 确认0

  • param1:所需的 MAVLink 报文 ID(例如,33 表示"......")。 global_position_int)

  • param2:信息之间的时间间隔,以微秒为单位(例如,10 赫兹为 100000,1 赫兹为 1000000)

  • 参数 3 至参数 7: 0(未使用)

警告

如果遥测链路是共享的(即多台全球控制站或一台全球控制站和一台配套计算机),则可能会出现请求冲突的情况。最常见的例子是Mission Planner地面站使用 REQUEST_DATA_STREAM 方法,而配套计算机使用 SET_MESSAGE_INTERVAL 方法。Mission Planner地面站至少可以通过将速率设置为"-1 "来关闭 REQUEST_DATA_STREAM 请求(请参阅 "Mission Planner地面站")。 设置数据速率).MAVProxy 用户可以 设置 流率 -1.

使用 REQUEST_MESSAGE

全球监控系统可以轮询(飞行)控制器发出的单个信息实例。

发送 命令长 包含以下字段

  • target_system:载具的 MAVLink 系统 ID(通常为 "1")。

  • target_components : 通常为 "0"

  • 指令:512(用于 mav_cmd_request_message)

  • 确认0

  • param1:所需的 MAVLink 报文 ID(例如,33 表示"......")。 global_position_int)

  • param2:取决于所请求的信息;详情请查看该信息的定义。

  • 参数 3 至参数 7: 0(未使用)

在文件中指定信息速率

启动时,ArduPilot 将从 ROMFS 或文件系统中找到的文件填充初始信息间隔。

在基于 ChibiOS 的板卡上(闪存超过 1MB),SD 卡将在根目录下搜索特殊命名的文件。

每个 mavlink 通道都在单独的配置文件中配置。配置为 mavlink 的第一个串行端口为通道 0,第二个串行端口为通道 1 等。

文件名示例如下 message-intervals-chan0.txt

格式简单而严格。有两列,中间用一个空格隔开,都包含数字。第一个数字是 mavlink 消息 ID。第二个数字是信息间隔,以毫秒为单位。每行必须以回车结束 换行。

30 50
28 100
29 200

该示例文件内容将流式传输 态度 (ID=30) 频率为 20Hz 和 缩放压力 (ID=29),频率为 5Hz。信息 ID 28 是 RAW_PRESSURE,ArduPilot 不会发送该信息 - 这一行将被忽略。

通过在相关电路板的 hwdef 文件中指定配置文件的路径,可将配置文件包含在 ROMFS 中(即编译到映像中):

ROMFS 信息-间隔-chan0.文本 图书馆/AP_HAL_ChibiOS/hwdef/橙色立方体/信息-间隔-chan0.文本

第二个参数是 ArduPilot 签出根目录的相对路径。

这方面的用例包括在无法运行脚本的电路板上或在脚本运行之前锁定遥测率。

检查信息速率

一些地面站(包括 Mission Planner 和 QGC)包括一个 "MAVLink 检查器",在检查特定信息的更新率时非常有用。

如果使用Mission Planner地面站:

  • 按 Ctrl-F

  • 按下 "MAVLink 检查器 "按钮

  • 展开载具和组件 ID,查看单个信息及其更新率

./_images/mavlink-mp-mavlink-inspector.png

如果使用 MAVProxy:

  • 模块加载

  • 消息状态