针对开发人员的用户警报¶
用户警报是对可能影响载具安全运行的 ArduPilot 问题的正式报告。问题 "通常是错误报告或 GitHub 问题。"安全运行 "是指载具及时可靠地响应用户指令的能力,以及载具在自动飞行模式下可靠地执行指令操作的能力。
安全运行问题的例子包括
I2C 总线中的损坏数据包锁定了飞行控制器
飞行中的非指令撤膛
畸形存储的航点导致载具在自动模式下飞走
飞行中触发看门狗复位
不属于安全运行问题的例子包括
导致导航性能低下的次优参数值
用户错误或误解参数配置
普通用户即使遇到,也有可能安全恢复的问题
用户警报仅针对 ArduPilot 软件问题。现阶段不包括制造商的硬件,但日后可能会对此进行审查。
鉴于 ArduPilot 的开放性,所有用户警报都将在以下网站公开发布 Github.
用户警报系统由三个部分组成:
提出、授权和管理用户警报的流程
存储和处理用户警报数据的方法
应用程序(全球监控系统软件、网站)获取和使用用户警报数据的能力。
备注
所有从 2020 年 9 月 16 日(或之后)报告的用户警报都在用户警报数据库中。不保证数据库中存有该日期之前报告的所有用户警报。
流程¶
输入新用户警报的流程是
报告或怀疑存在的错误
在 ArduPilot GitHub 上提出的问题
开发商决定是否存在安全问题
开发人员在用户警报 GitHub repo 上提交 PR
第 2 位开发人员审查并确认这是一个真正的 ArduPilot 软件错误
第 3 人确认 PR 填写正确,流程得到遵守
授权团队成员合并了用户警报软件仓库中的 PR
解决活动用户警报的流程是
为 ArduPilot 创建的补丁
补丁测试
补丁已并入 ArduPilot 主程序
ArduPilot X.Y.Z 稳定版中的补丁
开发人员在用户警报 Github 代码库中提出 PR,以更新用户警报字段
第 2 开发人员审查并确认
第 3 人确认 PR 填写正确,流程得到遵守
授权团队成员合并了用户警报软件仓库中的 PR
数据结构¶
用户警报数据将托管在 Github 存储库 下的 ArduPilot 组织。
版本库将包含以下文件/文件夹结构:
README.md
例子
EX00001.json
...
警报
UA00001.json
...
每个用户警报将是一个 json 文件。每个 json 文件有一个用户警报。适用的用户警报将存储在 警报
文件夹。
该版本库将有一个小型的 CI 程序,以确认每个 PR 的 json 文件的有效性。
json 文件本身将包含以下字段。在 Github 存储库 (该 EX0000x.json
文件)。
字段名称 |
类型 |
说明 |
---|---|---|
已筹集日期 |
|
该用户警报发出的日期。 |
受影响固件 |
字符串数组,包含 |
受影响的 ArduPilot 固件。如果 "全部 "不起作用,请使用逗号分隔值指定多个载具。 |
硬件限制 |
电路板名称字符串数组,根据构建系统使用名称。例如 |
如果用户警报只适用于某些板卡,请列出板卡名称。空数组表示所有板都受影响。 |
描述 |
|
用户警报的文字说明。普通用户应能理解。 |
临界状态 |
|
对问题发生可能性的评估。1 = 关键 - 所有载具配置都可能遇到。2 = 关键 - 特定载具配置可能会遇到, 3 = 重大 - 可能会遇到。4 = 轻微 - 不太可能遇到。 |
减缓 |
|
在 ArduPilot 补丁发布之前,用户可采取的防止问题发生的缓解措施的文字描述。普通用户应能理解。 |
修复提交 |
提交 ID 的字符串数组。例如 |
此问题的修复提交 ID(在主分支上)。如果修复提交分布在不同的库中,则可以是多个提交。如果还没有修复,则为空数组。如果此字段不是 |
日期已解决 |
|
解决此用户警报的日期。在这种情况下,"已解决 "意味着已为所有受影响的载具和电路板类型发布了打补丁的 ArduPilot 版本,并且预计不会对本用户警报进行进一步编辑。 |
链接问题 |
|
ArduPilot GitHub 仓库中问题的 URL。可选。 |
链接信息 |
URL 字符串数组 |
有关问题的任何辅助信息(如论坛帖子)的 URL。可选。 |
链接PR |
|
ArduPilot GitHub 代码库中修复 PR 的 URL。如果还没有 PR,则为空白。 |
版本从 |
固件版本字典。例如 |
引入该问题的 ArduPilot 版本(如果已知)。空格假定为所有先前版本。说明必须涵盖 "受影响的固件 "中列出的所有固件。 |
版本固定 |
固件=版本。例如 |
包含修复程序的 ArduPilot 版本。列表必须涵盖 "受影响的固件 "中列出的所有固件。假定从 VersionFrom 到此版本之间的所有版本都受用户警报影响。如果还没有固定版本,则该字段为空。 |
最后修改 |
|
该用户警报被修改的日期和时间(ISO8601 格式)。此字段由 CI 自动添加,无需手动添加。 |
应用程序输入¶
为了方便应用程序的摄取,将生成一个清单文件,列出所有用户警报。然后可以通过 版本从
, 版本固定
, 受影响固件
和 硬件限制
字段,以便与用户的(飞行)控制器相匹配,并显示任何相关的用户警报。
这里有示例清单(用于测试)和实际用户警报清单的 URL:
例如用户警报的 URL: https://firmware.ardupilot.org/useralerts/examplemanifest.json
用户警报的 URL: https://firmware.ardupilot.org/useralerts/manifest.json
此外,还有一个时间戳,记录了清单上载的最后日期和时间。 https://firmware.ardupilot.org/useralerts/lastmodified.txt,采用 ISO8601 格式。