添加新日志信息

数据闪存日志 飞行日志存储在飞行控制器的机载闪存中,可在飞行后下载。飞行日志提供了每次飞行的详细信息,尤其是在以下情况下非常重要 诊断故障原因.

本页介绍如何编写新的数据闪存日志信息。

简单方法

使用 AP::logger().Write(...):

空白 ( 烧焦 *名字,  烧焦 *标签,  烧焦 *ft, ...);
空白 ( 烧焦 *名字,  烧焦 *标签,  烧焦 *单位,  烧焦 *mults,  烧焦 *ft, ...);

使用顶层函数的示例见 Compass_learn.cpp:

美联社::记录仪().("COFS";, "TimeUS,OfsX,OfsY,OfsZ,Var,Yaw,WVar,N";, "QffffffI";,
                                        AP_HAL::微64(),
                                        (双人)best_offsets.x,
                                        (双人)best_offsets.y,
                                        (双人)best_offsets.z,
                                        (双人)最佳错误,
                                        (双人)最佳偏航度,
                                        (双人)最差错误,
                                        样本数);
  • 第一个参数是信息名称。该名称应为 4 个字符或更少,并且是唯一的

  • 第 2 个参数是一个最多包含 16 个字段名的逗号分隔列表;总共限制为 64 个字符

  • 第 3 个参数是格式字符串(最多 16 个字符),每个字母代表相应字段的格式。每个字母的含义如下 此处在 AP_Logger/LogStructure.h 中

  • 其余参数是要记录的实际值。您可能会注意到,在上面的示例中,有些字段的格式是 float ("f") ,但被转换成了 (双) 这是正确的,也是避免编译器警告所必需的。

第 2 个 Log_Write 函数与第 1 个函数相同,只是多了两个字符串参数、 "单位""mults".与 "格式 "参数类似,这些参数中的每个字符都指定了 单位 (即表示学位的 "d")或 乘法器 (例如,"2 "表示 *100,"B "表示 *0.01)。这有助于图形工具在向用户显示输出时正确缩放。

例如,下面是一条 "TEST "日志信息,输出当前系统时间和高度。

美联社::记录仪().("测试";, "TimeUS,Alt";,
                   "sm";, // 单位: 秒钟, 米数
                   "FB";, // : 1e-6, 1e-2
                   "Qf";, // 格式: uint64_t, 浮动
                   AP_HAL::微64(),
                   (双人)厘米高度);
  • 时间以秒("s")为单位,乘数为 "F",表示该值应除以 100 万,格式为 "Q",表示以 64 位无符号整数输出。

  • 海拔高度的单位为米("m"),乘数为 "B",表示该值应除以 100(从厘米转换为米),格式为 "f",因为该值是浮点数。

更难的方式

对于常用报文,尤其是以相对较高的速率(50 赫兹或以上)输出的报文,可以使用效率稍高的记录方法。