针对开发人员的用户警报

用户警报是对可能影响载具安全运行的 ArduPilot 问题的正式报告。问题 "通常是错误报告或 GitHub 问题。"安全运行 "是指载具及时可靠地响应用户指令的能力,以及载具在自动飞行模式下可靠地执行指令操作的能力。

安全运行问题的例子包括

  • I2C 总线中的损坏数据包锁定了飞行控制器

  • 飞行中的非指令撤膛

  • 畸形存储的航点导致载具在自动模式下飞走

  • 飞行中触发看门狗复位

不属于安全运行问题的例子包括

  • 导致导航性能低下的次优参数值

  • 用户错误或误解参数配置

  • 普通用户即使遇到,也有可能安全恢复的问题

用户警报仅针对 ArduPilot 软件问题。现阶段不包括制造商的硬件,但日后可能会对此进行审查。

鉴于 ArduPilot 的开放性,所有用户警报都将在以下网站公开发布 Github.

用户警报系统由三个部分组成:

  • 提出、授权和管理用户警报的流程

  • 存储和处理用户警报数据的方法

  • 应用程序(全球监控系统软件、网站)获取和使用用户警报数据的能力。

备注

所有从 2020 年 9 月 16 日(或之后)报告的用户警报都在用户警报数据库中。不保证数据库中存有该日期之前报告的所有用户警报。

流程

输入新用户警报的流程是

  1. 报告或怀疑存在的错误

  2. 在 ArduPilot GitHub 上提出的问题

  3. 开发商决定是否存在安全问题

  4. 开发人员在用户警报 GitHub repo 上提交 PR

  5. 第 2 位开发人员审查并确认这是一个真正的 ArduPilot 软件错误

  6. 第 3 人确认 PR 填写正确,流程得到遵守

  7. 授权团队成员合并了用户警报软件仓库中的 PR

解决活动用户警报的流程是

  1. 为 ArduPilot 创建的补丁

  2. 补丁测试

  3. 补丁已并入 ArduPilot 主程序

  4. ArduPilot X.Y.Z 稳定版中的补丁

  5. 开发人员在用户警报 Github 代码库中提出 PR,以更新用户警报字段

  6. 第 2 开发人员审查并确认

  7. 第 3 人确认 PR 填写正确,流程得到遵守

  8. 授权团队成员合并了用户警报软件仓库中的 PR

数据结构

用户警报数据将托管在 Github 存储库 下的 ArduPilot 组织。

版本库将包含以下文件/文件夹结构:

  • README.md

  • 例子

    • EX00001.json

    • ...

  • 警报

    • UA00001.json

    • ...

每个用户警报将是一个 json 文件。每个 json 文件有一个用户警报。适用的用户警报将存储在 警报 文件夹。

该版本库将有一个小型的 CI 程序,以确认每个 PR 的 json 文件的有效性。

json 文件本身将包含以下字段。在 Github 存储库 (该 EX0000x.json 文件)。

字段名称

类型

说明

已筹集日期

年月日

该用户警报发出的日期。

受影响固件

字符串数组,包含 [全部"] 或个别固件: [旋翼飞行器、 "子"、 天线、 "飞机"、 "UGV无人车"、 "AP_Periph"] (AP_Periph")

受影响的 ArduPilot 固件。如果 "全部 "不起作用,请使用逗号分隔值指定多个载具。

硬件限制

电路板名称字符串数组,根据构建系统使用名称。例如 ["立方体黑色"、 "Pixhawk1-1M"、 "KakuteF4"]。

如果用户警报只适用于某些板卡,请列出板卡名称。空数组表示所有板都受影响。

描述

字符串

用户警报的文字说明。普通用户应能理解。

临界状态

int 值为 1、2、3 或 4。

对问题发生可能性的评估。1 = 关键 - 所有载具配置都可能遇到。2 = 关键 - 特定载具配置可能会遇到, 3 = 重大 - 可能会遇到。4 = 轻微 - 不太可能遇到。

减缓

字符串

在 ArduPilot 补丁发布之前,用户可采取的防止问题发生的缓解措施的文字描述。普通用户应能理解。

修复提交

提交 ID 的字符串数组。例如 ["23874b32c9281dja", "w9085bqwfskjdtnu243"]

此问题的修复提交 ID(在主分支上)。如果修复提交分布在不同的库中,则可以是多个提交。如果还没有修复,则为空数组。如果此字段不是 []因此,我们认为该问题已在主系统中得到解决。

日期已解决

年月日

解决此用户警报的日期。在这种情况下,"已解决 "意味着已为所有受影响的载具和电路板类型发布了打补丁的 ArduPilot 版本,并且预计不会对本用户警报进行进一步编辑。

链接问题

字符串

ArduPilot GitHub 仓库中问题的 URL。可选。

链接信息

URL 字符串数组

有关问题的任何辅助信息(如论坛帖子)的 URL。可选。

链接PR

字符串

ArduPilot GitHub 代码库中修复 PR 的 URL。如果还没有 PR,则为空白。

版本从

固件版本字典。例如 {"旋翼飞行器": "4.0.1"、 "飞机": "4.0.5"}

引入该问题的 ArduPilot 版本(如果已知)。空格假定为所有先前版本。说明必须涵盖 "受影响的固件 "中列出的所有固件。

版本固定

固件=版本。例如 {"旋翼飞行器": "4.0.1"、 "飞机": "4.0.5"}

包含修复程序的 ArduPilot 版本。列表必须涵盖 "受影响的固件 "中列出的所有固件。假定从 VersionFrom 到此版本之间的所有版本都受用户警报影响。如果还没有固定版本,则该字段为空。

最后修改

字符串

该用户警报被修改的日期和时间(ISO8601 格式)。此字段由 CI 自动添加,无需手动添加。

应用程序输入

为了方便应用程序的摄取,将生成一个清单文件,列出所有用户警报。然后可以通过 版本从, 版本固定, 受影响固件硬件限制 字段,以便与用户的(飞行)控制器相匹配,并显示任何相关的用户警报。

这里有示例清单(用于测试)和实际用户警报清单的 URL:

此外,还有一个时间戳,记录了清单上载的最后日期和时间。 https://firmware.ardupilot.org/useralerts/lastmodified.txt,采用 ISO8601 格式。