跳转至

binary_logger 模块文档

所属工具箱:Miscellaneous Utility Blocks

binary_logger 模块外观

简介

一句话描述:面向PX4飞控开发,将double类型输入数据向量以二进制格式记录到PX4硬件SD卡存储的工具模块。

该模块属于RflySim工具链中PX4飞控定制开发的辅助工具模块,用于在基于Simulink开发PX4飞控自定义算法时,完成飞行过程中各类算法数据、传感器数据、控制量的离线记录。生成的代码可直接部署到PX4飞控硬件,数据将按照指定配置存储在SD卡中,方便后续离线数据分析与算法调参。

该模块支持内存缓存配置,可平衡SD卡访问频率与内存占用,支持多信号打包为向量批量记录,生成的二进制日志包含标准格式头部,便于后续工具解析读取,是PX4飞控基于Simulink开发过程中数据记录的常用工具。

端口说明

输入端口(Inputs)

端口名 数据类型 维度 说明
en double 标量(1×1) 使能信号,仅当启用Cache in Memory时生效:en为高电平时打开文件并记录数据,en变为低电平时将缓存数据写入SD卡并关闭文件
data single 1×N 待记录的输入信号向量,所有输入信号必须为单精度浮点数类型,支持拼接多个信号进行批量记录

输出端口(Outputs)

本模块无输出端口。

参数配置(Parameters)

双击模块打开的 Mask 对话框中可配置以下参数:

参数名 类型 默认值 可选值/范围 说明
Directory Path string /fs/microsd/log - 日志文件存储目录路径,必须指向SD卡的/fs/microsd/目录下的子路径
Cache in Memory boolean enabled enabled/disabled 是否启用内存缓存功能
Max Record Count int 10000 >0 内存缓存允许存储的最大记录条数
Output ULG Format boolean disabled enabled/disabled 是否输出ULG格式日志文件,默认输出自定义二进制格式日志

参数设置说明

Directory Path

该参数指定日志文件的存储路径,必须配置为SD卡路径/fs/microsd/下的有效子目录,例如/fs/microsd/log/mw,否则PX4硬件无法正常访问存储位置。

Cache in Memory

启用该选项后,数据会先缓存到内存中,当en信号变为低电平或缓存数据量达到Max Record Count时,才会一次性写入SD卡,可以减少SD卡访问次数,降低IO负载。不启用该选项时,数据会直接逐帧写入SD卡,无需占用额外内存,但会增加存储设备的访问频率。

Max Record Count

仅当Cache in Memory启用后该参数生效,用于限制缓存的最大记录条数,避免内存占用过高导致程序异常。当缓存的记录数达到该值后,模块会自动将缓存数据刷新写入SD卡。

模块特性(Block Characteristics)

特性项
支持的数据类型 doublesingle
直接馈通(Direct Feedthrough)
采样时间 继承
代码生成支持

数据通信协议

本模块不涉及网络通信。

相关模块

模块名 说明
quad_rotor_px4_sitl 实现四旋翼无人机PX4固件的SITL仿真,为飞行日志提供数据源
read_binary_log 读取binary_logger模块生成的二进制日志文件,用于后处理分析
px4_uorb_publisher 将Simulink仿真数据发布为PX4 uORB主题,可配合日志模块记录
px4_uorb_subscriber 订阅PX4 uORB主题数据,可输出给本模块进行日志记录

使用示例

相关使用示例请参考以下路径:

[RflySim安装路径]/RflySimAPIs/5.RflySimFlyCtrl/0.ApiExps/5.Log-Write-Read/Readme.pdf

请在上述路径中查看 Readme.pdf 获取完整的示例说明与操作步骤。

注意事项与常见问题

  • 初始化顺序:该模块仅适用于PX4飞控硬件部署场景,必须配合PX4环境下的SD卡驱动完成初始化,确保飞控启动时SD卡已经挂载完成后再启动日志记录流程,否则会出现文件打开失败问题。
  • 存储路径要求Directory Path参数必须指向SD卡挂载目录/fs/microsd/下的子路径,请勿直接填写根目录或飞控内部Flash存储路径,否则会无法创建日志文件或损坏飞控系统存储。
  • en信号操作规则:若启用Cache in Memory选项,必须保证仿真/飞行结束前en输入从高电平切换为低电平,触发日志文件关闭流程;若en始终保持高电平,日志文件会保持打开状态,无法被后续读取工具识别解析。
  • 输入数据类型要求data端口输入的所有信号必须为单精度浮点数(single)类型,且必须打包为同维度向量输入,不支持混合数据类型的多信号记录,否则会生成格式错误的日志文件。
  • 缓存参数设置:启用Cache in Memory选项后,Max Record Count参数决定了缓存占用的内存大小,请勿设置过大数值,否则会导致PX4飞控内存溢出,引发飞控死机重启。
  • 采样时间匹配:模块的采样时间需要和输入数据的更新速率保持一致,若设置的采样时间远小于数据更新速率,会记录大量重复数据,浪费SD卡存储空间;若采样时间远大于数据更新速率,会丢失数据帧。
  • 直写模式使用提示:未启用Cache in Memory时,模块会每次调度都直接写入SD卡,会增加SD卡访问频率,可能会影响飞控控制回路的实时性,仅在低频率记录场景下使用,高频率记录建议启用缓存模式。

更新日志

  • v4.10 (2024-08-13): 初始发布binary_logger数据记录模块,支持将double数据向量缓存或直接写入PX4飞控SD卡的二进制日志文件