sdlog2
这个应用程序是用来将FMU的飞行数据记录到SD卡中作为日志文件。该日志文件的格式与APM的二进制日志格式兼容,但是’’sdlog2’’ 使用强制消息’’TIME’’ 来写时间戳。
每当 sdlog2
开始记录时, 会在 SD卡的 log
文件夹中创建一个新的目录。 如果设置了选项-t
同时有一个GPS的时间戳可用的话,文件夹的命名是基于当前的日期的(例如, log/2014-01-19
)。否则,文件夹就会被命名为 ‘’sessXXX’’,这里XXX
代表一个序列号。如果可能并且可以使用t
选项的话,文件名的创建与使用当前时间命名的方式相似(例如,log/2014-01-19/19_37_52.bin
) 否则这个文件就命名为 log.XXX.bin
,再次使用序列号。
根据给定的选项开始记录日志,要么当 sdlog2
应用程序启动,要么当系统解锁,或者通过mavlink命令。
开始记录日志
sdlog2 stop
要停止记录则输入:
分析日志文件
FlightPlot
要查看以及分析日志,可以使用GUI工具 FlightPlot 。它可以无需转换地读取 sdlog2
生成的日志文件.。
你也可以使用包含在 中的mavgraph工具来生成绘图。
CSV / Matlab: Converting Logs to CSV
要读取二进制文件并将其转换为CSV,可以使用Python工具sdlog2_dump.py。同样的目录中包含着运行转换器和绘制大量核心信息的MATLAB脚本。
python sdlog2_dump.py log001.px4log -t TIME -m TIME -m IMU -m SENS.BaroAlt,BaroTemp
要创建CSV直接重定向输出到文件:
CSV文件中的列将与参数具有相同的顺序。选项t
显著的减少了输出的重复数据,应该始终被sdlog2
生成的日志记录文件使用。但是不要用在原来的APM日志文件中。
- ATT - 飞行器的姿态
- ATSP - 飞行器的姿态设定值
- IMU - IMU传感器
- SENS - 其他传感器
- LPOS - 本地位置估计
- LPSP - 本地位置设定值
- GPS - GPS位置
- ATTC - 姿态控制 (actuator_0 output)
- STAT - 飞行器的状态
- RC - 遥控输入通道
- OUT0 - Actuator_0 output
- AIRS - 空速
- ARSP - 角速度设定值
- FLOW - 光流
- GPSP - 全球位置设定值
- ESC - 电调状态
- GVSP - 全球速度设定值
消息类型有时是可以改变的。为了找出包含在日志文件中的实际消息列表,可以使用以下的指令:
python sdlog2_dump.py log001.bin -v
或者使用来查看。
负载测试
为了测试microSD的带宽,以200Hz的频率32KB的缓冲区开启该应用程序,键入-e
标志立刻开始记录日志。
#首先停止正在运行的实例
sdlog2 stop
sdlog2 start -t -r 200 -e -b 32
# 运行perf命令以查看sdlog2产生的负载
# (注意:性能计数器仅在日志记录期间存在)
perf
# 或者直接运行top(在Ubuntu用用来查看当前系统资源)
top
# 停止应用程序以清理文件描述符和文件系统
sdlog2 stop