PX4/MavLink 日志记录#
感谢 Chris Lovett 开发了本页提及的各种 PX4/MavLink 日志记录工具!
记录 MavLink 消息#
如果您在 settings.json
文件的 PX4 部分添加以下内容,AirSim 可以捕获 MavLink 日志文件
{
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"Vehicles": {
"PX4": {
...,
"Logs": "c:/temp/mavlink"
}
}
}
AirSim 将为此文件夹中的每个“布防/解除布防”飞行会话创建一个带时间戳的日志文件。
然后您将在 d:\temp\logs 中看到按日期组织的日志文件,特别是 *input.mavlink 和 *output.mavlink 文件。
MavLink 日志查看器#
对于支持 MavLink 的无人机,您还可以使用我们的 日志查看器 来可视化数据流。如果您启用这种实时日志记录形式,则不应使用上面的“日志”设置,这两种日志记录形式是互斥的。
SITL 模式下的 PX4 日志#
在 SITL 模式下,当无人机布防时会生成日志文件。SITL 终端将包含日志文件的路径,它应该看起来像这样
INFO [logger] Opened log file: rootfs/fs/microsd/log/2017-03-27/20_02_49.ulg
HITL 模式下的 PX4 日志#
如果您在 HIL 模式下使用 Pixhawk 硬件,请使用 QGroundControl 设置参数 SYS_LOGGER=1
。PX4 会将日志文件写入设备,您以后可以使用 QGroundControl 下载。
调试一次糟糕的飞行#
您可以使用这些 *.mavlink 日志文件通过 LogViewer 调试一次糟糕的飞行。例如,如果您在电源不足的计算机上运行 AirSim/PX4 飞行,它可能会出现故障。以下显示了在这种情况下可能发生的情况。
在这次飞行中,我们运行了一个简单的 commander takeoff
测试,如 PythonClient/multirotor/stability_test.py
执行的那样,飞行开始时一切正常,但最后变得疯狂,无人机坠毁。那么这是为什么呢?日志文件能显示什么?
这里我们绘制了以下 5 个指标:- hil_gps.alt
- 从 AirSim 发送到 PX4 的模拟高度 - telemetry.update_rate
- AirSim 执行关键无人机更新循环的速率(每秒更新次数)- telemetry.update_time
- AirSim 内部执行关键无人机更新循环的平均时间。- telemetry.actuation_delay
- 这是一个非常有趣的指标,测量 PX4 发送回更新的执行器控制消息(电机功率)所需的时间 - actuator_controls.0
- 来自 PX4 的第一个旋翼的执行器控制信号。
我们从这些指标中看到,一切开始得很顺利,高度平稳,更新速率高,在 275 到 300 fps 范围内,AirSim 内部的更新时间很短,约为 113 微秒,并且从 PX4 往返的执行延迟也很短。执行器控制也迅速稳定到一条漂亮的直线。
但随后 update_time
开始攀升,同时 actuation_delay
也攀升,我们看到 actuator_controls
有一个小的下降。这种下降不应该发生,PX4 因为更新速率的损失而恐慌,但它恢复了。
但随后我们看到执行器控制变得疯狂,执行延迟出现巨大峰值,大约在这个时候我们看到 AirSim 发出 lockstep disabled
消息。超过 100 毫秒的延迟会触发 AirSim 跳出 lockstep 模式,PX4 变得疯狂,无人机坠毁。
底线是,如果一个简单的 takeoff
无法保持稳定平稳的飞行,并且您看到这些类型的尖峰和不均匀的更新速率,则意味着您在没有足够马力的计算机上运行 AirSim。
一个简单的起飞、悬停和着陆应该看起来像这样
在这里您看到 update_rate
保持在每秒 333 次更新的目标。您还看到 update_time
保持在漂亮的 39 微秒,actuator_delay
在 1.1 到 1.7 毫秒之间,以及由此产生的 actuator_controls
是一条漂亮的直线。