# 使用 PlotJuggler 进行对数分析

情节魔术师 (打开新窗口) 可用于分析 ULog,以达到深入开发的目的。它非常有用,因为每个 uORB 主题都可以显示/绘制图表,还可以使用自定义函数修改数据(例如从四元数值到滚动/俯仰/偏航)。

# 安装

您可以找到 Plot Juggler 的最新版本 这里 (打开新窗口).

# 关于 Windows 分发的说明

最新版本的 PlotJuggler for Windows 可能无法运行。在这种情况下,请退回到 这里是 v2.8.4 (打开新窗口) (众所周知,这种方法适用于 Windows)。

# 关于 Linux 发行版 AppImage 的说明

如果下载的 AppImage 无法打开,可能需要更改其访问设置。这可以在终端中使用以下命令完成:

chmod 777 <;Path-To-PlotJuggler-AppImage>;

# 一般用法

两个最常见的任务是搜索记录的 uORB 主题,以及将特定主题中的字段拖放到图表视图中。如下图所示。

情节戏法基本用法

# 横向/纵向分割:多面板

最强大的功能之一是将屏幕分成水平/垂直两个方向,同时显示不同的图表(在顶部显示同步时间条,在底部移动时间光标)。

下面的动画演示了这一点:

Plot Juggler 多面板演示

在这个例子中 载具本地位置 主题的 斧头, 可以盎司 (加速度估计值)成分的图表,首先将屏幕分成 3 个部分。然后 vz (速度估计)组件,最后在右窗格中添加了 电池状态 主题的 current_a (电池电流)的图表显示在中下部窗格中。

虽然开始时并不明显,但您可以观察到,只要载具开始移动(电池电流值变大),加速度和速度值也会开始移动。这是因为所有数据都是以时间序列显示的,每个值都显示在特定的时间戳上。

这有助于全面了解发生了什么及其原因。只看一个图表通常很难排除故障,但通过显示多个图表,就能更容易地弄清系统中发生了什么。

# 显示二维数据

另一个强大的功能是在 XY 平面上以散点图的方式显示二维数据(X、Y 轴上的每个数据)。方法是按住 Ctrl 键,同时逐个选择(例如 载具本地位置 主题的 xy 组件),并拖拽&amp;使用 鼠标右光标 按下。

Plot Juggler 2D 绘图仪

在此示例中,在本地坐标系中估算的载具位置被绘制到一个 XY 平面上,该平面显示了估算位置的二维视图,而 vxvy 速度估计值)在右侧作图,而 vz (垂直速度估计值)下方的图表,以分割视图显示。

这反过来又直观地显示了载具位置和速度之间的关系。例如,请注意当载具沿 X 轴方向移动时,速度与位置之间的关系。 vx 值升高,当载具转向 Y 轴方向时,"咔 "的一声,"咔 "的一声,"咔 "的一声。 vy 价值也开始发生变化。

# 使用 "播放 "按钮

这里 游戏 按钮用于实时播放记录的数据(速度因子可在右下角进行调整)。这将详细显示上述位置/速度关系。

剧情杂耍 2D 深度分析

备注

下载上面使用的 ULog 和 Layout 文件,自己尝试分析船只测试日志!

# 布局模板

PX4 开发人员共享了许多 PlotJuggler 布局文件。每个文件都可用于特定用途(多旋翼飞行器调整、VTOL 调整、艇调试等):

# 高级使用

# 使用 LUA 脚本创建自定义时间序列

Plot Juggler 支持使用 LUA 脚本处理和显示数据。这是一项功能强大的功能,可以进行曲线积分、对两条曲线求平均值、消除偏移等操作。

# 通过四元数计算滚动/俯仰/偏航

使用 Lua 脚本将四元数转换为滚轴

要了解载具的姿态,PX4 会将估计的姿态四元数记录在 载具姿态 主题的浮点数值数组(q[4])。由于这些值不提供上下文信息(例如 滚动),需要进行三角函数变换。

  1. 搜索 载具姿态 左侧时间序列列表面板中的主题
  2. 选择 4 个四元数 (Q.00、Q.01、Q.02、Q.03点击 q.00 然后按住 Shift + 单击 q.03.它们都应被选中
  3. 单击左下方 "自定义系列 "部分的 "+"符号创建新系列
  4. 再次选择 4 个四元数成员,并将它们拖到左上角的 "输入时间序列 + 附加源时间序列 "选项卡上
  5. 双击 四滚动 函数库中的现在您应该可以在上半部分绘制
  6. 为地块指定名称(例如 滚动在右上角的文本框中输入
  7. 点击 "创建新时间序列"。现在您应该已经在 "自定义系列 "中创建了情节

这里是自定义系列 卷轴 将与其他时间序列一起显示,包括右侧四元数的原始形式,这不是人类可以读取的(使用 PlotJuggler 3.5.0):

绘制四元数卷

四滚动 函数是这样的

w = 值 x = v1 y = v2 z = v3 dcm21 = 2 * (w * x + y * z)
dcm22 = w*w - x*x - y*y + z*轧辊 = 算术.(dcm21, dcm22)

返回 滚动