Ardupilot系列3-使用 MAVExplorer 进行日志分析

1,135 阅读8分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

记录一下跟着官方文档走的过程。官网文档链接: ardupilot.org/dev/docs/us…

MAVExplorer 是一个日志探索工具。它基于与 mavgraph 相同的概念,但具有交互性,并支持预定义图的社区贡献模型。

在 Linux 上安装 MAVExplorer

您将需要安装最新版本的 pymavlink 和 mavproxy。在 Linux 上这样做:

sudo apt-get install python-matplotlib python-serial python-wxgtk3.0 python-lxml
sudo apt-get install python-scipy python-opencv  python-pip python-pexpect python-tk
sudo pip install --upgrade pymavlink mavproxy

运行后,您的路径中应该有一个新命令“MAVExplorer.py”。

在 Windows 上安装 MAVExplorer

要在 Windows 上安装 MAVExplorer,请在此处下载预构建的 MAVProxy 包: firmware.ardupilot.org/Tools/MAVPr…

该软件包包括 MAVProxy 和 MAVExplorer。 然后创建一个链接

c:\Program Files (x86)\MAVProxy\MAVExplorer.exe

到您的桌面上。然后,您可以通过将日志文件拖到 MAVExplorer 快捷方式上来启动 MAVExplorer。

在 MacOS 上安装 MAVExplorer

要在 MacOS 上安装 MAVExplorer,您需要安装“pip”。如果您没有 pip,请使用:

sudo easy_install pip

然后像这样安装mavproxy(包含MAVExplorer):

pip install mavproxy --user

然后将 HOME/Library/Python/2.7/bin 添加到您的 $PATH 中,如下所示:

echo 'export PATH=$PATH:$HOME/Library/Python/2.7/bin' >> $HOME/.bash_profile

启动 MAVExplorer

要启动 MAVExplorer,只需使用文件名作为参数运行它。它也将在没有文件名的情况下启动,稍后通过 MAVExplorer 菜单的“打开”项加载日志文件:

MAVExplorer.py ~/Desktop/ardupilot/00000013.bin

它支持 MAVLink 遥测日志或 DataFlash 日志。启动后,您将看到两个窗口,如下所示:

image.png

底部窗口是“控制台”,有您的菜单和状态消息。顶部窗口是您的终端,并有“MAV>”提示输入命令。键入“帮助”的结果会列出命令。

注意日志文件名中的空格。如果需要,请在文件名周围使用引号。

使用预定义的图表

MAVExplorer 带有一组广泛的预定义图表。这些图表出现在控制台的图表菜单中。只有与您正在查看的日志相关的图表才会出现在菜单中。 要显示图表,只需在“Graphs”菜单中选择它。如果需要,您可以一次显示多个图表。

image.png

手动绘图

您还可以在 MAV> 提示符下使用终端中的图形命令绘制日志中的任何数据。只需键入 graph 后跟表达式。例如:

graph ATT.Roll ATT.Pitch

为了帮助您快速创建图表,您可以使用 TAB 键来完成和列出可用的消息和字段。例如,如果您这样做: graph<TAB><TAB>

image.png

已列出可能的消息名称列表。如果您键入所需的消息名称的一部分,则可以使用 <TAB>来完成名称。

在消息名称之后,您需要键入一个“.”,后跟一个字段名称。再次,您可以 TAB 完成,例如:

image.png

您可以对一个图表中的多个字段执行此操作,从而可以快速构建复杂的图表。 一些消息具有实例字段,用于存储多个传感器实例的数据,例如RFND 日志消息。在这种情况下,必须在绘制图形时指定实例编号,否则所有实例的值将组合在一个图形中。

graph RFND[0].Dist

修改预定义图表

每当您使用预定义的图形时,图形表达式都会添加到您的命令行历史记录中。因此,您只需按 Enter 刷新历史记录,然后按向上箭头即可调出您刚刚显示的预定义图形的图形表达式。然后,您可以添加新字段或编辑现有字段并按 Enter 以显示新图表。

您还可以使用“Display”菜单下的“Save Graph”菜单项保存刚刚显示的任何图形:

image.png 您可以编辑图表的名称和描述,然后按“Save”,您的图表将添加到您的预定义图表集中。您还可以使用“Test”按钮在保存之前测试图表。

请注意,图形名称中的 / 分隔符控制图形在图形菜单树中的显示方式。例如,如果您保存名称为“Copter/Analysis/WPNav Analysis”的图形,则“WPNav Analysis”菜单项将添加到 Copter->Analysis 子菜单,并根据需要自动创建子菜单。 另请注意,每个图形表达式都应单独位于一条线上。如果表达式有多行,那么它们将被视为替代表达式(以应对不同类型的日志)。

图形表达式

图形表达式是任意的 Python 表达式。您可以使用 python 数学库中的任何函数,以及 pymavlink 中的 mavextra 模块或您自己的 mavextra 模块中的任何函数。 这使您可以轻松地绘制组合日志中任何变量的数学表达式。例如:

