跳到主要内容

Blackbox 飞行数据记录器

渲染后的飞行日志帧

简介

此功能会在控制回路的每次迭代中,经由串行端口输出飞行数据。数据可记录到 OpenLog 等外部记录设备、部分飞行控制器配备的板载数据闪存芯片,或板载 SD 卡插槽中。

飞行结束后,可使用交互式日志查看器查看生成的日志:

https://github.com/betaflight/blackbox-log-viewer

也可使用 blackbox_decode 工具将日志转换为 CSV 文件以供分析,或使用 blackbox_render 将飞行日志渲染为视频。这些工具位于以下仓库:

https://github.com/betaflight/blackbox-tools

记录的数据

Blackbox 会在飞行控制回路的每次迭代中记录飞行数据,包括:当前时间(微秒)、各轴的 P、I、D 校正量、应用 Expo 曲线后的 RC 指令杆量、陀螺仪数据、经过已配置低通滤波的加速度计数据、气压计和声纳读数、三轴磁力计读数、原始 VBAT 与电流测量值、RSSI,以及发送给各电调的指令。所有数据均以原始精度存储,不做近似处理或损失精度,因此飞行日志应能识别出相当细微的问题。

只要获得新的 GPS 数据,Blackbox 就会记录该数据。CSV 解码器能够解码 GPS 数据,但视频渲染器目前尚不显示 GPS 信息(后续将会添加)。

支持的配置

飞行日志可记录的最大数据速率较为受限;任何增加负载的因素都可能使飞行日志丢帧并产生错误。

Blackbox 通常用于三轴和四轴飞行器。它同样适用于六轴和八轴飞行器,但后者需要记录更多电机数据,必须向飞行日志传输更多数据,因此丢帧会增加。基于浏览器的日志查看器支持六轴和八轴飞行器,而命令行工具 blackbox_render 目前仅支持三轴和四轴飞行器。

PID 回路频率决定可采集飞行数据的频率。现代 Betaflight 默认以 8 kHz 的 PID 回路运行(每次迭代 125 µs)。Blackbox 不会记录每一次回路迭代,而是以 PID 回路频率的一个分数进行记录。例如,1/4 约为 2 kHz 记录频率,1/8 约为 1 kHz。建议使用 2 kHz 进行细致的调参分析;1 kHz 足以满足一般用途,并可降低存储需求。若通过串行端口进行高频记录,可能需要将记录器波特率提高到 250000 以减少丢帧。详见下文的 Blackbox 配置章节。

设置日志记录

首先必须启用黑匣子功能。在 Betaflight 地面站 的“配置”选项卡中,勾选页面底部的“BLACKBOX”功能,然后点击“保存并重启”。

接下来选择飞行日志的存储设备。可通过串行端口将日志数据传输到 OpenLog 串行数据记录器 等外部记录设备,并写入 microSDHC 卡;也可存储到部分飞控配备的板载数据闪存芯片,或者保存至飞控的板载 SD 卡(SD/microSD)插槽。

OpenLog 串行数据记录器

OpenLog 是一款小型记录设备,通过串行端口连接飞控,并将飞行日志写入 MicroSD 卡。

SparkFun 出厂的 OpenLog 预装标准“OpenLog 3”固件。原版 OpenLog 固件可以用于 Blackbox,但为减少丢帧,应刷写性能更高的 OpenLog Blackbox 固件。OpenLog 固件的专用 Blackbox 版本还会确保 OpenLog 使用兼容 Betaflight 的设置,默认波特率为 115200。

可在 GitHub 上的 Blackbox 固件中找到 OpenLog 的 Blackbox 版固件及安装说明。

microSDHC

microSDHC 卡的选择对系统性能非常重要。OpenLog 需要以极低延迟向卡进行大量小块写入,并非每张卡都擅长此类负载。SD 卡标称速度等级较高,并不保证实际性能更好。

