使用日志诊断一些常见问题

本页介绍如何诊断六种最常见的问题,尤其是影响 Copter 的问题,但在一定程度上也会影响 Plane 和 Rover。

机械故障

常见的机械故障包括电机或电调故障 (包括电调同步故障)、螺旋桨断裂或脱落等。这些情况会在日志中显示为预期滚转和俯仰与载具实际滚转和俯仰的突然偏差。通过绘制 ATT 信息的 DesRoll vs Roll、DesPitch vs Pitch 以及较小程度的 DesYaw vs Yaw 可以看到这种偏差。

./_images/DiagnosingWithLogs_RollInVsRoll.png

在上面的示例中,载具的实际翻滚("Roll")在日志的前半部分紧跟预期翻滚("DesRoll"),但随后突然偏离。(飞行)控制器希望滚转保持水平("Roll" = 0),但却无法做到,这意味着出现了机械故障。这与软件故障截然不同,软件故障是指(飞行)控制器失控,出于某种奇怪的原因突然希望飞行器上下颠倒,因为在这种情况下,"DesRoll "也会变得疯狂,而实际的 "Roll "也会随之改变。

日志包含相同的数据。将 NAV_CONTROLLER_OUTPUT 的 nav_roll(预期滚转)和 nav_pitch(预期俯仰)与 ATTITUDE.roll (实际滚转)和 pitch (实际俯仰)进行比较。

振动

剧烈振动会导致 Copter 基于加速度计的高度和水平位置估计值偏离实际情况,从而导致高度保持问题(飞行器可能会冲上云霄),或在 Loiter、PosHold、Auto 等模式下的位置控制问题。

正如 测量振动 页面,查看振动的最佳方法是绘制 VIBE 消息的 VibeX, VibeYVibeZ 值。振动水平低于 30m/s/s 通常是可以接受的。高于 30m/s/s 的水平可能会出现问题,高于 60m/s/s 的水平几乎总是会出现位置或高度保持问题。

下图显示可接受的振动水平始终低于 30 米/秒/秒

./_images/mp_vibe_dataflash_msg.png

下图是一辆由于高振动而出现位置估计问题的载具的数据

../_images/mp_measuring_vibration_bad_vibes.png

Tlog 的振动 振动_x, 振动 y振动 也可以使用,并显示与数据闪存日志中存储的相同信息

./_images/DiagnosingWithLogs_VibesTlog.png

罗盘干扰

来自配电板、电机、电池、电调和(飞行)控制器附近的其他电气设备的干扰会使罗盘航向发生偏差,从而导致盘旋(又称 "厕所保龄球"),甚至使旋翼飞行器飞向完全错误的方向。将 tlog 的 mag_field(可在 "CUSTOM"(自定义)下找到)和 throttle(可在 VFR_HUD 下找到)绘制成图,是快速查看干扰量的最简单方法。

下图显示,当节流阀升高时,磁场波动仅为 10%-20%,磁场干扰量是可以接受的。低于 30% 的干扰是可以接受的。30% ~ 60% 之间属于灰色区域,在此区域内可能没有问题(有些用户没有问题,有些则没有),而真正严重的磁干扰会在油门升高时显示为超过 60% 的跃变。

./_images/DiagnosingWithLogs_MagFieldVsThr.png

额外说明

  • 磁场的长度可从 120 到 550 不等,具体取决于载具所处的位置,但通常在 330 左右。

  • 在 compassmot 设置程序结束时,还会显示磁场干扰占总磁场的百分比。请在 高级指南针设置页面 页面,了解有关 compassmot 的更多信息

  • Dataflash 日志的 COMPASS 信息包含罗盘的 x、y 和 z 轴原始值(称为 MagX、MagY 和 MagZ),相当于 tlog 的 RAW_IMU xmag、ymag 和 zmag 字段。计算磁场长度的方法是:首先将 dataflash 日志文件加载到 excel 中,根据 COMPASS 信息进行筛选,然后使用公式 mag_field = sqrt(MagX^2, MagY^2, MagZ^2) 计算磁场。请注意,COMPASS 信息在 dataflash 日志中默认不启用,因为它以 50hz 的频率运行,会对 CPU 性能造成一定影响。

  • 上图显示图表开始时有一个短暂的尖峰,但可以忽略,因为这是在油门升起之前,所以很可能是用户在插入其他电气设备时出现的。

GPS 故障

在自主模式(Loiter、RTL、Auto 等)下,来自 GPS 的位置错误会导致飞行器认为自己突然进入了错误的位置,并导致主动飞行以纠正感知到的错误。这些 "小故障 "会在日志和数据闪存日志中显示为可见卫星数量减少,而 "小故障 "会在日志和数据闪存日志中显示为可见卫星数量增加。 hdop.

将 Dataflash 日志中 GPS 信息的 "HDop "和 "NSats "值绘制成图表。Hdop 值低于 1.5 表示非常好,超过 2.0 则表明 GPS 位置不佳。卫星数量低于 12 也是不好的。这两个值的明显变化往往伴随着 GPS 位置的变化。

./_images/DisagnosingWithLogs_GPShdopAndNumSats_DF.png

如果使用日志,则将 GPS_RAW_IT 组的 "eph "和 "satellites_visible "值绘制成图。Hdop 值低于 150 表示位置良好,超过 200 则表示位置不佳。

./_images/DisagnosingWithLogs_GPShdopAndNumSats.png

参见 EKF 故障安全 维基页面,详细介绍了在 GPS 出现严重故障的情况下,载具如何切换到非自主模式

电源问题(断电等)

