简介
回放功能是用来处理dataflash日志文件的一套程序,并通过最近的主代码展示一系列基于真实数据的模拟结果。它可以用来重现产生bug的准确情形,或在同样的条件下测试改变EKF参数的影响。回放功能仅仅运行于Liunx/Ubuntu平台,且仅适用来自于高速CPU诸如PX4/Pixhawk运行2014年5月之后的ArduCopter/ArduPlane/ArduRover(例如AC3.2-dev或更高版本)所产生的dataflash日志文件。
回放功能所需要的Dataflash日志信息
为了能够使用回放功能,下面的dataflash信息必须被启用:
AHRS2, BARO, EKF1, EKF2, EKF3, EKF4, GPS, IMU, IMU2, MAG, MAG2
编译回放模块
在你的Liunx上或Ubuntu虚拟机上:
cd ../ardupilot/Tools/Replay
make linux
上述操作将会生成一个/tmp/Replay.build/Replay.elf
文件
使用回放功能
首先,将你需要分析的dataflash日志文件放入../ardupilot/Tools/Replay
目录。
显示回放帮助:
/tmp/Replay.build/Replay.elf -- -h
通过Replay运行日志,生成图片和EKF数据文件:
/tmp/Replay.build/Replay.elf -- -r400 MyLogFile.BIN
注意:参数-r400
是针对ArduCopter的主循环运行频率,对于ArduPlane和Rover自动忽略或替换为-r50
上述操作将会产生六个输出文件:plot.dat, plot2.dat, EKF1.dat, EKF2.dat, EKF3.dat, EKF4.dat
查看原始文件用来了解哪些有用的数值需要被绘制:
less plot.dat //可以用其它六个文件的任何一个文件来代替 plot.dat
可以使用相对简单的plotit.sh脚本来绘制数据。下面命令用来比较由EKF计算的高度与较早的使用惯性导航计算的高度和实际飞行高度。
也可以使用更复杂的mavgraph.py来绘制数据:
mavgraph.py MyLogFile.BIN EKF1.PN NTUN.PosX*0.01
这个例子用来将EKF估算的相对家的南北位置与较早的惯性导航估算的位置做比较。结果请看本页的第一张图片。
链接
(over)