ArduPilot+OpenIPC+ExpressLRS开源代码之RadioFailSafe
1. 源由
试飞过程出现一个控制RC信号丢失的异常,从安全飞行的角度,需要找到根本原因(rootcause)。
为此,尝试通过现象、常规检查、黑匣子、电子器件规格等等方面来进行分析和理解,并采取一定的手段/方法来解决问题。
2. 现象
往常情况/本次其他几个电池的飞行,都不曾遇到的Radio Failsafe
的异常场景。
- 视频:Ardupilot 4.5.6+OpenIPC+ELRS 3.2.0 RadioFailSafe
- 日志:Ardupilot 4.5.6+OpenIPC+ELRS 3.2.0 RadioFailsafe.bin
主要的思考问题是100米处为什么会出现FAILSAFE
,这点解释不通!!!
2.1 视距遮挡(LOS)
由于遮挡,导致信号衰减增加,且信号质量急剧衰减。
但是:这种情况也属于正常,首先视距已经遮挡,但是915MHz还是有一定绕射性的!
2.2 视距~100米异常
从OSD数据看:
- 视距100米左右
- 信号强度没有问题,可低到-90dBm以下
- 信号丢失(全部丢包)
- SNR很低,没有干扰
实际情况:出现了一段时间内,丢包严重,最终触发FAILSAFE
。
2.3 现场对比测试
- 同一地点
- 同一时间段
- 同一飞机
- 多块电池
总共试飞4次:第一次出现上述RadioFailSafe
;其他三次飞行路线类似,均未出现上述情况。
3. 检查
- 【信号强度】高度70cm,间距300cm,T型天线平行放置,OSD显示-40dBm ==》与以前情况类似,近距离在-50dBm
- 【ELRS检查】拆机,检查ELRS模块GND/VCC/TX/RX、ipx座子松动问题 ==》未见明显异常
- 【飞控检查】拆机,检查飞控模块GND/VCC/TX/RX焊接问题 ==》未见明显异常
通过目检测试,排除由于焊接导致接触不良的问题。
ELRS版本
接收端版本: 3.2.0
发射端版本: 3.2.0
4. 回忆
早几天安装数字图传的视频,以前模拟视频,同样的硬件。侧面证明硬件问题不大。
注:当时通过这个回忆视频,确实目前GPS搜星数量上减少了3~4颗是有的,也就是说可能本身也有一定的干扰存在。
早几天,同样硬件,情况很好:
- OpenIPC SSC30KQ IMX335 + Ardupilot 4.5.6 + 梅岭隧道南入口 FPV飞行
- OpenIPC地面站OSD + Ardupilot 4.5.6 + 梅家坞山坳 FPV飞行
- OpenIPC+ Ardupilot 4.5.6 + 模拟/数字同步 FPV OSD
早期模拟视频,ELRS模块是同样的硬件,没有类似问题:
5. 分析
- 通过黑匣子日志分析,ELRS模块触发的飞控
RadioFailSafe
事件。
- LQ持续一段时间再个位数保持。
- RSSI最低在0.4左右。
- CPU 负载适中,H743并未严重超负荷。
- 整个飞行高度曲线,虽然炸鸡,在这个茶地还是安全的!但是找飞机有点麻烦!!!
6. 汇总
- 接线正常(无焊接,松动问题)
- 模块自检未发现有外部同频干扰(SNR=~3dB)
- 偶现现象(同一地点、飞机、时间段,仅该次飞行出现)
- 发生问题与视距内遮挡障碍物无关(可以目视起飞位置)
- 信号质量异常时,dBm/RSSI/SNR均在正常值范围(OSD显示情况看)
- 飞控日志显示ELRS模块异常导致飞控触发
RadioFailSafe
事件
潜在问题:本机存在一些电磁干扰
磁力计较之前校准数据有较大变化,导致起飞时“EKF3 IMU1 MAG0 IN-FLIGHT YAW ALIGNMENT”
GPS搜星数量不够,仅只有6~8颗。相较于之前有10+卫星数量有所减少3 - 4颗。
- Why magfit’s output result is out of parameter range?
- “EKF3 IMU1 MAG0 IN-FLIGHT YAW ALIGNMENT” makes auto yaw when take …
7. 改善
7.1 改善1:数字图传电源引入的电磁干扰
目前,主要还是停留在猜测过程,但是会尽量去将怀疑的内容解决掉,然后循环迭代,最后期望能够找到根本原因(root cause)。
去掉环形数字图传供电线(前期为了方便未剪短),该圆形缠绕方式相当于一个电感线圈,可能影响:
- 下方走ELRS模块的供电和通信线:GND/VCC/Rx/Tx
- 与GPS位置靠近,约8cm左右
去掉后的样子
7.2 改善2:尽量使用4S以上电池,而不要使用3S电池
最后推了下油门,导致电压掉到9V以下,然后数字图传就卡主了,实际上是电压可能不足了。
7.3 重要升级:ELRS模块版本
从原来3.2.0版本升级至3.5.1,review了一些可能的问题。如果真的什么都找不到,那么升级下最新的稳定固件,也是一个不错的选择。
- V3.4.3 - Avoid potential divide by zero in LBT dynamic power #2781
- V3.4.3 - Fix initial connection hangup for ESP8285 based receivers #2786
- V3.3.2 - Fix GetLastPacketStats() and diversity packet CRC check (#2488, #2491)
8. 参考资料
【1】ExpressLRS Bench Test
【2】ExpressLRS Threads: We have met a radio lost using ELRS 3.2.0
【3】Ardupilot 4.5.6+OpenIPC+ELRS RadioFailSafe
【4】Open FPV VTX开源之DIY硬件形态