获取和设置参数¶
ArduPilot 有数百个参数,允许用户配置飞行器飞行/驱动方式的许多方面,包括姿态控制增益、在返航模式下飞行时返航的最低安全高度等。
本页介绍地面站或配套计算机如何从飞行控制器检索参数列表,然后对其进行更改。通用 MAVLink 参数协议描述如下.
大多数地面站(又称 GCS)都会向用户提供一份可编辑的参数列表,以便用户定制飞行器。下面是人机可读参数名称、描述和有效范围的链接,但请注意,不同类型的飞行器参数不同,而且每次固件发布时都会略有变化,因此地面站和配套计算机应直接从飞行控制器获取参数列表。许多 GCS 还会解析机器可读参数列表(链接如下),为用户提供说明和有效范围。
载具 |
人类可读 |
机器可读 |
---|---|---|
天线跟踪器 |
||
旋翼飞行器 |
||
固定翼飞行器 |
||
无人车UGV |
||
潜水艇 |
不可用 |
检索所有参数¶
接收所有参数的最有效方法是发送一个 参数请求列表 信息,其中包括以下字段
目标系统 :载具的 MAVLink 系统 ID(通常为 "1")。
目标组件 通常为 "1"
载具应作出许多单独的响应 PARAM_VALUE 消息(系统中的每个参数都有一条)。的字段。 PARAM_VALUE 这些信息是
param_id :参数名称,16 个字符的字符串(如果少于 16 个字符,则以空字符结束)。
参数值 :参数值(所有参数值均以浮点形式发送)
参数类型 :"...... MAV_PARAM_TYPE.请注意,ArduPilot 仅支持 MAV_PARAM_TYPE_INT8、MAV_PARAM_TYPE_INT16、MAV_PARAM_TYPE_INT32 和 MAV_PARAM_TYPE_REAL32(又称 float)类型。
参数数量 和 参数索引 字段来确定是否已成功接收所有参数
MAVLink 不保证数据包的送达,因此如果某些参数值未送达,请使用以下说明重新请求缺失的参数。
检索参数¶
要检索单个参数,请发送 参数读取请求 信息,其中包括以下字段
目标系统 :载具的 MAVLink 系统 ID(通常为 "1")。
目标组件 通常为 "1"
param_id 参数名:16 个字符的参数名(如果已知)。如果不知道,只要 param_index 设置为非负数,该字段可以是任何内容
参数索引 :参数索引号,如果使用 "param_id "字段,则使用-1。请注意,最好使用 param_id 字段,因为如果 "隐藏 "参数被公开,该索引可能会发生变化(见下文)。
载具应发出 PARAM_VALUE 信息,如上一节所述。
设置参数¶
要设置单个参数的值,请发送 参数设置 信息,其中包括以下字段
目标系统 :载具的 MAVLink 系统 ID(通常为 "1")。
目标组件 通常为 "1"
param_id 参数名称:16 个字符的可读参数名称
参数值 :参数的新值,用浮点表示
参数类型 :"...... MAV_PARAM_TYPE 的参数。这必须与 AutoPilot 中的参数类型相匹配,并且将是 MAV_PARAM_TYPE_INT8、MAV_PARAM_TYPE_INT16、MAV_PARAM_TYPE_INT32 或 MAV_PARAM_TYPE_REAL32(ArduPilot 支持的唯一类型)。将 "param_type "字段从 PARAM_VALUE 飞行控制器为该参数发送的信息。
如果参数值更新成功,载具将发出 PARAM_VALUE 消息,并将 "param_value "字段设置为新值。
如果因为参数是只读参数(如 MISSION_COUNT)而导致保存不成功,载具会响应 二 消息A PARAM_VALUE 消息,并将 "param_value "字段设置为新值,后续的 PARAM_VALUE 参数值 "字段设置为原始值。实施这种奇怪的行为,是为了应对某些 GCS 的不良行为,这些 GCS 会反复尝试设置参数,直到收到它们所期望的数字为止。