binary_logger 模块文档¶
所属工具箱:Miscellaneous Utility Blocks

简介¶
一句话描述:面向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)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 继承 |
| 代码生成支持 | 是 |
数据通信协议¶
本模块不涉及网络通信。
相关模块¶
| 模块名 | 说明 |
|---|---|
quad_rotor_px4_sitl |
实现四旋翼无人机PX4固件的SITL仿真,为飞行日志提供数据源 |
read_binary_log |
读取binary_logger模块生成的二进制日志文件,用于后处理分析 |
px4_uorb_publisher |
将Simulink仿真数据发布为PX4 uORB主题,可配合日志模块记录 |
px4_uorb_subscriber |
订阅PX4 uORB主题数据,可输出给本模块进行日志记录 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
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卡的二进制日志文件