PX4 元数据
PX4 使用和生成的数据具有相关的人类和机器可读元数据:
- 参数 配置 PX4 行为。
- 参数由 ID 字符串表示,该 ID 字符串与 PX4 中存储的值相对应。
- 相关元数据包括对设置的描述、可能的值,以及如何显示该值的信息(例如位掩码)。
- 活动 提供事件通知,如故障安全原因、低电量警告、校准结束等。
- 事件由 id 表示,并与日志级别和参数一起发送。
- 相关元数据包括每个事件的信息、描述和参数列表(包括参数类型)。
- 致动器 该配置可定制飞行器的具体几何形状,为飞行控制器输出分配推杆和电机,并测试推杆和电机的响应。
- 元数据包含有关支持的载具几何形状、输出驱动程序列表以及如何配置这些驱动程序的信息。
- QGroundControl 利用这些信息动态构建配置用户界面。
元数据和元数据转换与 QGroundControl 等外部系统共享,使其能够显示参数和事件信息,并配置载具几何形状和致动器输出映射。
本主题将解释如何定义元数据和帮助翻译字符串(以及所有工作原理,仅供参考)。
元数据翻译
PX4 元数据的翻译是通过 Crowdin 中的 PX4-元数据-翻译 项目。有关与 PX4 和 Crowdin 合作的更多信息,请参阅 翻译.
定义元数据
PX4 元数据在 PX4 源代码中与其相关数据一起定义。这可以在 C/C++ 注释中使用特殊标记来表示元数据字段及其值,也可以使用 YAML 文件。
有关详细信息,请参阅各数据类型的主题:
元数据工具链
处理元数据的流程对所有元数据类型都是一样的。
每次构建 PX4 时,元数据都会被收集到 JSON 文件中。
对于大多数飞行控制器来说(因为大多数控制器都有足够的闪存),JSON 文件会被 xz 压缩并存储在生成的二进制文件中。然后使用 MAVLink 将该文件共享给地面站 组件元数据协议.使用组件元数据协议可确保接收方始终能获取飞行器上运行代码的最新元数据。事件元数据也会添加到日志文件中,使日志分析工具(如 Flight Review)能够使用正确的元数据显示事件。
内存有限的飞行控制器目标的二进制文件不会在二进制文件中存储参数元数据,而是引用存储在 px4-travis.s3.amazonaws.com
.例如,这适用于 全能 F4 SD.元数据通过 github CI 对所有构建目标都适用(因此只有在参数合并到主文件后才可用)。
信息
您可以识别内存受限的电路板,因为它们指定了 CONFIG_BOARD_CONSTRAINED_FLASH=y
在其 px4board 定义文件.
如果在受 FLASH 限制的电路板上进行定制开发,可以调整 URL 这里 指向另一个服务器。
元数据 px4-travis.s3.amazonaws.com
在载具上没有参数元数据时使用。它也可作为一种备用方法,以避免通过低速率遥测链路进行非常缓慢的下载。
的 CI 构建的元数据 JSON 文件。 主要
也会复制到 github repo: PX4/PX4-元数据-翻译.它与 Crowdin 集成以获取翻译,这些翻译存储在 翻译 文件夹中的每种语言的 xz 压缩翻译文件。这些文件由载具组件元数据引用,并在需要时下载。更多信息请参见 PX4-元数据-翻译 和 组件元数据协议 > 翻译.
信息
主分支的参数 XML 文件会通过 CI 复制到 QGC 源代码树中,并在组件元数据协议无法提供元数据的情况下作为备用(这种方法在组件元数据协议出现之前就已存在)。
执行器元数据
下图显示了 QGroundControl 如何从源代码中组合并使用执行机构元数据:
- 左侧元数据:元数据在
module.yml
不同模块中的文件。文件控制分配器
模块定义几何形状,而每个输出驱动器则定义其通道集和配置参数。 模式文件 记录了这些 yaml 文件的结构。 - 中层:在构建时
module.yml
文件进行解析,并将其转化为一个actuators.json
文件,使用 Tools/module_config/generate_actuators_metadata.py 脚本。还有 模式文件 为此。 - 对:运行时,QGroundControl 通过 MAVLink 组件元数据 API(如上所述)请求 JSON 文件。
更多信息
- 参数 & 配置
- 活动界面
- 翻译
- 组件元数据协议 (mavlink.io)
- PX4-元数据-翻译 (Github)