graph sqrt(MAG.MagX**2+MAG.MagY**2+MAG.MagZ**2)

这将绘制总磁场强度(罗盘矢量的长度)。 另一个非常有用的表达是对数据的低通滤波器:

graph IMU[0].AccX lowpass(IMU[0].AccX,0,.99)

语法是 lowpass(variable to filter,tag,alpha) 其中“tag”是任意参考数,“alpha”是当前滤波器输出的权重,1-alpha 是当前变量值的权重这个样本,这些是求和以提供下一个滤波器输出样本。

image.png

左右刻度

默认情况下,图形值显示在左侧轴刻度上,全部缩放在一起。要在右侧刻度上平面字段,只需在字段名称末尾使用“:2”。例如: graph BARO.Alt:2

image.png

按飞行模式选择

根据飞行模式仅选择飞行的一部分通常很有用。为此,请使用 FlightMode 菜单: FlightMode 菜单将显示您的飞行中的所有飞行模式更改,以及在该模式下的秒数。您可以通过选择适当的航班菜单项来选择要在后续图表中包含航班的哪些部分。如果没有选择,则绘制整个日志。

添加条件

您可以根据以可用日志变量的 Python 表达式表示的条件来限制图形。例如,如果您只想在 DataFlash 日志中绘制 GPS 速度高于 4 米/秒的位置,您可以这样做:

condition GPS.Spd>4

清除条件将其设置为空字符串

condition ''

显示地图

您可以使用 map 命令显示一张显示您的飞行路径的地图: map 或从显示菜单中选择 MAP 菜单项。 根据当前情况会弹出一个地图,如下所示:

image.png 您可以使用鼠标和滚轮或 + 和 - 键放大和缩小。您可以使用两次左键单击来测量距离。颜色用于指示飞行模式。 您可以选择提供用于地图的消息类型。可以使用具有纬度和经度元素的任何消息类型。例如,要在 ArduPilot 日志文件中显示 GPS 和 POS 消息中的地图,您可以执行以下操作:

map GPS POS

多条轨道将按顺序显示为较暗的颜色。

图形定义 XML 文件

您可能会发现为常用图形添加自己的预定义图形定义很有用。这些预定义的图表是在 XML 文件中创建的,并且可以与 MAVExplorer 的其他用户共享。 创建这些图表的最快方法是使用“Save Graph”功能,但您也可以使用您喜欢的文本编辑器手动创建 XML 文件。 您可以在此处查看 XML 格式的示例: raw.githubusercontent.com/ArduPilot/M…

创建 XML 图形文件 MAVExplorer 在 3 个位置查找 XML 文件以从以下位置获取图形定义:

  • 在当前目录中查找名为“mavgraphs.xml”的文件
  • 在您的主目录中,它会在您的 $HOME/.mavproxy/ 目录中查找任何 XML 文件(注意 mavproxy 前面的“.”)。
  • 在 MAVExplorer 包中包含一个 mavgraphs.xml 文件(它是上面链接的那个)

对于您自己的图表,您可以使用一个名为 $HOME/.mavproxy/mygraphs.xml 的文件并将其放入其中以开始:

<graphs>
 <graph name='Test/Test Graph'>
 <description>My Test Roll</description>
 <expression>degrees(ATTITUDE.roll)</expression>
 <expression>ATT.Roll</expression>
 </graph>
</graphs>

XML 文件的几个关键特性是:

  • 您可以在单个 XML 文件中拥有任意数量的图形
  • 每个图都有一个唯一的名称
  • 名称中的“/”分隔符确定图表在菜单结构中的显示位置
  • 每个图表都应该有文字说明
  • 每个图可以有多个表达式。适用于当前日志的第一个表达式用于生成图形。 因为一个图有多个表达式,您可以创建一个适用于遥测日志和数据闪存日志的图定义,并且适用于直升机、飞机和流动站。随着 ArduPilot 的发展,它还允许我们添加新的表达式来应对不断变化的字段名称。

重新加载图表

编辑 XML 文件以添加图形时,您无需退出并重新启动 MAVExplorer 即可试用新图形。只需运行“reload”命令或使用“Reload Graphs”菜单项,您的新图表就会被加载到菜单中。

贡献图

MAVExplorer 中 XML 文件的主要原因之一是允许社区成员贡献对日志分析有用的新图表。如果您创建了一组有用的图表,请通过电子邮件将它们发送到 andrew-mavexplorer@tridgell.net 或针对 MAVProxy git 存储库打开拉取请求。

对于带有图表的拉取请求,请将图表添加到 MAVProxy/tools/graphs 目录

有用的命令

- param <regular expression> :显示来自日志的参数,例如。显示 TECS 参数:“param TECS_*”或“param”显示所有

  • paramchange <regular expression>:在整个日志中显示参数的变化
  • messages:显示 GCS 消息
  • dump <log message>:转储该日志消息的所有实例,例如。 “dump IMU”