已知性能较差的 microSDHC 卡
  • 通用 4GB Class 4 microSDHC 卡:缺帧率约为 1%,且集中在日志最有价值的片段中。
  • Sandisk Ultra 32GB(不同于容量较小的 16GB 版本,该版本写入延迟较差)
已知性能良好的 microSDHC 卡
  • Transcend 16GB Class 10 UHS-I microSDHC(典型错误率 < 0.1%)
  • Sandisk Extreme 16GB Class 10 UHS-I microSDHC(典型错误率 < 0.1%)
  • Sandisk Ultra 16GB(理论性能仅为 Extreme 的一半,但仍然很好)

建议使用 SD Association 的专用格式化工具格式化所用的卡,这能让 OpenLog 获得最佳的高速写入条件。必须使用 FAT 或 FAT32(推荐)格式化。

为 OpenLog 选择串行端口

首先让 Blackbox 使用串行端口记录,而非板载数据闪存芯片。在 App 的 CLI 选项卡中输入 set blackbox_device=SERIAL,将记录设备切换为串口,然后保存。

还需要在 App 的“Ports”选项卡中告知 Betaflight OpenLog 所连接的串行端口,即 Blackbox 端口。

应使用硬件串行端口,例如 Naze32 上的 UART1 或板中央的双针 Tx/Rx 排针。SoftSerial 端口也可用于 Blackbox,但其最高仅为 19200 波特,必须大幅降低记录速率以作补偿,因此不建议使用 SoftSerial。

使用硬件串行端口时,Blackbox 在该端口上的波特率至少应设为 115200。在以 3.2 kHz 或 8 kHz 回路频率运行的现代硬件上,建议设为 250000 以减少丢帧。

Blackbox 所用串行端口不得与 MSP 以外的功能共用,例如 GPS 或遥测。若 MSP 与 Blackbox 使用同一端口,则飞控未解锁时 MSP 处于活动状态,飞控已解锁时 Blackbox 处于活动状态。这意味着飞控已解锁期间,无法使用 App 或其他依赖 MSP 的功能,例如 OSD 或蓝牙无线配置应用。

将所选串行端口的“TX”引脚连接至 OpenLog 的“RXI”引脚。不要将串行端口的 RX 引脚连接到 OpenLog,否则在飞控未解锁时,OpenLog 会干扰该串口上共享的其他功能。

Naze32 串行端口选择(旧硬件)

旧硬件

Naze32 和 CC3D 均为已弃用的飞行控制器。本节仅适用于这两类飞控,与当前硬件无关。

Naze32 串行端口选择

在 Naze32 上,板顶的 TX/RX 引脚连接至 UART1,并与 USB 接口共用。因此,要通过 USB 使用 App,必须在 UART1 上启用 MSP。若将 Blackbox 接至 Naze32 顶部的引脚,飞控解锁后 App 将停止工作。如果尚未安装会在飞控解锁时使用这些引脚的 OSD,且不使用 FrSky 遥测引脚,这种配置通常是合适的选择。

板侧的 RC3 引脚是 UART2 的 Tx 引脚。若在 UART2 上配置 Blackbox,飞控解锁时 UART1 仍可使用 MSP,因此 App 可与 Blackbox 记录同时工作。注意:在 PARALLEL_PWM 模式下,UART2 使用 RC3 和 RC4 引脚作为 Tx 和 Rx,会使飞控只剩 6 个输入通道。在 Ports 选项卡启用 UART2 时,Betaflight 会自动移动逻辑通道映射;因此,连接到 Naze32 第 3 至第 6 引脚的接收机引脚也必须整体后移两个位置。

OpenLog 可接受 3.3V 至 12V 的供电电压。若使用标准 5V BEC 为 Naze32 供电,可使用空闲电机排针的 +5V 和 GND 引脚为 OpenLog 供电。

其他飞控硬件