电源模块 但偶尔还是会发生断电现象。通常情况下,当飞行器仍在空中时(即气压计或 EKF 高度仍报告飞行器的高度远高于零),记录突然结束,即可识别出这种情况。

尝试绘制图表:

  • 数据闪存日志的 CTUN Alt(原点上方高度)或 BAlt(气压计高度)

  • 数据闪存日志的 GPS Alt(海拔高度)

  • Tlog 的 VFR_HUD 高度(加速度计和气压计联合估算的高度)。

  • Tlog 的 GLOBAL_POSITION relative_alt(距离原点的高度)

../_images/DiagnosingWithLogs_BrownOut.png

电路板电压的变化也可能是电源问题的信号。0.10 至 0.15 伏的变化是正常的。如果超出这个范围,则表明与(飞行)控制器共享电源的其他设备在电源中产生了波纹,可能导致断电。电路板电压可通过以下方式绘制:

  • 数据闪存 POWR 信息的 VCC

  • Tlog HWSTATUS 的 Vcc

正下方的图片显示,当油门升高时,电路板电压下降了 0.15V。这通常不是好事,但因为只有 0.15V,所以应该没问题。下面第二张图(来自不同用户日志的数据闪存图)显示电压非常稳定,波纹小于 0.1V。

./_images/DiagnosingWithLogs_BoardVccVsThr.png ./_images/DiagnosingWithLogs_DataFlashBoardVcc.png

意外错误,包括故障排除

当(飞行)控制器出现意外行为时(尤其是当用户抱怨旋翼飞行器不再响应他们的输入时),通常是由以下原因造成的 故障排除 被触发。

查找这些错误的最简单方法是查看数据闪存日志,并按 "ERR "过滤第一列。如果使用Mission Planner地面站,错误也会以红色标记显示在图表区域的顶部。

../_images/DiagnosingWithLogs_FilterForErrors.png

Subsys(又称子系统)给出了产生错误的区域,ECode(又称错误代码)则告诉你具体是什么错误。子系统和错误代码列表可在 AP_Logger 库中找到。 AP_Logger.h 文件.

子系统 EC 代码和说明
2 = 无线电
  • 0 = 错误已解决

  • 2 = 延迟帧:两秒钟内未收到接收机的更新信息

3 = 指南针
  • 0 = 错误已解决

  • 1 = 初始化失败(可能是硬件问题)

  • 4 = 不健康:传感器读数失败

5 = 无线电故障安全
  • 0 = 故障安全已解决

  • 1 = 触发故障安全

6 = 电池故障安全
  • 0 = 故障安全已解决

  • 1 = 触发故障安全

8 = GCS 故障安全
  • 0 = 故障安全已解决

  • 1 = 触发故障安全

9 = 栅栏故障安全
  • 0 = 故障安全已解决

  • 1 = 突破高度栅栏,触发故障安全保护

  • 2 = 圆形栅栏破损,触发故障安全保护

  • 3 = Alt 和环形栅栏均被破坏,触发故障安全保护

  • 4 = 多边形围栏被破坏,触发故障安全保护

10 = 飞行模式更改失败

由于位置估计错误,载具无法正常进入所需的飞行模式

参见 这里的飞行模式编号 代表 Copter、 这里的平面模式此处的UGV无人车模式

11 = GPS
  • 0 = 故障清除

  • 2 = GPS 出现故障

12 = 碰撞检查
  • 1 = 检测到撞击地面。通常情况下,载具在撞击后很快就会解除警报。

  • 2 = 检测到失控。通常情况下,降落伞会在

13 = 翻转模式 2 = 放弃翻转(未上膛、先导输入或超时)
15 = 降落伞
  • 2 = 未部署,载具太低

  • 3 = 未部署,载具着陆

16 = ECF 检查
  • 0 = 差值清除(位置估计确定)

  • 2 = 差异(位置估计错误)

17 = EKF 故障安全
  • 0 = 故障安全已解决

  • 1 = 触发故障安全

18 = 气压计
  • 0 = 错误已解决

  • 4 = 不健康:传感器读数失败

19 = CPU 负载看门狗
  • 0 = 故障安全已解决

  • 1 = 触发故障安全(通常为载具撤膛)

20 = ADSB 故障安全
  • 0 = 故障安全已解决

  • 1 = 不采取行动,只向飞行员报告

  • 2 = 载具通过爬坡或下坡避险

  • 3 = 载具通过水平移动躲避

  • 4 = 载具与其他载具垂直行驶以避免碰撞

  • 5 = 调用 RTL

21 = 地形数据 2 = 缺少地形数据
22 = 导航
  • 2 = 设置目的地失败

  • 3 = 重新启动 RTL

  • 4 = Circle 初始化失败

  • 5 = 目的地在围栏外

23 = 地形故障安全
  • 0 = 故障安全已解决

  • 1 = 触发故障安全(通常为载具 RTL)

24 = 已更改 EKF 初级
  • 0 = 第 1 个 EKF 已成为主要

  • 1 = 第 2 个 EKF 已成为主要

25 = 检查推力损失
  • 0 = 恢复推力

  • 1 = 检测到推力损失(高度可能优先于偏航控制)。

26 = 传感器故障安全(次级)
  • 0 = 传感器故障安全解除

  • 1 = 传感器故障安全触发

27 = 漏电故障安全(次级)
  • 0 = 已清除泄漏故障安全

  • 1 = 触发检漏仪故障安全保护

28 = 先导输入超时故障安全(仅限子局)
  • 0 = 先导输入故障安全解除

  • 1 = 触发先导输入失效保护

29 = 振动故障安全
  • 0 = 取消过大振动补偿

  • 1 = 已启动过度振动补偿功能