Pixhawk---sdlog2应用具体解释

sdlog2 app

  该应用的用途是记录飞控飞行日志到SD卡中,日志文件格式与APM二进制文件兼容,可是sdlog2使用强制性的消息时间写时间戳。

使用方式

  每次sdlog2应用開始记录日志的时候。它会在SD卡日志目录log中创建一个新的目录。假设-t參数选项被设置了。并且GPS时间戳是可获得的,目录的名称就是基于当前日期。如log/2015-07-24,否则的话就是被命名为sessXXX(XXX代表一个序列号)。

目录中的文件命名也大同小异,假设-t选项已设置,文件名称为log/2015-07-24/11_43_52.bin,否则的话就被命名为log.XXX.bin(XXX也为序列号)。

  不管sdlog2应用是否已经启动了、系统已经被配置好了,还是mavlink命令。日志的记录都取决于sdlog2应用所设置的选项。选项说明例如以下:

usage: sdlog2 {start|stop|status|on|off} [-r <log rate>] [-b <buffer size>] -e -a -t -x
    -r      Log rate in Hz, 0 means unlimited rate
    -b      Log buffer size in KiB, default is 8
    -e      Enable logging by default (if not, can be started by command)
    -a      Log only when armed (can be still overriden by command)
    -t      Use date/time for naming log directories and files
    -x      Extended logging

这里写图片描写叙述日志记录的性能取决于所使用的SD的读写速度。使用较好的SD卡能够有效的避免跳过写入/读取数据。当sdlog2应用在全速率的时候(即没有-r选项)。可能会导致CPU负荷,但对飞行没有负面影响。

可是假设没有满足全速率要求,则可能会记录会跳过信息。

日志记录开启

  在正常情况下,随着飞控的配置好,日志记录就启动了。且仅仅有激活飞行的数据才是所须要的数据。要启动手动日志记录。在控制台上执行以下的命令:

sdlog2 stop
sdlog2 start -t -r 200 -e -b 16

  停止记录:

sdlog2 stop

分析日志

FlightPlot工具(—推荐使用)
Fields List

这里写图片描写叙述

FlightPlot Analysis

这里写图片描写叙述
  查看和分析日志。能够使用__FlightPlot__GUI工具(提供了可执行的jar包),下载下来并安装好Java后双击就能够执行了。无需转换日志文件,就能够读取由sdlog2应用产生的二进制日志文件。并通过图形方式显示。详细的使用方法见链接。

  FlightPlot支持的日志文件:

  • PX4 autopilot log(.bin generated by sdlog2)
  • APM binary logs (.bin files stored on SD card) (added in v.0.2.6)
  • 支持mavlink日志
Pymavlink工具

  还能够使用包括在Pymavlink软件中的mavgraph工具来绘制日志图像。Pymavlink提供了很多命令行和可视化的工具用于分析数据和制图。它支持mavlink日志(APM或PX4的均可)。

Matlab(转换logs成CVS)工具

  读取二进制文件。并将其转换成CVS文件,能够使用Python或者Matlab脚本文件来实现。分析数据是通过选用不同的參数选项来查看的,详细的使用方法就不介绍了(都是命令式的。有点麻烦)。

logconv.m:自己主动转换日志文件,并图形显示飞行的数据。
sdlog2_dump.py:Python脚本,将二进制形式的日志文件转换成CVS格式的文件。

可能遇到的故障

  为避免在IO带重负载的关键应用中。在侦听消息和写日志到SD卡上有一个缓冲区。假设在某些时候这个缓冲区溢出了。那么一些日志记录就会被跳过了。

跳过的记录数据能够通过控制台使用sdlog2应用检測出来。这个也会在关闭日志文件的时候打印出来。只是需加-a选项。由上可知,假设跳过的记录不为零,那么就须要添加这个缓冲区的大小了,以下的命令就是将默认的8KB缓冲区改为16KB:

sdlog2 start -t -r 100 -e -b 16

负载測试

  測试SD的传输速率,启动sdlog2应用应配置成记录日志速率为200Hz。32KB的缓冲区,并加上-e选项:

首先停止应用:
sdlog2 stop
sdlog2 start -t -r 200 -e -b 32
执行perf命令查看诱导sdlog2负荷:
(NOTE: 性能计数器仅仅在记录时存在)
perf
或者执行执行top命令:
top
停止应用,清理文件系统:
sdlog2 stop
posted on 2017-07-30 15:36  ljbguanli  阅读(578)  评论(0编辑  收藏  举报