Naze32 以外的飞控可能提供更易用的硬件串口;此时请查阅相应文档确定记录器接线方式。关键条件如下:

  • 必须使用硬件串口,而不是 SoftSerial。
  • 除 MSP 外,不能与其他功能(GPS、遥测)共用。
  • 若同一 UART 上使用 MSP,飞控解锁后 MSP 将停止工作。

OpenLog 配置

在插有 microSD 卡的情况下为 OpenLog 上电,等待约 10 秒后断电,再将 microSD 卡插入计算机。卡中应有一个“CONFIG.TXT”文件;用文本编辑器打开它。文件中会显示 OpenLog 的配置波特率(出厂通常为 115200 或 9600)。将其设为与 App“Ports”选项卡中为 Blackbox 设置的速率相同,通常为 115200 或 250000。

保存文件并将卡装回 OpenLog,此后它将使用这些设置。

如果 OpenLog 没有写入 CONFIG.TXT 文件,请创建一个 CONFIG.TXT 文件,写入以下内容并存至 MicroSD 卡根目录:

115200
baud

若使用原版 OpenLog 固件,请改用以下配置:

115200,26,0,0,1,0,1
baud,escape,esc#,mode,verb,echo,ignoreRX

OpenLog 保护

可用黑色电工胶带或热缩管包裹 OpenLog,使其与碳纤维等导电机架绝缘,但这样会无法看到状态 LED。建议改用透明热缩管。

已安装的 OpenLog

板载数据闪存存储

部分飞控配备板载 SPI NOR 数据闪存芯片,可代替 OpenLog 存储飞行日志。

完整版 Naze32 和 CC3D 配有板载“m25p16”2 MB 数据闪存存储芯片。这是一颗带有 8 个粗引脚的小芯片,位于 Naze32 方向箭头的根部。“Acro”版 Naze32 不带此芯片。

SPRacingF3 配备容量更大的 8 MB 板载数据闪存芯片,因此可获得更长的记录时间。

还支持以下芯片:

启用记录到数据闪存

在 App 的 CLI 选项卡中输入 set blackbox_device=SPIFLASH,将记录设备切换为板载数据闪存芯片,然后保存。

板载 SD 卡插槽

部分飞控的电路板配备 SD 或 Micro SD 卡插槽。使用合适的卡可进行非常高速的记录(1 kHz 或更高,即 loop time 为 1000 或更低)。

可使用标准容量(SDSC)或高容量(SDHC)卡,且必须格式化为 FAT16 或 FAT32 文件系统,对应 1 至 32GB 的卡容量范围。不支持扩展容量卡(SDXC)。

首次插入新卡并启动 Betaflight 时,飞控会花数秒扫描磁盘可用空间,并将可用空间汇集为名为“FREESPAC.E”的文件。飞行期间,Betaflight 会从此文件切出块来创建新的日志文件。不得在计算机上编辑此文件,例如在程序中打开后保存修改,否则可能导致该文件碎片化。也不要在卡上运行任何碎片整理工具。

如果需要为非 Blackbox 文件腾出卡上空间,可删除 FREESPAC.E 文件;Betaflight 下次启动时会利用剩余可用空间重新创建该文件。

FREESPAC.E 文件当前最大容量为 4GB。记录满 4GB 日志后,FREESPAC.E 将几乎为空,无法继续记录日志。此时应删除 FREESPAC.E 文件以及卡上保留的日志以释放空间,或直接重新格式化该卡。Betaflight 下次启动时会新建 FREESPAC.E 文件。

启用记录到 SD 卡

在 App 的 CLI 选项卡中输入 set blackbox_device=SDCARD,将记录设备切换为板载 SD 卡,然后保存。

配置 Blackbox

blackbox_sample_rate 设置控制 Blackbox 采样率,定义需要记录的 PID 回路迭代比例。有效值为 1/11/21/41/81/16,默认值为 1/4

