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命令。

开始记录日志

  1. sdlog2 stop

要停止记录则输入:

分析日志文件

FlightPlot

要查看以及分析日志,可以使用GUI工具 FlightPlot 。它可以无需转换地读取 sdlog2生成的日志文件.。

你也可以使用包含在 中的mavgraph工具来生成绘图。

CSV / Matlab: Converting Logs to CSV

要读取二进制文件并将其转换为CSV,可以使用Python工具sdlog2_dump.py。同样的目录中包含着运行转换器和绘制大量核心信息的MATLAB脚本。

  1. 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 - 全球速度设定值

消息类型有时是可以改变的。为了找出包含在日志文件中的实际消息列表,可以使用以下的指令:

  1. python sdlog2_dump.py log001.bin -v

或者使用来查看。

负载测试

为了测试microSD的带宽,以200Hz的频率32KB的缓冲区开启该应用程序,键入-e标志立刻开始记录日志。

  1. #首先停止正在运行的实例
  2. sdlog2 stop
  3. sdlog2 start -t -r 200 -e -b 32
  4. # 运行perf命令以查看sdlog2产生的负载
  5. # (注意:性能计数器仅在日志记录期间存在)
  6. perf
  7. # 或者直接运行top(在Ubuntu用用来查看当前系统资源)
  8. top
  9. # 停止应用程序以清理文件描述符和文件系统
  10. sdlog2 stop