# 记录

日志记录器可记录包含所有字段的任何 ORB 主题。所有必要的信息都由 .msg 文件,因此只需指定主题名称。可选的时间间隔参数可指定某个主题的最大记录速率。主题的所有现有实例都会被记录。

输出日志格式为 ULog.

# 使用方法

默认情况下,日志记录在上膛时自动启动,在撤膛时自动停止。每次上膛都会在 SD 卡上创建一个新的日志文件。要显示当前状态,请使用 记录仪状态 在控制台上。如果要立即开始记录日志,请使用 记录仪开启.这将覆盖上膛状态,如同系统已上膛。 记录仪关闭 可以撤销。

使用

记录仪帮助

查看所有支持的记录仪命令和参数列表。

# 配置

默认情况下,日志系统被配置为收集合理的日志,以便与 飞行回顾 (打开新窗口).

还可以使用 标清记录 参数。您最有可能更改的参数如下。

参数 说明
SDLOG_MODE 记录模式定义记录开始和停止的时间。
- 0:上膛时记录,直至撤膛(默认)。
- 1:从启动到解除的日志。
- 2日志:从启动到关闭的日志。
SDLOG_PROFILE 记录配置文件。使用此配置可启用不常用的记录/分析(如 EKF2 重放、PID & 的高速率记录、滤波器调整参数、热温度校准)。
SDLOG_MISSION 创建很小的附加 "任务日志"。
该日志可以 飞行回顾但是,当您需要少量日志来进行地理标记或符合法规要求时,它还是很有用的。

备注

开发人员 可以通过 记录仪 模块(例如,如果您想记录自己的主题,可以使用该模块)。更多信息,请参阅 记录.

# SD 卡配置

另外,还可以通过 SD 卡上的文件自定义已记录主题列表。创建文件 etc/logging/logger_topics.txt 卡上的主题列表(对于 SITL,它是 build/px4_sitl_default/tmp/rootfs/fs/microsd/etc/logging/logger_topics.txt):

<topic_name> <interval> <instance>;

间隔>; 是可选项,如果指定,则定义此主题两条记录信息之间的最小间隔(毫秒)。如果未指定,则以全速记录主题。

实例>; 是可选项,如果指定,则定义要记录的实例。如果未指定,则会记录主题的所有实例。要指定 实例>;, 间隔>; 必须指定。可以设置为 0 以全速记录

该文件中的主题将取代所有默认的日志主题。

例子 :

传感器_accel 0 0 传感器_accel 100 1 传感器_gyro 200 传感器_mag 200 1

此配置将以全速记录 sensor_accel 0,以 10Hz 记录 sensor_accel 1,以 5Hz 记录所有 sensor_gyro 实例,以 5Hz 记录 sensor_mag 1。

# 脚本

有几个脚本可以分析和转换日志文件,在 pyulog (打开新窗口) 存放处。

# 辍学

记录中断是不可取的,有几个因素会影响中断的数量:

  • 我们测试的大多数 SD 卡每分钟都会出现多次暂停。这表现为在写入命令过程中出现几百毫秒的延迟。如果写入缓冲区在此期间填满,就会导致掉线。这种影响取决于 SD 卡(见下文)。
  • 格式化 SD 卡有助于防止掉线。
  • 增加日志缓冲区会有帮助。
  • 降低选定主题的记录率,或删除不需要记录的主题 (info.py <文件>; 在这方面很有用)。

# SD 卡

以下是不同 SD 卡的性能结果。测试是在 Pixracer 上进行的,结果同样适用于 Pixhawk。

备注

NuttX 支持的 SD 卡最大容量为 32GB(SD 存储卡规格 2.0 版)。

SD 卡 平均顺序写入速度 [KB/s] 最大写入时间/块(平均)[毫秒]
闪迪至尊 U3 32GB 461 15
闪迪至尊高速 10 类 8GB 348 40
闪迪 4 类 8GB 212 60
闪迪 10 类 32 GB(高耐用视频监控卡) 331 220
雷克沙 U1(10 级),16GB 高性能 209 150
闪迪至尊 PLUS Class 10 16GB 196 500
闪迪 Pixtor Class 10 16GB 334 250
闪迪至尊 PLUS Class 10 32GB 332 150

比平均写入速度更重要的是每个数据块的最大写入时间(4 KB)。这定义了最小缓冲区大小:最大值越大,日志缓冲区就越大,以避免出现掉线现象。默认主题的日志带宽约为 50 KB/s,所有 SD 卡都能满足这一要求。

到目前为止,我们所知道的最好的卡是 闪迪至尊 U3 32GB.推荐使用这种卡,因为它不会出现写入时间峰值(因此几乎不会掉线)。不同尺寸的存储卡可能效果相同,但性能通常不同。

您可以使用 sd_bench -r 50并将结果报告给 https://github.com/PX4/PX4-Autopilot/issues/4634。

# 日志流

传统的日志记录方式是在 FMU 上使用 SD 卡,这种方式目前仍完全支持。不过,还有一种替代方法,即日志流,可通过 MAVLink 发送相同的日志数据。例如,在 FMU 没有 SD 卡插槽的情况下(如 Intel® Aero Ready to Fly Drone),或者只是为了避免使用 SD 卡,就可以使用这种方法。两种方法可同时独立使用。

要求链接至少提供 ~50KB/s 的速度,例如 WiFi 链接。而且同一时间只能有一个客户端请求日志流。连接不需要很可靠,该协议可以处理掉线问题。

有不同的客户端支持 ulog 流媒体:

# 诊断

  • 如果日志流没有启动,请确保 记录仪 运行(见上文),并检查启动时的控制台输出。
  • 如果还是不行,请确保使用 MAVLink 2。通过设置 MAV_PROTO_VER 至 2.
  • 日志流最多使用所配置 MAVLink 速率的 70% (-r 参数)。如果需要更多,则会删除信息。使用 mavlink 状态 (本例中使用的是 1.8%):
    instance #0: GCS heartbeat: 160955 us ago mavlink chan:#0 type:GENERIC LINK OR RADIO flow control:OFF rates: tx: 95.781 kB/s txerr: 0.000 kB/s rx:0.021 kB/s rate mult: 1.000 ULog rate:1.8% of max 70.0% accepting commands:是 MAVLink 版本:2 传输协议:UDP (14556)
    
    还要确保 txerr 如果上升,要么是 NuttX 发送缓冲区太小,要么是物理链路饱和,要么是硬件处理数据的速度太慢。