对于大多数飞行器,默认的 1/4 是良好的起点。若使用速度较慢的 MicroSD 卡,请将记录速率降低至 1/81/16,以减少 blackbox_decode 报出的损坏日志帧数量。

可在 Betaflight App 的 CLI 选项卡中,使用如下 set 命令更改记录速率:

set blackbox_sample_rate = 1/8

若使用 SoftSerial 记录,几乎一定需要使用 1/16 等较低采样率。即使处于最低记录速率,SoftSerial 的有限波特率仍使其不适用于短 loop time,因此不建议用它记录 Blackbox。

若记录到板载数据闪存芯片而非 OpenLog,请注意存储空间有限。按默认 1/4 记录速率,通常只够记录数分钟飞行。将速率降为 1/8 或最低可用的 1/16 会延长记录时间,但会牺牲日志细节;在 1/16 下可以发现明显问题,但无法识别振动或 PID 调参伪影等细微问题。

使用

飞行器解锁后,Blackbox 会立即开始记录数据;飞行器上锁后停止。

若飞行器装有蜂鸣器,可使用 Betaflight 的解锁提示音使 Blackbox 日志与飞行视频同步。Betaflight 的解锁提示音模式为“一长一短”。第一声长提示音开始的时刻会在飞行数据日志中显示为蓝线,可据此与录制音轨同步。

飞行器上锁后,应等待数秒,让 Blackbox 完成数据保存。

使用 - OpenLog

每次 OpenLog 重新上电时,都会新建一个日志文件。若不重新上电而多次解锁和上锁,即记录多次飞行,这些日志会合并到同一个文件中。命令行工具会要求选择其中要显示或解码的飞行记录。

OpenLog 通电时,请勿插入或拔出 SD 卡。

使用 - 数据闪存芯片

飞行结束后,可使用 Betaflight App 将数据闪存的内容下载到计算机。进入“dataflash”选项卡,点击“save flash to file...”按钮。保存日志可能需要 2 至 3 分钟。

App 中的 Dataflash 选项卡

下载日志后,请点击“erase flash”按钮擦除芯片,以备再次使用。

若数据闪存已满时尝试开始记录新一次飞行,Blackbox 记录将被禁用,不会写入任何数据。

使用 - 板载 SD 卡插槽

必须在飞控上电前插入 SD 卡。虽然可在飞控通电时移除 SD 卡,但必须在上锁后等待 5 秒,以便 Betaflight 完成日志保存,否则文件系统可能损坏。

飞行器每次解锁时,Betaflight 都会在“LOG”目录新建一个日志文件。若使用 Blackbox 记录开关并在整个飞行期间保持暂停,生成的空日志文件会在上锁后删除。

要读取日志,必须取出 SD 卡并插入计算机的读卡器;Betaflight 不支持直接通过 App 读取这些日志。

使用 - 记录开关

若记录到板载闪存芯片,通常应在不需要时禁用 Blackbox 记录以节省存储空间。可在 App 的“Modes”选项卡中,为某个 AUX 通道添加 Blackbox 飞行模式。添加该模式后,Blackbox 仅会在该模式激活时记录飞行数据。

即使记录已暂停,也始终会在飞行器解锁时写入日志头。飞行中可自由暂停和恢复记录。

查看已记录的日志

飞行结束后,会得到一系列扩展名为 .TXT 的飞行日志文件。

可在网页浏览器中使用 Betaflight Blackbox Explorer 交互式查看这些 .TXT 飞行日志文件:

https://github.com/betaflight/blackbox-log-viewer

它允许在日志图形中滚动并细致检查数据,也可导出日志视频与他人分享。

可使用 blackbox_decode 解码日志,生成用于分析的 CSV(逗号分隔值)文件;也可使用 blackbox_render 将日志渲染为一系列 PNG 帧,再用其他软件包转换成视频。

这些工具及其使用说明位于以下仓库:

https://github.com/betaflight/blackbox-tools